Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/naturalness/javac-parser
Exposes OpenJDK's Java parser and scanner to Python
https://github.com/naturalness/javac-parser
java javac lex lexer openjdk parser scanner syntax-checker tokenizer
Last synced: about 7 hours ago
JSON representation
Exposes OpenJDK's Java parser and scanner to Python
- Host: GitHub
- URL: https://github.com/naturalness/javac-parser
- Owner: naturalness
- License: agpl-3.0
- Created: 2017-08-09T15:28:09.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2020-10-13T01:00:35.000Z (almost 4 years ago)
- Last Synced: 2024-08-30T19:35:19.871Z (26 days ago)
- Topics: java, javac, lex, lexer, openjdk, parser, scanner, syntax-checker, tokenizer
- Language: Python
- Homepage: https://pypi.org/project/javac-parser/
- Size: 65.4 KB
- Stars: 6
- Watchers: 4
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
javac parser
============[![PyPI](https://img.shields.io/pypi/v/javac-parser.svg)](https://pypi.org/project/javac-parser/) [![PyPI - License](https://img.shields.io/pypi/l/javac-parser.svg)](https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)) [![Build Status](https://travis-ci.org/naturalness/javac-parser.svg?branch=master)](https://travis-ci.org/naturalness/javac-parser)
Use OpenJDK's Java parser ("javac") in Python!
Install
-------pip install javac-parser
Usage
-----First, instantiate the server:
```python
import javac_parser
java = javac_parser.Java()
```Count the number of syntax errors:
```python
>>> java.get_num_parse_errors('class Hello {')
1
>>> java.get_num_parse_errors('class Hello { }')
0
```Get a list of diagnostics for each syntax error:
```python
>>> java.check_syntax('class Hello {')
[('ERROR', 'compiler.err.premature.eof', 'reached end of file while parsing', 1, 14, 13, 13)]'
>>> java.check_syntax('class Hello { }')
[]
```Lex (tokenize) Java source code, even if it does not compile:
```python
>>> java.lex('class Hello {')
[('CLASS', 'class', (1, 0), (1, 5), 'class'), ('IDENTIFIER', 'Hello', (1, 6), (1, 11), 'Hello'), ('LBRACE', '{', (1, 12), (1, 13), '{'), ('EOF', '', (1, 13), (1, 13), 'token.end-of-input')]
```See the docstrings in ``javac_parser.py`` or type `pydoc javac_parser` for more details!
Copying
-------Copyright (C) 2017, 2018 Joshua Charles Campbell and Eddie Antonio Santos
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .