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
本论文共分四章,从最基本的PLC技术到现代城市交通系统的模型制作,设计者给出了明确的设计思路。
文章刚开始介绍了PLC的相关知识,给出了PLC的定义、功能、特点及发展阶段,并引申到在本系统中的应用。
在对系统特点的说明中,文章详细的给出了系统实现的功能及其控制方法。
最后介绍了系统的软硬件,文章对此系统中所用到的元器件一一做了详细介绍,并对系统的软件编程及程序编辑做了说明。
2026/1/1 10:19:43 1.22MB 现代城市交通灯
1
当然这种架构模式本身的一些问题也会在接下来的内容就加以介绍,另外就是如果大家有什么不同观点的话,欢迎拍砖(只要不打脸就行,呵呵)。
一.MVC是谁提出的模型-视图-控制器(MVC)是XeroxPARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。
最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。
模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
二.MVC是否适合进行大项目的开发MVC框架肯定是适合于做大项目开发的,但并不是说有了MVC框架我们就可以开发大项目,听起来有些
1
利用vasp工具计算石墨烯的能带结构,态密度,以及自选密度分布和光学性质。
这篇笔记是自己在写毕业论文时跟着师哥师姐在学校集群上做计算时整理的笔记,对vasp计算的原理不太了解,只会这个简单的过程,里面有错误之处,尽情指正,十分感谢。
2025/12/31 21:05:13 1.07MB vasp graphene
1
前后端分离,包括支付,前端页面,管理员页面,各个功能!!
2025/12/31 17:17:02 514KB java
1
完整的AR人脸库,自己做过实验,很好用,包含表情,光照,遮挡等
2025/12/31 11:47:35 21.03MB AR人脸库
1
本文为2015年全国大学生电子设计竞赛专题系列的第二篇文章的附件文档,主要是在准备综合测评时候,做了一下2011年全国大学生电子设计竞赛的综合测评题目,练练手,本文所提供方案仅供参考,不当之处,还请指正。
原文链接http://blog.csdn.net/csdnhuaong/article/details/48023773
2025/12/31 2:31:46 6.05MB 全国大竞
1
做通信覆盖,轨道仿真的可能用得上
2025/12/31 0:34:26 590.81MB 数字通信
1
经典协议leach源码包mit.tar.gz已经太过陈旧,因此本人经过一番努力做出了mit2.35移植版,需要改的bug本人几乎都改过了。
如果还有问题请去本人博客咨询。
2025/12/30 20:13:04 614KB mit LEACH wsn 无线传感网络
1
1.2空间音频不再是苹果用户的专属空间音频最早出现在苹果2020年发布的iOS14上,使用支持空间音频的设备,可以感受到声音从360度方向传来,实现更沉浸的环绕立体声效果。
如今这一功能,Android12用户也能享受了。
Android12支持最新的MPEG-H(一种能带来沉浸式的声音体验的音频标准),并针对多达24个音频通道进行了优化,而之前只有8个通道。
开发者可以利用这一特性,让Android设备的影音体验提上一个台阶。
除了空间音频,Android12上的App还可以通过手机的振动马达,提供与声音相匹配的触觉反馈,实现更身临其境的游戏和音频体验。
例如,可以使用通过不同铃声对应触觉反馈来识别来电者,或者在赛车游戏中模拟崎岖路面的振动。
1.3简洁的播放控制与交互,方便切歌看剧打游戏很多用户的手机上,都安装了不止一个视频或音乐软件,在不同影音和游戏软件中进行切换控制,已经成为了一个交互痛点。
对此Android12进行了三项优化:**a.调整播放控制图标UI。
**在锁屏和下拉通知栏中,谷歌将播放控制的图标做得更大了。
歌曲名称和歌手以单行形式显示在上方,播放和切歌按钮在底部,专辑封面在左侧,看起来比以前更紧凑了。
1.2空间音频不再是苹果用户的专属空间音频最早出现在苹果2020年发布的iOS14上,使用支持空间音频的设备,可以感受到声音从360度方向传来,实现更沉浸的环绕立体声效果。
如今这一功能,Android12用户也能享受了。
Android12支持最新的MPEG-H(一种能带来沉浸式的声音体验的音频标准),并针对多达24个音频通道进行了优化,而之前只有8个通道。
开发者可以利用这一特性,让Android设备的影音体验提上一个台阶。
除了空间音频,Android12上的App还可以通过手机的振动马达,提供与声音相匹配的触觉反馈,实现更身临其境的游戏和音频体验。
例如,可以使用通过不同铃声对应触觉反馈来识别来电者,或者在赛车游戏中模拟崎岖路面的振动。
1.3简洁的播放控制与交互,方便切歌看剧打游戏很多用户的手机上,都安装了不止一个视频或音乐软件,在不同影音和游戏软件中进行切换控制,已经成为了一个交互痛点。
对此Android12进行了三项优化:**a.调整播放控制图标UI。
**在锁屏和下拉通知栏中,谷歌将播放控制的图标做得更大了。
歌曲名称和歌手以单行形式显示在上方,播放和切歌按钮在底部,专辑封面在左侧,看起来比以前更紧凑了。
1.2空间音频不再是苹果用户的专属空间音频最早出现在苹果2020年发布的iOS14上,使用支持空间音频的设备,可以感受到声音从360度方向传来,实现更沉浸的环绕立体声效果。
如今这一功能,Android12用户也能享受了。
Android12支持最新的MPEG-H(一种能带来沉浸式的声音体验的音频标准),并针对多达24个音频通道进行了优化,而之前只有8个通道。
开发者可以利用这一特性,让Android设备的影音体验提上一个台阶。
除了空间音频,Android12上的App还可以通过手机的振动马达,提供与声音相匹配的触觉反馈,实现更身临其境的游戏和音频体验。
例如,可以使用通过不同铃声对应触觉反馈来识别来电者,或者在赛车游戏中模拟崎岖路面的振动。
1.3简洁的播放控制与交互,方便切歌看剧打游戏很多用户的手机上,都安装了不止一个视频或音乐软件,在不同影音和游戏软件中进行切换控制,已经成为了一个交互痛点。
对此Android12进行了三项优化:**a.调整播放控制图标UI。
**在锁屏和下拉通知栏中,谷歌将播放控制的图标做得更大了。
歌曲名称和歌手以单行形式显示在上方,播放和切歌按钮在底部,专辑封面在左侧,看起来比以前更紧凑了。
1.2空间音频不再是苹果用户的专属空间音频最早出现在苹果2020年发布的iOS14上,使用支持空间音频的设备,可以感受到声音从360度方向传来,实现更沉浸的环绕立体声效果。
如今这一功能,Android12用户也能享受了。
Android12支持最新的MPEG-H(一种能带来沉浸式的声音体验的音频标准),并针对多达24个音频通道进行了优化,而之前只有8个通道。
开发者可以利用这一特性,让Android设备的影音体验提上一个台阶。
除了空间音频,Android12上的App还可以通过手机的振动马达,提供与声音相匹配的触觉反馈,实现更身临其境的游戏和音频体验。
例如,可以使用通过不同铃声对应触觉反馈来识别来电者,
2025/12/29 4:08:26 379B PassportFeignSer
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡