我注意到Bison使用通过yyerror()
传递给yyreportSyntaxError()
函数的特定错误消息。这是使用glr.c
生成的函数。
有没有办法可以修改这个功能的行为?
一种解决方案是修改yyerror()
中的错误消息。但是假设我想避免这种情况,我可以指示Bison使用我自己的函数而不是yyreportSyntaxError()
吗?
答案 0 :(得分:0)
(Comment converted to an answer)
@Bort写道:
我不是Bison / Flex专家。但是就本手册以及o&Billyi Bison / Flex书而言,使用
yyerror()
是可行的方法。但是,如果您使用像flex这样的词法分析器,则可以在解析时直接捕获错误并提供自己的错误例程而不使用yyerror()
。您基本上定义了一个令牌,用于定义语法中的错误并使用错误例程捕获它。