- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                Lex - 词法分析器生成器 
                            M. E. Lesk 与 E. Schmidt 
                                Bell Laboratories 
                          Murray Hill, New Jersey 07974 
译者声明:译者对译文不做任何担保,译者对译文不拥有任何权利并且不负担任何责任和义务。 
原文:/7thEdMan/vol2/lex 
摘要 
Lex 帮助书写其控制流由在输入流中的正则表达式的实例来导向的程序。它适合于编辑器脚本类型的变 
换,和为解析例程做准备工作而分解输入。 
Lex 源码是正则表达式和相应的程序片段的表格。Lex 把这个表格变换成读取输入流、复制它到输出流、 
并把输入划分到匹配给定表达式的字符串中的一个程序。随着每个这种字符串被识别出来,相应的程序片 
段就被执行。表达式通过用 Lex  生成的确定有限自动机来识别。用户书写的程序片段按照对应的正则表 
达式在输入流中出现的次序来执行。 
用 Lex  写成的词法分析程序接受有歧义的规定,并在每个输入点上选择最长的匹配可能。如果需要,在 
输入上进行实质的超前查看(lookahead),但输入流会被回退(backup)到当前划分的结束处,所以用户有 
操纵它的普遍自由。 
Lex 可以生成用 C  语言或 Ratfor  语言写的分析器,Ratfor 可以自动的转换成可移植的 Fortran 。它 
可以在 PDP-11 UNIX、 Honeywell GCOS  和 IBM OS  系统上得到。本手册只讨论在 UNIX  系统上 
的生成 C  语言的分析器,这是在 UNIX  第 7  版中唯一支持的 Lex  形式。设计 Lex  时简化了与编译器 
的编译系统 Yacc  的交接。 
July 21, 1975 
 目录 
     1.  介绍 
     2.  Lex 源码 
     3.  Lex 正则表达式 
     4.  Lex 动作 
     5.  歧义源规则 
     6.  Lex 源定义 
     7.  用法 
     8.  Lex 与 Yacc 
      9. 例子 
      10. 左上下文敏感 
      11. 字符集 
      12. 源格式总结 
      13. 告诫和缺陷 
      14. 致谢 
      15. 引用 
1. 介绍 
Lex 是设计用于字符输入流的词法处理的一个程序生成器。它接受高级的、面向问题的对字符串匹配的规 
定,并生成识别正则表达式的通用语言写的一个程序。正则表达式在用户给 Lex  的源规定中指定。Lex 写 
出的代码识别在输入流中的这些表达式,并把输入流划分到匹配这些表达式的字符串中。在字符串间的分 
界上执行用户提供的程序片段。Lex 源文件对正则表达式关联上程序片段。随着每个表达式出现在给 Lex 
写出的程序的输入中,相应的程序片段就被执行。 
用户提供超出表达式所需要的额外代码来完成他的任务,可能包括用其他生成器写出的代码。生成的识别 
表达式的程序采用用户的程序片段所采用的通用编程语言。因此,提供了高级表达式语言来写要被匹配的 
字符串表达式,而用户写动作的自由不受侵犯。这避免了强制希望使用字符串操纵语言做输入分析的用户、 
去使用同样的并且经常不适合字符串处理的语言来书写处理程序。 
Lex 不是完整的语言,而是体现了可增加到叫做“宿主语言”的不同编程语言中的新语言特征的一个生成 
器。正如同通用语言可以生成在不同计算机硬件上运行的代码,Lex 可以写出不同宿主语言的代码。宿主 
语言被用于 Lex  生成的输出代码和用户增加的程序片段。还为不同的宿主语言提供兼容的运行时间库。 
这使 Lex  适应不同的环境和不同的用户。每个应用都可以被定向到适合这个任务的硬件和宿主语言、用 
户背景和本地实现性质的各种组合上。目前唯一支持的宿主语言是 C,尽管过去曾经支持过 
Fortran(Ratfor [2]形式)。Lex  自身存在于 UNIX、GCOS 和 OS/370 ;但 Lex  生成的代码可以采用 
于存在适当的编译器的任何地方。 
Lex 把用户的表达式和动作(在本文中叫做源码)转换成宿主通用语言;生成的程序叫做 yylex 。yylex 程 
序将识别在流(在本文中叫做输入)中的表达式,并在检测到的时候执行给每个表达式的动作。参见图 1 。 
          ++ 
源码  -  |  Lex  |  - yylex 
        
                您可能关注的文档
最近下载
- 整本书阅读《平凡的世界》同步练习(含解析)中职语文高教版(2023)基础模块上册.docx VIP
- 异位妊娠病人术后护理.pptx
- 高教版中职语文基础模块 上册第四单元整本书阅读《平凡的世界》阅读指导教学设计.docx VIP
- 苏教版高中化学必修第一册全册教学课件.pptx
- 高中理综高三模拟高考(全国Ⅱ卷)实战演练卷——新疆高考模拟3月卷理科综合能力.doc VIP
- 关于加强金属非金属地下矿山外包工程指导意见.doc VIP
- 关于加强金属非金属地下矿山外包工程安全管理的若干规定.docx VIP
- 主新闻中心介绍.doc VIP
- 2023-2024学年江苏省南京市玄武区九年级(上)英语期中试题和答案.pdf VIP
- GoPro Cameras HERO13 Black Product Manuals 中文简体说明书用户手册.pdf
 原创力文档
原创力文档 
                        

文档评论(0)