📅  最后修改于: 2023-12-03 15:11:18.220000             🧑  作者: Mango
这是一个基于 LEX 的程序,用于识别和打印整数和浮点常量和标识符。
LEX 是一种词法分析器生成器。它使用正则表达式来描述文本中的词法结构,并生成一个能够识别文本中这种结构的识别器。
下面是 LEX 代码片段:
%{
#include <stdio.h>
%}
%%
[0-9]+ printf("整数常量: %s\n", yytext);
[0-9]+"."[0-9]+ printf("浮点常量: %s\n", yytext);
[a-zA-Z_][a-zA-Z0-9_]* printf("标识符: %s\n", yytext);
. ; /* ignore any other characters */
%%
int main()
{
yylex();
return 0;
}
其中:
%{...%}
包含 C 代码的部分。%%
分隔词法规则和 C 代码。[0-9]+
匹配至少一个数字。[0-9]+"."[0-9]+
匹配小数。[a-zA-Z_][a-zA-Z0-9_]*
匹配标识符。.
匹配除换行符外的任何字符。首先需要安装 flex
工具。然后将上述代码保存在一个名为 test.l
的文件中。运行以下命令编译并运行词法分析器:
flex test.l
gcc lex.yy.c -lfl
./a.out
输入测试文本,程序将输出识别出的整数常量、浮点常量和标识符。
本程序演示了如何使用 LEX 识别整数常量、浮点常量和标识符。这是一个简单的示例程序,可以作为学习 LEX 的起点。