Lex 是一个生成词法分析器的计算机程序。 Lex 读取指定词法分析器的输入流,并输出在 C 编程语言中实现词法分析器的源代码。
执行 lex 程序的命令是:
lex abc.l (abc is the file name)
cc lex.yy.c -lfl
./a.out
让我们看看 Lex 程序来打印给定输入文件中的总字符、空格、制表符。
下面是实现:
/* Lex program to print the total characters,
white spaces, tabs in the given input file.
*/
%
{
int n, w, c;
%
}
% %
\n { n++; }
[^ \n\t] +
{
w++;
c = c + yyleng;
}
.c++;
% % int yywrap(void)
{
return 1;
}
main()
{
extern FILE* yyin;
yyin = fopen("input.txt", "r");
yylex();
printf("Line= %d word=%d total char=%d \n", n, w, c);
}
输入:
输出: