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
c语法分析器,采用bison2.1(yacc), flex(lex), 生成程序的语法树 分析单个文件,不支持预处理, 不解析预处理符号# bison,flex工具在上传包内,语法见cgrammar-new.y,词法见input.lex 另附相关说明,本代码采用vs2005,建立console工程即可编译运行。 测试文件test.c, 输出结果out.txt
2019-12-21 19:38:06 914KB c 语法分析 yacc bison
1
These tools comprise a lexer generator and a LALR(1) parser generator, written entirely in C# and generating C#.
2019-12-21 19:33:22 512KB lexer YACC LALR
1
在学校完成的编译原理课程设计册,有实验截图,函数功能介绍,源程序清单等
2019-12-21 19:32:56 101KB 编译原理 课程设计 c语言 计算器
1
本资源来源于北邮编译原理作业,代码中的语法分析和语义分析均为基于yacc实现,文件中包括代码、文档、测试用例。可供yacc初学者学习参考。
2019-12-21 19:26:24 238KB yacc 语法分析 语义分析 编译原理
1
《lex与yacc》(第二版)是惟一一本专门介绍这两个重要的UNIX编程工具的书。这本新版本是完全的修订版,并以很多新的扩充示例代替了旧的示例。几个介绍性章节已经完全重写,还有一章专门介绍实现SQL语法,给出了有经验的程序员希望看到的各种细节。 本书对lex和yacc的重要主题提供了详尽的参考。对所有主要的lex和yacc的MS-DOS和UNIX版本,本书都进行了介绍,包括AT&T lex和yacc、Berkeley yacc、Berkeley/Gnu flex、Gnu bison、MKS lex和yacc、Abraxas PCYACC等等。
2019-12-21 19:25:47 5.48MB lex Yac (带源码
1
大三编译原理课设 欢迎大家下载!!!很强大
2019-12-21 19:24:01 171KB SQL LEX YACC
1
lex和yacc实现代码 lex和yacc实现代码 lex和yacc实现代码
2019-12-21 18:59:03 74KB lex和yacc代码
1
安装Parser Generator软件,熟悉其使用,对讲义中简单表达式计算的Yacc程序进行修改 1.将所有的词法分析功能均放在yygettoken函数内实现,为+、-、*、\、(、)每个运算符及整数分别定义一个单词类别,在yygettoken内实现代码,能识别这些单词,并将单词类别返回给词法分析程序。 2.实现功能更强的词法分析程序,可识别并忽略空格、制表符、回车等空白符,能识别多位十进制整数。 3.修改Yacc程序,不进行表达式的计算,而是实现中缀表达式到后缀表达式的转换。 C语言版,包含.y和对应的两个.h,.c文件,在VS2013上编译成功。
2019-12-21 18:50:31 5KB YACC lex
1
很多人都知道lex&yacc,特别是计算机科班毕业的。因为在unix上自带的bshell就有这些功能。 cygwin里面也有这些。 可是,这种基本的功能,在win32平台下,微软似乎忘了。 有个外国人写了个软件Parser Generator (bum-bee). 他把unix的这些功能,做了个软件放到win32平台上。 我的这个例子不是讲这些理论,而是想对那些初学者讲解,如何把这种第三方工具集成到vc中,如何设置vc ide来编译这些文件。 有兴趣的人,可以给我写信。 haoyujie@sohu.com 但我很忙,可能很久也不去一回,所以可能很久才能回。
2019-12-21 18:49:59 19KB lex yacc 计算器 正则表达式
1