精编完整版C语言词法分析器和C语言语法分析器编译原理毕业论文

上传人:hs****ma 文档编号:427155377 上传时间:2023-07-12 格式:DOC 页数:80 大小:338.50KB
返回 下载 相关 举报
精编完整版C语言词法分析器和C语言语法分析器编译原理毕业论文_第1页
第1页 / 共80页
精编完整版C语言词法分析器和C语言语法分析器编译原理毕业论文_第2页
第2页 / 共80页
精编完整版C语言词法分析器和C语言语法分析器编译原理毕业论文_第3页
第3页 / 共80页
精编完整版C语言词法分析器和C语言语法分析器编译原理毕业论文_第4页
第4页 / 共80页
精编完整版C语言词法分析器和C语言语法分析器编译原理毕业论文_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《精编完整版C语言词法分析器和C语言语法分析器编译原理毕业论文》由会员分享,可在线阅读,更多相关《精编完整版C语言词法分析器和C语言语法分析器编译原理毕业论文(80页珍藏版)》请在金锄头文库上搜索。

1、(此文档为word格式,下载后您可任意编辑修改!)编译原理课程设计课程报告题目 C语言词法分析器和C-语言语法分析器 学生姓名 学生学号 指导教师 提交报告时间 2019 年 6 月 8 日C语言词法分析器1 实验目的及意义1. 熟悉C语言词法2. 掌握构造DFA的过程3. 掌握利用DFA实现C语言的词法分析器4. 理解编译器词法分析的工作原理2 词法特点及正则表达式2.1词法特点2.1.1 保留字AUTO, BREAK , CASE , CHAR , CONST , CONTINUE , DEFAULT , DO , DOUBLE , ELSE, ENUM , EXTERN , FLOAT

2、, FOR , GOTO, IF , INT , LONG , REGISTER , RETURN, SHORT , SIGNED , SIZEOF , STATIC , STRUCT , SWITCH , TYPEDEF , UNION , UNSIGNED , VOID, VOLATILE , WHILE,2.1.2 符号 + - * + - += -= *= = = != = ; , ( ) * * : 2.2 正则表达式 whitespace = (newline|blank|tab|comment)+ digit=0|.|9 nat=digit+ signedNat=(+|-)?na

3、t NUM=signedNat(“.”nat)? letter = a|.|z|A|.|Z ID = letter(letter|digit|“_”)+ CHAR = other+ STRING = “other+”3 Token定义3.1 token类型保留字auto break case char const continue default do double elseenum extern float for gotoif int long redisterreturnshort signed sizeof static struct switch typedef union unsi

4、gnedvoid volatile while特殊符号+ - * + - += -= *= = = != = ; , ( ) * * :文件结束、错误EOF ERROR其它tokenNUM ID CHARACTER STRING3.2 tokenType类型代码4 DFA设计4.1 注释的DFA设计注释的DFA如下所示,一共分为5个状态,在开始状态1时,如果输入的字符为,则进入状态2,此时有可能进入注释状态,如果在状态2时,输入的字符为*,则进入注释状态,状态将转到3,如果在状态3时,输入的字符为*,则有可能结束注释状态,此时状态将转到状态4,如果在状态4时输入的字符为,则注释状态结束,状态转

5、移到结束状态。4.2 词法分析的DFA设计词法分析的DFA如下所示,一共分为10个状态:START、INNUM、INNUM1、INNUM2、INID、INCOMPARE、INOPERATE、INSTRING、INCHAR、DONE。状态START表示开始状态,状态INNUM,INNUM1,INNUM2表示数字类型(NUM)Token的状态,状态INID表示标示符(ID)类型Token的状态,状态INOPERATE表示算数运算符型Token的状态,状态INOCOMPARE表示比较运算符型Token的状态,INSTRING表示字符串(STRING)类型Token的状态,INCHAR表示字符(CHA

6、RACTER)类型Token的状态,状态DONE表示接收状态。l 在开始状态START时 如果输入的字符为空白符,如空格换行等,则仍在START状态 如果输入的字符为digit,则进入状态INNUM,即可能是数字类型(NUM)Token的状态 如果输入的字符为letter,则进入状态INID,即可能是标识符类型Token的状态 如果输入的字符为、=2) b+=0.1 a+; 6.2 测试结果6.3结果分析test.c文件中包括注释,保留字,整数和小数,标识符,特殊符号,字符串以及错误输入。本程序成功对test.c文件进行了词法分析,对注释进行了忽略,输出了相应的行号、类型、取值,对于错误的输入

7、显示ERROR。7 小结通过编写C语言词法分析器,我对编译器的基本原理有了更深的认识,同时掌握了DFA的设计与实现。在最开始的编写过程中,我总是把词法和语法分析混淆,比如一些错误应该在语法分析中判断,我却写进了词法分析中,后来我逐步认识到词法分析的作用就是提取源代码中的Token。在DFA的实现过程中,我主要参考了书后tiny语言DFA的实现方法,将它扩展到C语言。另外C语言词法比较复杂,因为时间关系我省略了一些,比如位运算符,转义字符等等,希望今后能完善。C-语言语法分析器1 实验目的及意义用C语言编制TinyC-语言的语法分析程序,实现对词法分析程序所提供的Token序列的语法检查和结构分析。 2 文法规则(EBNF)programdeclaration-listdeclaration_list declaration d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号