试验三-递归下降分析器设计与实现--编译原理试验报告_第1页
试验三-递归下降分析器设计与实现--编译原理试验报告_第2页
试验三-递归下降分析器设计与实现--编译原理试验报告_第3页
试验三-递归下降分析器设计与实现--编译原理试验报告_第4页
试验三-递归下降分析器设计与实现--编译原理试验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验只符优先分析算法的设计与实现实验三 递归下降分析器设计与实现1、实验目的:(1) 掌握自上而下语法分析的要求与特点。(2) 掌握递归下降语法分析的基本原理和方法。(3) 掌握相应数据结构的设计方法。2、实验内容:编程实现给定算术表达式的递归下降分析器。算术表达式文法如下:EE+T ITTT*F | FF (E) I i3、设计说明:首先改写文法为LL(1)文法;然后为每一个非终结符,构造相应的递归过程, 过程的名字表示规则左部的非终结符;过程体按规则右部符号串的顺序编写。4、设计分析这个题U属于比较典型的递归下降语法分析。需要先将原算术表达式方法改写 为LL(1)文法为:ETE,E +TE

2、丨 TFT,T, *FT丨 F (E) | i然后再为每个非终结符设il一个对应的函数,通过各函数之间的递归调用从而 实现递归下降语法分析的功能。具体方法为:(1) 当遇到终结符&时,则编写语句If (当前读到的输入符号=&)读入下一个输入符号(2) 当遇到非终结符A时,则编写语句调用A()。(3) 当遇到A-规则时,则编写语句If C兰前读到的输入符号不属Follow (A) error ()(4) 当某个非终结符的规则有多个候选式时,按LL(1)文法的条件能唯一地选 择一个候选式进行推导.5、程序代码#includestdio. hvoid E();void T ();void El ()

3、;void T1 ();void F();char s100;int i, SIGN;int main()printfC请输入一个语句,以#号结束语句(直接输入#号推出)n); while( 1 )SIGN = 0;i 二0;scanf (“s: &s);if( s0 = #)return 0;E();if(si= #)printfC正确语句! n);printfC请输入一个语句,以#号结束语句n);return 1;void E()if(SIGN=O)TO;E10;void El ()10实验三昇符优先分析氛法的设计习实现辻(SIGN=O)辻(si= +)+i;TO;E10;else if

4、(si!二if &si!二) printf C语句有误! n); SIGN二1;void T ()辻(SIGN二二0) F();T10;void T1 ()if(SIGN=0)辻(si二二X)+i;F();T10;else if (si !二if &si !=)!= +)printf C语句有误! n);SIGN二1;void F()辻(SIGN二二0)辻(si= C)+i;E();if(si=)卄i; else 辻(si= )printf C语句有误! n);SIGN二1;+i;else if (si= i,)+i;elseprintf C语句有误! n);SIGN二1;6、测试用例(1)

5、只含有一个字符的形式:10a:亡:*C : DocuMQixtz kxid SettingsKAdaini strator面实崟二:算术表达式谨旧下降分析程序设.-.| 请输入需识别的句子皿success涌输入需识别的句子5fall涌输入需识别的句子:触fail(2) 含有+ 的形式: i+ii+i+ii+e *C : DocaMQXkts oxlJ Scttingskl*iDix stratox*面欧崟二:算术蔻达式谨归下降分靳程 慣输入需识别的句子:4 error!Press any key to continuec *C : DoctuBQXktz kxid Set tingsini s

6、tratorK面安崟二:算术表达式谨旧下降分析程序设.| - X请输入需识别的句子:*+erior!1Press any key to continue(3) 含有*的形式:i*i i*i*i i*c *C : DocruBQxxtz kxid Set tings VAJm ini ztr ator面安崟二:算术表达式谨旧下降分靳程序 15-|口|X请输入需识别的句子=i*isuccess请输入需识别的句子:successz *C : DocaMQnts 3id Sct,tixkgzKAd*ixki strator 面安崟二:茸术表达曲旧下嗓分崭程序设请输入需识别的句子:込Berror!曾Pr

7、ess any key to continuee *C : DocaMQnts 3kd S2ttingzVAd*inii stratorV面实崟二:算术表达式谨归下降分祐程 |请输入需识别的句子:* erior!Press any key to continue(4) 含有()的形式:(i)()|口| X(i) )e *C : Docuoexit s oxid Sdin&sAA如ini = at.ow贯面实崟二:算术義达式谨旧下降分析程序设.|n|X请输入需识别的句子= I 1success请输入需识别的句子:erior!Press any key to continuehlc *C : Do

8、coMQXkts oxidAlpini stratorK面卖崟二:算术表达式连归下降分祐程序设.请输入需识别的句子=d SettinsVAdhiiiiistratorV面实验二:算术表达式递归下降分析程序设 请输人需识别的句子: i用 fail(5) 综合形式: (i+i) *i (i+i)*(i+i) i+i*i i+i* (*i+ (i+ Iiic *C : DocwBQntz aid SettingzKAlpini str ator面安崟二:算术表达式谴19下降分析程序设.请输入需:只别为句子=success请输入需识别的句子:success请输入需识别的句子successlM输入需识别

9、的句子error?Press any key co continue.z *C : DocuMQixtz 3id SettingsKAdhiiiki strator 面实崟二:算术表达曲旧下嗓分祐程序设WBB请输入需识别的句子Herror!imPress any key to continueDI实脸覓符优先分忻算法的设计与实现*C : DocuQxits oxid ScttinssKAlBkini stratorV面实崟二:算术袤达式谨归下降分析程序设. I请输入需识别的句子:+U erior!Press any key to continue.c CADocuents a&d Settin

10、sVAdBinistrator桌面实验二-算术表达式递归下降分析程序设. |请输入需识别的句子:辽坤 error?7、系统实施系统实施环境为VC+6. 0,在系统的实施过程中存在的问题主要是程序输 入错误,没有大的技术问题,经过调试和修改,系统最终能够运行并实现上 述所有功能。以下列出程序运行时的儿个界面:(1)系统运行初始界面:10(2) 导入文法选择要导入的文本实验三昇符优先分析氛法的设计习实现(3)生成非终结符集合,终结符集合,空串的非终结符集合,非终结符号的 FIRST集合,非终结符号的FOLLOW集合,各产生式的SELECT集合,预测分析表:8、实验总结通过木次试验实践掌握了自上而下语法分析法的特点。掌握了递 归下降语法分析的基本原理和方法。运用递归下降分析法完成了木试 验的语法分析构造,并且成功的分析出每种正确的句子和错误的句 子。函数的构造是根据文法分析的递归过程,所编写每个函数的功 能,以文法的右

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论