云南大学《编译原理》实验3

云南大学《编译原理》实验3

ID:41569329

大小:108.92 KB

页数:5页

时间:2019-08-28

云南大学《编译原理》实验3_第1页
云南大学《编译原理》实验3_第2页
云南大学《编译原理》实验3_第3页
云南大学《编译原理》实验3_第4页
云南大学《编译原理》实验3_第5页
资源描述:

《云南大学《编译原理》实验3》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、云南大学软件学院实验报告姓名:周坤学号:20121120256班级:2012级软件工程H期:_成绩:实验三判定算符优先文法、实验目标编写一个程序,用于判定给定的文法是否为算符优先文法。1.文法的机内表示;2.F1RSTVT集和LASTVT集的计算;3.算符优先关系矩阵的构造。、实现方案2.1开发工具及环境开发工具:eclipseI具开发环境:硬件环境:CPUP3800MHZ以上,建议P52.OGHZ100G以上,建议用250G标准VGA,24位真彩色256MB以上,建议512M键盘、鼠标、网卡、能连通互联网软件环境:Win7操作系统安装一个java的JDK包以及配置相应

2、的环境变量参数2.2程序的架构木次实验实现的词法分析器,采用的是C/S架构,这样的架构优点是效率高,交互性强。实现步龙3.1算符优先分析方法原理:算符优先分析方法是根据算符之间的优先关系而设计的一种自下而上的分析方法。算符优先分析的基本思想是只规定算符Z间的优先关系,也就是只考虑终结符之间的优先关系。算符优先分析过程是自下而上的归约过程,所谓的算符优先分析就是定义算符Z间(确切地说,终结符Z间)的某种优先关系,借助于这种优先关系寻找“可归约串”和进行归约。该文法必须满足以下条件:文法它的任一产生式的右部都不含两个相继(并列)的非终结符,即不含如下产生式右部:・・・QR…

3、;首先求出该文法的优先关系表,在程序中用2维数组表示,-1表示小于或者等丁,大于为1,其它为0表示错误。在输入一申字符申以后进行按照文法一步一步的进行规约,我所进行的是宜接规约到文法的符号而不是规约到No数据结构使用的是链表,用一个STRUCT来表示一个元索,其中包含符号和下一个符号的指针。3.2程序分析步骤:在程序的主界面中首先用cout列出了在词法分析中需要用到的几个文法:直接输入根据已知文法构造的算符优先关系矩阵。输入己知文法的FIRSTVT和LASTVT集合,由程序自动生成该文法的算符优先关系矩阵。S->AAV:=EE-E+T

4、TTT*F

5、FF->(E)

6、iV-

7、>i确定文法的机内表示形式;确定优先关系矩阵的存放方式结构算法4.1算法描述首先建立一个符号栈S,既用它寄存终结符,也用它寄存非终结符。以下给岀分析算法,其中k代表符号栈S的深度。k:=l;S[k]:二'#';REPEAT把下一个输入符号读进a中;IFS[k]属于firstVTTHENj:二kELSEj:=k-l;WHILES[j]>aDOBEGINREPEATQ:二S[j];IFS[j-1]属于firstVTTHENj:二jTELSEj:二j-2UNTILS[j]〈Q;把S[j+l]・・・S[k]归约为某个N;K:二j+1;S[k]:=NENDOFWHILE;TFS[

8、j]aS->AS->(T)T->T,ST->SP->#S#六、运行结果FIRSTVT集:nRSTVTS={aA(}T={aP二{#}LASTVT集:LASTVTS={aA)}

9、T={a人),}P二{#}算符优先关系表:「算aA■■0#a>>>A>>>(<<<二<)>>>J<<<>><<<二七、实验体会通过本次实验,我懂得了如何设计通过此次实验,让我了解到如何设计、编制并调试判定算符优先文法分析器,从相关网站上获取相关代码进行分析理解,才完成本次试验,加深对编译原理的理解;熟悉了判定算符优先文法分析程序的手工方式的相关原理,根据识别语言单词的状态转换图,使用某种高级语言(例如JAVA语言)直接编写此法分析程序。另外,通过此次实验也让我发现了自己的不足之处。

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

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

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