这只是一个例子
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 行。
怎么做才能显示正确的行号?