Modularizing a DSL implementation with Rascal
To make compilers more maintainable, one could build the language implementation in a modular way. This would mean adding only new les to the existing base language. Rascal is a language workbench that supports this for Domain Specific Languages (DSLs), as claimed by it's developers. To test this, a DSL is build to verify this claim. The language built, is a re-implementation of the existing DSL Derric, a forensic DSL to describe le formats and to generate a Java class to test files if they conform to this format. During implementation a number of issues came forward. There is no override-keyword for functions in Rascal; developers cannot add cases to switch or visit statements later; it is not possible to rename imports; string templates are closed for modification and modules are copied often just to change just one import. Most of these problems generate duplication. In this thesis for four of the five issues, modication of Rascal is suggested. Only the closed switch and visit statements can already be remedied by using Pattern Based Dispatch, a way of defining a function multiple times, based on the input value. This research concludes by confirming the claim by the creators of Rascal.