簡體   English   中英

JavaParser-獲取輸入的AST

[英]JavaParser - Get typed AST

我想從JavaParser或其他Java代碼解析器中鍵入AST。 這意味着我將能夠獲得特定變量或參數的類型+方法的返回類型。 我搜索了很多有關JavaParser的功能的信息,但是沒有找到任何東西,我想這是因為JavaParser生成了無類型的AST。 所以,請告訴我我如何能得到這個。 但是,請不要嘗試解析所有代碼並創建自己的類型集,這是非常困難的,我認為這比制作自己的AST解析器難。

我是JavaParser的貢獻者,而我只是在Clojure的JavaParser之上做到了這一點。 我將在Clojure中如何在Java中構建符號求解器的一文中解釋如何實現該方法

JavaParser或任何其他解析器僅構建代碼的抽象語法樹(AST),然后必須解析符號以了解哪些引用與哪些聲明相關聯。

假設您的代碼中包含以下內容:

a = 1;

現在,要了解a的類型,您應該找到它的聲明位置。 它可以是對參數,局部變量,當前類中聲明的字段或繼承的字段的引用。 如果它是一個繼承的字段,則應該找到父類的代碼(或字節碼),然后在其中查找a的聲明。 解析器不執行此操作,解析僅采用字符串(或文件)並構建AST。

構建符號解析器不是火箭科學,但需要一些工作。 我在上面鏈接的文章中描述的解決方案可在GitHub上找到,我很樂意幫助您使用它(即使它是用Clojure編寫的,也可以很容易地從Java調用它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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