2013-07-25 26 views
0

我使用JAVACC解析由初始非終端G的bnf語法定義的一些字符串。我想捕獲TokenMgrError拋出的錯誤。 我特別要處理以下兩種情況:忽略JAVACC中的MSGTokenError

  1. 如果輸入的一些前綴滿足G,但不是所有的符號都是從輸入讀取,可以考慮這種情況下,正常返回AST的發現通過調用G()前綴。
  2. 如果輸入沒有滿足G的前綴,則從G()返回null。

目前,我在這種情況下每次都得到TokenMgrError。 我開始修改生成的文件(即將錯誤更改爲異常並添加適當的try/catch/throws語句),但我發現它很乏味。另外,由JAVACC生成的修改文件的自動生成不起作用。有沒有更聰明的方法來實現這個目標?

+2

你可以添加代碼示例嗎?關於Exceptions而不是TokenMgrErrors,請參閱http://www.engr.mun.ca/~theo/JavaCC-FAQ/javacc-faq-moz.htm#tth_sEc3.19 – bcause

回答

1

您可以隨時包括

<*> TOKEN : { <UNEXPECTED: ~[] > } 

的最終規則消除所有TokenMgrErrors。這將你所有的問題推到語法層面,你可以更容易地處理它們。