我读到必须编写
%noyywrap
或定义 yywrap()
函数。
如果我默认一个
yywrap()
函数,其中我不对 yyin
变量进行任何更改并返回 0,在这种情况下会发生什么?
0 意味着 FLEX 必须继续解析其他输入文件,但是 Flex 是否会在
yyin
变量中插入 null 来解析它,还是在这种情况下它会进入无限循环?
如果
yywrap()
返回 0,那么词法分析器将只是循环(尝试)读取更多数据。如果您使用从 YY_INPUT
读取的默认 yyin
,并且没有更改它或在其上调用 clearerr
,则会出现无限循环。如果你调用 clearerr
,那么它会尝试读取更多内容,但如果 yyin
指向一个未更改的文件,那将再次是 EOF,并且你仍然会遇到无限循环。
如果您更改了
YY_INPUT
来执行其他操作,那么它会执行您更改为执行的操作。