搜索词法分析器生成器,首选弯曲
到平原法律
.输出变量LEX公司
设置为任意值程序可用。如果两个程序都不可用,LEX公司
设置为':';用于运送生成的文件.yy。c(c)在源头旁边文件。我,此默认值允许没有lexer生成器仍然构建包,即使文件。我被无意中更改。
可以通过设置输出变量LEX公司
或缓存变量交流_编程_导出
运行时配置
.
如果找到词法分析器生成器,此宏将执行其他检查常见的可移植性缺陷。如果这些附加检查失败,LEX公司
重置为“:’; 否则如下还提供了其他宏和变量。
预处理器宏YYTEXT_指针
如果lexer默认情况下,骨架声明yytext(yytext)
作为字符*’而不是一个'字符[]’.
输出变量LEX_输出_根
设置为文件的基lexer生成的名称;这通常是其中之一词汇.yy或雷克西.
如果生成的lexer需要库才能工作,则输出变量LEXLIB语言
被设置为该库的链接选项(例如。,-我),否则设置为空。
这个选项参数修改的行为AC_PROG_LEX公司
.它应该是一个以空格分隔的选项列表。目前在那里只有两个选项,它们是互斥的:
yywrap(年包裹)
指示中的库LEXLIB公司
需要定义函数yywrap(年包裹)
。如果找不到定义此函数的库,LEX公司
将重置为“:’.
noyywrap(无包裹)
指示中的库LEXLIB公司
不需要定义功能yywrap(年包裹)
.配置
不会在搜索它所有。
在Autoconf 2.70之前,AC_PROG_LEX公司
没有接受任何论据,其行为不同于上述任何一种可能性:它将搜索一个定义yywrap(年包裹)
,并将设置LEXLIB公司
如果它找到了一个图书馆。但是,如果库找不到定义此函数的,LEXLIB公司
将是留空,并且LEX公司
将不重置。这种行为由于一个bug,但有几个包依赖于它,所以AC_PROG_LEX公司
如果两个都没有yywrap(年包裹)
也不是noyywrap(无包裹)
选项。
的用法AC_PROG_LEX公司
而不选择其中一个yywrap(年包裹)
或noyywrap(无包裹)
选项已弃用。通常最好是使用noyywrap(无包裹)
并定义yywrap(年包裹)
发挥自己的作用,因为这几乎总是使LEXLIB公司
没有必要。
注意:作为测试的副作用,此宏可能会删除配置脚本当前工作目录中名为lex.yy(历年)。c(c)或雷克西。c(c).
注意:运送生成的词汇yy。c(c)不能假定YYTEXT_指针
比赛该文件中的代码。他们也不能假设LEXLIB公司
提供该文件中的代码所需的库例程。
如果使用Flex生成lex.yy(历年)。c(c),你可以绕过这些通过定义限制yywrap(yywrap)
和主要的
你自己(渲染-线性调频
不必要),并使用--阵列或--指针控制方式的选项yytext(yytext)
已声明。Flex生成的代码也更多比历史版本的Lex生成的代码更具可移植性。
如果您使用Flex生成lex.yy(历年)。c(c),尤其是如果您的扫描仪依赖于Flex功能,我们建议您使用Autoconf代码段,以防止使用重新生成扫描仪历史Lex:
AC_PROG_LEX公司AS_IF([测试“x$LEX”!=xflex],[LEX=“$SHELL$missing_dir/缺少flex”AC_瑞士([LEX_OUTPUT_ROOT],[LEX.yy])AC_瑞士([LEXLIB],['')])
shell脚本丢失的
可以在Automake中找到分配。
请记住,用户可能在LEX公司
,因此如果需要Flex,最好检查用户通过分析“”的输出提供了足够的内容$雷克斯--版本“而不是仅仅依靠测试“x$LEX”=xflex
.