编译原理实验报告

编译原理实验报告

ID:6380280

大小:342.50 KB

页数:26页

时间:2018-01-12

编译原理实验报告_第1页
编译原理实验报告_第2页
编译原理实验报告_第3页
编译原理实验报告_第4页
编译原理实验报告_第5页
资源描述:

《编译原理实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一词法分析实验报告一、状态转换图:空格,换行符,制表符字母或数字0字母1非字母或数字2*数字数字3非数字4*<=65其他7*>8=9其他10*=11=12其他13*!14=15其他16*+17-18*19/20;21(22)23#24二、词法分析程序:通过分析程序发现程序无法跳过空格,制表符和换行符。while(ch!='#')ch=prog[++p];for(n=0;n<20;n++)token[n]=NULL;while(ch==''

2、

3、ch=='b'

4、

5、ch=='')ch=prog[++p];测试数据:functionx=9;ifx>0thenx=2*x

6、+1/3;endfunc#token数组的最小大小应该设置为9,因为在rwtab数组中的6个关键字中最大长度是8,而在字符串的结尾有一个结束标记‘’,因此token数组的实际大小要比最大字符串的大小至少大1,即为9(8+1)。改动程序:charprog[80],token[20];charprog[80],token[8];for(n=0;n<20;n++)token[n]=NULL;for(n=0;n<8;n++)token[n]=NULL;for(n=0;n<20;n++)token[n]=NULL;实验结果:实验二语法分析报告一、分析程序:1、由于在C中,必须

7、申明函数的返回类型,并且在主函数中被调用的函数必须在主函数之前定义或申明,因此对函数做如下修改:2,、在程序读取的代码中有空格和回车,但在分析是这两种字符需跳过,但是程序中只跳过了空格,所以修改代码,把回车也跳过,具体情况如下:While(ch=='')改为while(ch==''

8、

9、ch==''

10、

11、ch=='t')3、程序设置kk变量标识程序是否正常结束,kk=0表正常结束输出success,kk=1表非正常结束,给出非正常结束原因。所以加上kk=0;运行结果:二、流程图主函数的流程图:主函数main()程序流图:函数lrparser()程序流图:yucu函数程

12、序流图:函数statement()程序流图:函数expression()程序流图:函数term()程序流图:函数factor()程序流程图:相关文法函数名对应的非终结符名main()Slrparser()Ayucu()Bstatement()Cexpression()Dterm()Efactor()F根据程序可得如下文法:S→AA→BB→C▕CCC→ε▕DD→E▕EEE→F▕FFF→ε▕D实验三语义分析实验报告一、程序调试过程(一)、语法调试过程,经过格式调整后,对程序进行调试,发现没有错误。(二)、逻辑调试过程在完成语法调试过程后,根据实验参考资料提供的输入,得到如下

13、输出结果:这与实验参考资料里面提供的输出结果不符,因此说明存在逻辑错误。这一输出结果显示程序只是完成了词法分析,并没成功完成语法分析和语义分析,同时没有输出符合要求的三地址指令。对程序做了如下修改:1、While(ch=='')改为while(ch==''

14、

15、ch==''

16、

17、ch=='t')2、char*expression(void);charprog[200],token[8];改为char*expression(void);charprog[200],token[9];3、voidscaner(){m=0;for(n=0;n<8;n++)token[n]='

18、';改为voidscaner(){m=0;for(n=0;n<9;n++)token[n]='';token数组的最小大小应该设置为9,因为在rwtab数组中的6个关键字中最大长度是8,而在字符串的结尾有一个结束标记‘’,因此token数组的实际大小要比最大字符串的大小至少大1,即为9(8+1)。实验结果:二、流程图开始inti;p=0;输出“请输入语句(以#结束,不要换行):”ch=getchar();prog[p++]=ch;ch!='#'p=0;输出("种别码单词符号");scanner()switch(syn)default111输出(syn

19、,token)输出(syn,sum)break结束FTFTsyn!=0主函数的流程图:输出"词法分析失败,程序终止!"return;1号模块1号模块流程图:开始结束输出("词法分析成功,按任意键进行语法,语义分析");getch();p=0;scaner();lrparser();kk!=0TF输出("语法分析失败,程序终止!");return;输出("三地址指令如下:");i=0i

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

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

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