我有一些 C 编译器和matlab语言翻译器的语法规则。我想捕获由于缺少&#39 ;;'而导致的语法错误。在声明的最后。
例如我有return语句:
stmt_return : RETURN {...some actions...}
exp ';' {...others actions...}
| RETURN {...some actions...}
';' {...others actions...}
我如何处理缺乏&#39 ;;'并打印自定义错误消息而不是默认消息"语法错误"。
我尝试添加这些规则但正确地产生了冲突:
stmt_return : RETURN exp { yyerror("...")}
| RETURN { yyerror("...")}
答案 0 :(得分:0)
我找到了这个解决方案:
stmt_return : RETURN {...some actions...}
exp sc {...others actions...}
| RETURN {...some actions...}
sc {...others actions...}
;
sc : ';'
| { yyerror("Missing ';'"); } error
;