📜  用于识别和打印整数和浮点常量和标识符的 LEX 代码(1)

📅  最后修改于: 2023-12-03 14:56:22.584000             🧑  作者: Mango

用于识别和打印整数和浮点常量和标识符的 LEX 代码

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 工具,并使用相应的命令进行编译和链接。