编译原理词法分析器设计课程设计报告

编译原理词法分析器设计课程设计报告

ID:20870744

大小:247.92 KB

页数:17页

时间:2018-10-17

编译原理词法分析器设计课程设计报告_第1页
编译原理词法分析器设计课程设计报告_第2页
编译原理词法分析器设计课程设计报告_第3页
编译原理词法分析器设计课程设计报告_第4页
编译原理词法分析器设计课程设计报告_第5页
资源描述:

《编译原理词法分析器设计课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、盐城工学院编译原理课程设计报告设计词法分析器专业计算机科学与技术学生姓名班级学号目录1BUW22报告主体22.1设计目的:22.2设计⑷容及要求:22.2.1课程设计内容.22.2.3测试范例:32.3实现原理32.4算法实现流程图72.5程序源代码82.6结果输出及分析132.7心得体会142.8、参考资料151前言在网络世界屮,我们往往对功能强大的程序叹为观止。而这些强大程序的背后是编译这些程序的编译软件,是这些编译软件承托起Y这些功能强大的运行程序。我们有不少的同志致其自身于无尽的运行程序上。而只有很少的人搞编译程序。这就是为什么中国的可运行程序满天

2、飞,而编译程序却很少。本课程设计就是在这方面的探索,为你解读编译程序的奥秘。课程设计题目选择5个题目中的一个,要求根据自己的兴趣和能力,选择一个对自己意义甚大的题0。课程设计基本原理是在实践上,实现我们在课程上学习到的理论知识。通过理论联系实践,更好的掌握课本上的理论知识。2报告主体2.1设计目的:学生在学习《编译原理》课程设计中,结合各章节的构造编译程序的基本理论,总共用一周的时间完成课程设计。要求用c或C++语言描述及上机调试,实现五个题目中任意一个,是学生将理论与实际应用结合其,起来,受到软件设计等开发过程的全面训练,从而提高学生软件开发的能力。2.

3、2设计内容及要求:2.2.1课程设计内容设计词法分析器2.2.2设计词法分析器设计各单词的状态转换阁,并为不同的单词设计种别码。将词法分析器设计成供语法分析器调用的子程序。功能包括:具备预处理功能。将不翻译的注释等符号先滤掉,只保留耍翻译的符号申,即耍求设计一个供词法分析调用的预处理子程序;能够拼出语言中的各个单词;将拼出的标识符填入符号表;返回(种别码,属性值)。2.2.3测试范例:Beginx:=10;ifx〉0;thenx=5/x-2*3;endDo{ch=getchar<>;prog[p++]=ch;}2.3实现原理2.3.1词法分析器的设计(一)

4、构造单词的分类表革词的分类:构造上述语言中的各类单词符号及其分类码表如下:单词符号种别码单词符号种别码#0♦•18Begin1)19If2<20Then3<>21While4〈=22Do5>23end6〉=24标识符10——25常数11•926+13(27——14{28氺15}29/16[30••1731TD和NUM的正规定义式为:TD-*letter(letter

5、didit)*NUM-*digitdigit*letter-*a

6、•••

7、z

8、八

9、•••

10、Zdigit-*0

11、•••

12、9如果关键字、标识符和常数之间没有确定的算符或界符作间隔,则至少用一个空格

13、作间隔。空格由空白、制表符和换行符组成。(二)主要实验代码:(1).全局变量:charprog[80]={’’},//存放程序chartoken[8];//存放构成单词符号的字符串charch;//输入字符intsyn,//存放单词字符的种别码sum,//存放整数型单词p,//p是缓冲区prog的指针n=-l;//记录标识符在符号表中的位置char氺keyword

14、_6」={else,if,int,while,void,returni;(2).main函数(2.1)输入源程序:do{chFgetcharO;prog[p++]=ch;}while(ch!

15、=,ttf);(2.2)循环调用子函数:do{scanerO;switch(syn){case11:printfC(%d,%d)",syn,sum);break;case-1:printf("ERROR;");break;default:printf(〃(%d,%s)",syn,token);}}}while(syn!=0);(3).子函数:(3.1)数据初始化及定义:voidscanerO{m=0;sum二0;for(n=0;n<8;n++)token[n]=,’;ch=prog[p++];while(ch==,’)ch二prog[p

16、++];(3.2)关键字及标识符判断if(isalpha(ch))/*ch为字母字符*/{while(isalpha(ch)

17、

18、isdigit(ch))/*ch为字母字符或者数字字符*/{token[m++]=ch;ch=prog[p++];}token[m++]’;ch=prog[p__];syn=10;(1.2)常数判别:if(isdigit(ch))Ach是数字字符*/{while(isdigit(ch))Ach是数字字符*/{sum=sum氺10+ch」0’;ch=prog[p++];}ch=prog[p—];syn=l1;}(1.3)专用符号

19、判断:(3.4.1)专用符号为两个字符以”〈=”为例:switch

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。