Lex是一个生成词法分析器的计算机程序。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。
先决条件:Flex(快速词法分析器生成器)。
给定输入,任务是检查输入是否为数字。
例子:
Input: 28
Output: digit
Input: a
Output: not a digit.
Input: 21ab
Output: not a digit.
下面是实现:
/* Lex program to check whether input is digit or not. */
%{
#include
#include
%}
/* Rule Section */
%%
^[0-9]* printf("digit");
^[^0-9]|[0-9]*[a-zA-Z] printf("not a digit");
. ;
%%
int main()
{
// The function that starts the analysis
yylex();
return 0;
}
输出: