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

上传人:飞****2 文档编号:51843639 上传时间:2022-10-20 格式:DOC 页数:11 大小:551.50KB
返回 下载 相关 举报
编译原理(语法分析程序设计).doc_第1页
第1页 / 共11页
编译原理(语法分析程序设计).doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《编译原理(语法分析程序设计).doc》由会员分享,可在线阅读,更多相关《编译原理(语法分析程序设计).doc(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、一、实验内容和目的1. 已知待分析的C语言子集的语法,用EBNF表示如下:(1) main()(2) “” “”(3) ; ;(4) |(5) ID=(6) if(条件)(7) while()(8) (9) +|-(10) *|/ (11) ID|NUM|()(12) |=|=|!=2. 实验目的、要求实现的功能实验目的:编制一个语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析。实验要求:在上机(一)词法分析的基础上,采用递归子程序法或其他适合的语法分析方法,实现其语法分析程序。要求编译后能检查出语法错误。3. 将实验方法改写为适合预测分析法的文法如下:(1) main(

2、)(2) (3) ; (3_1) (4) (5) (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) NUM(15) ()(16) (17) =(18) (19) =(20) =(21) !=4. 求改写后文法的非终结符号的FIRST集和FOLLOW集:非终结符号FIRSTFOLLOWmain# ;ID if while ID if while;ID;if;while;ID NUM ()ID NUM ( = = != ) ;+ - = =

3、 != ) ;ID NUM (+ - = = != ) ;* / + - = = != ) ;ID NUM (* / = = !=ID NUM (5. 根据求得的FIRST集和FOLLOW集构造LL(1)分析表如下:表格内空白的部分表示“出错”,非空白部分表示要压入分析栈中的文法符号,是按照对应产生式的逆序存放的,即当查找分析表时,表格内的内容从左至右依次入栈。第3步中改写文法的LL(1)分析表mainifwhileIDNUM()+-*/=!=;#)(main;=ID)(if)(while+-*/IDNUM) (=!=二、所用仪器、材料(设备名称、型号、规格等)操作系统:Microsoft W

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

5、:输入文本1(input1.cpp):调用语法分析程序后的运行情况:输出output1.txt文件:output1.txt文件中的内容如下:注:语法分析程序本身只要求输出分析结果,此处暂时将每一步推导所用的产生式输出,方便对照检查,LINEN表示第N行,以下测试类似,不再说明。测试二:输入文本2(input2.cpp):调用语法分析程序后的运行情况:输出output2.txt文件Output2.txt文件中的内容如下:六、分析和结论1. 本程序先用预先分析法进行语法分析,基本思路是:(1)首先初始化分析栈和输入单词指示器(即读取当前输入串中的第一个单词);(2)然后查看当前分析栈的栈顶符号:如

6、果是终结符号,则查看是否与当前输入单词匹配,若匹配则将之出栈,输入指示器指向下一个单词,进行下一轮扫描,若不匹配则报错,如果是非终结符号,则根据当前输入单词查找分析表,若查到,则将当前栈顶符号出栈,并将查到的产生式逆序入栈,进入下一轮扫描,若没有查到,则报错;(3)最后,若分析栈和输入单词同时为结束符(#)时,表示语法分析成功,程序结束。2. 本程序对语法分析中的错误处理和识别有很多问题,如某些错误可能导致程序进入死循环,因此在语法错误处理方面仍有待改进3. 程序中对文件的操作仍一些不足之处,如:若关闭输入文件时失败,则会导致输出文件也无法关闭,占用系统资源。另外,此程序只是对语法分析过程的一个演示,当真正进编译程序的编制时,需要配合专门的语法错误处理程序和中间代码转换程序等进行编译。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com