Lex是一个生成词法分析器的计算机程序,由Mike Lesk和Eric Schmidt编写。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现lex的源代码。
在C语言中,标识符必须以字母或下划线开头,不能以数字或任何其他特殊字符开头,而且可以以数字开头。
例子:
gfg : valid identifier
123 : invalid identifier
_abc12 : valid identifier
#abc : invalid identifier
让我们看一下lex程序,以确定输入是否为标识符。
/*lex code to determine whether input is an identifier or not*/
% {
#include
%
}
/ rule section % %
// regex for valid identifiers
^[a - z A - Z _][a - z A - Z 0 - 9 _] * printf("Valid Identifier");
// regex for invalid identifiers
^[^a - z A - Z _] printf("Invalid Identifier");
.;
% %
main()
{
yylex();
}
输出: