lex与yacc》(第二版)是惟一一本专门介绍这两个重要的UNIX编程工具的书。这本新版本是完全的修订版,并以很多新的扩充示例代替了旧的示例。几个介绍性章节已经完全重写,还有一章专门介绍实现SQL语法,给出了有经验的程序员希望看到的各种细节。本书对lex和yacc的重要主题提供了详尽的参考
2021-06-02 11:10:05 5.65MB lex yacc 中文第二版
1
《lex和yacc》中文第二版,学习lex和yacc最佳实践书籍,不用多说了
2021-06-01 14:49:48 5.65MB lex yacc
1
TinyCompiler 序言 项目概述 本项目是基于flex,bison和LLVM,使用c ++ 11实现的类C语法编译器,使用flexbindingyacc对源代码进行词法,语法分析;在语法分析阶段生成整个源代码相应的抽象语法树后,根据LLVM IR(中间表示)模块中定义的中间代码语法输出与LLVM中间语言语法,机器无关的中间代码;最后,本项目通过调用LLVM后端模块的接口,根据本地指令集与操作系统架构,将中间代码编译成二进制目标代码。编译生成的目标代码之后可直接编译生成初始化文件,或与其他目标代码链接生成替代文件。 本项目解析的语法与是C语言的一个子集,但部分语法存在区别,这些将在最后的测试用例中具体说明。目前已支持的数据类型包括: 虚空 整型 浮动 双 烧焦 串 布尔 自定义结构体 样本(包括多维样本) 支持的主要语法包括: 变量的声明,初始化(包括一维细分初始化,多维序列暂不支持初始化,只能逐个元素赋值使用) 函数声明,函数调用(传递参数类型可以是任意已支持类型) 外部函数声明和调用 控制流语句if-else,for,while和任意层级的嵌套使用 单行注释(#) 二元运算
2021-05-13 00:02:15 2.01MB bison flex compiler llvm
1
yacc程序实际上是有关语法规则的说明书,它也是由定义部分、规则部分和子程序部分组成的。yacc程序的定义部分类似于lex程序的定义部分
2021-05-02 17:01:54 378KB Lex Yacc 简明教程 pdf
1
Lex和Yacc集成开发环境,Windows下一键安装!不需要使用VS配置环境!不需要调试配置文件!自带编辑器环境EditPlusPortable,安装完成即可使用。 *1:安装目录不要选择"Program Files"的文件夹 *2:安装完成后点击LexEditor.exe即可进入编辑器 *3:详细的编译与使用例程,可以参看博客[不需要配置VS,Windows下一键安装Lex和Yacc集成开发环境!图形化界面操作](https://blog.csdn.net/weixin_42577438/article/details/102544803#3__35)
2021-04-13 15:06:43 30.20MB Lex Yacc 编译 windows
1
lex与yacc文档。还算比较清晰的扫描版本,基本是绝版了。
2021-04-11 15:56:54 20.48MB 编译
1
编写一个LEX输入文件,使之生成可计算文本文件的字符数、单词数和行数且能够报告这些数字的程序。单词为不带标点或空格的字母和/或数字的序列。标点和空格不算为单词。编写一个LEX输入文件,使之可生成将SPL程序注释之外的所有关键字(保留字)均转换为大写的程序。有关SPL的关键字请见第2章或第8章所述。该LEX生成的程序要能够对SPL源程序进行分析,将不是大写的关键字转换为大写。生成如下文法表示的表达式对应的计算器: exp->exp + exp | exp – exp | exp *exp | exp / exp | exp ^exp | -exp |(exp)|NUM 对于输入的中缀表达式,要给出结果。如3+(4*5)结果应为23.要求能连续处理若干个数学表达式,直到输入结束或文件结束。 已知表达式文法的扩充巴克斯范式为: S->E# E->T+T|T-T T->F*F|F/F F->(E)|I 从键盘或文件输入表达式,利用递归下降法求出其值。若输入表达式有错,则给出报错信息。例如:输入表达式串为13+5*4,则应给出结果为23.
1
C语言编译器 lex和yacc编写的c语言编译器 词法分析与语法分析的原始文件扩展: ://www.quut.com/c/ANSI-C-grammar-l-1998.html和 实现了C语言除了struct和指针几乎所有的语法。 运行 环境要求:flex bison g ++ 11 python3 中间代码生成 Windows命令行输入: flex compiler.l bison -vdty compiler.y g++ -std=c++11 -o compiler tree.cpp Praser.cpp innerCode.cpp tools.cpp codeOptimize.cpp lex.yy.c y.tab.c compiler.exe test/test.c 或者 makefile.bat 目标代码生成 进入objectcode文件夹,命令行输入 python objectcode.py objectcode.py读取的源文件为inter.txt,生成的mips汇流编码在result.asm文件中 中间代码格式定义 语法 描述 标签1: 定义标签label1 功能f:
2021-03-02 16:17:41 5.1MB c compiler mips python3
1
用lex和yacc写的tiny c编译 用lex和yacc写的tiny c编译 用lex和yacc写的tiny c编译
2020-12-10 21:05:52 18KB c语言 编译器 lex yacc
1
作者: 胡彦 本框架是一个lex/yacc完整的示例,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行。 本例子虽小却演示了lex/yacc程序最常见和重要的特征: * lex/yacc文件格式、程序结构。 * 如何在lex/yacc中使用C++和STL库,用extern "C"声明那些lex/yacc生成的、要链接的C函数,如yylex(), yywrap(), yyerror()。 * 重定义YYSTYPE/yylval为复杂类型。 * 用%token方式声明yacc记号。 * 用%type方式声明非终结符的类型。 * lex里正则表达式的定义、识别方式。 * lex里用yylval向yacc返回属性值。 * 在yacc嵌入的C代码动作里,对记号属性($1, $2等)、和非终结符属性($$)的正确引用方法。 * 对yyin/yyout重赋值,以改变yacc默认的输入/输出目标。 * 如何开始解析(yyparse函数),结束或继续解析(yywrap函数)。 本例子功能是,对当前目录下的file.txt文件,解析出其中的标识符、数字、其它符号,显示在屏幕上。linux调试环境是Ubuntu 10.04。 总之,大部分框架已经搭好了,你只要稍加扩展就可以成为一个计算器之类的程序,用于《编译原理》的课程设计。 文件列表: lex.l: lex程序文件。 yacc.y: yacc程序文件。 main.hpp: 共同使用的头文件。 Makefile: makefile文件。 file.txt: 给程序解析的文本文件。 使用方法: 1-把lex_yacc_example.rar解压到linux/cygwin下。 2-命令行进入lex_yacc_example目录。 3-敲入make,这时会自动执行以下操作: (1) 自动调用flex编译.l文件,生成lex.yy.c文件。 (2) 自动调用bison编译.y文件,生成yacc.tab.c和yacc.tab.h文件。 (3) 自动调用g++编译、链接出可执行文件main。 (4) 自动执行main,得到如下结果:。 bison -d yacc.y g++ -c lex.yy.c g++ -c yacc.tab.c g++ lex.yy.o yacc.tab.o -o main id: abc id: defghi int: 123 int: 45678 op: ! op: @ op: # op: $ AllId: abc defghi 参考资料:《Lex和Yacc从入门到精通(6)-解析C-C++包含文件》, http://blog.csdn.net/pandaxcl/article/details/1321552 其它文章和代码请留意我的blog: http://blog.csdn.net/huyansoft 2013-4-27
2020-12-10 21:03:45 52KB Lex_Yacc 编译原理 课程设计 代码_例子
1