我写了一个lex程序(.l文件)来计算行数和字符数 方案:
%{
int charcount=0,linecount=0;
%}
%%
.charcount++
\n linecount++,charcount++;
%%
main()
{
yylex();
printf(“lines %d”,linecount);
printf(“characters %d”,charcount);
}
int yywrap()
{
return 1;
}
我使用flex bison和codeblocks 写完程序后 我用命令flex lccc.l执行它(lccc是文件名) 现在我有lex.yy.c文件 请告诉我如何获得输出 编译lex.yy.c是igivng和错误..但这个程序在linux上工作正常,在我的大学,在家里我使用上面提到的Windows上的调整..请帮助!
这是错误:
J:\> gcc lex.yy.c
lccc.l: In function 'main':
lccc.l:13: error: stray'\223' in program
lccc.l:13: error: 'lines' undeclared (first use in this function )
lccc.l:13: error: (Each undeclared identifier is reported only once
lccc.l:13: error: for each function it appears in. )
lccc.l:13: error: stray'\224' in program
lccc.l:13: error: 'd' undeclared (first use in this function )
lccc.l:14: error: stray'\223' in program
lccc.l:14: error: 'characters' undeclared (first use in this function )
lccc.l:14: error: stray'\224' in program
答案 0 :(得分:0)
您需要将自定义代码括在大括号中。并且在charcount++
和之后没有分号,您无法用逗号分隔语句,因此linecount++, charcount++;
应为linecount++; charcount++;
。
试试这个:
%{
int charcount=0, linecount=0;
%}
%%
. {charcount++;}
\n {linecount++; charcount++;}
%%
main()
{
yylex();
printf("lines %d", linecount);
printf("characters %d", charcount);
}
// ...