ComplexityParser is a static complexity analyzer for Java programs based on tier-based typing following [^HP15][^HP18].
If a program is typable, this guarantees its runtime to be polynomial on the condition that it halts.
The type inference is automatic; its complexity is linear in the size of the input program in practice.
The code is under the [Apache 2.0 License](https://apache.org/licenses/LICENSE-2.0.txt).
## Compile
### With maven
...
...
@@ -11,18 +17,36 @@ mvn package
## Run
Compilation will create an executable jar inside the target/ folder.
Compilation will create an executable jar inside the `target/` folder that can be run with
```
java -jar target/complexity-0.1.jar
```
Once the application has opened, you are presented with 3 panels:
1. on the left, the analyzed code
2. in the center, the parse tree of this code
3. on the right, the results of the typing inference.
Once the application has opened you can modify the code to be analyzed in the left panel.
When you click on the update button or press the F6 key the code will be analyzed, the
The code in the left panel can be edited directly.
When you click on the update button or press the `F6` key the code will be analyzed, the
parse tree will be updated and the right panel will show information about (successful or unsuccessful)
typing operations and the final result.
If the `Final Result` is 0 or 1, it means that the typing was successful: the code is polytime provided it halts.
If the `Final Result` is `None`, the typing failed.
`Ctrl - o` can be used to open a file and analyze it instead of writing the
code in the left panel. The code in the left panel can still be edited but it will
The `File > Open` menu or the `Ctrl - o` shortcut can be used to open a file and analyze it instead of writing the
code in the left panel.
The code in the left panel can still be edited but it will
have no effect on the loaded file (no changes are or can be saved).
## Dependencies
This program uses the ANTLR framework to generate a parser, this is the only dependency
and it will be downloaded automatically if you compile the program with maven.
\ No newline at end of file
and it will be downloaded automatically if you compile the program with maven.
## Authors
Olivier Zeyen, Romain Péchoux, Emmanuel Jeandel, and Emmanuel Hainry
[^HP15]:Emmanuel Hainry and Romain Péchoux. Objects in polynomial time. In APLAS 2015, LNCS, pages 387–404. Springer, 2015.
[^HP18]:Emmanuel Hainry and Romain Péchoux. A type-based complexity analysis of object oriented programs. Information and Computation, 261:78–115, 2018.