2014-10-19 27 views
0

按照JavaCC documentation,如果我想自定義的詞法分析器通過錯誤給出的消息:的JavaCC:定製詞法錯誤信息

要詞法分析器定製錯誤報告,詞法分析器類必須被繼承,這方法[LexicalError() in TokenMgrError]在子類中重新定義。爲了幫助創建錯誤報告機制,下列變量:

不過,我看不到任何有關如何獲取生成的代碼使用該子類,不同於與TOKEN_FACTORY選項。

另一方面,查看TokenMgrError來源,一些註釋表明源文件應該直接編輯,而不是子類。但是,如果我這樣做,下一次我改變.jj文件,並螞蟻再生解析器和詞法分析器代碼,我得到這樣的警告:

警告:TokenMgrError.java:文件已經過時了。請重命名或刪除此文件,以便爲您生成新文件。

那麼,我該怎麼做呢?

回答

1

如果需要,您可以修改TokenMgrError。它沒有太多的缺點。

如果您繼承了令牌管理器,那麼您也可以繼承TokenMgrError。您只需確保覆蓋創建TokenMgrError的所有例程。爲了讓解析器使用你的子類,你只需創建這樣的解析器

MyParser parser = new MyParser(new MySubclassTokenManagr(...)) ; 
+0

所以「文件已過時」警告是假的?有什麼辦法可以抑制這種警告? – 2014-10-19 23:45:04

+0

是的,這是虛假的。我不知道有什麼辦法來壓制警告。 – 2014-10-21 12:09:43