北京林业大学编译原理实验二(基于递归下降分析法的语法分析算法).rar

上传者: 43616565 | 上传时间: 2021-08-23 13:10:20 | 文件大小: 387KB | 文件类型: RAR
实验目的: 通过阅读和改造PL/0编译程序,熟悉PL/0编译程序的整体架构,识别出各语法单位对应的子程序;掌握递归下降语法分析程序的设计思想,加深对递归下降语法分析程序的理解。 通过设计编制调试具体的YACC程序,掌握YACC源程序的基本组成。 实验内容: 1. 对PL/0编译程序进行裁减和改造,使其仅包含词法和语法分析过程。该分析程序读入PL/0语言的源程序,实现以下功能: (1)对于输入中形如/*......*/这样的注释内容需要过滤掉。 (2)如果发现词法或语法错误,输出相应的错误信息。 (3)对于输入的算法表达式(式中可以包括标识符和常量),如果合法,则输出该表达式的值。 (4)对算术表达式中的常量类型进行扩充,除了原有的整型,还可以支持浮点类型(选做)。 (5)如果输入是一个合法的语法成分 输出:输入正确,没有词法或语法错误; 输出:该语法成分对应的语法分析树。语法分析树的显示格式可自行设计,建议采用缩进的文本表示形式。(选做) 提示: (1)阅读相应语法程序时参考其对应的EBNF描述,如教材第3版表4.3。 (2)PL/0编译程序(包括主程序)是由18个嵌套及并列的子函数组成的,其中与表4.3中的语法规则直接对应的8个子函数为:block( )、constdeclaration( )、vardeclaration( )、statement( )、condition( )、expression( )、term( )、factor( )。 2.借助自动生成工具LEX和YACC完成以下实验内容 阅读并运行所给程序:词法.l、语法.y,以理解LEX和YACC的使用和二者之间的通信机制。(分别编译后生成:词法.c、语法.c,将两个文件在VC下创建到一个project下运行即可) 下面是程序运行后的输入和输出结果示例,其中输入“cat eat mouse”后,输出“Sentence is valid”,表示可以识别此类语句,而输入“I love you”后,输出“syntax error”,表示不可识别这类语句。 修改源程序(词法.l、语法.y),使得修改后的程序能够识别类似下列语法结构的语句: I love you. I like apples and pears. I wish you success. We study compiler hard. We study compiler hard in school. 也可以自己定义更多符合英语语法规则的句子。

文件下载

资源详情

[{"title":"( 14 个子文件 387KB ) 北京林业大学编译原理实验二(基于递归下降分析法的语法分析算法).rar","children":[{"title":"手工编写语法分析","children":[{"title":"SyntaxParser.exe <span style='color:#111;'> 1.61MB </span>","children":null,"spread":false},{"title":"SyntaxParser.cpp <span style='color:#111;'> 32.40KB </span>","children":null,"spread":false},{"title":"pl0.h <span style='color:#111;'> 3.78KB </span>","children":null,"spread":false},{"title":"expressionFile.txt <span style='color:#111;'> 11B </span>","children":null,"spread":false},{"title":"tree.txt <span style='color:#111;'> 1.02KB </span>","children":null,"spread":false},{"title":"errorFile.txt <span style='color:#111;'> 506B </span>","children":null,"spread":false},{"title":"fas.tmp <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"fa.tmp <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"test.pl <span style='color:#111;'> 173B </span>","children":null,"spread":false}],"spread":true},{"title":"yacc语法分析","children":[{"title":"yufa.exe <span style='color:#111;'> 37.05KB </span>","children":null,"spread":false},{"title":"cifa.l <span style='color:#111;'> 2.06KB </span>","children":null,"spread":false},{"title":"y.tab.c <span style='color:#111;'> 46.42KB </span>","children":null,"spread":false},{"title":"y.tab.h <span style='color:#111;'> 2.77KB </span>","children":null,"spread":false},{"title":"yufa.y <span style='color:#111;'> 819B </span>","children":null,"spread":false}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明