当我为yacc解析器编写yylex()时,yylex()通常一次返回符号,也就是说,yylex()必须多次调用,直到文件结束。
但是当我为lex扫描器编写一个main函数时,我只调用yylex()一次,但整个文件仍然被完全扫描。
void main(int argc, char* argv[]) {
printf("start\n");
yyin = fopen(argv[1], "r");
yylex();
printf("word count: %d\n", wordCount);
fclose(yyin);
}
为什么?
答案 0 :(得分:0)
很抱歉提出一个愚蠢的问题,我已经阅读了lex生成的c文件,并发现操作代码粘贴在一个switch case段中,因此,正如@rici所说,这很大程度上取决于你写的内容在操作中,由于我的代码在运行中没有返回,因此对yylex的一个调用将通过流。如果有回复,我应该使用while()来调用yylex。