所以我的问题非常简单,我想它之前已经得到了解答但是我无法得到一个关于它的好主题:我可以解析一次文件,收集一些所需信息来初始化我的结构然后解析它是第二次“真实”吗?
当我拨打yylex()
两次时,它似乎什么也没做。还是我需要重置我的文件的读指针?我是C菜鸟所以这可能是一个愚蠢的问题!无论如何,任何帮助将不胜感激。
答案 0 :(得分:1)
所以,如果它引起了某些人的兴趣:
我尝试使用rewind
,这是#include <stdio.h>
提供的功能。虽然,在写了类似的东西之后:
yylex();
rewind(yyin);
yylex();
结果我的行为仍然不好。以下是我完全解决问题的方法:
在我的词法分析器中,我补充道:
<<EOF>> yyterminate();
在此修改和上面详述的代码之后,生成的代码按预期运行。
我希望这会有所帮助!
答案 1 :(得分:1)
答案 2 :(得分:1)
使用yyrestart(FILE *in)
。
但请注意,flex manual表示不是像这样的两遍扫描程序,而是第一次构建解析树。