Skip to content

Implementation of Spoofaxlang using Spoofax language workbench

Notifications You must be signed in to change notification settings

adilakhter/spoofaxlang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About this repository

This repository contains source code of SpoofaxLang implementation using Spoofax language workbench. It also includes few DSL implementations to demonstrate language features of SpoofaxLang.

What is 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.

Case Studies

  • 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.

  • TinySql

  • MiniLinq

  • DBLang : It shows bi-directional transformation from EntLang to Database schema and vice versa.

About

Implementation of Spoofaxlang using Spoofax language workbench

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published