如果`yywrap()`什么都不做会发生什么?

问题描述 投票:0回答:1

我读到必须编写

%noyywrap
或定义
yywrap()
函数。

如果我默认一个

yywrap()
函数,其中我不对
yyin
变量进行任何更改并返回 0,在这种情况下会发生什么?

0 意味着 FLEX 必须继续解析其他输入文件,但是 Flex 是否会在

yyin
变量中插入 null 来解析它,还是在这种情况下它会进入无限循环?

c parsing compiler-construction lex
1个回答
4
投票

如果

yywrap()
返回 0,那么词法分析器将只是循环(尝试)读取更多数据。如果您使用从
YY_INPUT
读取的默认
yyin
,并且没有更改它或在其上调用
clearerr
,则会出现无限循环。如果你调用
clearerr
,那么它会尝试读取更多内容,但如果
yyin
指向一个未更改的文件,那将再次是 EOF,并且你仍然会遇到无限循环。

如果您更改了

YY_INPUT
来执行其他操作,那么它会执行您更改为执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.