[英]using antlr from java to obtain meta data about Java classes
我已經從Antlr網站下載了Antlr 3.3和antlr works,以及Java.g。 我能夠使用適用於Java.g的Antlr成功地生成JavaParser,JavaLexer.java和令牌。 然后,我將antlr jar安裝在IDE中,並按照以下說明在代碼中使用它: http ://www.antlr.org/wiki/pages/viewpage.action?pageId=789
當上面的文檔說要編寫以下代碼行時,就會出現第一個問題:
RuleReturnScope result = parser.compilationUnit();
問題在於parser.compilationUnit()不返回結果。
然后我嘗試按照“解析樹”下的示例進行操作,但這還不完整。
我找不到任何有關如何使用此庫的好的文檔。
這是我想要做的:-在Java中,將文件名,文件對象或文件內容作為字符串提交給Antlr,並讓它返回某種對象,我可以在代碼中導航該對象,該代碼將為我提供諸如導入,方法之類的東西,類變量,表達式等。
基本上,NetBeans IDE 6.9.1對重構進行了處理,例如修訂導入,轉到源代碼,重命名變量等。我需要的只是有關類的元數據,我不確定如何獲取它。
謝謝。
回答您的問題,為什么compilationUnit
不返回任何結果的原因是,如果您自己未在規則上指定返回類型,則解析器規則將被轉換為
public void nameOfTheParserRule() {
...
}
如果在語法的選項{...}部分中將輸出設置為AST,則解析器規則默認會返回RuleReturnScope類型的對象,我懷疑在您的情況下這是錯誤的,但是由於您沒有發布您的語法,並且您給該語法的鏈接Java.g不會生成任何東西:在能夠從中生成解析器和詞法分析器之前,需要先做一些事情。 您最有可能做錯了事情:)。
祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.