我写了一个yacc文件。 目前的错误功能如下所示:
void yyerror(char *s) {
fprintf(stderr, "line %d: %s\n", yylineno, s);
}
现在在给它输入的同时, 如果缺少左括号,则会给出简单的语法'错误。
您能否建议,如何针对这些类型的错误制作自定义错误消息?
即使在收到此错误后我仍然可以继续前进?
非常感谢您的建议..
答案 0 :(得分:0)
你做不到。至少不是简单的。当前状态和下一个标记不产生解析的合法延续时,会出现语法错误。它可能很简单'因为下一个标记必须是'''',但在这种情况下你的语言可能定义不明确,因为'('可能是多余的。更常见的情况是一个<令牌的em> number 是一个合法的延续:并且,由于LALR(1)解析器生成器的状态压缩操作,一旦你到达了点,它并不总是可能实际枚举这些令牌问题