Lex是一个程序生成器,它被设计用来对输入字符流进行词法处理。它接受一种高级的、面向问题的说明书,并用它匹配字符串中的字符、生成能够识别正则表达式的程序。正则表达式通过用户输入的代码说明书给入。Lex识别这些表达式,并且将输入流分成一些匹配这些表达式的字符串。在这些字符串的分界处,用户提供的程序片段被执行。Lex代码文件将正则表达式和程序片断关联。对每一条输入到由Lex生成程序的表达式,相应的代码片段被执行。 《Lex:一个词法分析器的生成器》 Lex是一个强大的工具,专门用于构建词法分析器,它处理输入字符流的词法层面。这个词法分析器生成器接受一种高级的、面向问题的规范,利用正则表达式来识别输入字符串。用户可以通过编写特定的代码指令来指定正则表达式,而Lex则会根据这些表达式将输入流分割成匹配的字符串。每当找到一个匹配的字符串时,与之关联的用户自定义代码片段就会被执行。 Lex的源文件由两部分组成:正则表达式和对应的程序动作。这些表达式和动作形成一个表格,经过Lex处理后,会被转换成一个可执行的程序,该程序能够读取输入流,复制到输出流,并将输入流按照正则表达式进行分割。这个过程由Lex生成的有限状态自动机执行,确保了高效的字符串匹配。在处理过程中,Lex遵循最长匹配原则,即在每个输入点选择能匹配的最长字符串,如果遇到二义性,它会进行前向搜索并适时回退,给予用户更高的灵活性。 Lex生成的分析器可以是C语言或Ratfor(一种可转化为Fortran的编程语言)形式。在多种操作系统环境下,如PDP-11 UNIX、Honeywell GCOS和IBM OS等,都能使用Lex。不过,手册主要讨论的是在UNIX Version 7下使用C语言生成词法分析器的方法。此外,Lex的设计使得它能与Yacc(一个语法分析器生成器)无缝集成,这对于编写编译器和其他语言处理程序非常有用。 在实际应用中,用户不仅需要提供匹配的正则表达式,还需要编写额外的代码,这部分代码可以是用任何宿主语言(如C)编写的。Lex将用户输入的源代码转换为目标语言(在这种情况下是C),生成的程序通常名为yylex。yylex在处理输入流时,一旦识别出正则表达式,就会执行相应的动作,实现对输入的处理。 例如,一个简单的使用Lex的例子是删除每一行末尾的所有空白字符。只需编写规则`%%[ \t]+$;`,其中`%`标记规则的开始,`[ \t]+`匹配一个或多个空格或制表符,`$`表示行尾。由于没有指定特定的动作,所以默认的行为是忽略匹配的空白字符。 Lex是一个强大的工具,它简化了词法分析器的创建,允许开发者用高级的方式描述输入流的模式,并将其与行为代码相结合。无论是在文本脚本翻译、语法分析还是其他涉及字符流处理的场景,Lex都是一个不可或缺的工具。通过其灵活的生成机制和广泛的支持,它已经成为软件开发中词法分析的标准工具之一。




















剩余28页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 路径规划领域中跳点搜索算法及其改进版本的技术解析与应用
- DSP驱动的数字电源系统:基于C2000主控的300W Buck-Boost双向变换器设计方案与实现
- COMSOL光学模拟:高斯光束通过偏振棱镜与反射面后的光强质心偏移研究 (07月28日)
- 工业自动化中WINCC系统的水电气能源报表自动化管理及应用
- 格子玻尔兹曼LBM D3Q19方法在多孔介质渗流场求解与可视化的应用研究 · D3Q19 完整版
- 基于Simulink的永磁同步电机滑模观测器无位置传感器控制仿真模型研究
- 基于Matlab的指纹识别系统设计:从特征提取到GUI实现
- VB工业自动化项目:27轴混合驱动与精准喷胶系统的实现及应用
- 电力系统仿真中变压器励磁涌流的Python建模与分析 Python
- PLC1200与Factory IO联机仿真的模拟工厂设计及其实现方法 · PLC编程
- 永磁同步电机PMSM负载状态估计与MATLABSimulink仿真模型研究
- 永磁同步电机PMSM的5+7次谐波注入与死区补偿技术:降低转矩脉动及电压补偿的PPT与Simulink模型说明
- Comsol燃料电池模型:等温和不等温仿真的研究与应用
- 永磁同步电机全速域无位置传感器控制的仿真研究:采用高频注入改进滑膜控制方法及PMSM矢量控制仿真 高频注入 高级版
- 基于灰狼优化算法的光伏MPPT控制策略:局部遮阴环境下的阴影动态与应对措施
- 离线DP动态规划节能速度规划与Carsim联合仿真验证:电动汽车高效能解决方案 - 动态规划


