當前位置:科普知識站>IT科技>

java|parser

IT科技 閱讀(2.49W)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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 parser

例如,我們希望對整個專案進行操作,因此在給定目錄的情況下,我們將探索所有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、使用遞迴迭代器:這允許處理所有型別的節點。