我正在使用Flex(词法分析器)编写一个简单的“语言”,它长这样:
/* Just like UNIX wc */
%{
int chars = 0;
int words = 0;
int lines = 0;
%}
%%
[a-zA-Z]+ { words++; chars += strlen(yytext); }
\n { chars++; lines++; }
. { chars++; }
%%
int main()
{
yylex();
printf("%8d%8d%8d\n", lines, words, chars);
}
我运行了flex count.l
,没有任何错误或警告,但是当我尝试使用cc lex.yy.c
时,我得到了以下错误:
ubuntu@eeepc:~/Desktop$ cc lex.yy.c
/tmp/ccwwkhvq.o: In functionyylex': lex.yy.c:(.text+0x402): undefined reference to
yywrap'
/tmp/ccwwkhvq.o: In functioninput': lex.yy.c:(.text+0xe25): undefined reference to
yywrap'
collect2: ld returned 1 exit status
问题出在哪里?
.l
文件的开头,然后lex
接受了它!我不确定那是否是最好的位置。也许这并不重要。 - the.slow.one