我编写了一个简单的 lex 程序来执行正数的平均值,程序编译正常,但我无法获得预期的输出。我通过将文件名作为命令行参数将输入从文件传递给程序. lex 程序的输出是空白的,没有显示任何结果,我是 lex 的初学者,我们将不胜感激。我附上了下面的代码。代码是用redhat linux kernel version 2.4编写的。
%{
#include <stdio.h>
#include <stdlib.h>
%}
%%
[0-9]+ return atoi(yytext);
%%
void main()
{
int val, total = 0, n = 0;
while ( (val = yylex()) > 0 ) {
total += val;
n++;
}
if (n > 0) printf(“ave = %d\n”, total/n);
}
输入文件包含数字 3,6 和 4,文件名作为命令行参数传递。
./a.out < input