在遇到错误时,flex和bison停止处理的最佳方法是什么?如果我调用yyerror,它不会停止扫描和解析我的文件。虽然输入在语法上是正确的,但是存在用户错误,例如他们试图两次加载相同的文件。一旦我没有flex / bison,那么我的程序将向用户返回一个错误,程序应该继续运行。我假设抛出一个C ++异常可能会破坏某些东西?
答案 0 :(得分:1)
YYABORT
是出去的标准方式;它导致yyparse
立即返回失败(1
)。然后,您可以抛出异常或做任何您想做的事情。如果要解析其他内容,则需要重置flex的输入,但如果这样做,则可以再次调用yyparse,解析将从头开始。
答案 1 :(得分:0)
YYACCEPT停止解析并返回0。