Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Adding language support to Jammy
Jammy provides an API for extending supported language. Such extension should be implemented in a dedicated Eclipse plugin which will contribute to the API extension point. Here is the associated workflow for a problem solving execution :
- Creating a project
- Creating a solver file
- Creating an object that is in charge of executing the solver file with provided input
A language manager provides required features for supporting a language in Jammy. In order to do so, the following ILanguageManager interface should be implemented :
As you can see, three methods are defined :
- A method that is in charge of creating a valid IProject instance, this project is specific to a given round.
- A method that is in charge of creating a valid IFile instance, this file will correspond to the solver source file, user should work on.
- A method for creating an ISolverRunner object.
ISolverRunner interface is used in order to manage solver execution, it consists in a method that starts the solver file, for a given input. And a boolean method that indicates if the execution is terminated or not.
Associated OSGi extension point, consists in providing a valid ILanguageManager implementation, and a language name.
Process based addon
Adding a language to Jammy can be done in two ways :
- Integrating any Eclipse API
- Implementing a simple process based language execution
For example, Python language could be integrated through PyDev plugin, or by simply running Python binary through command line.