【发布时间】:2015-09-17 13:29:58
【问题描述】:
我已经编写了一个 yacc 文件。 当前错误函数如下所示:
void yyerror(char *s) {
fprintf(stderr, "line %d: %s\n", yylineno, s);
}
现在在给它输入的同时, 如果缺少左括号,则会给出简单的“语法”错误。
您能否建议,我如何针对这些类型的错误制作自定义错误消息?
即使出现此错误,我该如何进一步处理?
非常感谢您的建议..
【问题讨论】:
-
您确定这些行中显示了错误?
-
'stderr' 和 'yylineno' 是全局变量吗?
-
@ameyCU : 这是我在“yacc 代码”中使用的错误函数。
-
@ameyCU :例如,如果我输入为: A = ((B),(C)) 这是正确的输入。但是当我给 A = (B),(C)) 这是错误的,我的代码说语法错误是正确的。但我想自定义该消息,让我们说 'Left parenthesis is missing' 。如何在'yacc'中做这些事情,请您赐教。非常感谢您的回复。
-
@pistachiobk : 'stderr' 是全局变量,'yylineno' 是当前行号,在输入 'yacc' 代码后会发生错误。
标签: c bison yacc flex-lexer lex