课 程 设 计 说 明 书
设计题目: 词法分析器的实现
专业: 班级:
设计人:
山 东 科 技 大 学 2014年 6 月 24日
课 程 设 计 任 务 书
学院:信息科学与工程学院 专业: 班级: 姓名:
一、课程设计题目: 词法分析器的实现 二、课程设计主要参考资料
(1) 编译原理 韩太鲁、孙忠林著 (2) 三、课程设计应解决的主要问题
(1) 词法分析器的实现 (2) (3)
四、任务发出日期: 2014-4-21 课程设计完成日期: 2014-6-24
指导教师签字: 系主任签字 :
指导教师对课程设计的评语
成绩:
指导教师签字:
年 月 日
词法分析器的实现
一、 设计目的
1.熟悉词法分析的基本原理,词法分析的过程以及词法分析中要注意的问题。 2.复习高级语言,进一步加强用高级语言来解决实际问题的能力。 3.通过完成词法分析程序,了解词法分析的过程。
二、 设计要求
1.根据状态转换图直接编程 编写一个词法分析程序,它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式(记号)流文件输出。在此,词法分析程序作为单独的一遍,如下图所示。
处理过程:在扫描源程序字符串时,一旦识别出关键字、分隔符、标识符、无符号常数中之一,即以单词形式(各类单词均采用相同的结构,即二元式编码形式)输出。每次调用词法分析程序,它均能自动继续扫描下去,形成下一个单词,直至整个源程序全部扫描完毕,并形成相应的单词串形式的源程序。
具体任务有:
(1)组织源程序的输入
(2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文件 (3)删除注释、空格和无用符号
(4)发现并定位词法错误,需要输出错误的位置在源程序中的第几行。将错误信息输出到屏幕上。
(5)对于普通标识符和常量,分别建立标识符表和常量表(使用线性表存储),当遇到一个标识符或常量时,查找标识符表或常量表,若存在,则返回位置,否则返回0并且填写符号表或常量表。
标识符表结构:变量名,类型(整型、实型、字符型),分配的数据区地址
注:词法分析阶段只填写变量名,其它部分在语法分析、语义分析、代码生成等阶段逐步填入。
常量表结构:常量名,常量值 2.编写DFA模拟程序 算法如下:
DFA(S=S0,MOVE[][],F[],ALPHABET[]) /*S为状态,初值为DFA的初态,MOVE[][]为状态转换矩阵,F[] 为终态集,ALPHABET[] 为字母表,其中的字母顺序与MOVE[][] 中列标题的字母顺序一致。*/ {
Char Wordbuffer[10]=“”//单词缓冲区置空 Nextchar=getchar();//读 i=0;
while(nextchar!=NULL)//NULL代表此类单词 {
源程序 词法分析程序 记号文件

