2022年编译原理实验——语法分析器报告 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年编译原理实验——语法分析器报告 .pdf》由会员分享,可在线阅读,更多相关《2022年编译原理实验——语法分析器报告 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、组员学号姓名实验名称对各算术表达式进行语法分析实验室实验目的或要求实验目的:1、掌握语法分析器生成工具的使用和了解编译器的设计;2、了解自上而下语法分析器的构造过程;3、能够构造 LR 分析表,编写由该分析表驱动的语法分析器程序;4、借助语法制导翻译,可在语法分析的同时,完成对语义的翻译;5、借助语法分析,设计一个表达式的判断分析器,即从键盘上输入算术表达式,分析器将显示该表达式的正确与否。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - -
2、- - - 实验原理(算法流程)实验算法流程图如下所示:开始输入表达式表达式保存到数ch第一个元素为)+ -*/YChi= (i+YNChi=NULLNChi是 09i+YChi是 09Chi=+ -*/)N多了+ -*/)Y其他错误NYChi=* /Ni+YChi=+ -*/NY多了+ -*/Chi=+ -NNChi=)Y少了)N错误首部多了) + -*/结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 程序界面(效果图)
3、实验结果界面:只选择几个典型的例子进行分析,可进行任意表达式输入。1)未进行语法分析时的界面;2)输入正确的表达式 (1+2)*(6-3)+1 进行语法分析时的界面结果;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 程序界面(效果图)3)输入错误的表达式1*2+(2+3 并进行语法分析时的界面结果;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理
4、- - - - - - - 第 4 页,共 12 页 - - - - - - - - - 程序界面(效果图)4)输入错误的表达式1+(+5+6)并进行语法分析时的界面结果;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 程序代码 #include stdafx.h #include grammer.h #include mfc_ 语法分析器 .h #include mfc_ 语法分析器Dlg.h int flag; int i
5、,j; int length; CString string; int grammer(CString str) i=0; flag=0; char chMAX; length=str.GetLength(); strcpy(ch,str); if(length!=0) F(ch); if(flag=0) MessageBox(NULL, 输入表达式符合文法, 正确 ,MB_OK|MB_ICONINFORMATION); /str=ch; /return flag; else MessageBox(NULL, 表达式为空 ,提示 ,MB_OK|MB_ICONWARNING); /Message
6、Box(NULL, 表达式为空 ,提示 ,MB_OK|MB_ICONERROR); return -1; return flag; void F(char ch) if(ch0=+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 12 页 - - - - - - - - - 程序代码flag=0; MessageBox(NULL, 输入表达式不符合文法0,错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 +, 提示 ,MB_
7、OK|MB_ICONINFORMATION); flag=1; else if(ch0=-) flag=0; MessageBox(NULL, 输入表达式不符合文法0, 错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 -, 提示 ,MB_OK|MB_ICONINFORMATION); flag=1; else if(ch0=*) flag=0; MessageBox(NULL, 输入表达式不符合文法0, 错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 *, 提示,MB_OK|MB_ICONINFOR
8、MATION); flag=1; else if(ch0=/) flag=0; MessageBox(NULL, 输入表达式不符合文法0, 错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 /, 提示 ,MB_OK|MB_ICONINFORMATION); flag=1; else if(ch0=) flag=0; MessageBox(NULL, 输入表达式不符合文法0, 错误 ,MB_OK|MB_ICONERROR); MessageBox(NULL, 开始处多了 ), 提示 ,MB_OK|MB_ICONINFORMATION); flag=1
9、; /* 上述为对第一个字符的特殊处理*/ else if(chi!=NULL) if(chi=() i+; F(ch); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - 程序代码if(chi!=) if(flag=0) MessageBox(NULL,输入表达式不符合文法1,错误,MB_OK|MB_ICONERROR); MessageBox(NULL, 少了 ), 提示 ,MB_OK|MB_ICONINFORMATION)
10、; flag=1; else i+; if(chi!=NULL) T(ch); else if(chi=0) while(chi=0) i+; if(chi!=NULL) T(ch); else if(flag=0) if(chi!=NULL&chi!=) MessageBox(NULL, 输入表达式不符合文法2.1, 错误 ,MB_OK|MB_ICONERROR); if(chi= ) MessageBox(NULL,含有空格,提示,MB_OK|MB_ICONINFORMATION); else if(chi=+) MessageBox(NULL,多了+号,提示,MB_OK|MB_ICONI
11、NFORMATION); else if(chi=-) MessageBox(NULL,多了-号,提示,MB_OK|MB_ICONINFORMATION); else if(chi=*) MessageBox(NULL,多了*号,提示,MB_OK|MB_ICONINFORMATION); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - 程序代码else if(chi=/) MessageBox(NULL,多了/号,提示,MB_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年编译原理实验语法分析器报告 2022 编译 原理 实验 语法 分析器 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内