gpt4 book ai didi

c - 为什么 Bison 在第一个标记后期待 $end?

转载 作者:行者123 更新时间:2023-12-02 08:45:33 24 4
gpt4 key购买 nike

当我将文件传递给 bison(通常的方式)时,它工作正常,它会解析文件并检查语法。但是,当我传递相同的字符串时:

yy_scan_string(string);
yylex();
yyparse();

它在第一个标记后崩溃,它说它期待 $end。我应该以某种方式重置某些东西吗?这里的例子什么也没说。

最佳答案

您错误地使用了 Bison。使用 Bison 时,您只需调用 yyparse()。您不调用 yylex()——该函数将在需要 token 时由 yyparse() 调用。

您正在做的是将字符串设置为输入,调用 yylex 以查找标记并推进输入流。然后调用 yyparse()。此 yyparse() 调用期望在输入中找到从当前点(在 yylex() 获取的第一个标记之后)到输入末尾的内容,这将简化为语法中的一个句子。

问题是由于您的 yylex() 调用,它已经错过了一个标记。

关于c - 为什么 Bison 在第一个标记后期待 $end?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755874/

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