-
Notifications
You must be signed in to change notification settings - Fork 0
Workflow
Here is how to work together to grow GOOL.
The workings of Git are explained here. Basically, make sure you have set-up Git appropriately first, cf. Installation and here. Then, fork the project into your group's repository, where you and your group will modify it. The way you and your group will work is by:
- changing you local copy
- committing the changes locally
- pushing the changes to the group's repository
- pulling someone else's changes from the group's repository
Once you reach an improved version, make a Pull request to the mother repository so that your improvements get integrated. Collaboration is helped by the social features of Git.
The package gool.recognizer.XXX1 defines a visitor, which travels the XXX input (abstract), and produces its GOOL representation (abstract).
The package gool.recognizer.XXX.ast1 tells the user which are the primitives of the XXX input language that are recognized by the GOOL System. They must be kept up-to-date.
For the java input language, the primitives are defined directly in the gool.ast package as they are used also as GOOL primitives.
The package gool.generator.YYY2 defines a visitor, which travels the GOOL representation (abstract), and produces the YYY output (concrete).
In order to add an XXX1 input language, you need a parser that does the translation between the concrete input language into abstract GOOL language. The parser has to be located in the gool.parser.XXX package.
Then you need to define a visitor, which travels through the XXX syntactic tree, and generates the corresponding GOOL primitives. Such a visitor has to be in the gool.recognizer.XXX package.
Finally you need to define the XXX input directory in the gool.properties file.
In order to add a YYY2 output language, you need to define a visitor. The visitor will travel the GOOL primitives, and produce the YYY output ones. It has to be defined in the gool.generator.YYY package.
You also need to define the YYYCompiler for executing the YYY2 output concrete code. It is located in the gool.executor.YYY package.
Finally you need to define a YYY2 output directory and some YYY execution commands in the gool.properties file.
The GOOL intermediate language is the bridge between the input languages and the output ones. If you want to enhanced the GOOL translation capabilities, you have to extend the GOOL abstract language primitives. Those primitives are all defined in the gool.ast package.
1: We use XXX to denote an input language (cpp or java)
2: We use YYY to denote an output language (cpp, java, csharp or python))