
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、使用递归迭代器:这允许处理所有类型的节点。
以上就是小编今天的分享了,希望可以帮助到大家。
