How to add a new Specification Language - quasylab/sibilla GitHub Wiki

Differently from other tools, Sibilla does not focus on a single specification language. Indeed, thanks to its modular structure, new languages can be easily integrated. Below, few details are provided to explain how new languages can be integrated.

Sibilla runtime is structured in modules each of which is associated with a specification language.

Modules are registered via a unique name and that is used to select the specification language to use in the runtime environment. The list of available modules is stored in the (immutable) list provided by interface SibillaModule via the static field MODULES.

When activated, a module is used to load a specification from a file, retrieves info from the specification, control the simulation parameters, or execute different analysis.

To add a new specification language we have only to define a new module where all the above mentioned features are implemented. This can be done by implementing the interface SibillaModule.

Since many modules share common implementations, the abstract class AbstractSibillaModule is provided.