2013-06-26 39 views
1

我生成Java代碼串,和我有一樣如何消除FieldAccess和QualifiedName之間的歧義?

parameter.field.method(); 

然後我解析生成的代碼,以AST與Eclipse JDT的ASTParser表達式和子表達式

parameter.field 

成爲QualifiedName,不是FieldAccess。這會導致問題,因爲稍後我會清除限定名稱(使用Clean Qualified Types Plugin中的代碼)。

作爲JavaDoc of FieldAccess狀態:

像「foo.bar」可以表示一種表達或者作爲合格 名稱(QualifiedName)或作爲現場訪問表達式(FieldAccess) 含有簡單的名稱。或者是可以接受的,並且沒有辦法 在它們之間進行選擇,而沒有關於名稱解析 到(ASTParser可能返回)的信息。

我應該生成什麼,以便解析器可以毫不含糊地知道這是一個FieldAccess

(一個有趣的副作用的問題:如何準備每當遇到QualifiedName之間的Java編譯器消除歧義,還試圖把它解釋爲一個FieldAccess通過解析名字?)

回答

1

最小的解決方案我發現是在參數周圍產生括號:

(parameter).field.method(); 
相關問題