diff --git a/Readme.md b/Readme.md index 95537f73197a18d6b54ed813390e93900b5f452c..df52c7ab9e76f9fcd3f3600155ff11116ee23cd0 100644 --- a/Readme.md +++ b/Readme.md @@ -1,5 +1,11 @@ # ComplexityParser +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. \ No newline at end of file