分享自己做的编译原理试验综合程序,包括词法分析、语法分析和逆波兰式!方便大家学习!
2021-09-17 18:40:05 265KB 编译原理
1
本资源为编译原理 语法分析C++代码实现,使用codeblocks或者vs即可运行 设计要求:创建一个语法分析程序,它采用LL(1)方法或LR(1)方法。该程序的输入是一个文本文档,包括一组2型文法(上下文无关文法)的产生式和任务1程序输出的符号表。任务2的输出是一个YES或NO,即源代码字符串是否符合本2型文法。
2021-09-08 18:06:30 262KB 语法分析 编译原理 LL LR
包括:设计目的、设计要求、开发环境、分析器模型图、设计原理、框架图、分析过程、主要函数、运行结果 (1)词法分析: 创建一个词法分析程序,它支持对正规文法的分析。必须使用DFA(确定性有限自动机)或NFA(非确定性有限自动机)来实现这一项目。该程序的输入是一个文本文件,包括一组由该正规文法产生的产生式以及待识别源代码字符串。该程序的输出是一个符号表(二元式),它由5种类型符号:关键词,识别符,常量,界符和操作符。 (2)语法分析: 创建一个语法分析程序,它采用LL(1)方法或LR(1)方法。该程序的输入是一个文本文档,包括一组2型文法(上下文无关文法)的产生式和任务1程序输出的符号表。任务2的输出是一个YES或NO,即源代码字符串是否符合本2型文法。
编译原理 第04讲 语法分析1.pdf
2021-09-01 22:00:32 1.08MB 学习资源
1
实验目的: 通过阅读和改造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. 也可以自己定义更多符合英语语法规则的句子。
1
最全代码,课设代码已验证可以直接运行,语法分析用了两种方式实现:LL1以及递归下降分别实现,Predict集也有两种方式实现,具体详见代码。注释全面。
2021-08-06 17:06:40 365KB C++/C
简单小巧的ts流语法分析工具,开源,无需注册
2021-08-03 17:38:20 152KB TS 语法
1
简单的语法分析程序,多一个翻译int36的功能,适合某211的课程设计
2021-08-03 09:28:12 41KB 编译原理
1
编译原理课程设计,完成了词法分析,语法分析和类型检查,编写语言为JAVA。使用JLEX产生词法分析器。
2021-07-26 21:17:42 591KB 编译 词法分析 语法分析 类型检查
1