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.).
- Defining custom blocks using Blockly
- Homer, Noble, Combining Tiled and Textual Views of Code, VISSOFT'14