Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我将文件传递给野牛(通常的方式)时,它可以正常工作,它会解析文件并检查语法。但是,当我通过以下方式传递相同的字符串时:
yy_scan_string(string); yylex(); yyparse();
它在第一个令牌之后崩溃,它说它正在等待$end。我应该以某种方式重置一些东西吗?这里的例子什么也没说。
$end
您错误地使用了 Bison。使用 Bison 时,您只需调用 yyparse()。你不调用 yylex()——当它需要一个令牌时,yyparse() 将调用该函数。
您正在做的是将字符串设置为输入,调用 yylex 找到一个标记并推进输入流。然后调用 yyparse()。这个 yyparse() 调用期望在从当前点(在 yylex() 抓取的第一个标记之后)到输入结尾的输入中找到一些东西,这会简化为语法中的一个句子。
问题是由于您的 yylex() 调用,它已经错过了一个令牌。