| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
This repository contains the code and framework developed as part of a thesis project aimed at comparing open-source Java libraries for parsing and evaluating mathematical expressions. The project focuses on analyzing the capabilities, strengths, and limitations of these libraries.
The primary objective of this project is not to create a new parsing tool, but to develop a comparison framework that evaluates existing libraries based on key attributes. This framework serves as a decision-making tool to help others select the most suitable library for their needs.
The main goals of the project are:
The project evaluates at least three popular Java libraries for parsing and evaluating mathematical expressions. Examples of libraries studied include:
The framework evaluates libraries based on the following attributes:
The framework provides recommendations tailored to specific scenarios, such as:
External Libraries:
This project uses three external libraries that were not imported through Maven, their .jar files are included in the lib folder.
Configuring the Program:
The program execution is controlled from the Main.java file. Here, you can:
// Comment out the unwanted tests
orchestrator.addTest(new SpeedTest());
orchestrator.addTest(new DataTypeTest());Customizing Output:
The output behavior can be configured using the OutputHandler class.
src/
├── main/
│ ├── java/
│ │ └── org.parser.evaluator/
│ │ ├── strategies/ # Library-specific parsers and evaluators
│ │ │ ├── EvalEx/
│ │ │ │ ├── EvalEx.java
│ │ │ │ ├── FactorialFunction.java
│ │ │ │ └── FactorialOperator.java
│ │ │ ├── Exp4j/
│ │ │ │ └── Exp4j.java
│ │ │ ├── Expr4j/
│ │ │ │ └── Expr4j.java
│ │ │ ├── JavaMathExpressionParser/
│ │ │ │ └── JavaMathExpressionParser.java
│ │ │ ├── Paralithic/
│ │ │ │ └── Paralithic.java
│ │ │ └── IParser.java # Interface for parser strategies
│ │ ├── testers/ # Testing framework
│ │ │ ├── extensibility/ # Tests for extensibility
│ │ │ │ ├── ExtensibilityTest.java
│ │ │ │ └── VariableTest.java
│ │ │ ├── generator/ # Expression generation logic
│ │ │ │ ├── ExpressionGenerator.java
│ │ │ │ └── IExpressionGenerator.java
│ │ │ ├── mathematical/ # Tests for mathematical correctness
│ │ │ │ ├── DataTypeTest.java
│ │ │ │ └── MathExpressionTest.java
│ │ │ ├── performance/ # Performance testing
│ │ │ │ ├── MemoryTest.java
│ │ │ │ └── SpeedTest.java
│ │ │ └── Test.java # Base test class
│ │ ├── util/ # Utility classes
│ │ │ ├── log/
│ │ │ │ ├── report/ # Reporting utilities
│ │ │ │ │ ├── GeneralRecorder.java
│ │ │ │ │ ├── LogContext.java
│ │ │ │ │ ├── TableReporter.java
│ │ │ │ │ └── OutputHandler.java
│ │ │ └── Orchestrator.java # Orchestrates test runs
│ │ └── Main.java # Entry point for running tests
├── resources/ # Configuration files or sample data
└── test/ # Unit tests
└── java/
└── ExpressionGeneratorTest.java # Test for expression generator
Contributions to improve the framework, expand comparisons, or add new libraries are welcome. Please open an issue or submit a pull request.
For questions or feedback, feel free to reach out:
Lili Sebők – seboklili1@gmail.com
| Back | FazBrowse Home | New Git URL |