This is regarding the code base for three (3) components related to Boa that currently reside in three different repositories but share critical components: compiler, backend, and evaluator.
The compiler and backend share data representation e.g. protocol buffer definition. The compiler and evaluator share grammar, parsing, and builtin function code.
This organization has four problems.
It makes the task of calculating impact of a proposed change difficult for a newcomer.
It increases efforts required to make an update (due to duplication of artifacts).
It increases the perceived complexity of the system.
It would (in future) make distribution of Boa difficult because there are too many parts.
It is for all of these reasons, and to exploit opportunities presented by a shared codebase, that I propose the following organization of the Boa-related components.
There be exactly one jar file with all three components: compiler, evaluator, and backend to produce an example dataset.
All three functionalities can be selected via command line options
-c,--compile compile a Boa program
-e,--execute execute a Boa program
-g,--generate generate a Boa dataset
-p,--parse check a Boa program (parse & semantic check)
Each of these functionalities can have their own set of command-line options.
Last but not least, they all be maintained in one Git repository on GitHub so that we do not have to chase down multiple repository to assemble a Boa system.
This is regarding the code base for three (3) components related to Boa that currently reside in three different repositories but share critical components: compiler, backend, and evaluator.
The compiler and backend share data representation e.g. protocol buffer definition. The compiler and evaluator share grammar, parsing, and builtin function code.
This organization has four problems.
It is for all of these reasons, and to exploit opportunities presented by a shared codebase, that I propose the following organization of the Boa-related components.
Each of these functionalities can have their own set of command-line options.