我使用的是 Flex 生成的 C 词法分析器和 Bison 生成的 C++ 解析器。我已修改解析器以仅接受字符串输入。
我yyparse()
在循环中调用解析器函数,并逐行读取用户输入。如果输入是“退出”,我会停止循环。
我面临的问题是,当输入与任何规则都不匹配时,解析器会突然停止,并且在下一次迭代时以相同的状态开始,期望被停止的规则(由于语法错误)完成。
如果输入有效并且与解析器规则匹配,则它可以正常工作。
关于语法错误,我重新定义了该yyerror()
函数,该函数显示一条简单的错误消息。
当输入与任何解析器规则都不匹配时,如何清除解析器的状态,以便在下一次迭代时重新启动解析器?