Welcome    Download    Documentation    Papers    SF-Site

Executing a DSL

Defining the execution semantics of domain-specific languages (DSLs) and providing tool support for them is expensive. If the definition of a DSL costs more than what can be saved by using it, defining the DSL does not pay off.

EProvide is an Eclipse plugin that allows you to define a DSL's operational semantics as well as visual interpreters and debuggers for the DSL cheaply.

This does not only improve the cost benefits of DSLs but also allows for an iterative style of DSL development: The DSL is usable early and improvements of the DSL can be made rapidly leading to better DSL quality.

EProvide supports multiple semantics description languages: Java, QVT, Abstract State Machines, Prolog, and Scheme (the links point to the corresponding semantics descriptions of the exemplary Petri net DSL). The former three should work out of the box. Prolog and Scheme are harder to setup at the moment. If you are interested in using them, contact us.


2009-09-02: EProvide 3.0.0 is released. With this version, EProvide supports modeling a full-featured debugger with thread view, variable view, breakpoints, and stepping. For details, see this tutorial.

2008-08-28: EProvide 2.1.0 is released. This new version has a much better integration with the standard debug controls of Eclipse like the buttons for suspend, step over, and drop to frame. Furthermore, it provides a new button for stepping back in the execution history. Thus, you can observe your model running and if something unexpected happens, you can suspend it, step back some steps, and then modify your model or even your DSL's semantics before continuing execution.

2008-07-15: Bugfixes in the ASM description language plugin.

2008-04-14: Bugfix Release EProvide 2.0.1. Schema files for extension points are now packaged into the plugins.

2008-04-10: EProvide 2.0.0 is now available. This version supports multiple semantics description languages. Currently supported are Java-, QVT-, and ASM-based semantics. Additional description languages can be added via the extension point hub.metrik.lang.eprovide.semantics.