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
这是一个文字转语音工具(智能识别),支持文字转语音,支持图片转文字,支持文本翻译。
该工具非常轻量,无需安装,免费使用,没有广告。
2025/12/17 11:16:34 14.72MB 粉丝免分 windows 10 文字转语音
1
国外DriverToolkit.rar好用的驱动卸载工具,免费无需注册无需安装,国外DriverToolkit.rar好用的驱动卸载工具,免费无需注册无需安装
2025/12/12 17:03:53 2.54MB 驱动卸载 备份 DriverToolkit
1
一款U盘自动拷贝工具,能够非常方便的拷贝U盘上的文件到指定的目录。
软件支持U盘自动检测,支持拷贝所有文件也支持指定类型的文件,同时还支持按U盘原有目录结构拷贝文件等等。
纯绿色软件,无需安装。
1
VB精简版,无需安装,直接解压就可以用。
适合计算机二级考试和普通VB学习者,有需要的就下载吧
2025/11/7 4:21:44 10.49MB VB
1
本套软件适合于学校、企业的网上报修系统。
没有复杂的操作,普通人员都很容易上手实践。
并且在软件上不需要投入很多的人力培训进行操作。
网上报修系统管理平台,采用了BS架构开发,利用.NET技术和sqlserver数据库进行系统的开发,系统是一款专业的报修管理平台。
灵活调度手段可以即时进行报修,并且自动通知和。
所有用户无需安装和繁琐的配置,因为我们的报修管理运行在服务器上.使用时所有要做的就是登录系统。
管理且使用好软件可以有效提高您的生产力和效率。
对于学校/企业来说,时间就是金钱-生产率的提高,可以促使节约更多的成本。
1.用户报修2.报修单管理3.派单管理4.维修管理5.用户中心6.公告信息可扩展优化功能:电子化巡检,维修拍照存证;
业主客户在线报修;报修用户可以通过微信、网站、手机、平板一键提交报修单;随时查看报修任务状态;可以评价和投诉报修员;短信绑定/微信绑定,实时通知报修
2025/10/30 1:39:24 16.19MB 系统管理平台
1
无需安装,绿色版part3这个东西不好弄,从朋友那弄来的,他从内部里拿的,OJ离线版,放入输入输出数据,系统会拿你的输出数据和标准的输出数据进行比较,匹配则AC,当然也有TLE,RE等等,有输入输出数据,但是不能联网?或者网络上没有这个题的OJ?又或者你自己想了一个题,要验证。

等等,这个就是你的最好选择,ACMer的必备,没有离线判断系统,不算一个真正的ACMer一起AC,一起加油!!!
2025/10/15 19:28:26 4.75MB OJ ACM/ICPC Local 判断
1
lingo中文版,很有帮助,绿色破解软件,无需安装,解压即可!!
2025/10/9 4:53:28 13.11MB lingo 中文
1
FXdiv仅标头库,用于通过定点乘以逆除法在现代CPU和GPU上,整数除法比乘法要慢几倍。
FXdiv实现了一种算法,用乘法和两次移位替换整数除法。
当应用程序执行相同除数的重复除法时,此算法可提高性能。
产品特点uint32_t,uint64_t和size_t整数除法仅标头的库,无需安装或构建与C99,C++,OpenCL和CUDA兼容使用特定于平台的编译器内部函数以获得最佳性能包含单元测试和微基准测试例#include/*Divisionofarraybyaconstant:referenceimplementation*/voiddivide_array_c(size_tlength,uint32_tarray[],uint32_tdivisor){for(size_ti=0;i<length;i++){array[i]/=divisor;}}/*Divisionofarraybyaconstant:implementati
1
jMazeV2描述这是我最初的jMaze从Swing到JavaFX的移植。
当前,它仅在窗口的主要部分中生成特定大小的迷宫。
安装无需安装,只需编译并运行即可。
2025/9/5 13:05:53 79KB Java
1
共 201 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡