This repository contains source code of SpoofaxLang implementation using Spoofax language workbench. It also includes few DSL implementations to demonstrate language features of SpoofaxLang.
SpoofaxLang is a meta-language that facilitates a uniform programming model for modular specification and integration of DSLs. It allows different aspects and cross-cutting concerns of a language definition to be specified using a single formalism. As a result, it offers static checking and cross-aspect verification, which in turn, assists in ensuring correctness of language implementations. In addition, by adhering to Steel’s “growing language” ideology, SpoofaxLang adopts a library-based approach in organizing language definition. By providing language libraries, it allows reuse, extension and composition of existing language implementation. By employing modularity and composibility characteristics, Spoofaxlang supports wide range of language composition strategies, which we have shown the case studies outlined next.
-
EntLang: A langauge to define domain entities. Support for module and function abstractions has also been added.
-
EntTuple: EntLang is extended with Tuple type and expression.
-
EntXML: EntLang with XML syntax embedding. It also supports embedding of expression in XML syntax demonstrating integration of Host language constructs into embedding language.
-
EntEmbedded: It demostrate polymorphic embedding of EntityLang with a Query Language (QL). Two variants of QL, namely MiniLinq and TinySql have been constructed independently in separate SpoofaxLang projects. Depending on project's configuration and subsequent dependency injection, SpoofaxLang selects and activates appropriate QL and embeds it into EntLang.
-
DBLang : It shows bi-directional transformation from EntLang to Database schema and vice versa.