gpt4 book ai didi

c - 使用unput错误

转载 作者:行者123 更新时间:2023-12-04 00:04:44 25 4
gpt4 key购买 nike

我创建了 test.l,输入到 flex,以 main 函数结束。

当main函数实现为:

int
main(void)
{
yylex();
return 0;
}

我没问题。

我想欺骗解析器相信第一个字符始终是分号,所以我将 main 实现为

int
main(void)
{
unput(';');
yylex();
return 0;
}

上述情况会导致段错误。

为什么使用unput会导致段错误?

最佳答案

它导致段错误,因为 yylex() 尚未初始化 unput() 所需的输入缓冲区等。

可能有一种更好的方法来设计您的扫描仪,而无需将其欺骗为前导分号,但如果您必须这样做,那么一个解决方案可能是使用启动条件。像这样的事情:

%x SPECIAL
%%
BEGIN(SPECIAL); /* Go to SPECIAL state when yylex first called */

<SPECIAL>. { unput(*yytext); unput(';'); BEGIN(INITIAL); }

... rest of rules ...

关于c - 使用unput错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/704184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com