簡體   English   中英

使用Java的antlr獲取有關Java類的元數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM