java - parser

來源:趣味經驗館 2.41W

<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、使用遞歸迭代器:這允許處理所有類型的節點。

熱門標籤