<!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>Supporting Visual Editors using Reference Attributed Grammars</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Niklas Fors</string-name>
          <email>niklas.fors@cs.lth.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, Lund University</institution>
          ,
          <addr-line>Lund</addr-line>
          ,
          <country country="SE">Sweden</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Reference attributed grammars (RAGs) extend Knuth's attribute grammars with references. These references can be used to extend the abstract syntax tree to a graph. We investigate how RAGs can be used for implementing tools for visual languages. Programs in those languages can often be expressed as graphs.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        For certain applications domain-speci c languages (DSLs) play an important
role, since they can make it easier to solve problems in the domain in a more
concise way than a general purpose language (GPL) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. DSLs are especially
advantageous when the language user is a domain expert and not a programmer.
Other advantages of DSLs over GPLs are easier domain analysis and
optimizations [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. However, there are several di culties with DSLs as well. Developing
DSLs often require compiler implementation knowledge, which is not necessary
when creating a library. It is also desirable that the domain is well-understood,
where abstractions are more likely to remain stable. Limited resources for
creating and maintaining a DSL can be a problem, especially for small communities.
      </p>
      <p>
        A DSL user may want di erent tools, such as a batch compiler and an
integrated development environment (IDE). Such tools often share analysis, and
reusing speci cation between them can reduce the implementation e ort and
help to keep the tools consistent with each other. One tool aiming for reuse of
language and compiler speci cation is JastAdd [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], which we use in our research.
      </p>
      <p>
        Often, new insights and knowledge about a particular domain arise over time,
leading to new abstractions in the DSL. In such cases, the language developer
typically wishes to extend the existing DSL in a backward compatible way.
JastAdd has proven to be useful for extending languages; compilers for complex
languages like Java and Modelica have successfully been implemented and
extended with new language constructs [
        <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
        ].
      </p>
      <p>
        In several domains, a visual notation is preferable to a textual notation, which
can increase the accessibility for non-programmers. Such languages are called
domain-speci c visual languages (DSVLs). Some languages, such as Modelica [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ],
support both a textual and a visual syntax. This allows the software engineer
and the domain expert to use the most convenient notation.
      </p>
      <p>
        We want to investigate how the metacompilation system JastAdd, and its
formalism reference attributed grammars [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], can be used for implementing tools
for visual languages in general, and DSVLs in particular.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Background</title>
      <p>
        There are several ways for de ning the semantics, that is the meaning, of a
programming language. Examples include denotational semantics [
        <xref ref-type="bibr" rid="ref8 ref9">8,9</xref>
        ], operational
semantics [
        <xref ref-type="bibr" rid="ref10 ref11">10,11</xref>
        ] and attribute grammars [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        In this work, we will use reference attributed grammars (RAGs), which is
an extension to Knuth's attribute grammars [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. RAGs allow the value of an
attribute to be a reference to a node in the abstract syntax tree. For example,
an identi er usage may have a reference attribute that refers to its declaration.
The usage node can use this reference attribute to access attributes from the
declaration node, for example, to obtain the type of the declaration. Using
reference attributes, a graph can be superimposed on the AST, which can be used
to model graph-based languages. Since graphs can be cyclic, the support of
circular reference attributes [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] in JastAdd can be helpful, which solve circular
attribute de nitions using xed-point iteration. Earlier work has shown that
circular reference attributes are practical and provide a concise de nition for the
implementation of control- ow and data- ow for Java programs [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Other
attribute grammar system supporting reference attributes include Silver [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and
Kiama [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>
        For visual languages, there are several ways to de ne the syntax of a language.
There is, however, no consensus on what formalism to use, in contrast to textual
languages, where Chomsky's context-free grammars are widely used. Examples of
formalisms are graph grammars [
        <xref ref-type="bibr" rid="ref17 ref18 ref19">17,18,19</xref>
        ], metamodeling [
        <xref ref-type="bibr" rid="ref20 ref21">20,21</xref>
        ] and constraint
multiset grammars [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
      </p>
      <p>
        Erwig [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] proposed a separation of the concrete and abstract syntax for a
visual language, and de ned the semantics on the latter. The abstract syntax was
modeled as a directed labeled multi-graph (there can be several edges between
two nodes). Our approach di ers from Erwig in that the base structure is the
AST compared to a graph, and instead we use reference attributes to extend
the AST to a graph. We also use RAGs to de ne the semantics. We think that
a tree is practical when a textual syntax is desired, since it is straightforward
to serialize and easy to create new concrete syntaxes. Rekers et al. [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] also
suggest a separation between the concrete syntax and abstract syntax for visual
languages.
      </p>
      <p>
        Another related work is reusable visual patterns by Schmidt et al. [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ],
implemented with attribute grammars, but without use of RAGs. These patterns
are prede ned, and examples are lists, tables, sets, lines etc. The language
developer can choose among the patterns and use the ones that matches the visual
language, and can customize visual properties for the patterns. If a pattern is
missing, a new can be added by de ning attribute equations.
      </p>
    </sec>
    <sec id="sec-3">
      <title>Research Proposal</title>
      <p>
        We want to investigate how well suited RAGs are for de ning the semantics
for a visual language, and how to use RAGs for semantics-dependent editor
interaction. In particular, we have the following research goals:
{ Declarative semantic speci cation.
{ Reuse of semantic speci ation.
{ Semantic support in visual editor, for example, showing computed properties.
{ Support languages with both a textual and visual syntax.
{ Automatic incremental evaluation, using work by Soderberg et al. [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ].
{ Integration with other editor frameworks, such as JastGen [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ].
3.1
      </p>
      <sec id="sec-3-1">
        <title>Challenges</title>
        <p>We have identi ed the following research challenges, based on experience from
the preliminary work described below.</p>
        <p>
          De ning visual syntax. When de ning a visual language, there should be a
way to de ne its syntax and the visual representation, that is, properties such
as shape and color. One way is to have a DSL supporting that and which
includes concepts such as nodes, connections and containment. To specify
how nodes can connect, constraints can be used. Attributes are one way to
specify such constraints. Another way is to use OCL as Bottoni et al. [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]
have done or create a predicate language as Esser et al. [27]. It should also
be possible to show attribute values. This can be used to show computed
properties such as cycles in graphs, inferred types, etc.
        </p>
        <p>
          Another approach for de ning the syntax is by graph grammars [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ], such as
hypergraphs [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ], where the visual representation is transformed to a graph,
which is then parsed. One bene t of graph grammars is that they allow both
free-hand and syntax-directed editing. However, earlier work [28] indicates
that metamodeling using GMF [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] is easier to use but less expressive than
hypergraphs, which is something we have experienced as well. We think it is
desirable that the speci cation format is easy to use, so it is appealing for a
software engineer.
        </p>
        <p>We want to nd and choose one approach and connect it to RAGs.
Model consistency. In the visual editor, we have both the view and the AST
model, and a challenge is to keep these models consistent with each other.
One way is to let the visual editor update the AST, which then informs the
view about the change and is updated accordingly. If the editor supports
both textual and visual editing, is this technique feasible? Another way is to
support bidirectional transformations [29].</p>
        <p>Automatic layout. We want to nd out how to handle layout that can be
sensitive to semantics. A language from ABB has this property, as described
below. For these languages, automatic layout must take this semantics into
consideration, in order to not inadvertently change the meaning of a diagram.
Erroneous diagrams. It can be helpful for the language user if it is possible
to temporarily have diagrams that contain errors. For example, when two
edges are being switched and it is forbidden to have more than one edge
to a node, then it may be useful to temporarily have one edge pointing to
nothing.</p>
        <p>Undo / redo functionality. To increase the usability of editors for visual
languages, functionality like undo and redo is often desirable. We would like to
generate edit operations for the AST that automatically provide support for
undo and redo functionality.</p>
        <p>Refactoring. Another challenge is to support refactoring in visual languages
with RAGs. Is it possible to extend the work done by Schafer et al. [30]?
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Methodology</title>
        <p>The research methodology we use is similar to design science research in
information systems. Instead of trying to understand the reality, as natural science does,
design science tries to create new innovative artifacts that have utility [31]. We
develop prototypes that are based on practical applications, as the preliminary
work with ABB demonstrates. The research contribution is the technical artifact
itself and the development of the foundations of RAGs. Design science consists
of two activities, build and evaluate, and is an iterative process; the artifact is
continuously evaluated to provide feedback to the building activity [32]. The
evaluation will include performance measurements, for example, the response
time for standard editing operations, as well as evaluation of speci cation size
and modularity. We develop a prototype visual language together with ABB
using RAGs, and it would be interesting to see if the engineers at ABB
successfully can experiment with new language constructs for this language in a
modular way.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Preliminary Work</title>
        <p>We have started a collaboration with ABB, and designed a control language
based on a industrial language from ABB [33]. This language has both a textual
and a visual syntax. A diagram in the language contains blocks that are executed
periodically and connections between them that specify the data ow. One
interesting aspect of the language is that the semantics are in uenced by the visual
placements of the blocks. The execution order of the blocks is primarily de ned
by the data ow, and secondary by visual placements. To de ne the semantics
without visual coordinates, the visual placements are re ected in the declaration
order of the blocks in the textual syntax. We have implemented a visual editor
for this language using RAGs and the Graphical Editing Framework (GEF), an
Eclipse-based framework. A screenshot of the editor can be seen in Fig. 1, with
the corresponding textual syntax.</p>
        <p>(a) Visual syntax
diagramtype tank-regulator(</p>
        <p>Int refLevel, Int tolerance
=&gt; StatusData status) f
StatusMonitor level;
Sub Sub_1;
...
connect(refLevel, Sub_1.in1);
...
g
(b) Textual syntax
We have in this paper described the opportunity to use RAGs for implementing
tools for visual languages. Attribute gammars is a proven and convenient
formalism to specify the semantics of a language. RAGs extends AGs with references,
and makes it possibly to superimpose graphs on an AST, which can be used
to represent programs of visual languages. Expected bene ts of using RAGs
include reuse of compiler speci cation between di erent tools and the possibility
to experiment with new language constructs in a modular way. The expected
contributions are the prototype system and development of the foundations of
RAGs to support visual languages. Research goals have been described and
research challenges identi ed. Finally, we mention design science research as our
research methodology and describe the preliminary work with ABB that serves
as a case study.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Acknowledgements</title>
      <p>We thank the anonymous reviewers for interesting and useful comments on a
earlier draft of this paper.
27. Esser, R., Janneck, J.: A framework for de ning domain-speci c visual languages.</p>
      <p>Workshop on Domain Speci c Visual Languages, ACM Conference on
ObjectOriented Programming, Systems, Languages and Applications (OOPSLA-2001)
(2001)
28. Tveit, M.: Speci cation of graphical representations-using hypergraphs or
metamodels? Norsk informatikkonferanse NIK (2008) 39{50
29. Antkiewicz, M., Czarnecki, K.: Design space of heterogeneous synchronization. In:
Generative and Transformational Techniques in Software Engineering II. LNCS,
Springer (2008) 3{46
30. Schafer, M., Ekman, T., de Moor, O.: Sound and Extensible Renaming for Java.</p>
      <p>In Kiczales, G., ed.: 23rd Annual ACM SIGPLAN Conference on Object-Oriented
Programming, Systems, Languages, and Applications (OOPSLA 2008), ACM Press
(2008)
31. March, S.T., Smith, G.F.: Design and natural science research on information
technology. Decis. Support Syst. 15(4) (December 1995) 251{266
32. Hevner, A.R., March, S.T., Park, J., Ram, S.: Design science in information systems
research. MIS Q. 28(1) (March 2004) 75{105
33. Fors, N., Hedin, G.: Handling of layout-sensitive semantics in a visual control
language. In: Proceedings of the 2012 IEEE Symposium on Visual Languages and
Human-Centric Computing, IEEE (2012) poster paper to appear.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Deursen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klint</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Little languages: Little maintenance</article-title>
          ?
          <source>Journal of Software Maintenance: Research and Practice</source>
          <volume>10</volume>
          (
          <issue>2</issue>
          ) (
          <year>1998</year>
          )
          <volume>75</volume>
          {
          <fpage>92</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Mernik</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heering</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sloane</surname>
            ,
            <given-names>A.M.</given-names>
          </string-name>
          :
          <article-title>When and how to develop domain-speci c languages</article-title>
          .
          <source>ACM Comput. Surv</source>
          .
          <volume>37</volume>
          (
          <issue>4</issue>
          ) (
          <year>2005</year>
          )
          <volume>316</volume>
          {
          <fpage>344</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Ekman</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hedin</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>The JastAdd system - modular extensible compiler construction</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>69</volume>
          (
          <issue>1-3</issue>
          ) (
          <year>2007</year>
          )
          <volume>14</volume>
          {
          <fpage>26</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Ekman</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hedin</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>The Jastadd Extensible Java Compiler</article-title>
          .
          <source>In: OOPSLA</source>
          <year>2007</year>
          , ACM (
          <year>2007</year>
          )
          <volume>1</volume>
          {
          <fpage>18</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Hedin</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Akesson</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ekman</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Extending languages by leveraging compilers: from Modelica to Optimica</article-title>
          .
          <source>IEEE Software 28(3) (March</source>
          <year>2010</year>
          )
          <volume>68</volume>
          {
          <fpage>74</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. Modelica Association: Modelica - A Uni ed
          <article-title>Object-Oriented Language for Systems Modeling</article-title>
          - Language
          <source>Speci cation Version 3</source>
          .
          <fpage>3</fpage>
          . (
          <year>2012</year>
          ) Available from: http://www. modelica.org.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Hedin</surname>
          </string-name>
          , G.:
          <article-title>Reference Attributed Grammars</article-title>
          .
          <source>In: Informatica (Slovenia)</source>
          .
          <volume>24</volume>
          (
          <issue>3</issue>
          ) (
          <year>2000</year>
          )
          <volume>301</volume>
          {
          <fpage>317</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Scott</surname>
          </string-name>
          , D.:
          <article-title>Outline of a mathematical theory of computation</article-title>
          . Oxford University Computing Laboratory, Programming Research Group (
          <year>1970</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Scott</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Strachey</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Toward a mathematical semantics for computer languages</article-title>
          . Oxford University Computing Laboratory, Programming Research Group (
          <year>1971</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kahn</surname>
          </string-name>
          , G.:
          <article-title>Natural semantics</article-title>
          .
          <source>In: 4th Annual Symposium on Theoretical Aspects of Computer Sciences on STACS 87</source>
          . Volume 247 of LNCS., Passau, Germany, Springer (
          <year>1987</year>
          )
          <volume>22</volume>
          {
          <fpage>39</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Plotkin</surname>
          </string-name>
          , G.D.
          <article-title>: A Structural Approach to Operational Semantics</article-title>
          .
          <source>Technical report</source>
          , Department of Computer Science, University of Aarhus (
          <year>1981</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Knuth</surname>
            ,
            <given-names>D.E.</given-names>
          </string-name>
          :
          <article-title>Semantics of Context-free Languages</article-title>
          .
          <source>Math. Sys. Theory</source>
          <volume>2</volume>
          (
          <issue>2</issue>
          ) (
          <year>1968</year>
          )
          <volume>127</volume>
          {145 Correction: Math.
          <source>Sys. Theory</source>
          <volume>5</volume>
          (
          <issue>1</issue>
          ):
          <volume>95</volume>
          {
          <fpage>96</fpage>
          ,
          <year>1971</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Magnusson</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hedin</surname>
          </string-name>
          , G.:
          <article-title>Circular Reference Attributed Grammars - Their Evaluation and Applications</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>68</volume>
          (
          <issue>1</issue>
          ) (
          <year>2007</year>
          )
          <volume>21</volume>
          {
          <fpage>37</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. Soderberg, E.,
          <string-name>
            <surname>Ekman</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hedin</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Magnusson</surname>
          </string-name>
          , E.:
          <article-title>Extensible intraprocedural ow analysis at the abstract syntax tree level</article-title>
          .
          <source>Science of Computer Programming</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Wyk</surname>
            ,
            <given-names>E.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bodin</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gao</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krishnan</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Silver: An extensible attribute grammar system</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>75</volume>
          (
          <issue>1-2</issue>
          ) (
          <year>2010</year>
          )
          <volume>39</volume>
          {
          <fpage>54</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Sloane</surname>
            ,
            <given-names>A.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kats</surname>
            ,
            <given-names>L.C.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
          </string-name>
          , E.:
          <article-title>A pure object-oriented embedding of attribute grammars</article-title>
          .
          <source>Electr. Notes Theor. Comput. Sci</source>
          .
          <volume>253</volume>
          (
          <issue>7</issue>
          ) (
          <year>2010</year>
          )
          <volume>205</volume>
          {
          <fpage>219</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Minas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Viehstaedt</surname>
          </string-name>
          , G.:
          <article-title>DiaGen: A generator for diagram editors providing direct manipulation and execution of diagrams</article-title>
          .
          <source>In: Proceedings of the IEEE International Symposium on Visual Languages, IEEE</source>
          (
          <year>1995</year>
          )
          <volume>203</volume>
          {
          <fpage>210</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Ehrig</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ermel</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , Hansgen,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Taentzer</surname>
          </string-name>
          , G.:
          <article-title>Generation of visual editors as Eclipse plug-ins</article-title>
          .
          <source>In: Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering. ASE '05</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2005</year>
          )
          <volume>134</volume>
          {
          <fpage>143</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Rekers</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Schurr, A.:
          <article-title>De ning and parsing visual languages with layered graph grammars</article-title>
          .
          <source>Journal of Visual Languages and Computing</source>
          <volume>8</volume>
          (
          <issue>1</issue>
          ) (
          <year>1997</year>
          )
          <volume>27</volume>
          {
          <fpage>55</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Bottoni</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Costagliola</surname>
          </string-name>
          , G.:
          <article-title>On the de nition of visual languages and their editors</article-title>
          .
          <source>Diagrammatic Representation and Inference</source>
          (
          <year>2002</year>
          )
          <volume>337</volume>
          {
          <fpage>396</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>21. GMF: The Eclipse Graphical Modeling Framework http://www.eclipse.org/modeling/gmp/</mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Marriott</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Constraint multiset grammars</article-title>
          .
          <source>In: Visual Languages</source>
          ,
          <year>1994</year>
          . Proceedings., IEEE Symposium on,
          <source>IEEE</source>
          (
          <year>1994</year>
          )
          <volume>118</volume>
          {
          <fpage>125</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Erwig</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Abstract syntax and semantics of visual languages</article-title>
          .
          <source>J. Vis. Lang. Comput</source>
          .
          <volume>9</volume>
          (
          <issue>5</issue>
          ) (
          <year>1998</year>
          )
          <volume>461</volume>
          {
          <fpage>483</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kastens</surname>
          </string-name>
          , U.:
          <article-title>Implementation of visual languages using pattern-based speci cations</article-title>
          .
          <source>Software: Practice and Experience</source>
          <volume>33</volume>
          (
          <issue>15</issue>
          ) (
          <year>2003</year>
          )
          <volume>1471</volume>
          {
          <fpage>1505</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25. Soderberg, E.,
          <string-name>
            <surname>Hedin</surname>
          </string-name>
          , G.:
          <article-title>Incremental evaluation of reference attribute grammars using dynamic dependency tracking</article-title>
          .
          <source>Technical Report 98</source>
          , Lund University (
          <year>April 2012</year>
          )
          <article-title>LU-CS-TR:</article-title>
          <year>2012</year>
          -
          <fpage>249</fpage>
          , ISSN 1404-1200.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26. Soderberg, E.,
          <string-name>
            <surname>Hedin</surname>
          </string-name>
          , G.:
          <article-title>Building semantic editors using jastadd</article-title>
          .
          <source>In: Proceedings of the of the 11th Workshop on Language Descriptions, Tools and Applications</source>
          ,
          <string-name>
            <surname>LDTA</surname>
          </string-name>
          <year>2011</year>
          , ACM (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>