blob: e6ed2b5c154834027c3232dc66633d208c7a04e0 [file] [log] [blame] [view]
Nicholas Smith646793d2015-01-20 14:53:07 +00001## Java Parser and Abstract Syntax Tree
matozoid2cab70d2013-09-16 13:31:33 +02002
Nicholas Smith26c753d2015-01-14 10:02:55 +00003This package contains a Java 1.8 Parser with AST generation and visitor support.
Nicholas Smithcd1296d2015-01-20 14:22:40 +00004
Danny van Bruggen11887502016-12-05 19:27:34 +01005The AST records the source code structure.
6You can analyze source code for any purpose.
7It is possible to change the AST nodes or create new ones to modify the source code.
8
9When you need not only the text from the source code but you also need type information,
10you can use [the Java Symbol Solver project.](https://github.com/javaparser/javasymbolsolver)
matozoid2d4deca2011-10-30 14:35:59 +010011
Nicholas Smithd7c51132015-09-02 13:14:42 +010012[![Maven Central](https://img.shields.io/maven-central/v/com.github.javaparser/javaparser-core.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.javaparser%22%20AND%20a%3A%22javaparser-core%22)
Nicholas Smith2b77f432015-02-23 11:01:28 +000013[![Build Status](https://travis-ci.org/javaparser/javaparser.svg?branch=master)](https://travis-ci.org/javaparser/javaparser)
Nicholas Smithcc80fc12015-08-17 15:15:26 +010014[![Coverage Status](https://coveralls.io/repos/javaparser/javaparser/badge.svg?branch=master&service=github)](https://coveralls.io/github/javaparser/javaparser?branch=master)
Nicholas Smithd6a80982015-08-17 15:25:32 +010015[![Join the chat at https://gitter.im/javaparser/javaparser](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/javaparser/javaparser?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Nicholas Smithcc80fc12015-08-17 15:15:26 +010016
Nicholas Smithcd1296d2015-01-20 14:22:40 +000017## Features
18
19* Light weight
20* Performant
21* Easy to use
22* Modifiable AST
Danny van Bruggen11887502016-12-05 19:27:34 +010023* Code generation
Nicholas Smithcd1296d2015-01-20 14:22:40 +000024* Support of comments
25
26## Dependency Management
27
matozoid3c137e92016-04-06 19:37:37 +020028The project binaries are available in Maven Central. Just add the following to your maven configuration or tailor to your own dependency management system.
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010029
Danny van Bruggen11887502016-12-05 19:27:34 +010030Suggested version (many fixes, new features, and mostly stable API):
31```xml
32<dependency>
33 <groupId>com.github.javaparser</groupId>
34 <artifactId>javaparser-core</artifactId>
35 <version>3.0.0-RC.1</version>
36</dependency>
37```
38
39Current production release:
Nicholas Smithd7c51132015-09-02 13:14:42 +010040
Nicholas Smith15a23ae2015-01-14 10:27:51 +000041```xml
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010042<dependency>
Nicholas Smith26c753d2015-01-14 10:02:55 +000043 <groupId>com.github.javaparser</groupId>
44 <artifactId>javaparser-core</artifactId>
Danny van Bruggen72b09da2016-07-21 11:09:59 +020045 <version>2.5.1</version>
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010046</dependency>
Federico Tomassetti2051f042014-07-30 19:01:19 +010047```
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010048
Nicholas Smithcd1296d2015-01-20 14:22:40 +000049## How To Compile Sources
Nicholas Smith15a23ae2015-01-14 10:27:51 +000050
Nicholas Smithcd1296d2015-01-20 14:22:40 +000051If you have checkout the project from GitHub you can build the project with maven using:
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010052
Federico Tomassetti2051f042014-07-30 19:01:19 +010053```
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010054mvn clean install
Federico Tomassetti2051f042014-07-30 19:01:19 +010055```
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010056
Danny van Bruggen11887502016-12-05 19:27:34 +010057If you checkout the sources and want to view the project in an IDE, it is best to first generate some of the source files; otherwise you will get many compilation complaints in the IDE. (mvn clean install already does this for you.)
Nicholas Smithcd1296d2015-01-20 14:22:40 +000058
59```
60mvn javacc:javacc
61```
62
63## Manual
64
65Examples of how to use the library can be found on the [Manual](https://github.com/javaparser/javaparser/wiki/Manual) page of the wiki
66
Nicholas Smith26c753d2015-01-14 10:02:55 +000067## Troubleshooting
68
Danny van Bruggen11887502016-12-05 19:27:34 +010069First try the [wiki](https://github.com/javaparser/javaparser/wiki).
Nicholas Smith26c753d2015-01-14 10:02:55 +000070
Danny van Bruggen11887502016-12-05 19:27:34 +010071Didn't find an answer? Try [searching for existing issues](https://github.com/javaparser/javaparser/issues?utf8=%E2%9C%93&q=is%3Aissue%20)
72
73Still nothing? [Open an issue](https://github.com/javaparser/javaparser/issues/new) or [come chat on Gitter](https://gitter.im/javaparser/javaparser)
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010074
75## Javadoc
76
Nicholas Smithc86a9ff2015-08-12 13:20:26 +010077The libraries javadoc can be found [here](http://www.javadoc.io/doc/com.github.javaparser/javaparser-core/)
Federico Tomassetticf8d7b12014-07-30 19:00:26 +010078
79## History
80
Didier Villevaloisd5e88432015-03-16 14:23:45 +010081This parser is based on work by Sreenivasa Viswanadha and JĂșlio Vilmar Gesser. The original project, now inactive, was originally hosted at [Google Code](http://code.google.com/p/javaparser/) and supported only parsing Java 1.5.
matozoid2d4deca2011-10-30 14:35:59 +010082
Didier Villevaloisd5e88432015-03-16 14:23:45 +010083The project now supports parsing Java 1.8 and aims to continue support for features in future versions of the Java language.
Nicholas Smith26c753d2015-01-14 10:02:55 +000084
Federico Tomassetti43e1e412015-08-06 17:31:26 +020085## Related projects
86
Federico Tomassetti212fd3f2016-10-20 21:41:35 +020087[JavaSymbolSolver](https://github.com/javaparser/javasymbolsolver) is a project from the same committers working on JavaParser.
88You can use it to calculate the type of JavaParser expressions and connecting references with their declarations.
89
Federico Tomassetti43e1e412015-08-06 17:31:26 +020090From JavaParser other projects have been derived:
91
92* [Walkmod](http://walkmod.com/): a tool to automatically correct violations of code conventions
Edgar Espina1986cf82016-02-29 09:40:38 -030093* [jooby spec](http://jooby.org/doc/spec): analyze and exports [jooby routes](http://jooby.org) to [raml](http://raml.org) and [Swagger](http://swagger.io)
Federico Tomassetti43e1e412015-08-06 17:31:26 +020094
95## Credits
96
97This project has been maintained thanks to the joint efforts of many contributors: we are extremely grateful to all of them.
98
99In particular we are thankful to the contributions we received by the [Walkmod](http://walkmod.com/) project which permitted to finalize support for Java 8. The author granted us the permissions to release that code also under the Apache License and we have greatly appreciated that.
100
Didier Villevaloisd5e88432015-03-16 14:23:45 +0100101## License
Nicholas Smith26c753d2015-01-14 10:02:55 +0000102
Federico Tomassetti2c7ba122015-08-12 08:06:33 +0200103JavaParser is available either under the terms of the LGPL License or the Apache License. You as the user are entitled to choose the terms under which adopt JavaParser.
Federico Tomassettiee6a48a2015-07-25 14:42:17 +0200104
105For details about the LGPL License please refer to [LICENSE.LGPL](ttps://github.com/javaparser/javaparser/blob/master/LICENSE.LGPL).
106
107For details about the Apache License please refer to [LICENSE.APACHE](ttps://github.com/javaparser/javaparser/blob/master/LICENSE.APACHE).