Domain-specific languages can help reduce the accidental complexity of software by capturing and encapsulating the knowledge about computing in a domain. Traditional approaches to implementation of software languages require a language designer to encode the syntax and semantics of a language in multiple formats to cater for the construction of artifacts such as interpreters, compilers, IDEs, and correctness proofs.
The objective of my VICI project is to create a language designer’s workbench that supports the design of new software languages using high-level declarative meta-languages that allow the construction multiple artifacts from a single source. In this talk, I will sketch the vision of the project and report on our progress. In particular, I will discuss our work on declarative specification of name binding and operational semantics.