编译原理课程设计实验报告(川大张兵)

编译原理课程设计实验报告(川大张兵)

ID:34041371

大小:149.55 KB

页数:74页

时间:2019-03-03

编译原理课程设计实验报告(川大张兵)_第1页
编译原理课程设计实验报告(川大张兵)_第2页
编译原理课程设计实验报告(川大张兵)_第3页
编译原理课程设计实验报告(川大张兵)_第4页
编译原理课程设计实验报告(川大张兵)_第5页
资源描述:

《编译原理课程设计实验报告(川大张兵)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理课程设计报告课题名称:C-词法扫描器及语法分析器实现提交文档学生姓名:刘佳玉提交文档学生学号:2012141461134同组成员名单:无指导教师姓名:张兵指导教师评阅成绩:指导教师评阅意见:提交报告时间:2015年6月10日目录编译原理课程设计报告11、课程设计目标22、分析与设计22.1册结构22.2衢F流程32.3词法分析3231代码结构分析32.3.2token定义和类型42.3.3DNF分析42.4语法分析52.4.1代码结构分析52.4.2节点定义和类型52.4.3递归下降语法分析63、测试结果113.1流程113.2(11154

2、、,总结154.1收获154.2特色154.3不足165、程序代码实现165.1递归下降源代码165.2C-文法671、课程设计目标学生在学习《编译原理》课稈过程屮,结合各章节的构造编译程序的基本理论,要求用(3或(3卄语言描述及上机调试,实现一个C-Minus小编译程序(包括词法分析,语法分析等重要子程序),使学生将理论与实际应用结合起来,受到软件设计等开发过程的全面训练,从而提高学生软件开发的能力。要求:实现scanner和parser功能2、分析与设计2.1虧结构语法分析采用递归下降方法的程序结构:本程序采用面向对象的思想编写,使用C语言实现

3、,程序分为两部分:词法分析(scan)和语法分析(paise),分别将两个处理阶段写在两个函数»,分别是scan()和paise(),两个函数分别完成词法分析和语法分析的任务。scan()a数主要的工作是检查注释是否合法、词法分析获取tokenopaise()函数的主要工作是根据scan()词法分析Z后的token进行语法分析,生成语法树,最后并输出语法树。2.2的流程递归下降方法的程/了;流程图读入数据(理序)hh卜・4・V…;…卜:…卜•+c■■■■斗hM输出出错位K«2.3词法分析2.3.1代码结构分析词法分析阶段的代码写在一个函数中——sc

4、an()omain函数读取程序数据,将其存储在一个二维数组中,调用函数zhushieiroit),确定程序是否存在注释错误,注释的错误主要是注释的符号不匹配。如果不存在注释错误,贝I」调用scan()函数进行词法分析,否则报错。词法分析是对输入的数据一个字符一个字符的分析,将所分析出来的token存储在_个vector数组中,方便后面语法分析时调用。词法分析没有什么错误限制,基本不会报错。所以在分析的同时,就会将所分析出的token输出2.3.2token定义和类型token体定义如下:stiucttoken//token结构体{Tokentype

5、tokentypey/token类型chartokenstringf1100]y/token串intlineno;//token行号};token〃定义的Token的类型(29种),分别对应于else、if、int>return>void、while//+、*>I、^〉二、=、/////!二、=、;、,、(、)、[、]、{、}、num、id、错误、结束typedcfenum{elsee=1,ifKintt,retumn,voidd,whilee,xiaoyudengyu,dayudengyu9deng}udengyu,budengyuy

6、/10jiajian,cheng,chu,dayu,xiaoyu,dengyu,fenhao,douhao,zuokuohao,youkuohao,zuozhongkuohaoy/22youzhongkuohao,zuohuakuohao,youhuakuohao,nunxid,eiTor,end//29Jlokentype;2.3.3DNF分析词法分析的DFA描述:词法分析的DFA如下所示,一共分为5个状态:START、INNUM>INIDs工NDBSYM、DONE。状态START表示开始状态,状态工NNUM表示数字类型(NUM)Token的状态

7、,状态:LN1D表示字符串类型Token的状态(如关键字和一般的标示符),状态TNDBSYM表示双目运算符型Token的状态(如<=、〉=、!=、==),状态DONE接收状态。oilier2.4语法分析241代码结构分析语法分析阶段的代码中,每一条文法都有相对应的函数,通过函数之间的递归调用来达到语法分析的H的。语法分析的过程主要是:在语法分析Z前进行词法分析,然后通过递归向下分析法根据c-语言的文法进行i帝去分析,并生成语法树,最后打卬语法树。下面是语法分析所用到的全局变虽和函数的声叽tokencurrenttoken;//当前tokentoke

8、nlasttoken;//上一个tokeninttokenxb=0;//token下标intblank=0;//先行空格v

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

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

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