Lex(软件)_

Lex(软件) Lex是一个生成词法分析器(“扫描仪”或“词法分析器”)的计算机程序。[1] [2] Lex通常与yacc解析器生成器一起使用。 Lex最初由Mike Lesk和Eric Sc​​hmidt [3]编写并在1975年描述[4] [5]是许多Unix系统上的标准词法分析器生成器,并且等效工具被指定为POSIX标准的一部分。需要] Lex读取指定词法分析器的输入流,并输出用C语言实现词法分析器的源代码。 虽然最初是作为专有软件分发的,但某些版本的Lex现在是开源的。基于原始AT&T代码的Lex的开放源代码版本现在作为开源系统发布,如贝尔实验室的OpenSolaris和Plan 9 [需要澄清] Lex的一个流行开源版本,称为flex,或“快速词法分析器“,并非来自专有编码。 Lex文件的结构有意地类似于yacc文件的结构;文件分为三部分,由仅包含两个百分号的行分隔,如下所示 以下是Lex的flex版本的示例Lex文件。它识别输入中的数字串(正整数),并将其打印出来。 如果这个输入给flex,它将被转换成一个C文件,lex.yy.c.这可以被编译成匹配和输出整数字符串的可执行文件。例如,给定输入: 该计划将打印: Lex和解析器生成器(如Yacc或Bison)通常一起使用。解析器生成器使用正式的语法来解析输入流,Lex使用简单的正则表达式无法做到这一点(Lex仅限于简单的有限状态自动机)。 [需要澄清] 通常最好有一个(Yacc生成的,比如说)解析器被提供一个令牌流作为输入,而不是让它直接消耗输入字符流。 Lex经常被用来产生这样的令牌流。 无扫描器解析是指直接解析输入字符流,而不需要明确的词法分析器。 make是一种可用于维护涉及Lex的程序的实用程序。假定一个扩展名为.l的文件是一个Lex源文件。 make内部宏LFLAGS可以用来指定Lex自动由make调用的选项。[6]

 


posted @ 18-10-07 07:29  作者:admin  阅读量:

powered by 摩臣2 @2014 RSS地图 html地图

Copyright 365建站 © 2013-2017 365建站器 版权所有