如何让Bison在出错时停下来?

时间:2012-03-15 03:41:57

标签: bison flex-lexer

如何让Bison在输入文件中出现错误? 我尝试使用'错误'动作,但它似乎没有帮助。
即使遇到错误,解析器也会处理整个输入文件。

rules:
    rules rule
    | rules error { declaration_context = false; YYABORT; } 
    | rule
    ;

1 个答案:

答案 0 :(得分:1)

语法中没有error个动作的解析器将在发生第一个语法错误后退出yyparse函数。只有在您有错误生成规则时,才能在语法错误后继续解析。如果那些没有成功恢复解析,那么将会出现更多错误,这会迟早发生终止。

参考:http://www.gnu.org/software/bison/manual/bison.html(2.1.5)