更多精彩内容,欢迎关注:

视频号
视频号

抖音
抖音

快手
快手

微博
微博

java parser

文档

java parser

Java Parser是基于JavaCC作为Java语言词法解析的工具,支持Java语言生成AST,AST结构允许以一种简单的编程方式使用Java代码,它提供了一种方便的机制,可以使用我们称为“访客支持”的功能来导航树。
推荐度:
导读Java Parser是基于JavaCC作为Java语言词法解析的工具,支持Java语言生成AST,AST结构允许以一种简单的编程方式使用Java代码,它提供了一种方便的机制,可以使用我们称为“访客支持”的功能来导航树。

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、使用递归迭代器:这允许处理所有类型的节点。

以上就是小编今天的分享了,希望可以帮助到大家。

文档

java parser

Java Parser是基于JavaCC作为Java语言词法解析的工具,支持Java语言生成AST,AST结构允许以一种简单的编程方式使用Java代码,它提供了一种方便的机制,可以使用我们称为“访客支持”的功能来导航树。
推荐度:
为你推荐
资讯专栏
热门视频
相关推荐
java request java partial java requests java rest java result java resultset java resume java retrofit java reverse() java reverse java rotate java rsa加密 java path java paypal java phoenix java ping java pipeline java rsa公钥加密 java rsa私钥加密 java rtp java repeat java parse java pandas java override java render java region java require java resolve java resources java overload java outofmemory java outer java orm java openssl java regex java reflect java reference java redirect java rectangle java openjdk
Top