1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

LWC11 Submission

From whole

Jump to: navigation, search


LWC11 Submission using the Whole Platform

This is the documentation of the Whole Platform submission to the Language Workbench Competition 2011 (LWC11). The assignment can be found at [1]. For more details and to find the others submissions see [2].

Image:Note.png How to install the Whole Platform

Before installing the Whole Platform be sure to have at least a working Java 5 or higher. The easiest way to install the Whole Platform is to click on the Download button on the Whole Platform SourceForge homepage. Upon download completion simply unpack the archive and execute the provided launcher (you can safely use the proposed workspace location). The version used for developing the solution described below is: 1.0.0.v20110512-1609.

Image:Note.png How to install the solution

The source code of the solution described below can be found at [3]. A PDF version of this document can be found at [4] and is also included with the source code archive.

Use the File > Import... > Existing Projects into Workspace wizard to import the downloaded archive. Then open the LWC11Deployer.xwl and deploy it by clicking on the Interpret Model button on the toolbar. At this point, the Language Workbench should look like this.

Now you are able to open every other artifact in the solution including the examples.

Solution Overview

The solution presented below has been developed having in mind two goals:

  • to exploit the benefits of a graphical language workbench by providing a solution at the domain level and
  • to support an agile approach by using model interpretation instead of code generation to apply the solution.

The solution consists of 8 artifacts:

  • two grammars for the Entities and the Instances DSLs
  • one metamodel for the ER DSL
  • two actions for defining and exposing as tooling all of the generators, validator and content assist
  • a deployer to hot deploy the solution in the running workbench
  • a test suite for testing the grammars and the generators
  • a custom DataType parser to support the date format used in the provided examples

With graphical domain languages, lines of code is no longer a suitable metric to measure the size and thus the conciseness of a solution. Let us show you that almost all of the solution code can be visualized in a 27 inches monitor.

Solution Overview

Phase 0 - Basics

This phase is intended to demonstrate basic language design, including IDE support (code completion, syntax coloring, outlines, etc).

  • Task 0.1 Simple (structural) DSL without any fancy expression language or such.
  • Task 0.2 Code generation to GPL such as Java, C#, C++ or XML
  • Task 0.3 Simple constraint checks such as name-uniqueness
  • Task 0.4 Show how to break down a (large) model into several parts, while still cross-referencing between the parts

Phase 1 - Advanced

This phase demonstrates advanced features not necessarily available to the same extent in every LWB.

  • Task 1.1 Show the integration of several languages
  • Task 1.2 Demonstrate how to implement runtime type systems
  • Task 1.3 Show how to do a model-to-model transformation
  • Task 1.4 Some kind of visibility/namespaces/scoping for references
  • Task 1.5 Integrating manually written code (again in Java, C# or C++)
  • Task 1.6 Multiple generators

Phase 2 - Non-Functional

Phase 2 is intended to show a couple of non-functional properties of the LWB. The task outlined below does not elaborate on how to do this.

  • Task 2.1 How to evolve the DSL without breaking existing models
  • Task 2.2 How to work with the models efficiently in the team
  • Task 2.3 Demonstrate Scalability of the tools

Phase 3 - Freestyle

Every LWB has its own special "cool features". In phase three we want the participants to show off these features. Please make sure, though, that the features are built on top of the task described below, if possible.

Personal tools