编译原理语法分析程序设计文档格式.docx

上传人:b****5 文档编号:8435657 上传时间:2023-05-11 格式:DOCX 页数:15 大小:464.65KB
下载 相关 举报
编译原理语法分析程序设计文档格式.docx_第1页
第1页 / 共15页
编译原理语法分析程序设计文档格式.docx_第2页
第2页 / 共15页
编译原理语法分析程序设计文档格式.docx_第3页
第3页 / 共15页
编译原理语法分析程序设计文档格式.docx_第4页
第4页 / 共15页
编译原理语法分析程序设计文档格式.docx_第5页
第5页 / 共15页
编译原理语法分析程序设计文档格式.docx_第6页
第6页 / 共15页
编译原理语法分析程序设计文档格式.docx_第7页
第7页 / 共15页
编译原理语法分析程序设计文档格式.docx_第8页
第8页 / 共15页
编译原理语法分析程序设计文档格式.docx_第9页
第9页 / 共15页
编译原理语法分析程序设计文档格式.docx_第10页
第10页 / 共15页
编译原理语法分析程序设计文档格式.docx_第11页
第11页 / 共15页
编译原理语法分析程序设计文档格式.docx_第12页
第12页 / 共15页
编译原理语法分析程序设计文档格式.docx_第13页
第13页 / 共15页
编译原理语法分析程序设计文档格式.docx_第14页
第14页 / 共15页
编译原理语法分析程序设计文档格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

编译原理语法分析程序设计文档格式.docx

《编译原理语法分析程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《编译原理语法分析程序设计文档格式.docx(15页珍藏版)》请在冰点文库上搜索。

编译原理语法分析程序设计文档格式.docx

赋值语句>

|<

条件语句>

循环语句>

(5)<

→ID=<

表达式>

(6)<

→if(条件)<

(7)<

→while(<

条件>

)<

(8)<

关系运算符>

(9)<

项>

{+<

}|<

{-<

}

(10)<

因子>

{*<

{/<

}

(11)<

→ID|NUM|(<

(12)<

=|>

|>

=|==|!

=

2.实验目的、要求实现的功能

实验目的:

编制一个语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析。

实验要求:

在上机

(一)词法分析的基础上,采用递归子程序法或其他适合的语法分析方法,实现其语法分析程序。

要求编译后能检查出语法错误。

3.将实验方法改写为适合预测分析法的文法如下:

→{<

;

<

(3_1)<

→ε

→if(<

表达式`>

(11_1)<

→+<

(11_2)<

→-<

(11_3)<

项`>

(12_1)<

→*<

(12_2)<

→/<

(12_3)<

(13)<

→ID

(14)<

→NUM

(15)<

→(<

(16)<

(17)<

(18)<

→>

(19)<

(20)<

→==

(21)<

→!

4.求改写后文法的非终结符号的FIRST集和FOLLOW集:

非终结符号

FIRST

FOLLOW

main

#

{

#;

IDifwhileε

IDifwhile

ID

if

while

IDNUM(

=>

>

===!

=);

+-ε

+-<

*/ε

*/

5.根据求得的FIRST集和FOLLOW集构造LL

(1)分析表如下:

表格内空白的部分表示“出错”,非空白部分表示要压入分析栈中的文法符号,是按照对应产生式的逆序存放的,即当查找分析表时,表格内的内容从左至右依次入栈。

第3步中改写文法的LL

(1)分析表

NUM

+

-

*

/

>

==

!

)(main

ε

=ID

(if

(while

表达式`>

项`>

)<

二、所用仪器、材料(设备名称、型号、规格等)

操作系统:

MicrosoftWindows7

开发平台:

MicrosoftVisualStudio2010

三、实验方法、步骤

登录MicrosoftWindows7操作系统

→打开VisualStudio2010开发平台

→新建“项目”

→“Win32控制台应用程序”

→输入项目名称

→“应用程序设置”

→勾选“空项目”复选框

→右击左侧“解决方案资源管理器”下的“源文件”

→“添加”

→“新建项…”

→新建一个“C++文件(.cpp)”

→在新建的.cpp文件中输入语法分析代码

→调试

→运行

→记录结果

→完成实验报告。

四、实验过程原始记录(数据、图表、计算等)

源代码见实验报告所在目录下的yangdongdong_2.cpp,以下是部分程序代码的截图:

五、实验结果

测试一:

输入文本1(input1.cpp):

调用语法分析程序后的运行情况:

输出output1.txt文件:

output1.txt文件中的内容如下:

注:

语法分析程序本身只要求输出分析结果,此处暂时将每一步推导所用的产生式输出,方便对照检查,LINE[N]表示第N行,以下测试类似,不再说明。

测试二:

输入文本2(input2.cpp):

输出output2.txt文件

Output2.txt文件中的内容如下:

六、分析和结论

1.本程序先用预先分析法进行语法分析,基本思路是:

(1)首先初始化分析栈和输入单词指示器(即读取当前输入串中的第一个单词);

(2)然后查看当前分析栈的栈顶符号:

①如果是终结符号,则查看是否与当前输入单词匹配,若匹配则将之出栈,输入指示器指向下一个单词,进行下一轮扫描,若不匹配则报错,②如果是非终结符号,则根据当前输入单词查找分析表,若查到,则将当前栈顶符号出栈,并将查到的产生式逆序入栈,进入下一轮扫描,若没有查到,则报错;

(3)最后,若分析栈和输入单词同时为结束符(#)时,表示语法分析成功,程序结束。

2.本程序对语法分析中的错误处理和识别有很多问题,如某些错误可能导致程序进入死循环,因此在语法错误处理方面仍有待改进

3.程序中对文件的操作仍一些不足之处,如:

若关闭输入文件时失败,则会导致输出文件也无法关闭,占用系统资源。

另外,此程序只是对语法分析过程的一个演示,当真正进编译程序的编制时,需要配合专门的语法错误处理程序和中间代码转换程序等进行编译。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2