北京林业大学编译原理实验二(基于递归下降分析法的语法分析算法).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. 也可以自己定义更多符合英语语法规则的句子。

文件下载

资源详情

( 14 个子文件 387KB ) 北京林业大学编译原理实验二(基于递归下降分析法的语法分析算法).rar
手工编写语法分析
SyntaxParser.exe 1.61MB
SyntaxParser.cpp 32.40KB
pl0.h 3.78KB
expressionFile.txt 11B
tree.txt 1.02KB
errorFile.txt 506B
fas.tmp 0B
fa.tmp 0B
test.pl 173B
yacc语法分析
yufa.exe 37.05KB
cifa.l 2.06KB
y.tab.c 46.42KB
y.tab.h 2.77KB
yufa.y 819B
[{"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,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明
服务器状态检查中...