语法错误,这只是一个例子YACC表示在错误的位置
YACC语法:
abc:ABC STRING NEWLINE
end:END
.
.
法文件:
int lineno=1;
.
.
string [a-zA-Z]+
%%
ABC {return ABC;}
END {return END;}
[\n] {lineno++;return NEWLINE;}
{string} {return STRING;}
%%
和在NEWLINE LINENO的每一次出现被递增 如果输入文件是:
ABC xyz
END
YACC解析这个成功
如果输入文件是:
ABC 123
END
它显示1行:语法错误
这是预期
,但如果输入文件是:
ABC
END
那么它显示2号线:语法错误
但是误差在1号线不符合2
可以做些什么,以便显示正确的路线没有?
有什么办法可以检查NEWLINE之前发生的这种缺失值吗? – Tanya
@Tanya您可以添加一个带有特殊错误终端符号的规则,但它可能无法正常工作。 –
可以将错误报告为:上述情况下的“ABC错误”? – Tanya