java parser是什么,讓我們一起了解一下?
Java Parser是基于JavaCC作為Java語言詞法解析的工具,支持Java語言生成AST(Abstract Syntax Tree抽象語法樹),在AST基礎上進行類型推斷分析,支持修改AST從而生成新的Java文件內容,支持從Java 1.0到14所有的版本的AST解析。
AST結構允許以一種簡單的編程方式使用Java代碼。可以專門操作Java文件,使用起來也更簡單。它提供了一種方便的機制,可以使用我們稱為“訪客支持”的功能來導航樹。這使開發人員能夠專注于在源代碼中識別有趣的模式,而不必編寫費力的樹遍歷代碼。該庫的最終主要功能是能夠操縱源代碼的基礎結構。然后可以將其寫入文件,為開發人員提供構建自己的代碼生成軟件的便利。
那么我們使用JavaParser theere時,總是希望進行很多操作。
例如,我們希望對整個項目進行操作,因此在給定目錄的情況下,我們將探索所有Java文件。 此類應有助于完成此任務:
package?me.tomassetti.support; import?java.io.File; public?class?DirExplorer?{ public?interface?FileHandler?{ void?handle(int?level,?String?path,?File?file); } public?interface?Filter?{ boolean?interested(int?level,?String?path,?File?file); } private?FileHandler?fileHandler; private?Filter?filter; public?DirExplorer(Filter?filter,?FileHandler?fileHandler)?{ this.filter?=?filter; this.fileHandler?=?fileHandler; } public?void?explore(File?root)?{ explore(0,?"",?root); } private?void?explore(int?level,?String?path,?File?file)?{ if?(file.isDirectory())?{ for?(File?child?:?file.listFiles())?{ explore(level?+?1,?path?+?"/"?+?child.getName(),?child); } }?else?{ if?(filter.interested(level,?path,?file))?{ fileHandler.handle(level,?path,?file); } } } }
對于每個Java文件,我們首先要為每個Java文件構建一個抽象語法樹(AST),然后對其進行導航。 這樣做有兩種主要策略:
1、使用訪客:要在特定類型的AST節點上進行操作時,這是正確的策略。
2、使用遞歸迭代器:這允許處理所有類型的節點。
以上就是小編今天的分享了,希望可以幫助到大家。