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
建设通是一款方便实用的建筑信息查询工具,提供全国建筑企业的中标信息,企业荣誉,资质等级,联系方式等信息的查询。
是建筑施工人员必备的查询工具!建设通功能特色;
1、建设通是一款整合表彰奖励、资质资格等方面的信息资源所搭建的软件2、包含建筑行业的中标、荣誉、资质、诚信档案、联系方式等信息。
建设通截图
2026/1/1 15:01:16 1.64MB 应用软件-办公软件
1
在IT领域,特别是数据分析和软件开发中,处理各种时间格式是一项常见的任务。
TLE(Two-LineElementSet)数据是用于描述人造卫星轨道的一种标准格式,主要用于航空航天和天文学。
这种数据通常包含卫星的位置和速度信息,以两行文本的形式表示,其中包含了日期和时间信息,但这种格式并不直接适用于大多数编程语言或分析工具。
本篇将围绕"TLE数据时间格式转换matlab源代码"这一主题,详细解释TLE时间格式、如何在MATLAB中进行转换,以及源码`zyDatevec.m`可能实现的方法。
1.**TLE时间格式**:TLE中的日期时间信息通常以“JulianDayNumber”(儒略日数)和“DayofYear”(年内日数)的形式给出,例如,“2022-07318:59:46.9”。
这里,“2022-073”表示当年的第73天,而“18:59:46.9”则表示该日内的具体时间。
这种表示方式在计算和存储上非常方便,但在用户交互和可视化时,往往需要转换为更常见的“年-月-日时:分:秒”格式。
2.**MATLAB中的日期和时间处理**:MATLAB提供了丰富的日期和时间处理函数,如`datetime`、`datenum`、`datestr`等。
`datenum`可以将各种日期时间格式转换为连续的数字,而`datetime`则可以创建一个日期时间对象,便于进行日期时间运算。
`datestr`则可以将日期时间对象转换为字符串。
3.**源码`zyDatevec.m`可能的实现**:这个MATLAB源码很可能是用来将TLE中的日期时间信息转换为`datetime`对象或者字符串。
通常,它会首先利用`datenum`函数解析TLE中的日期和时间,然后可能通过自定义逻辑来处理儒略日数和年内日数,最后用`datestr`将其转换为“年-月-日时:分:秒”格式。
可能的源码实现示例:```matlabfunctiondatetimeVector=zyDatevec(tleData)%将TLE数据中的日期时间转换为datetime对象julianDays=str2double(tleData(1:5));%儒略日数dayOfYear=str2double(tleData(6:8));%年内日数timeOfDay=tleData(9:end);%一天中的时间%创建datenum对象dateNum=datenum([julianDaysdayOfYear],'julian','StartJulianDay',0);%添加时间信息timeVec=strsplit(timeOfDay,':');timeNum=[timeVec{1}./24,timeVec{2}./60,timeVec{3}./3600];datetimeObj=datetime(dateNum)+hours(timeNum);%转换为"年-月-日时:分:秒"格式datetimeVector=datestr(datetimeObj,'yyyy-mm-ddHH:MM:SS.FFF');end```这个简化的例子演示了如何从TLE格式中提取日期时间信息,并将其转换为MATLAB可以理解的日期时间格式。
实际的`zyDatevec.m`可能会更复杂,包括错误检查、异常处理和更精确的时间转换逻辑。
TLE数据时间格式转换在MATLAB中涉及了对特定日期格式的理解,以及MATLAB日期时间函数的灵活运用。
通过编写这样的源代码,用户可以将TLE数据更好地整合到他们的数据分析流程中,便于进一步的处理和可视化。
1
使用select2的时候,想通过拼音或者首字母检索下拉的选项,但是又没有通过ajax等技术去实现这时候可以试试用这种伪方法~这种方法的好处就是快、方便使用
2025/12/31 16:44:09 54KB select2 ajax
1
程序是在QT5.6的环境下编写的,理论上来说,QT4也可以运行,但我没试验。
在PC机和ARM嵌入式开发板都可以完美运行。
此虚拟键盘程序只包含两个文件,可以非常方便的加入到现有的工程当中。
具体看此博客http://blog.csdn.net/wzs250969969/article/details/78418725
2025/12/31 4:36:53 14KB QT,键盘
1
数字信号处理基础(加JoyceVandeVegte著,侯正信王安国等译)_光盘资料,将随书光盘转化为iso形式,方便大家学习~
2025/12/30 11:44:49 40.3MB 数字信号处理 加Joyce VandeVegte
1
HalconDeepLearningTool工具是一个非常好用的目标检测标注工具,但是其生成的hdict文件无法直接用于其他深度学习工具,so本内容提供了一种方法可以将hdict先转为TXT数据格式,然后各位可以很方便的再转为其它深度学习工具所需要的数据格式,附件为C#源码,可以根据需要自行修改。
2025/12/30 4:20:41 829KB 目标检测 DeepLearning 图像标注 C#
1
书名:微波工程导论  作 者:雷振亚  出版社:科学出版社  出版时间:2010-2-1本书以常用微波概念和微波电路专题为线索,简明阐述微波电路的基本理论,重点介绍常用微波知识的结论,侧重于工程实际应用。
全书共14章,涵盖微波无源元件、有源电路、天线、微波系统、微波测量,附录给出了微波工程常用数据和材料特性等内容。
各部分内容相对独立,概念清晰.并有大量的设计实例,使得读者能够尽快理解基本内容,熟悉微波电路的常见结构、指标,掌握设计方法,方便工程数据查阅。
  本书可作为电子工程、通信、导航专业的教材,也可供相关专业的科研、工程技术人员参考。
  前言  第1章微波工程介绍  1.1常用无线电频段  1.2微波的重要特性  1.2.1微波的基本特性  1.2.2微波的主要优点  1.2.3微波的不利因素  1.3微波工程中的核心问题  1.3.1微波铁三角  1.3.2微波铁三角的内涵  1.4微波系统举例  1.4.1微波通信系统  1.4.2雷达系统  1.5微波工程基础常识  1.5.1关于分贝的几个概念  1.5.2常用微波接头  1.6微波电路的设计软件  第2章传输线理论  2.1集总参数元件的微波特性  2.1.1金属导线  2.1.2电阻  2.1.3电容  2.1.4电感  2.2传输线理论  2.2.1无耗传输线  2.2.2有耗传输线  2.3史密斯圆图  2.3.1阻抗圆图  2.3.2导纳圆图  2.3.3等Q圆图  2.3.4圆图的运用  2.4微带线理论  2.4.1传输线类型  2.4.2微带传输线  2.4.3LTCC电路  2.5波导和同轴传输线  2.5.1波导  2.5.2同轴线  第3章匹配理论  3.1基本阻抗匹配理论
2025/12/29 11:49:02 37.32MB 微波,射频,雷振亚
1
适合32位系统电脑,方便快捷,适应性强。
2025/12/29 4:31:46 942KB c++
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 钉钉 钉钉打卡