Software Engineering and Architecture Group (SEARCH) > CS > JBI > FWN > RUG

A DSL for defining Block-based Languages

Block-based languages are used in education and end-user programming to provide a natural "jigsaw" like programming interface. The most well-known example is Scratch , which is widely used to teach programming to kids.

Block-based languages have the advantage that it is impossible to make syntax errors. However, developing such languages is still a dedicated, time-consuming effort. The goal of this project is define a "grammar" DSL for defining such languages, and investigating how (existing) context-free grammars can be transformed to this language. The DSL is to be developed in the language workbench Rascal, using Google's Blockly library as a front-end.


  • A grammar formalism for block-based languages
  • An investigation as to how context-free grammars can be transformed into block-based grammars.
  • A prototype execution environment providing Blockly workspaces for languages defined using the DSL.
  • Evaluation of the DSL by reproducing existing block-based languages and comparing with their implementation.
  • Evaluation by defining a new Block-based DSL (e.g., for workflow, state machines, grammars, etc.).


Contact: Tijs van der Storm (co-supervised with Felienne Hermans).