这个里面的都是测试数据,总共得分5分。从控制台输入,不能从文件中读取。实现了基本功能,加分项目都没有去实现,没有函数数组这些的实现。这是用C++语言写的,新建parser类别要选C++,其他对于VS的配置和C语言一样。for语句用的是枚举所有情况,你可以自行修改。 对预备工作中自然语言描述的简化C编译器的语言特性的语法,设计上下文无关文法进行描述 借助Yacc工具实现语法分析器 考虑语法树的构造: 1.语法树数据结构的设计:节点类型的设定,不同类型节点应保存哪些信息,多叉树的实现方式 2.实现辅助函数,完成节点创建、树创建等功能 3.利用辅助函数,修改上下文无关文法,设计翻译模式 4.修改Yacc程序,实现能构造语法树的分析器 考虑符号表处理的扩充 1.完成语法分析后,符号表项应增加哪些标识符的属性,保存语法分析的结果 2.如何扩充符号表数据结构,Yacc程序如何与Lex程序交互,正确填写符号表项 以一个简单的C源程序验证你的语法分析器,可以文本方式输出语法树结构,以节点编号输出父子关系,来验证分析器的正确性,如下例: main() { int a, b; if (a == 0) a = b + 1; } 可能的输出为: 0 : Type Specifier, integer, Children: 1 : ID Declaration, symbol: a Children: 2 : ID Declaration, symbol: b Children: 3 : Var Declaration, Children: 0 1 2 4 : ID Declaration, symbol: a Children: 5 : Const Declaration, value:0, Children: 6 : Expr, op: ==, Children: 4 5 7 : ID Declaration, symbol: a Children: 8 : ID Declaration, symbol: b Children: 9 : Const Declaration, value:1, Children: 10: Expr, op: +, Children: 8 9 11: Expr, op: =, Children: 7 10 12: if statement, Children: 6 11 13: compound statement, Children: 3 12
2019-12-21 19:58:45 3.77MB LEX YACC 南开 王刚
1
快要过去的一个学期里,学了编译原理,课程大作业写简易C编译器。能实现加减乘除四则运算,取模赋值运算,逻辑表达式运算,复合语句,if,while,for语句~支持输入输出,最终生成汇编语言代码。移位运算没写。 调试过了,如有好建议请大家赐教。
1
我找了N久,才找到的资源,拿出来和大家一同分享,里面有flex.exe和bison.exe以及相关的文件。觉得好的话,请大家顶一下。
2019-12-21 19:52:31 96KB lex.exe yacc.exe flex.exe bison.exe
1
lex和yacc构建的SQL分析器,lex和yacc构建的SQL分析器
2019-12-21 19:50:07 3KB lex yacc SQL分析器
1
Windows平台下学习Lex与Yacc的必备工具,flex-2.5.4a-1.exe 和 bison-2.4.1-setup.exe 以及 cygwin2.738 的安装文件
2019-12-21 19:45:10 5.32MB cygin flex bison
1
.l文件为lex,.c文件为测试文件; 分别使用某种高级语言和LEX实现一个C语言子集的词法分析器,即从输入的源程序中,识别出各个具有独立意义的单词,滤掉空格和注释。
2019-12-21 19:44:49 990B lex 词法分析
1
Lex 和 Yacc 从入门到精通 熊春雷 Abstract 在开发程序的过程中经常会遇到文本解析的问题, 例如: 解析 C 语言源程序, 编写 脚本引擎等等,解决这种文本解析的方法有很多,一种方法就是自己手动 用 C 或者 C++直接编写解析程序,这对于简单格式的文本信息来说,不会是什么 问题,但是 对于稍微复杂一点的文本信息的解析来说,手工编写解析器将会是 一件漫长痛苦 而容易出错的事情。本系列文档就是专门用来由浅入深的介绍两 个有名的 Unix 工 具 Lex 和 Yacc,并会一步一步的详细解释如何用这两个工具 来实现我们想要的任何 功能的解析程序,为了方便理解和应用,我会在该系列 的文章中尽可能的采用具 体可行的实例来加以阐释,而且这种实例都是尽可能 的和具体的系统平台无关的 ,因此我采用命令行程序作为我们的解析程序的最 终结果。 1、环境配置篇 开发 Lex 和 Yacc 程序最需要的程序就是 lex 和 yacc 了,如果你是 Unix 或 者 Linux 系统,则 系统自带了这两个工具,无需安装,不过值得说明的是 GNU/Linux 下面的 Lex 是 flex, 而 Yacc 则是 bison。 另外需要的就是一个 C/C++ 语言编译器,由于我们采用的是 GNU 的 lex 和 yacc,所以,理所当然的我们就 使用 GNU 的编译器了,如果是 Unix 或者 Linux 系统 ,那么编译器应该已经安装 了。在这里我重点讨论的是 Windows 系统环境下的 Lex 和 Yacc 程序的开发,至 于为什么选择 Windows 系统作为开发平台,则是为了尽可能的让初 学者容易入 门。 1.1.必备工具 言归正传, 首先列举 Windows 平台下面 Lex 和 Yacc 开发环境所需要安装的程 序: 1. Lex(flex.exe)和 Yacc(bison.exe)环境 2. C/C++编译器 1.2.flex 和 bison 值得说明的是,flex.exe和bison.exe是UnxUtils包中的文件,已经将许多 Unix/Linux平台的程序都移植到了Windows平台, 可以直接到UnxUtils网站下载, 下载解压缩之后在系统的PATH环境变量中增加UnxUtils所有的exe文件所在的目 录,使 得DOS命令行可以直接搜索到flex.exe和bison.exe,除此之外还需要从 网络上下载 bison需要的bison.simple和bison.hairy两个文件,并且还要分别 设置环境变量 BISON_HAIRY指向bison.hairy, BISON_SIMPLE指向bison.simple。 Tip 如果觉得麻烦也可以直接使用我做好的flex和bison环境,点击这里下载。 解压缩 lexyacc.rar 之后运行里面的 lexyacc.bat 文件就会得到一个 lex 和 yacc 环境, 下图是简单的运行结果:
2019-12-21 19:38:50 1.51MB lex yacc 编译原理
1
在学校完成的编译原理课程设计册,有实验截图,函数功能介绍,源程序清单等
2019-12-21 19:32:56 101KB 编译原理 课程设计 c语言 计算器
1
seuLex Lex输入文件的解析 正规表达式的解析 一个正规表达式到NFA的转换算法实现 多个NFA的合并 NFA的确定化和最小化算法实现 返回状态与返回内容的对应 SeuLex应用
2019-12-21 19:30:25 23KB Lex,编译
1
gen_lex_hash for pc,mysql交叉编译需要用到的文件,5.1.51 and 5.1.63两个版本,5.1.67版本始终编译不出来。有需要的下载。
2019-12-21 19:27:27 449KB gen_lex_hash mysql
1