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环境,下图是简单的运行结果:
2026/1/1 15:30:16 1.51MB lex yacc 编译原理
1
从零开始学习音视频编程技术(二十)录屏软件开发之录屏生成MP4这是Qt的工程,建议使用QtCreator打开Qt的版本是4.8.4,当然是用Qt5也是没有影响的,不过编译器记得使用Mingw。
FFMPEG的版本是2.5.2记得将ffmpeg/bin目录下的dll文件拷贝到编译生成的exe所在的目录下,否则会无法运行。
关于代码的解释请参考:http://blog.yundiantech.com/?log=blog&id=27Qt开发环境的搭建请参考:http://blog.yundiantech.com/?log=blog&id=6Qt中引用FFMPEG库文件请参考:http://blog.yundiantech.com/?log=blog&id=7学习音视频技术欢迎访问http://blog.yundiantech.com音视频技术交流讨论欢迎加QQ群121376426
2025/12/29 14:21:44 17.41MB ffmpeg
1
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。
他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。
只是CMake的组态档取名为CMakeLists.txt。
Cmake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或WindowsVisualC++的projects/workspaces),然后再依一般的建构方式使用。
这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake和SCons等其他类似系统的区别之处。
2025/12/26 3:37:09 8MB cmake 跨平台
1
图表控件TeeChart破解版,支持VC6.0、VS2010等编译器。
8.89MB TeeChart
1
GNU编译器套件(GNUCompilerCollection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。
GCC的初衷是为GNU操作系统专门编写的一款编译器。
GNU系统是彻底的自由软件。
此处,“自由”的含义是它尊重用户的自由。
2025/12/19 21:22:39 30.47MB gcc
1
GCC4.4ForMinGW用于QTCreator的GCC编译器
2025/12/17 20:05:55 33.58MB GCC MinGW
1
三、设计要求1、使用模块化设计思想来设计该编译器;
2、词法分析模块用于读入输入串,并将其转换成供语法分析模块使用的记号流。
其中包括滤掉空格和注释、识别常数、识别标识符和关键字等功能;
3、要求在语法分析模块中利用语法制导翻译技术完成具体的中缀表达式到后缀表达式的翻译,其中包括按前述翻译器的规格说明构建对应表达式、项、因子的非终结符expr、term和factor的函数以及检查记号是否匹配的函数;
并在不匹配时调用错误处理模块;
4、要求符号表管理模块主要完成符号表对应数据结构的具体实现功能;
5、错误处理模块负责报告错误信息及位置,并终止分析过程;
6、输出模块完成翻译后所得到的后缀表达式的输出。
四、运行结果1、从键盘输入任意中缀表达式,如:4-5*6DIV4+8MOD2输出相应的后缀表达式:456*4DIV-82MOD+1、 若键盘输入串为非中缀表达式时,如:4!+*5-6DIV4+8MOD2输出相应语法错误报告信息,并停止语法分析,如:line1:compilererror!
1
华中科技大学编译原理面向过程的C--语言的编译器设计功能包括:词法分析和语法分析、语义分析、中间代码生成的源码.zip
1
基于LPC2138平台,KEIL编译器,protues仿真环境,对LPC2138外设进行了实验,有GPIOUARTI2CSPI等基础实验进行了,仿真和验证;
适合初学者;
其中TIMER实验经示波器查看是错误的;
2025/12/8 10:15:13 1.53MB LPC2138 KEIL UART
1
Microchip--Maplab--XC32激活工具编译器XC32各版本的激活
2025/12/2 12:35:33 2KB XC32 microchip
1
共 593 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡