定义 lex 替换字符串
您可以定义字符串宏,当 lex 程序生成词法分析器时,它将扩展这些字符串宏。
先定义它们,然后再定义第一个%%lex 规范文件中的定界符。 此部分中以列 1 开头且不在列之间的任何行%{和%}定义 lex 替换字符串。 替换字符串定义有下面的一般格式:
name translation其中name和translation由至少一个空格或制表符分隔,并且指定的名称以字母开头。 当 lex 程序找到定义的字符串时name封入{}(花括号) 在规范文件的规则部分中,它会将该名称更改为在以下内容中定义的字符串:translation并删除花括号。
例如,要定义名称D和E,将以下定义放在第一个%%规范文件中的定界符:
D [0-9]
E [DEde][-+]{D}+然后,在说明文件的规则部分使用这些名称使得规则更简短:
{D}+ printf("integer");
{D}+"."{D}*({E})? |
{D}*"."{D}+({E})? |
{D}+{E} printf("real");您也可在定义部分包含下面的项:
- 字符集表
- 启动条件的列表
- 为了容纳更大的源程序而对数组大小作出的更改