【发布时间】:2012-10-31 06:00:32
【问题描述】:
这只是一个例子
YACC 语法:
abc:ABC STRING NEWLINE
end:END
.
.
lex 文件:
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
然后它显示 line2:syntax error
但是错误出现在第 1 行而不是第 2 行。
如何才能显示正确的行号?
【问题讨论】: