编译原理(语法分析程序设计)

编译原理(语法分析程序设计)

ID:15797174

大小:557.00 KB

页数:11页

时间:2018-08-05

编译原理(语法分析程序设计)_第1页
编译原理(语法分析程序设计)_第2页
编译原理(语法分析程序设计)_第3页
编译原理(语法分析程序设计)_第4页
编译原理(语法分析程序设计)_第5页
资源描述:

《编译原理(语法分析程序设计)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、实验内容和目的1.已知待分析的C语言子集的语法,用EBNF表示如下:(1)<程序>→main()<语句块>(2)<语句块>→“{”<语句串>“}”(3)<语句串>→<语句>{;<语句>};(4)<语句>→<赋值语句>

2、<条件语句>

3、<循环语句>(5)<赋值语句>→ID=<表达式>(6)<条件语句>→if(条件)<语句块>(7)<循环语句>→while(<条件>)<语句块>(8)<条件>→<表达式><关系运算符><表达式>(9)<表达式>→<项>{+<项>}

4、<项>{-<项>}(10)<项>→<因子>{*<因子>}

5、<因子>{/<因子>}(11)<因子

6、>→ID

7、NUM

8、(<表达式>)(12)<关系运算符>→<

9、<=

10、>

11、>=

12、==

13、!=2.实验目的、要求实现的功能实验目的:编制一个语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析。实验要求:在上机(一)词法分析的基础上,采用递归子程序法或其他适合的语法分析方法,实现其语法分析程序。要求编译后能检查出语法错误。3.将实验方法改写为适合预测分析法的文法如下:(1)<程序>→main()<语句块>(2)<语句块>→{<语句串>}(3)<语句串>→<语句>;<语句串>(3_1)<语句串>→ε(4)<语句>→<赋值语句>(5)<语句>→<条

14、件语句>(6)<语句>→<循环语句>(7)<赋值语句>→ID=<表达式>(8)<条件语句>→if(<条件>)<语句块>(9)<循环语句>→while(<条件>)<语句块>(10)<条件>→<表达式><关系运算符><表达式>(11)<表达式>→<项><表达式`>(11_1)<表达式`>→+<项><表达式`>(11_2)<表达式`>→-<项><表达式`>(11_3)<表达式`>→ε(12)<项>→<因子><项`>(12_1)<项`>→*<因子><项`>(12_2)<项`>→/<因子><项`>(12_3)<项`>→ε(13)<因子>→ID(14)<因子>→NU

15、M(15)<因子>→(<表达式>)(16)<关系运算符>→<(17)<关系运算符>→<=11(18)<关系运算符>→>(19)<关系运算符>→>=(20)<关系运算符>→==(21)<关系运算符>→!=4.求改写后文法的非终结符号的FIRST集和FOLLOW集:非终结符号FIRSTFOLLOW<程序>main#<语句块>{#;<语句串>IDifwhileε}<语句>IDifwhile;<赋值语句>ID;<条件语句>if;<循环语句>while;<条件>IDNUM()<表达式>IDNUM(<<=>>===!=);<表达式`>+-ε<<=>>===!=);<

16、项>IDNUM(+-<<=>>===!=);<项`>*/ε+-<<=>>===!=);<因子>IDNUM(*/<关系运算符><<=>>===!=IDNUM(5.根据求得的FIRST集和FOLLOW集构造LL(1)分析表如下:表格内空白的部分表示“出错”,非空白部分表示要压入分析栈中的文法符号,是按照对应产生式的逆序存放的,即当查找分析表时,表格内的内容从左至右依次入栈。11第3步中改写文法的LL(1)分析表mainifwhileIDNUM(){}+-*/<<=>>===!==;#<程序><语句块>)(main<语句块>}<语句串>{<语句串><语句串>;

17、<语句>ε<语句><条件语句><循环语句><赋值语句><赋值语句><表达式>=ID<条件语句><语句块>)<条件>(if<循环语句><语句块>)<条件>(while<条件><表达式><关系运算符><表达式><表达式><表达式`><项><表达式`>ε<表达式`><项>+<表达式`><项>-εεεεεεε<项><项`><因子><项`>εεε<项`><因子>*<项`><因子>/εεεεεεε<因子>IDNUM)<表达式>(<关系运算符><<=>>===!=11二、所用仪器、材料(设备名称、型号、规格等)操作系统:MicrosoftWindows7开发平台:Mi

18、crosoftVisualStudio2010三、实验方法、步骤登录MicrosoftWindows7操作系统à打开VisualStudio2010开发平台à新建“项目”à“Win32控制台应用程序”à输入项目名称à“应用程序设置”à勾选“空项目”复选框à右击左侧“解决方案资源管理器”下的“源文件”à“添加”à“新建项…”à新建一个“C++文件(.cpp)”à在新建的.cpp文件中输入语法分析代码à调试à运行à记录结果à完成实验报告。四、实验过程原始记录(数据、图表、计算等)源代码见实验报告所在目录下的yangdongdong_2.cpp,以下是部分程序

19、代码的截图:11五、实验结果测试一:输入文本1(input1.cpp):调用语法

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

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

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