Antlr 4错误恢复
我的脚本语言包含一系列宏,规则定义如下Antlr 4错误恢复,antlr,antlr4,Antlr,Antlr4,我的脚本语言包含一系列宏,规则定义如下 program : macrodeclaration* EOF ; macrodeclaration : (STATIC)? 'MACRO' STRING declareparameter statement* 'ENDMACRO' ; 有时我将endmacro错误地键入为endmacros,解析器会吞噬标记“endmacros”,忽略下一个宏定义,继续搜索下一个endmacros。它吐出了那么多不可行的替代错误 我想知道如何调
program
: macrodeclaration* EOF
;
macrodeclaration
: (STATIC)? 'MACRO' STRING declareparameter
statement*
'ENDMACRO'
;
有时我将endmacro错误地键入为endmacros,解析器会吞噬标记“endmacros”,忽略下一个宏定义,继续搜索下一个endmacros。它吐出了那么多不可行的替代错误
我想知道如何调整错误恢复,将输入错误的endmacro视为endmacro,从而只报告一个错误并正确解析下一个宏
请提供帮助。错误恢复是一个棘手的问题。您总是可以添加一个新的令牌
ENDMACROS
,并在末尾允许它,但是如果用户写入ENDMCRO
,ENDMACROS
,或者仅仅是end
,会发生什么呢?或者,如果他们在其他地方使用ENDMACROS
作为标识符,会发生什么
目前的结果如下: