📅  最后修改于: 2023-12-03 14:56:22.584000             🧑  作者: Mango
LEX 是一种用于生成词法分析器的工具,它使用正则表达式描述并匹配文本模式。这里是一个用于识别和打印整数和浮点常量以及标识符的 LEX 代码示例。
%{
#include <stdio.h>
%}
%option noyywrap
%%
[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); }
%%
int main()
{
yylex();
return 0;
}
以上代码片段使用 LEX 的语法来描述了三种模式:整数常量、浮点常量和标识符。当匹配到相应的模式时,将会打印相应的信息。
[0-9]+
匹配一个或多个数字,并使用 printf
打印出匹配到的整数常量。[0-9]+"."[0-9]+
匹配一组数字,中间使用点 .
分隔,并使用 printf
打印出匹配到的浮点常量。[a-zA-Z_][a-zA-Z0-9_]*
匹配以字母或下划线开头的一组字母、数字和下划线,并使用 printf
打印出匹配到的标识符。在 main
函数中,我们调用 yylex
来启动词法分析器的运行,它将从标准输入中读取文本并按模式进行匹配。
请确保在使用 LEX 运行此代码之前正确安装了 LEX 工具,并使用相应的命令进行编译和链接。