资源描述:
《天津理工大学编译原理实验2语法分析解析 .doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告学院(系)名称:计算机与通信工程学院姓名******学号******专业计算机科学与技术班级******实验项目实验二:语法分析课程名称编译原理课程代码0668056实验时间******实验地点计算机软件实验室7-215批改意见成绩教师签字:实验内容:可选择LL1分析法、算符优先分析法、LR分析法之一,实现如下表达式文法的语法分析器:(1)E→E+T
2、E-T
3、T(2)T→T*F
4、T/F
5、F(3)F→P^F
6、P(4)P→(E)
7、i实验目的:1.掌握语法分析的基本概念和基本方法;2.正确理解LL1分析
8、法、算符优先分析法、LR分析法的设计与使用方法。实验要求:1.按要求设计实现能识别上述文法所表示语言的语法分析器,并要求输出全部分析过程;2.要求详细描述所选分析方法针对上述文法的分析表构造过程;3.完成对所设计语法分析器的功能测试,并给出测试数据和实验结果;4.为增加程序可读性,请在程序中进行适当注释说明;5.整理上机步骤,总结经验和体会;6.认真完成并按时提交实验报告。第23页共23页【实验过程记录(源程序、测试用例、测试结果及心得体会等)】一、构造优先关系表使用算符优先文法:1.构造FIRSTVT集
9、a)由EàE+…
10、E-…得,FIRSTVT(E)={+,-};b)由TàT*…
11、T/…得,FIRSTVT(T)={*,/};c)由FàP^…得,FIRSTVT(P)={^};d)由Pà(…
12、i得,FIRSTVT(P)={(,i};e)由FàP得,FIRSTVT(P)⊂FIRSTVT(F),即FIRSTVT(F)={^,(,i};f)由TàF得,FIRSTVT(F)⊂FIRSTVT(T),即FIRSTVT(T)={*,/,^,(,i};g)由EàT得,FIRSTVT(T)⊂FIRSTVT(E),即FIRST
13、VT(E)={+,-,*,/,^,(,i};2.构造LASTVT集a)由Eà…+T
14、…-T得,LASTVT(E)={+,-};b)由Tà…*F
15、…/F得,LASTVT(T)={*,/};c)由Fà…^F得,LASTVT(F)={^};d)由Pà…)
16、i得,LASTVT(P)={(,i};e)由FàP得,LASTVT(P)⊂LASTVT(F),即LASTVT(F)={^,(,i};f)由TàF得,LASTVT(F)⊂LASTVT(T),即LASTVT(T)={*,/,^,(,i};g)由EàT得,LASTV
17、T(T)⊂LASTVT(E),即LASTVT(E)={+,-,*,/,^,(,i};3.构造优先关系表a)由Eà…+T
18、…-T得+19、…/F得*20、i得^21、,即(<+,(<-,(<*,(,(<^,(<(,(
22、E-…得LASTVT(E)>+,LASTVT(E)>-即+>+,+>-,->-,->+,*>+,/>+,*>-,/>-,)>+,i>+,)>-;f)由TàT*…
23、T/…得LASTVT(T)>*,LASTVT(T)>/即*>*,*>/,/>*,/>/,^>*,^>/,(>*,(>/,i>*,i>/;g)由FàP^…,得LASTVT(P)>^即(>^,i>^;h)由Pà(E…
24、i,得LASTVT(E)>),即+>),->),*>),
25、/>),^>),)>),i>);i)由#E#得#=#j)由#)即+>#,->#,*>#,/>#,^>#,)>#,i>#;第23页共23页优先关系表+-*/^i()#+>><<<<<>>->><<<<<>>*>>>><<<>>/>>>><<<>>^>>>>><<>>i>>>>>34>>(<<<<<<<=5)>>>>>67>>#<<<<<<<8=注1.其中3、4、5、6、7、8是为错误编号2.0表示=,1
26、表示<,2表示>二、程序设计1.语法分析程序流程图第23页共23页2.语法分析流程图3.程序结果第23页共23页4.源程序/*****main.cpp*****/#include#include#include"Window.h"intmain(intargc,char**argv){QTextCodec*codec=QTextCodec::code