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

📅  最后修改于: 2023-12-03 15:11:18.220000             🧑  作者: Mango

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

这是一个基于 LEX 的程序,用于识别和打印整数和浮点常量和标识符。

LEX 概述

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 的起点。