<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Reusable Textual Styles for Domain-Specific Modeling Languages⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>University of York</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Deramore Lane</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>York YO</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>forename.lastname}@york.ac.uk</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>CDL-MINT, Johannes Kepler Universität</institution>
          ,
          <addr-line>Altenberger Straße 69, 4040 Linz</addr-line>
          ,
          <country country="AT">Austria</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>CDP, Technische Universität Wien</institution>
          ,
          <addr-line>Karlsplatz 13, 1040 Vienna</addr-line>
          ,
          <country country="AT">Austria</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>McMaster University</institution>
          ,
          <addr-line>1280 Main Street West, Hamilton, Ontario L8S 4L8</addr-line>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>1978</year>
      </pub-date>
      <fpage>0000</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>Domain-specific languages enable concise and precise formalization of domain concepts and promote direct employment by domain experts. Therefore, syntactic constructs are introduced to empower users to associate concepts and relationships with visual textual symbols. Model-based language engineering facilitates the description of concepts and relationships in an abstract manner. However, concrete representations are commonly atached to abstract domain representations, such as annotations in metamodels, or directly encoded into language grammar and thus introduce redundancy between metamodel elements and grammar elements. In this work we propose an approach that enables autonomous development and maintenance of domain concepts and textual language notations in a distinctive and metamodel-agnostic manner by employing style models containing grammar rule templates and injection-based property selection. We provide an implementation and showcase the proposed notationspecification language in a comparison with state of the art practices during the creation of notations for an executable domain-specific modeling language based on the Eclipse Modeling Framework and Xtext.</p>
      </abstract>
      <kwd-group>
        <kwd>Domain-Specific Language</kwd>
        <kwd>Model-Driven Engineering</kwd>
        <kwd>Language Engineering</kwd>
        <kwd>Concrete Syntax</kwd>
        <kwd>Notation</kwd>
        <kwd>Domain-Specific Modeling</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>1 Introduction
hTe engineering of a domain-specific language (DSL) is usually initiated by the
construction of an artifact that captures concepts and relationships inherent to the
domain being represented. Typical artifact types include variations of grammars and
metamodels—each inherently of diferent natu1r5e].[In general, grammars are
employed to describe domain concepts and their textual representation utilizing
production rules and terminal rules, respectively. Contrarily, metamodels are used to capture
concepts and relationships of a domain but not their syntactic constructs. Although
state of the art language workbenches, such as X5t]e,xptro[vide means to generate
grammars from metamodels and vice-versa, they provide a single (default) notation,
i.e. either graphical, textual, or a combination thereof, that has to fit the needs of all
types of domain experts or requires dedicated language engineering skills for
adaptation and extension. The construction of a bridge between metamodel and grammar,
and in particular from metamodel to grammar, is commonly approached by
introducing annotations in metamodels or metamodel-to-grammar transfor2m]a.Htioown-s [
ever, construction and maintenance of such bridges is inherently complex and
errorprone due to fundamental diferences between metamodels and grammars. Moreover,
such bridges are often metamodel-dependent and are thus not universally applicable
to arbitrary domains.</p>
      <p>In this work, we present the Ecore Concrete Syntax Specification (Ecss)
framework5—a novel textual notation description language and toolkit that enables the
definition of both metamodel-dependent and metamodel-agnostic representations for
Ecore-based languages—and employ it for automating the generation of textual
modeling languages with supporting editors and tools from Ecore metamodels. In
summary, Ecss facilitateis) (the creation, extension, and reuse of textual notations
(subsequently also referred to as “style models” and “Ecss models”)iai)ntdh(e generation
of grammar and executable implementation of domain-specific modeling languages
(DSMLs) from pairs that consist of domain metamodel and style model. We
showcase the implementation of our approach in a comparison with the state of the art in
model-driven language engineering the results in the manifestation of a DSML.
Roadmap. The remaining sections of this paper presenit)(a brief overview of
methodologies and techniques upon which this work is buiildi), a( motivating examplei,i(i)
the conceptual and technical characteristics of our approach alongside state-of-the-art
solutions and in particular Xtext and the Eclipse Modeling Framework (iEvM)aF), (
selection of related work, and finallvy)(a conclusion and outline of future work.</p>
    </sec>
    <sec id="sec-2">
      <title>2 Background</title>
      <p>
        Model-Driven Engineering and Domain-Specific Languages. In this work we specifically
focus on the construction and maintenance of Domain-Specific Modeling Languages
(DSML), i.e. the employment of Model-Driven Engineering (MDE) in the context of
Domain-Specific Languages (DSLs) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], and in particular by constructing our approach
on top of the Xtext language workbench that is built on the5,E2M5]F. M[ore
specifically, EMF is the quasi-reference implementation of the Essential Meta-Object
Facility (EMOF) standard20[] and provides a closed and strict metamodeling architecture,
which defines the model on the uppermost layer to conform to itself as well as the
correspondence of every model element with a model element of the layer above,
respectively. EMOF, as well as the Extended Backus-Naur Form (EBN2F7)],[represent
5 hTe source code of Ecss is published athttps://github.com/patrickneubauer/E.CSS
DSLs to define languages in form of metamodels and context-free grammars (CFGs),
i.e. also referred to as “text-based concrete syntaxes” and “notations”, respectively. In
the EMF, an Ecore model—also referred to as EMF-based “metamodel” or “abstract
syntax”—corresponds to the M2-layer in EMOF and acts as an abstract representation
for concepts, properties, and relationships that are embodied by a real-world system.
Further, the M1-layer in EMOF represents instances that specify actual values for
concepts, properties, and relationships as defined in their corresponding M2-layer Ecore
model.
      </p>
      <p>Language Engineering and Workbenches. Language workbenches6[], such as Xtext,
are tools that provide a range of features, such as dedicated editors, model
transformations and validations, for DSML specifications. In general, Xtext employs the ANTLR
parser generator23[] for the production of implementation artifacts, such as lexers
and parsers, and ofers two diferent DSML construction-mechanisms, i.e. typically
selected as a result of an engineer’s familiarity with the
technica6losfpagcreasmmarware and modelware26[]. On one hand, grammarware engineers, which are more
familiar with traditional CFGs, may construct CFGs and employ the Xtext mechanism
for deriving EMF-based metamodels. On the other hand, modelware engineers, which
are most familiar with MDE-based technologies, may develop EMF-based
metamodels and derive CFGs by employing metamodel-to-grammar transformations. Although
Xtext supports both, the main focus is to provide grammars at the front-end and
metamodels at the back-end to facilitate tool interopera22b,il2it8]y. [
3</p>
    </sec>
    <sec id="sec-3">
      <title>Motivating Example</title>
      <p>Within this section, we present a typical language engineering use16c,a1s4e][that
involves the construction of a DSML by employing Xtext and the EMF and in
particular a metamodel for capturing the concepts and relationships of a language for space
transportation services. Moreover, this metamodel formulates the foundation upon
which state-of-the-art practices, such as model-to-text transformations and grammar
adaptation, as well as our approach may create, modify, and apply notations.
Language Structure. The metamodel of our exemplary language (cf. Figur1e)
instantiates the core components of the Ecore metamodeling language, such as (abstract)
classes, atributes, (containment) references, and enumerations. More specifically, the
following concepts and relationships are defined:SpaaceTransportationService can
own launch sites, spacecrafts, and engine types;Sapacecraft is defined by name,
relaunch-cost, stages, manufacturer, country of origin, physical properties, functions,
such as be an orbital launcher or intercontinental transport vehicle, and launch sites
from where it can startS;taage is defined by name, such as booster or spaceship, an
engine type, and physical properties;PahysicalProperty is defined by a type, such as
length, volume or mass, unit, and value; anLdaaunchSite is defined by name, location,
operator, number of launchpads, operational status, and physical properties.
6 Technical space refers to a working context with a set of associated concepts, body of
knowledge, tools, required skills, and possibilities often associated to a given user community with
shared know-how, educational support, common literature, and scientific ve1n7u].es [
Second</p>
      <p>Stage
Intermediate</p>
      <p>Stage
First Stage
&lt;&lt; abstract &gt;&gt;</p>
      <p>NamedElement
name : String</p>
      <p>EngineType
fuelKind : String
LaunchSite
[1..1] engineType</p>
      <p>Stage
engineAmount : Integer
[0..*] engineTypes</p>
      <p>[0..*] launchSites</p>
      <p>SpaceTransportationService</p>
      <p>Spacecraft
[0..*] functions: Function
manufacturer : String
countryOfOrigin : String
relaunchCostInMioUSD : Integer
[0..*] stages [0..*] physicalProperties
[0..*] physicalProperties</p>
      <p>LaunchSite
locationLatitude : Double
locationLongitude : Double
operator : String
numberOfLaunchpads : Integer
operational : Boolean</p>
      <p>[0..*] physicalProperties
[0..*] spacecrafts</p>
      <p>[0..*] launchSites</p>
      <p>PhysicalProperty
type : PhysicalPropertyType
unit : String
value : Double</p>
      <p>
        Notational Requirements. The requirements on the textual notation of the language
to be constructed includie) i(ndentation-based layout, i.e. also referred to as
ofsiderules [
        <xref ref-type="bibr" rid="ref1 ref18">18, 1</xref>
        ] and represents the determination of code block-structure by means of
indentation and layout based on the concept of layout-sensitive lan1g8u,a1g],essu[ch
as Python, Haskell, CofeeScript, and YAML Ain’t Markup Language (YAM3L]),[and
(ii) comma-separated arbitrary order of declaration, i.e. flexible or unordered sequence
of instantiation. List1in.1gpresents an excerpt of a space transportation service (cf.
metamodel in Figure1) that is built on both indentation-based layout and
commaseparated arbitrary order of declaration. The former allows the use of hidden tokens,
such as whitespace, as separators instead of visible tokens, such as curly brackets. The
later enables the use of sequences, e.g. location coordinates at the end of a launch
site definition, that diferentiate from those defined in the metamodel, e.g. location
coordinates at the beginning of a launch site definition.
      </p>
      <p>1 SpaceTransportationService:
2 launchSites:
3 name: KennedySpaceCenter,
4 operator: NASA,
5 operational: true,
6 numberOfLaunchpads: 3,
7 locationLatitude: 28.524058,
8 locationLongitude: 80.65085</p>
      <p>Listing 1.1. Instance of a space transportation service (excerpt).</p>
    </sec>
    <sec id="sec-4">
      <title>Approach</title>
      <p>Within this section our contribution is outlined alongside its application to the
previously introduced example. First, the state-of-the-art model-first and grammar-first
approach is showcased. Secondly, design principles, structural components, and
selection modes of the style specification language are introduced. Thirdly, the style
speciifcation language is employed to model a DSML that fulfils the requirements presented
in Section3. Finally, the mechanism that generates executable DSML implementations
from tuples that consist of style model and domain-specific metamodel is presented.</p>
      <p>E1a
E1b</p>
      <p>G1
generate</p>
      <p>G2</p>
      <p>Metamodel
StyleModel
Grammar</p>
      <p>G3
reference</p>
      <p>ECSS
E2</p>
      <p>generate
generate</p>
      <p>Metamodel
Grammar-first</p>
      <p>Grammar</p>
      <p>E3</p>
      <p>generate</p>
      <p>Language
Structure</p>
      <p>Style
Language implementation</p>
      <p>Component
Subcomp. A</p>
      <p>Subcomp. B
generate</p>
      <p>Step
#
Legend</p>
      <p>M1
generate</p>
      <p>Model-first</p>
      <p>Metamodel</p>
      <p>M2
M4</p>
      <p>Grammar</p>
      <p>reference
M3</p>
      <p>
        adapt
reference
transformation
4.1 Model-first approach
hTe model-first approach [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] of constructing a DSML (cf. top-right gray area of
Figure2) is typically applied by developers most familiar with MDE and composed of the
stepsM 1, i.e. construction of a domain-specific metamodel (cf. Fig1u),rMe 2, i.e.
application of a generic metamodel-to-grammar transformation (cf1.2L)i,sMtin3,gi.e.
adaptation of generated grammar to fulfill the notational requirements stated above,
andM 4, i.e. generation of language implementation (cf. center gray area o2f).Figure
1 Stage returns Service::Stage
2 'Stage' name=ID '{'
3 'engineAmount' engineAmount=EInt
4 'engineType' engineType=[EngineType]
5 ('physicalProperties' '{'
6 physicalProperties+=PhysicalProperty
7 ( "," physicalProperties+=PhysicalProperty)*
8 '}' )?
9 '}';
      </p>
      <p>Listing 1.2. Result of stepM 2—generated domain-specific grammar (excerpt).</p>
      <p>To yield a DSML that supports indentation-based layout that prescribes that all
non-whitespace tokens of a structure must be further to the right than the token that
starts the structure, as well as flexible order of specification, the following
adaptations on the generated grammar are performed. First, synthetic tokens, i.e. ofering
the specification of whitespace-semantics employing synthetic terminal rules, for the
beginning and the end of a line as well as new lines are introduced (cf. lines 1-3 in
Listing1.3). Next, production rules are adapted to use the specified synthetic tokens
(cf. lines 8-13 in Listin1g.3). Secondly, to support arbitrary order of declaration
alongside whitespace-semantics, all possible occurring sequences need to be depicted by
the grammar, which is accomplished by intermediating rule assignments with a
vertical line, i.e. indicating a logical or, and enclosing them with brackets ending with a
star-character, i.e. indicating zero or multiple occurrences. However, the combination
of flexible sequences and whitespace-semantics requires to state all possible occurring
sequences explicitly and thus causes the size of production rules to multiply by the
number of structural features occurring in the containing classes.</p>
      <p>1 terminal BEGIN: 'synthetic:BEGIN';
2 terminal NEWLINE: 'synthetic:NEWLINE';
3 terminal END: 'synthetic:END';
4
5 Stage returns Stage: SINGLESPACE
6 'name' ':' name=EString
7 (NEWLINE 'engineAmount' ':' engineAmount=EInt) &amp;
8 (NEWLINE 'engineType' ':' engineType=[EngineType|EString])
9 (NEWLINE 'physicalProperties' ':' BEGIN
10 physicalProperties+=PhysicalProperty
11 (NEWLINE physicalProperties+=PhysicalProperty)*
12 END)?;</p>
      <p>
        Listing 1.3. Result of stepM 3—adapted domain-specific grammar (excerpt).
4.2 Grammar-first approach
hTe grammar-first approach [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] (cf. botom-left gray area of Figure 2), i.e. usually
applied by developers most acquainted with grammar-based language engineering, of
constructing a DSML is composed of the construction of a domain-specific grammar
(cf. stepG1), the application of a generic grammar-to-metamodel transformation (cf.
stepG2), i.e. also referred to as metamodel-derivation,iiain)dth(e generation of the
language implementation (cf. center gray area of F2i)g.uArlethough stepG2 may be
performed as a background process in Xtext, i.e. alongsideGs3t,eapnd thus possibly
to the unawareness of language developers, it a process that is required to yielding
executable DSML implementations.
      </p>
      <p>Our approach is primarily intended to be applied within the context of model-first
language engineering (cf. Sectio4n.1) due to the facilitation of metamodels for capturing
domain-specific structural semantics and constraints. However, it is also applicable
for use cases in which metamodels are derived from domain-specific grammar and
employed alongside style models to generate modernized DSML implementations.
0..* templates
0..* imports</p>
      <sec id="sec-4-1">
        <title>StyleModel</title>
        <p>0..* properties
0..1 selector
0..1 property</p>
      </sec>
      <sec id="sec-4-2">
        <title>PropertyRule</title>
      </sec>
      <sec id="sec-4-3">
        <title>TemplateRule</title>
        <p>0..1 templateMatch
0..1 propertyValue</p>
      </sec>
      <sec id="sec-4-4">
        <title>Property</title>
        <p>0..1 slotMatch</p>
      </sec>
      <sec id="sec-4-5">
        <title>ForEachExpression</title>
      </sec>
      <sec id="sec-4-6">
        <title>IfExpression</title>
      </sec>
      <sec id="sec-4-7">
        <title>SlotCall</title>
      </sec>
      <sec id="sec-4-8">
        <title>EvaluationCall</title>
      </sec>
      <sec id="sec-4-9">
        <title>Selector</title>
        <p>0..* selectors</p>
      </sec>
      <sec id="sec-4-10">
        <title>SingleSelector</title>
        <p>0..1 condition</p>
      </sec>
      <sec id="sec-4-11">
        <title>Condition</title>
      </sec>
      <sec id="sec-4-12">
        <title>TemplateMatch</title>
      </sec>
      <sec id="sec-4-13">
        <title>SlotMatch</title>
      </sec>
      <sec id="sec-4-14">
        <title>PropertyValue</title>
      </sec>
      <sec id="sec-4-15">
        <title>TemplateFunctionCall</title>
        <p>0..1 selector
0..1 first
0..1 second 0..1 expression
0..* parameterValue
0..1 expression</p>
      </sec>
      <sec id="sec-4-16">
        <title>FormalExpression</title>
      </sec>
      <sec id="sec-4-17">
        <title>TemplateParameterValue</title>
        <sec id="sec-4-17-1">
          <title>4.3 Style Specification Language</title>
          <p>Design principles. The aim of the Ecore Concrete Syntax Specification (Ecss)
language to capture common styles of textual syntaxes (e.g. YAML-like, JSON-like,
XMLlike) and to support the automated generation of Xtext grammars for such7.syntaxes
Ecss is inspired by CSS, which allows to style HTML code and ofers straightforward
composition, and thus aims for similar composability and parameterizability. For
example, developers should be able to reuse, extend, and adapt existing language
notations through composition with other language notations.</p>
          <p>Structural Components. The core component of the Ecss language (cf. Figur3e) is a
StyleModel that may extend other instances of style models through imports and
contains a set of rules defining properties and templaPtreosp.ertyRules may be composed
of a selector and properSteyl.ectors may be composed ofSingleSelector instances that
may contain Caondition, i.e. defined by a FormalExpression such as an OCL expression.
Each single selector selects a particular rule application instance. Selectors may define
a name and thereby select rule applications with matching names. More specifically,
the name for a rule that has a single feature as parameter refers to the name of the
feature, i.e. the name of the class in case of a single class. Additionally, a selector may
select subclasses by specifying the name of the rule that is named by its superclasses.
Similarly to HTML, a sequence of single selectors choose rule applications based on
their hierarchy. In detail, a rule application is chosen for a sequence of seleic)tors if (
it matches the last single selector itselfiia)nadd(irect or indirect parent matches the
7 An initial catalogue of reusaEbcless styles is available online ahttp://bit.ly/ecss-styl.es
remaining selectors. In addition to basic names, selectors may also specify that all rule
applications are admissible and may restrict the applications using OCL expressions.</p>
          <p>Instances ofProperty may be composed of aTemplateMatch, a SlotMatch, and a
PropertyValue. A template match containnsaame and associates a priority for using
the templatneame for the rule application under consideration. A slot match contains
a pair a(tributename , slotname), specifying the priority that an atribute is matched
to a slot. A property value simply associates a property of the rule application to a
certain value, which may be a constant or an OCL expression evaluation result. The
application of all properties may further be restricted by OCL expressions.</p>
          <p>TemplateRules manifest as expressions, suchFaosrEachExpression andIfExpression,
or calls, such asEvaluationCall and TemplateFunctionCall, and may contain static
executed code parts and static outputFso.rAEachExpression triggers the generation of
code for each object in a parameter of the rule applicatTieomnp.lAateFunctionCall
provides an opportunity to create a subsequent rule (subrule) application and may own
instances oTfemplateParameterValue that originate from rule application parameters,
values calculated from property rules, and values of a slot, i.e. defined by a multiplicity
determining the minimum and maximum amount of subsequent features (subfeatures)
that are distributed in this slotE.vAanluationCall produces output based on a
property value. ATemplateFunctionCall produces output either as part of the parent rule,
i.e. acting as the container, or as a reference identifier, i.e. triggering content
generation outside the parent rule.</p>
          <p>Syntactic Components. The primary syntactic components used within the context of
an Ecss model include pronounceable keywords such iamsport , template, rule, for,
and if, as well as template-activating character sequences su[c%h=…as%] for value
insertion through variable access or function[%ca…ll%s], for (local) evaluation call or
value call, and::ruleName() andruleName() for Java calls.
4.4 Style modeling
hTe requirements imposed on the language introduced in Secti3onare fulfilled by
supplying the Ecss grammar creator with the Ecore metamodel and Ecss model
created in stepE1a and E1b of Figure2, respectively. In more detail, the style model
ws-aware.ecss andarbitrary-order.ecss is created to fulfill the first and second
requirement, respectively. The rule whitespaceClassRule in Listing1.4 defines that the features
of a class are indented, i.e. with respect to the class itself. More specifically, line 6
produces the grammar rule header. Next, if the class being processed has no associated
atribute, classname followed by an empty space and colon is produced as initial
content of a class (cf. lines 7-8). Alternatively, if a class owns a set of atributes, a rule call
to the rule grounpameDistRules is performed (cf. lines 9-11), i.e. selecting a subrule.
Next, additional indentation is created for feature definitions that are returned by rule
callatributeDistRules . The property rule NamedElement+ is metamodel-dependent and
specifies that theclassname of classes that extend the clNaasmsedElement have to
appear in uppercase characters (cf. lines 14-15). The global property rule, i.e. indicated by
a star-selector, is metamodel-agnostic and specifies thactlatshsneame of (any
matching) class is defined by its name (cf. line 17) or, in other words, the name of a class in its
metamodel. Note that due to the (higher) prior2it.0ytohfat is defined by property rule
NamedElement+, the global property rule with (lower) priorit1y.0oifs only matched
by classes that dnoot extend the clasNs amedElement.</p>
          <p>hTe rule arbitraryAtributeDistr in Listing1.5 defines a style that fulfills the second
notational requirement, i.e. comma-separated arbitrary order of declaration, that is not
feasible by the use of (simple) unordered groups and causes a quadratic increase in the
size of a grammar rule. In more detail, lines 7-9 define the initially occurring feature as
arbitrary, i.e. any feature from the set of features of a class may occur first. Next, lines
10-11 encapsulate Java code that computes a list of remaining class features that is
subsequently being iterated for the production of individual feature occurrences that
are prefixed by comma separators (cf. lines 13-15).</p>
          <p>1 import "default.ecss";
2
3 templateGen classGenTemplate extends classTemplate;
4
5 rule whitespaceClassRule :classGenTemplate :: classRules:
6 class.name " returns " class.name ":" "{" class.name "}"
7 [% if (slot_name.getValues().isEmpty()) {%]
8 " '" classname "' " " ':' "
9 [% } else {%]
10 nameDistRules(~name[0 .. 1])
11 [% }%]
12 ::BEGIN() " (" attributeDistRules(~other[ 0 .. 99]) ")" ::END() ';' ;
13
14 NamedElement+
15 { classname: ocl "rule.class.name.toUpperCase()" priority(2.0); }
16
17 * { classname: ocl "rule.class.name" priority(1.0); slot(name,name): 2.0;}</p>
          <p>Listing 1.4. Ecss model for indentation-based layout (excerpt of ws-aware.ecss).
1 import "wsaware.ecss";
2
3 template attributeTemplate: uk.ac.york.cs.ecss.newproc.AttributeXtendRule;
4 templateGen attributeGenTemplate extends attributeTemplate
5
6 rule arbitraryAttributeDistr: attributeGenTemplate :: attributeDistRules:
7 "("
8 for esf: features join ") | (" {
9 attributeRule(esf)
10 [% List&lt;EStructuralFeature&gt; subFeat = new ArrayList(features); %]
11 [% subFeat.remove(esf); boolean first = true; %]
12 "(("
13 for EStructuralFeature sub: subFeat join ") &amp; (" {
14 "','" attributeRule(sub)
15 } "))"
16 } ")";
Listing 1.5. Ecss model for arbitrary order of declaration (excerpt of arbitrary-order.ecss).</p>
        </sec>
        <sec id="sec-4-17-2">
          <title>4.5 Generation of Grammar and Language implementation</title>
          <p>In this section, the process of generating grammars (cfE. 2stienpFigure2) that is
followed by the final step (cfE.3), i.e. the generation of executable DSML
implementations as illustrated in Fig4u,ries described in detail. The Ecss DSML grammar
creator generates grammars based on models by substituting template parameters in style
models with actual values and suitable subsequent values.</p>
          <p>Rule template association</p>
          <p>property rules
select root
rule template</p>
          <p>Class</p>
          <p>GeneRrautleed(PGarratm)mar</p>
          <p>rule
generation
Rule Template Application</p>
          <p>Rule Template
Parameter Values Rule Slots</p>
          <p>Rule-specific subrule Parameter extraction</p>
          <p>Rule Value Assignment Process</p>
          <p>Value
property rules
select values for slots
Value Slots Value Slot Association</p>
          <p>Rule Slot Association</p>
          <p>For each rule slot
association</p>
          <p>CCoommppleleteteSSuubbruruleleAAssssooccaatitoionn</p>
          <p>PPaararammeeteterrVVaalulueess</p>
          <p>RRuuleleTTeemmpplalatete
Subrule Parameter Values
e.g. features, classes</p>
          <p>Distribute Parameters to Slots</p>
          <p>Slot association
property rules</p>
          <p>Rule template association</p>
          <p>property rules</p>
          <p>Ecss is built on template rules that act as code generating classes that produce
code based on values assigned to class fields. Class fields can manifest ai)s d(irectly
assigned fields, i.e. field values determined by constructor parameteiris),s(tyled fields,
i.e. field values determined by property selectors, anidii)( slot fields, i.e. field values
derived from directly assigned fields that are distributed in slots based on priorities
computed from the set of available associations between slot and value. Moreover,
directly assigned fields may refer to model elements in the input metamodel; the value
of styled fields is the result of determining a rule template from the set of available
priorities in associations between slot and rule template. The root rule application is
selected using template property rules with their root class as a single parameter. In
case no root class has been specified, it is automatically determined by selecting the
class that contains most other other classes. Next, the variable associations of the rule
application are established depending on the rule application class and subsequent
parameters may be derived from parameters of the rule. Then, property rules assign
property values to rule properties. Next, the priority of slot parameters is calculated
using slot value property rules and specific subsequent parameters that are distributed
among rule slot priorities and slot multiplicities. Next, the output generating function
of the rule application, i.e. defined by values computed in the previous step, is executed
and dynamically calls subrules. In detail, most suitable subrule templates, i.e. based on
property rules and parameter types, are selected and similarly processed.
Priority Computation. Assuming that the claSsstage in our motivating example
represents the root class and is converted by employing thewhriutleespaceClassRule (cf.
Listing1.4). As a result of the definition ocflassGenTemplate, the variableclass is set
to the class parameters and all class features are distributed to slots as follows. First,
values for non-slot fields, i.ec.lassname in this case, are computed. AlthouSgthage is a
subclass ofNamedElement and therefore both associationsclfaossrname are possible,
the association defined by thNeamedElement property rule is chosen due to its higher
priority value. Secondly, features are assigned to slots based on defined priority values,
i.e. 1.0 if undefined. In our example, the ruleslot(name,name) defines a priority of 2.0
and thus causes the atributneame and remaining atributes to be associated with the
slotname and the slotother, respectively. Next, the generation process in our example
continues with a call to the rule grnoaumpeDistRules, i.e. with featurneame as
parameter, for the non-empty snloatme. Finally, the rulearbitraryDistrRule is prioritised over
the ruledefaultAtributeDistr , i.e. imported fromdefault.ecss, due to its priority value
being higher by 0.5. Thus, establishing atributeDistRules([engineAmount, engineType,
physicalProperties]) as a new rule call that is similarly executed.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5 Related Work</title>
      <p>In this section we present existing literature on the specification of visual textual
representations and diferentiate them with our approach.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], concrete textual representations are defined using model annotations
specified in terms of a dedicated DSL. This approach represents an efort towards
reducing redundancy between the specification of metamodels and grammars, e.g.,
introduced by the duplicated definition of element-multiplicity, by employing a sequence
of transformations on Textual Concrete Syntax (TCS) models and metamodels.
Compared to our approach, the definition of a DSL is achieved utilizing TCS models that
are similarly employed alongside metamodels for the generation of textual grammar.
However, as a result of TCS models specifying associations to individual metamodel
elements, this approach does not enable the definition of domain metamodel-agnostic
styles and thus is limited by its application of styles to particular metamodels.
      </p>
      <p>Further, 8[] presents a classification of existing concrete textual syntax mapping
approaches and identifies a set of issues associated with incremental parsing, model
updating, and partial and federated views. This classification distinguishes betwie)en (
manual development or auto-generation of metamodels from existing language
grammars, (ii) manual development of grammars based on existing metamodels,iiain)d (
manual development of mappings between existing metamodels and grammars.
Accordingly, our approach fits both classificatio ni) (and (ii) and thus can neglectiii().</p>
      <p>
        TCSSL [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] represents an approach to establish bidirectional mappings between
abstract syntax trees and concrete syntax trees by defining EBNF-like rules, which
difer from EBNF rules by having sub-rules that are triggered based on the inheritance
hierarchy depicted in abstract syntax trees. Compared to our approach, TCSSL also
allows to define multiple diferent mappings based on the same metamodel to
provide diferent concrete representations of the same abstract concepts, i.e. fiting the
needs of diferent stakeholders, it does not allow to define concrete representations
applicable to diferent metamodels. Moreover, TCSSL requires to language engineers
to manually specify mapping rules for each metamodel element as well as concrete
representation thereof, instead of employing structure-agnostic style models on
arbitrary domain metamodels. Further, multiple pass-analysis checks need to be manually
implemented to address challenges, such as type checking and reference resolution
mechanisms, that are raised during the compiler construction process.
      </p>
      <p>
        hTe Textual Editing Framework (TEF) [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] presents an approach to embed
generated EMF-based textual model editors into graphical editors created with GMF and
tree-based editors generated with EMF. Compared to our approach, TEF also ofers the
capability to create style specifications for domain metamodels. However, TEF requires
language engineers to manually implement complete style definitions for elements in
the domain metamodel that are intended to be instantiated within the context of the
embedded textual editor.
      </p>
      <p>Moreover, an approach that ofers library-based syntactic extensibility based on
the Spoofax language workbench has been presented13in]a[nd ofers support for the
host languages Java, Haskell, and Prolog. In comparison, grammar-dependent
transformations weave and unweave “syntactic sugar” into and out of host language
notations, respectively, instead of decoupling style information from abstract
domainspecific concepts. Consequently, requiring construction and maintenance of domain
metamodel-dependent bi-directional transformations to enable grammar
backwardcompatibility instead of liberating language engineers from creation and maintenance
of such complex transformations.</p>
      <p>
        EMFText [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ] presents an approach for the definition of textual representations
and the generation of editors from Ecore-based metamodels. Compared to our
approach, concrete syntax rules in EMFText are defined based on concrete metaclasses
or metaclass atributes instead of, additionally, enabling the definition of
metamodelagnostic notations, i.e. based on types of a metamodeling language such as Ecore.
      </p>
      <p>
        A dedicated DSL for the construction of (complex) bridges between grammars and
metamodels is presented in11[
        <xref ref-type="bibr" rid="ref4">, 4</xref>
        ]. In general, their work difers to our approach by
promoting the facilitation of bridge-specifications between dedicated metamodels and
grammars instead of metamodel-agnostic notations. Thus, efective construction of
valid bridges between domain metamodels and grammars requires language engineers
to be fully aware of actions and tool specifications available on both sides of a bridge.
      </p>
    </sec>
    <sec id="sec-6">
      <title>6 Conclusion and Future Work</title>
      <p>In this work, we proposed an approach for the definition and maintenance of textual
notations distinctively and autonomously and implemented the approach through a
template language and toolkit for textual style definitions based on EMF and Xtext.
Moreover, we showcased the application of our implementation, i.e. involving the
creation of domain metamodel-agnostic notational definitions, in a comparison with the
model-first approach, i.e. involving the adaptation of (generated) grammar, and
indicate usability based on conciseness and expressiveness. Future work incil)udtehse (
application of style models to the set of open-source DSML projects available on
opensource software providers, such as Github, to extend findings in regard to the
expressiveness and conciseness,ii() the iterative extension of our notational-specification
language in regards to the findings ini),(and (iii) the conduction of an empirical user
study expanding our findings in regards to the usability of the proposed language.
6.1 Acknowledgements
hTis work is supported by the European Commission via the CROSSMINER H2020
project grant number 732223, the Austrian agency for international mobility and
cooperation in education, science and research (OeAD) via grand number ICM-2016-04969,
the Austrian Research Promotion Agency (FFG) via the Austrian Competence Center
for Digital Production (CDP) under the contract number 854187, and the Austrian
Federal Ministry for Digital and Economic Afairs, the National Foundation for Research,
Technology and Development.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Adams</surname>
          </string-name>
          , M.D.:
          <article-title>Principled parsing for indentation-sensitive languages: revisiting landin's ofside rule</article-title>
          .
          <source>In: The 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '13</source>
          , Rome, Italy - January 23 -
          <issue>25</issue>
          ,
          <year>2013</year>
          . pp.
          <fpage>511</fpage>
          -
          <lpage>522</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Alanen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Porres</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>A Relation Between Context-Free Grammars and Meta Object Facility Metamodels</article-title>
          .
          <source>Tech. rep., Turku Centre for Computer Science</source>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Ben-Kiki</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Evans</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ingerson</surname>
            ,
            <given-names>B.: YAML</given-names>
          </string-name>
          <string-name>
            <surname>Ain't Markup</surname>
          </string-name>
          <article-title>Language (YAML™) Version 1</article-title>
          .1 (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Brucker</surname>
            ,
            <given-names>A.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cabot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Daniel,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Gogolla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Herrera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.S.</given-names>
            ,
            <surname>Hilken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Tuong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Willink</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.D.</given-names>
            ,
            <surname>Wolf</surname>
          </string-name>
          ,
          <string-name>
            <surname>B.</surname>
          </string-name>
          :
          <article-title>Recent developments in OCL and textual modelling</article-title>
          .
          <source>In: Proceedings of the 16th International Workshop on OCL and Textual Modelling co-located with 19th International Conference on Model Driven Engineering Languages and Systems (MODELS</source>
          <year>2016</year>
          ), Saint-Malo, France, October 2,
          <year>2016</year>
          . pp.
          <fpage>157</fpage>
          -
          <lpage>165</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Eysholdt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Behrens</surname>
          </string-name>
          , H.:
          <article-title>Xtext: implement your language faster than the quick and dirty way</article-title>
          .
          <source>In: Companion to the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications</source>
          , SPLASH/OOPSLA 2010, October 17-
          <issue>21</issue>
          ,
          <year>2010</year>
          , Reno/Tahoe, Nevada, USA. pp.
          <fpage>307</fpage>
          -
          <lpage>309</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Language workbenches: The killer-app for domain specific languages (</article-title>
          <year>2005</year>
          ), http://www.martinfowler.com/articles/languageWorkbench.html
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Domain-specific languages</article-title>
          .
          <source>Pearson Education</source>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Goldschmidt</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Becker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Uhl</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Classification of concrete textual syntax mapping approaches</article-title>
          .
          <source>In: Model Driven Architecture - Foundations and Applications</source>
          , 4th European Conference, ECMDA-FA
          <year>2008</year>
          , Berlin, Germany, June 9-13,
          <year>2008</year>
          . Proceedings. pp.
          <fpage>169</fpage>
          -
          <lpage>184</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Heidenreich</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Johannes</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karol</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seifert</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wende</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Derivation and refinement of textual syntax for models</article-title>
          .
          <source>In: Model Driven Architecture - Foundations and Applications</source>
          , 5th European Conference, ECMDA-FA
          <year>2009</year>
          ,
          <article-title>Enschede, The Netherlands</article-title>
          , June 23-26,
          <year>2009</year>
          . Proceedings. pp.
          <fpage>114</fpage>
          -
          <lpage>129</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Heidenreich</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Johannes</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karol</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seifert</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wende</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Model-based language engineering with emftext</article-title>
          .
          <source>In: Generative and Transformational Techniques in Software Engineering IV, International Summer School</source>
          ,
          <string-name>
            <surname>GTTSE</surname>
          </string-name>
          <year>2011</year>
          , Braga,
          <source>Portugal, July 3-9</source>
          ,
          <year>2011</year>
          . Revised Papers. pp.
          <fpage>322</fpage>
          -
          <lpage>345</lpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Herrera</surname>
            ,
            <given-names>A.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Willink</surname>
            ,
            <given-names>E.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          :
          <article-title>A domain specific transformation language to bridge concrete and abstract syntax</article-title>
          .
          <source>In: Theory and Practice of Model Transformations - 9th International Conference, ICMT</source>
          <year>2016</year>
          ,
          <article-title>Held as Part of STAF 2016</article-title>
          , Vienna, Austria,
          <source>July 4-5</source>
          ,
          <year>2016</year>
          , Proceedings. pp.
          <fpage>3</fpage>
          -
          <lpage>18</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bézivin</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kurtev</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>TCS: a DSL for the specification of textual concrete syntaxes in model engineering</article-title>
          .
          <source>In: Generative Programming and Component Engineering</source>
          , 5th International Conference, GPCE 2006, Portland, Oregon, USA, October
          <volume>22</volume>
          -
          <issue>26</issue>
          ,
          <year>2006</year>
          , Proceedings. pp.
          <fpage>249</fpage>
          -
          <lpage>254</lpage>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Kats</surname>
            ,
            <given-names>L.C.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>The spoofax language workbench: rules for declarative specification of languages and ides</article-title>
          .
          <source>In: Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications</source>
          ,
          <source>OOPSLA 2010, October 17-21</source>
          ,
          <year>2010</year>
          , Reno/Tahoe, Nevada, USA. pp.
          <fpage>444</fpage>
          -
          <lpage>463</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Kleppe</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Software Language Engineering: Creating Domain-Specific Languages using Metamodels. Pearson Education (</article-title>
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Klint</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lämmel</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Verhoef</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Toward an engineering discipline for grammarware</article-title>
          .
          <source>ACM Trans. Softw. Eng. Methodol</source>
          .
          <volume>14</volume>
          (
          <issue>3</issue>
          ),
          <fpage>331</fpage>
          -
          <lpage>380</lpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Kühne</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>What is a model? In: Language Engineering for Model-Driven Software Development (</article-title>
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Kurtev</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aksit</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bézivin</surname>
            ,
            <given-names>J.: Technical</given-names>
          </string-name>
          <string-name>
            <surname>Spaces</surname>
          </string-name>
          :
          <article-title>An Initial Appraisal</article-title>
          .
          <source>In: Proc. of CoopIS</source>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Landin</surname>
            ,
            <given-names>P.J.:</given-names>
          </string-name>
          <article-title>The next 700 programming languages</article-title>
          .
          <source>Commun. ACM9(3)</source>
          ,
          <fpage>157</fpage>
          -
          <lpage>166</lpage>
          (
          <year>1966</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Muller</surname>
            ,
            <given-names>P.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fondement</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baudry</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Concrete Syntax Definition For Modeling Languages</article-title>
          .
          <source>Ph.D. thesis</source>
          , École Polytechnique Fédérale De Lausanne (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. Object Management Group (OMG):
          <article-title>Meta Object Facility (MOF</article-title>
          ),
          <source>Version 2.5</source>
          .
          <issue>1</issue>
          (
          <issue>2h0t1t6p</issue>
          ),: //www.omg.org/spec/MOF/2.5.1/
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polack</surname>
            ,
            <given-names>F.A.C.</given-names>
          </string-name>
          :
          <article-title>Metamodelling for grammarware researchers</article-title>
          .
          <source>In: Software Language Engineering</source>
          , 5th International Conference, SLE 2012, Dresden, Germany,
          <source>September 26-28</source>
          ,
          <year>2012</year>
          , Revised Selected Papers. pp.
          <fpage>64</fpage>
          -
          <lpage>82</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polack</surname>
            ,
            <given-names>F.A.C.</given-names>
          </string-name>
          :
          <article-title>A tutorial on metamodelling for grammar researchers</article-title>
          .
          <source>Sci. Comput. Progra9m6.</source>
          ,
          <fpage>396</fpage>
          -
          <lpage>416</lpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Parr</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>The definitive ANTLR 4 reference</article-title>
          . Pragmatic
          <string-name>
            <surname>Bookshelf</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Scheidgen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Textual modelling embedded into graphical modelling</article-title>
          .
          <source>In: Model Driven Architecture - Foundations and Applications</source>
          , 4th European Conference, ECMDA-FA
          <year>2008</year>
          , Berlin, Germany, June 9-13,
          <year>2008</year>
          . Proceedings. pp.
          <fpage>153</fpage>
          -
          <lpage>168</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Steinberg</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Budinsky</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paternostro</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merks</surname>
          </string-name>
          , E.: EMF:
          <article-title>Eclipse Modeling Framework 2.0</article-title>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
            <given-names>Professional</given-names>
          </string-name>
          ,
          <volume>2nd</volume>
          <fpage>edn</fpage>
          . (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Wimmer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kramler</surname>
          </string-name>
          , G.:
          <article-title>Bridging grammarware and modelware</article-title>
          . In: Satellite Events at the MoDELS 2005 Conference, MoDELS 2005 International Workshops, Doctoral Symposium, Educators Symposium, Montego Bay, Jamaica, October 2-
          <issue>7</issue>
          ,
          <year>2005</year>
          , Revised Selected Papers. pp.
          <fpage>159</fpage>
          -
          <lpage>168</lpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Wirth</surname>
          </string-name>
          , N.:
          <article-title>Extended Backus-Naur form (EBNF)</article-title>
          .
          <source>ISO/I1E4C977</source>
          , 2996 (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Zschaler</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Drivalos</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rashid</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Domain-specific metamodelling languages for software language engineering</article-title>
          .
          <source>In: Software Language Engineering</source>
          , Second International Conference, SLE 2009, Denver, CO, USA, October 5-
          <issue>6</issue>
          ,
          <year>2009</year>
          , Revised Selected Papers. pp.
          <fpage>334</fpage>
          -
          <lpage>353</lpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>