語法錯誤,這只是一個例子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