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
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
nomacs中文版是一个免费的开源图像查看器,它支持多个平台。
您可以使用它来查看所有常见的图像格式,包括RAW和Psd图像。
Nomacs是根据GNU通用公共许可证v3许可的,可用于Windows,Linux,FreeBSD,Mac和OS/2。
开源免费可商用图像查看器nomacs下载开源免费可商用图像查看器nomacs中文版nomacs具有半透明的小部件,可显示其他信息,例如缩略图,元数据或直方图。
它能够浏览可解压缩到目录中的zip或MSOffice文件中的图像。
可以显示与图像一起存储的元数据,并且可以向图像添加注释。
包括当前文件夹的缩略图预览以及允许在文件夹之间切换的文件浏览器面板。
在目录中,您可以应用文件过滤器,以便仅显示文件名具有特定字符串或匹配正则表达式的图像。
激活缓存可以立即在图像之间切换。
nomacs包括用于调整亮度,对比度,饱和度,色相,伽玛和曝光的图像处理方法。
它具有伪彩色功能,可以创建假彩色图像。
nomacs的独特功能是多个实例的同步。
使用此功能,您可以通过在完全相同的位置缩放和/或平移甚至以不同的不透明度覆盖图像来轻松比较图像。
由于其组织良好的功能集,您可以轻松配置专用参数。
可以使用“拖放”操作或内置的浏览功能将照片上传到工作环境中。
另外,它提供对存储在计算机中的文件和文件夹的快速访问,因此您可以轻松地选择要查看和处理的图像。
该工具可让您使用以下文件格式打开照片:PNG,JPG,BMP,PPM,ARW,PSD,DNG,TGA,ICO,CRW,MPO等。
此外,您可以放大或缩小,从所选目录转到下一张或上一张图片,按文件名,创建日期,上次修改日期,升序或降序对项目进行排序,并切换到全屏模式更好地专注于您的工作。
您还可以查看在缩略图列表或幻灯片中显示的照片,检查元数据(例如型号,曝光时间,等级,日期),显示或隐藏内置直方图,执行搜索操作以及更改壁纸。
nomacs使您可以将图像旋转到不同角度,调整大小或裁剪照片,查看GPS坐标,使用热键(可以重新分配)以及将编辑的照片打印或保存为JPEG,PNG,TIF,BMP,PPM或其他文件格式。
最后但并非最不重要的一点是,您可以进行文件关联,重命名项目,将当前图像复制到剪贴板,调整亮度,对比度,饱和度,色相,伽玛和曝光度,并使用存储在计算机中的多张图片创建马赛克图像,以及将数据导出到标记图像文件格式(TIFF)。
总而言之,nomacs提供了一组方便的功能,可帮助您查看图像并应用多个编辑选项。
由于其直观的布局,它适合新手和专业人士。
如果要跳过安装步骤,可以下载该程序的可移植版本,可在此处找到。
nomacs是根据GNU通用公共许可证v3许可的,可用于Windows,Linux,FreeBSD,Mac和OS/2。
它是免费的,供私人和商业使用。
如果您要报告任何错误或要求新功能,请使用我们的跟踪器。
nomacs中文设置:Edit–Settings–Grneral中找到Language选项,下拉找到简体中文,重启即可。
当然您也可以直接按Ctrl+Shift+P快捷键来打开设置选项。
2025/11/15 4:52:11 22.4MB 可商用图像查看器
1
该文件用于解决通过java控制串口发送数据给时在Linux环境下报错,但在windows环境下正常。
报错内容如下:[librxtxSerial.so+0x75da]Java_gnu_io_RXTXPort_nativeDrain+0xea。
经过一番研究得出结论为为rxtx包版本问题,使用本文档中的版本即可正常运行
2025/11/8 20:33:57 39.61MB linux java 串口
1
学习使用了GDB一段时间后,发现它真的好强大!好用!GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。
所谓“寸有所长,尺有所短”就是这个道理。
一般来说,GDB主要帮忙你完成下面四个方面的功能:从上面看来,GDB和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现GDB这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。
让我们
2025/10/18 7:05:37 170KB linuxc/c++GDB教程详解
1
μTorrent是一个小巧强劲,全功能,用C++编写,支持Windows、MacOSX和GNU/Linux平台的免费BitTorrent客户端。
支持UPnP、BT扩展协议、磁力链接(MagnetLinks)、IPv6、DHT和uTP以及RSS下载器等丰富特性。
μTorrent具有许多自定义选项,比如多任务同时下载,设置文件下载优先级,根据计划任务调整占用的带宽,全局/单个任务的速度限制,快速断点续传机制等等。
在界面上,μTorrent直观易用,并支持超过54种语言。
2025/9/22 18:45:11 1.13MB BT下载 uTorrent
1
该程序调用一些GNU库,请在类Unix系统下编译使用。
2025/9/12 18:44:32 7KB Dstar
1
之前那个对,会报错ImportError:/archiconda3/lib/python3.7/site-packages/matplotlib/_path.cpython-37m-aarch64-linux-gnu.so:filetooshort这个.new的可以了。
将资源重命名去掉.new,就可以用了
2025/8/18 1:35:27 8.04MB tensorflow aarch64 matplotlib
1
glibc是GNU发布的libc库,即c运行库。
glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。
linux的glibc包升级需将所有的glibc相关的包都进行升级,否则影响linux大部分命令的使用。
该资源包含如下包:glibc-2.14.1-6.x86_64.rpmglibc-common-2.14.1-6.x86_64.rpmglibc-devel-2.14.1-6.x86_64.rpmglibc-headers-2.14.1-6.x86_64.rpmglibc-static-2.14.1-6.x86_64.rpmglibc-utils-2.14.1-6.x86_64.rpmnscd-2.14.1-6.x86_64
2025/8/2 2:51:10 16.57MB glibc-2.14.1
1
ARMCortex-M3权威指南不管你是做软件的还是做硬件的,只要相中了ARM的Cortex-M3处理器,这本书就是为你而写。
以前Cortex-M3的资料只有两个大部头,分别是:《Cortex-M3技术参考手册》(Cortex-M3TechnicalReferenceManual,简称Cortex-M3TRM)《ARMv7-M应用程序级架构参考手册》(ARMv7-MApplicationLevelArchitectureReferenceManual)虽然这它俩差不多是权威到“古文观止”级的,但实在是太深入了,以致于对新手来说那简直就是天书。
本书则是一个精简版,并且叙述的前后更有条理。
目标读者包括:一线程序员,嵌入式产品设计师,片上系统(SoC)工程师,嵌入式系统发烧友,学院研究员,还包括所有涉猎过单片机和微处理器领域,慧眼识珍看中了Cortex-M3的人民大众们。
本书要给Cortex-M3的架构做一个简介,浏览一下指令系统,写几个段代码练练手,说一些硬件特性,再表一表该处理器精深的调试系统。
本书还给出了应用程序范例,手把手地教你使用开发工具,包括ARM的工具和GNU的工具链。
如果你以前是ARM7TDMI的玩家,正准备着升级装备到Cortex-M3,本书也非常解渴,里面讲述了两者的不同,以及鸟枪换炮的升级过程。
2025/7/20 15:24:18 6.6MB ARM
1
共 61 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡