简体   繁体   中英

Is there a Java parser for the Java language?

I'm looking for a java library that allows me to parse a java source file and that gives me an AST representation of the code.

Actually I'm only interested in the class and method definitions with their annotations. I don't need the AST of the method code.

I'm using this information for code generation. This is why I can't compile the source file first to get the information from the resulting class file. The code wouldn't compile without errors until I generate some additional classes.

Java 6 supports this as a native part of the compiler and has standard APIs for it ( javax.lang.model ). You can read up on it here . It is designed specifically for your use-case (ie code generation from annotations and source).

ANTLR ( http://www.antlr.org/ ) has a parser for the Java language and it also suports ASTs.

try

options {
    output=AST;
}

in the *.g file (I haven't tried it personally);

我认为NetBeans Javaparser可能是你会感兴趣的东西。

You can try JavaCC with a grammar file for java language.

我找到了项目javaparser ,它解析单个java文件并返回一个格式良好的AST。

@tangens wrote about JavaParser but referenced a now outdated project.

There has been a fork in 2011 that is still actively maintained and now also parses Java 1.7 and 1.8.

You can find it there: https://github.com/javaparser/javaparser

Disclaimer: I am a contributor to that project.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM