The grammar for the Expressions DSL
The DSL that we want to implement in this chapter should allow us to write lines containing either a variable declaration consisting of the keyword "var", an identifier and an initialization expression (the angle brackets denote non-terminal symbols):
var <ID> = <Expression>
Or the evaluation of an expression, consisting of the keyword "eval" and the expression to evaluate:
eval <Expression>
If we write something as follows:
ExpressionsModel: variables += Variable* evaluations += EvalExpression* ;
We will not be able to write a program where variables and evaluations can be defined in any order; we can only write variables first and then evaluations.
To achieve the desired flexibility, we introduce an abstract class ...
Get Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.