<!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>Generating Semantic Editors using Reference Attribute Grammars</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Emma Söderberg</string-name>
          <email>emma.soderberg@cs.lth.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Brief Overview of Related Work</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Computer Science, Lund University</institution>
          ,
          <addr-line>Lund</addr-line>
          ,
          <country country="SE">Sweden</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this short research plan we address the problem of generating modern semantic editors from formal specifications. We aim to tackle this problem using reference attribute grammars. There exists several formal means for specifying semantics. For example, attribute grammars (AGs) by Knuth [26], denotational semantics by Scott and Strachey [39,</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        There are a lot of programming languages around and the number keeps increasing.
Most of these languages have small communities with limited resources. As a
consequence, a lot of development in these languages is performed in simple text editors,
in lack of better semantic tool support. At the same time, users of languages like Java
with larger communities can choose from a set of high-quality semantic editors, like the
Eclipse JDT, IntelliJ IDEA or NetBeans, with modern semantic services like
contextsensitive name completion and refactorings [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>
        Preferably, it should be simple and fast to develop semantic tools with modern
services like these for languages with smaller communities or less resources. However,
these tools are hand-crafted and developed over several years. One appealing approach
to reduce the development time of semantic tools is to generate them from a formal
specification [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. This approach has several benefits in that it lets developers describe
behavior on a higher conceptual level. Also, the specification is typically smaller than
its manually implemented counterpart, which makes it easier to overview and easier to
change. Another benefit is the possibility to check the specification for semantic errors,
an activity which would require more cumbersome testing in a hand-coded
implementation.
      </p>
      <p>
        We can summarize the above need for semantic editors and the benefits of
generation into a problem of generating modern semantic editors from a formal semantic
description. This problem includes technical difficulties such as coping with growing
languages [41] and extensibility, responsiveness and performance of a generated editor,
and flexible descriptions of the views and services of an editor. The rest of this
document aims to give a coarse overview of a plan for research addressing this problem.
42], natural semantics by Kahn [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], and algebraic semantics by Bergstra et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. We
will focus on reference attribute grammars (RAGs) by Hedin [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], an extended form of
AGs. A benefit of RAGs is their ability to explicitly express super-imposed graphs on
top of an abstract syntax tree (AST). Super-imposed graphs like these can be used to
describe for example inheritance and cross-references. RAGs have been shown useful for
describing the semantics of complex languages like Java [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and Modelica [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Some
examples of systems supporting RAGs are JastAdd by Ekman et al. [
        <xref ref-type="bibr" rid="ref14 ref19">19, 14</xref>
        ], Silver by
van Wyk et al. [44], Kiama by Sloane et al. [40], and Aster by Kats et al.[
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
      </p>
      <p>
        Examples of earlier systems generating semantic editors from formal
specifications include the PSG system by Bahlke et al. [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] using denotational semantics, the
CENTAUR system by Borras et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] using natural semantics, the ASF+SDF
metaenvironment [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] using algebraic semantics, the Synthesizer Generator by Reps et al.
[35] using ordered attribute grammars (OAGs) by Kastens [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], and the Lrc system by
Kuipers et al [28] using higher-order attribute grammars by Vogt et al. [46]. OAGs is a
powerful subset of AGs enabling a static evaluation order.
      </p>
      <p>
        One important property of a semantic editor is incremental updating of the
semantic model. Both the Synthesizer Generator and the Lrc system support incremental
updating. The statically known evaluation order of OAGs, supported by these systems,
provide sufficient information for incremental updating of attribute values. RAGs have
also been used in the context of editors, in the APPLAB system by Bjarnason et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
but not in conjunction with incremental updating. In general, RAGs require dynamic
evaluation and incremental updating of RAGs is an open problem.
      </p>
      <p>
        In recent years, a number of tool generating systems have emerged which extend the
Eclipse Platform. One example is the Eclipse Modeling Framework (EMF) by Budinsky
et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] which provides means for expressing structured data models (graphs). EMF
can generate a basic graphical editor for these models and supports updating of a model
via manual registration of model observers.
      </p>
      <p>
        Another example is the IDE Meta-tooling Platform (IMP) by Charles et al. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
which has a semi-automatic approach to the development of textual semantic editors.
IMP semi-generates text editors using wizards and generation of code skeletons.
Developers manually fill in language-specific behavior in these code skeletons. Parsing
is supported by the LPG parser generator, but this is optional as shown in, for
example, the Spoofax/IMP system by Kats et al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] which extends IMP using a different
parsing technology. Spoofax provides a language workbench which uses strategic term
rewriting [45] to express language semantics.
      </p>
      <p>
        The EMF project also supports generation of textual editors via the xText project
by Efftinger et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. In contrast to IMP, xText generates a more complete text
editor based on a custom grammar format, using an EMF-based model and an ANTLR
parser. xText uses a combination of the Object Constraint Language (OCL) [43] and
dependency injection to implement semantics.
      </p>
      <p>
        These frameworks could possibly be used as the target platform for a generated
editor based on RAGs. A combination of EMF and JastAdd models have been explored
by Bürger et al. in JastEMF [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Another example of a system supporting generation of
textual editors is the MontiCore system by Krahn et al. [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. MontiCore uses a
combined grammar format for concrete and abstract syntax supporting modular language
extensions. This grammar format uses UML-like associations to describe semantics.
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>Proposed Solution</title>
      <p>In order to address the problem posed in Section 1 we need a formal yet flexible way
to describe the semantics of a language, including the abstract syntax. The semantic
descriptions need to be modular in order to accommodate the need for extensibility.
The semantic formalism also needs to be expressive to such a degree that the
semantic information needed by the editing services can be computed. Beyond the need for
pure semantic descriptions, we need a framework surrounding the underlying semantic
model of a program and a means to describe services and views. These descriptions of
services and views should seamlessly connect to the semantic descriptions.</p>
      <p>
        We have chosen to use RAGs for semantic descriptions and we aim to construct a
tool JedGen – JastAdd-based semantic editor generator supporting the remaining parts.
These remaining parts include the framework surrounding a generated editor, means for
describing services and views, and the actual generation of editors. We aim to support
all languages that would benefit from static semantic analysis during development. To
meet the demands on semantic development tools of today we have devised a list of
three areas which a generated editor should support to be on par with hand-crafted
modern semantic editors:
– Incremental update This is a highly desirable part of an interactive tool which
affects performance and hence responsiveness. Incremental updating of RAG-based
models is an open problem which we plan to address. A solution can possibly be
based on work by Reps [34], by Jones [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], by Hedin [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], by Boyland [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], and by
Acar et al. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. A solution to incremental updating of RAGs would be a contribution
of this thesis.
– Multiple views Different development tasks benefit from different views of source
code artifacts. Here, we include all views, editable or non-editable. This includes
textual editors. Multiple views require a general architecture with support for
synchronization and updating in a multi-threaded environment. Also, a generator needs
to support a general way to specify the content and visualization of these views.
Some work has been done on visualizing programs using RAGs [29] which we
plan to extend along with a surrounding framework.
– Modern semantic services Inspection and modification of source code artifacts,
requiring context-sensitive static semantic information. Some examples of services
are code smell detection, context-sensitive metrics [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], cross-referencing,
renaming and name completion. Promising work by Schäfer et al. [37, 38, 36] show that
RAGs can be used to support sophisticated services like refactorings, and work
by Nilsson-Nyman et al. [33] show how RAGs can be used to find dead code.
The potential contributions of this work are further explorations of descriptions
of semantic service information and service descriptions seamlessly connecting to
RAG-based semantic descriptions.
      </p>
    </sec>
    <sec id="sec-3">
      <title>Research Method</title>
      <p>Our research method is constructive and experimental. We base our research on the
hypothesis that "RAGs can be used to generate modern semantic editors", which we aim
to demonstrate using a prototype. The development of a RAG-based generator prototype
makes our research constructive.</p>
      <p>The plan for the development of JedGen includes two phases – a prototype
framework and a prototype generator. The purpose of the first phase is to build the general
framework needed around a generated editor. This work can be separated into three
subparts – the development of incremental updating of RAG-based ASTs, the development
of mechanisms for access and updating of the ASTs in a general way and specification
of views and services.</p>
      <p>During the first phase the goal is to stepwise develop non-generated editor
extensions to existing RAG-based compilers as a means for evaluation of the framework.
Currently, we are working with editor extensions for Java and Modelica. We aim to
evaluate these prototypes experimentally with regard to behavior (e.g., with regard to
correctness), coverage (e.g., the range of errors that a generated editor can locate),
efficiency (e.g., the performance of semantic analysis), and effort (e.g., line of code of an
editor specification) The purpose of the second phase is to develop a prototype generator
based on experiences gained in the previous phase. This includes a general description
format for definition of editors based on an abstract syntax.</p>
      <p>The JedGen tool is still in its first phase, but an alpha version of the tool supporting
a semantic editing model has been used by Schäfer et al. in their exploration of
refactorings [37, 38]. JedGen has also been used by several undergraduate students, as a part
of their thesis work [31, 30, 32], and in a graduate course on RAGs.
5</p>
    </sec>
    <sec id="sec-4">
      <title>Acknowledgements</title>
      <p>A big thanks to all anonymous reviewers for valuable comments on an early version of
this abstract.
TOOLS (46), volume 11 of Lecture Notes in Business Information Processing, pages 297–
315. Springer, 2008.
28. Matthijs F. Kuiper and João Saraiva. Lrc - a generator for incremental language-oriented
tools. In Kai Koskimies, editor, CC, volume 1383 of Lecture Notes in Computer Science,
pages 298–301. Springer, 1998.
29. Eva Magnusson and Görel Hedin. Program Visualization using Reference Attributed
Grammars. volume 7, pages 67–86. Publishing Association Nordic Journal of Computing, 2000.
30. Jesper Mattsson. The JModelica IDE: Developing an IDE reusing a JastAdd compiler.
Master’s thesis, Lund University, Lund, Sweden, August 2009.
31. Erik Mossberg. Inspector – tool for interactive language development. Master’s thesis, Lund</p>
      <p>University, Lund, Sweden, October 2009.
32. Philip Nilsson. Semantic editing compiler extensions using JastAdd. Master’s thesis, Lund</p>
      <p>University, Lund, Sweden, June 2010. To be presented.
33. Emma Nilsson-Nyman, Torbjörn Ekman, Görel Hedin, and Eva Magnusson. Declarative
intraprocedural flow analysis of Java source code. In Proceedings of the Eight Workshop on
Language Description, Tools and Applications (LDTA 2008), Electronic Notes in Theoretical
Computer Science. Elsevier B.V., 2008.
34. Thomas Reps. Generating Language-Based Environments. PhD thesis, 1984.
35. Thomas Reps and Tim Teitelbaum. The Synthesizer Generator. In Peter B. Henderson, editor,
Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on
Practical Software Development Environments, volume 19(5) of SIGSOFT Software Engineering
Notes, pages 42–48, Pittsburgh, Pennsylvania, USA, May 1984. ACM.
36. Max Schäfer, Julian Dolby, Manu Sridharan, Emina Torlak, and Frank Tip. Correct
Refactoring of Concurrent Java Code. In Theo D’Hondt, editor, 24th European Conference on
Object-Oriented Programming (ECOOP ’10), 2010.
37. Max Schäfer, Torbjörn Ekman, and Oege de Moor. Sound and extensible renaming for Java.</p>
      <p>In Gail E. Harris, editor, OOPSLA, pages 277–294. ACM, 2008.
38. Max Schäfer, Mathieu Verbaere, Torbjörn Ekman, and Oege de Moor. Stepping stones over
the refactoring rubicon. In Sophia Drossopoulou, editor, ECOOP, volume 5653 of Lecture
Notes in Computer Science, pages 369–393. Springer, 2009.
39. Dana Scott. Mathematical concepts in programming language semantics. In AFIPS ’72
(Spring): Proceedings of the May 16-18, 1972, spring joint computer conference, pages 225–
234, New York, NY, USA, 1972. ACM.
40. Anthony M. Sloane, Lennart C. L. Kats, and Eelco Visser. A pure object-oriented embedding
of attribute grammars. In T. Ekman and J. Vinju, editors, Proceedings of the Ninth
Workshop on Language Descriptions, Tools, and Applications (LDTA 2009), Electronic Notes in
Theoretical Computer Science. Elsevier B. V., 2009.
41. Guy L. Steele Jr. Growing a language. Higher-Order and Symbolic Computation, 12(3):221–
236, October 1999.
42. Christopher Strachey. Towards a formal semantics. pages 198–216, 1966.
43. The Object Management Group (OMG). The Object Constraints Language (OCL), 2010.</p>
      <p>http://www.omg.org/technology/documents/formal/ocl.htm [Accessed May 2010].
44. Eric van Wyk, Derek Bodin, Jimin Gao, and Lijesh Krishnan. Silver: an extensible attribute
grammar system. In Proceedings of the Seventh Workshop on Language Descriptions, Tools,
and Applications (LDTA 2007), Electronic Notes in Theoretical Computer Science. Elsevier
B. V., 2007.
45. Eelco Visser. Stratego: A language for program transformation based on rewriting strategies.</p>
      <p>In RTA ’01: Proceedings of the 12th International Conference on Rewriting Techniques and
Applications, pages 357–362, London, UK, 2001. Springer-Verlag.
46. Harald Vogt, S. Doaitse Swierstra, and Matthijs F. Kuiper. Higher-order attribute grammars.</p>
      <p>In PLDI, pages 131–145, 1989.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Umut</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Acar</surname>
            ,
            <given-names>Guy E.</given-names>
          </string-name>
          <string-name>
            <surname>Blelloch</surname>
            , and
            <given-names>Robert</given-names>
          </string-name>
          <string-name>
            <surname>Harper</surname>
          </string-name>
          .
          <article-title>Adaptive functional programming</article-title>
          .
          <source>ACM Trans. Program. Lang. Syst.</source>
          ,
          <volume>28</volume>
          (
          <issue>6</issue>
          ):
          <fpage>990</fpage>
          -
          <lpage>1034</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Johan</given-names>
            <surname>Åkesson</surname>
          </string-name>
          , Torbjörn Ekman, and
          <string-name>
            <given-names>Görel</given-names>
            <surname>Hedin</surname>
          </string-name>
          .
          <article-title>Development of a Modelica compiler using JastAdd</article-title>
          .
          <source>Science of Computer Programming</source>
          ,
          <volume>75</volume>
          :
          <fpage>21</fpage>
          -
          <lpage>38</lpage>
          ,
          <year>January 2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Rolf</given-names>
            <surname>Bahlke</surname>
          </string-name>
          and
          <string-name>
            <given-names>Gregor</given-names>
            <surname>Snelting</surname>
          </string-name>
          .
          <article-title>The PSG system: from formal language definitions to interactive programming environments</article-title>
          .
          <source>ACM Transactions on Programming Langanguages and Systems (TOPLAS)</source>
          ,
          <volume>8</volume>
          (
          <issue>4</issue>
          ):
          <fpage>547</fpage>
          -
          <lpage>576</lpage>
          ,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Jan</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Bergstra</surname>
          </string-name>
          .
          <article-title>Algebraic specification</article-title>
          . ACM, New York, NY, USA,
          <year>1989</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Elizabeth</given-names>
            <surname>Bjarnason</surname>
          </string-name>
          , Görel Hedin, and
          <string-name>
            <given-names>Klas</given-names>
            <surname>Nilsson</surname>
          </string-name>
          .
          <article-title>Interactive language development for embedded systems</article-title>
          .
          <source>Nordic Journal of Computing</source>
          ,
          <volume>6</volume>
          (
          <issue>1</issue>
          ):
          <fpage>36</fpage>
          -
          <lpage>54</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Patrick</given-names>
            <surname>Borras</surname>
          </string-name>
          , Dominique Clément, Th. Despeyroux, Janet Incerpi, Gilles Kahn, Bernard Lang, and
          <string-name>
            <given-names>V.</given-names>
            <surname>Pascual</surname>
          </string-name>
          .
          <article-title>CENTAUR: The system</article-title>
          .
          <source>In Software Development Environments (SDE)</source>
          , pages
          <fpage>14</fpage>
          -
          <lpage>24</lpage>
          ,
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. John Tang Boyland.
          <article-title>Incremental evaluators for remote attribute grammars</article-title>
          .
          <source>In Proceedings of the Second Workshop on Language Descriptions, Tools and Applications (LDTA</source>
          <year>2002</year>
          ), volume
          <volume>65</volume>
          of Electronic Notes in Theoretical Computer Science, pages
          <fpage>9</fpage>
          -
          <lpage>29</lpage>
          . Elsevier
          <string-name>
            <surname>B.V.</surname>
          </string-name>
          ,
          <year>July 2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Frank</given-names>
            <surname>Budinsky</surname>
          </string-name>
          , Stephen A.
          <string-name>
            <surname>Brodsky</surname>
          </string-name>
          , and Ed Merks.
          <source>Eclipse Modeling Framework. Pearson Education</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Christoff</given-names>
            <surname>Bürger</surname>
          </string-name>
          and
          <string-name>
            <given-names>Sven</given-names>
            <surname>Karol</surname>
          </string-name>
          .
          <source>JastEMF</source>
          ,
          <year>2010</year>
          . http://code.google.com/p/jastemf [Access
          <source>September</source>
          <year>2010</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Philippe</surname>
            <given-names>Charles</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Robert M. Fuhrer</surname>
          </string-name>
          ,
          <string-name>
            <surname>Stanley</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Sutton</surname>
          </string-name>
          , Jr.,
          <string-name>
            <surname>Evelyn</surname>
            <given-names>Duesterwald</given-names>
          </string-name>
          , and
          <string-name>
            <given-names>Jurgen</given-names>
            <surname>Vinju</surname>
          </string-name>
          .
          <article-title>Accelerating the creation of customized, language-specific ides in eclipse</article-title>
          .
          <source>SIGPLAN Notices</source>
          ,
          <volume>44</volume>
          (
          <issue>10</issue>
          ):
          <fpage>191</fpage>
          -
          <lpage>206</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Shyam</surname>
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Chidamber</surname>
            and
            <given-names>Chris F.</given-names>
          </string-name>
          <string-name>
            <surname>Kemerer</surname>
          </string-name>
          .
          <article-title>A metrics suite for object oriented design</article-title>
          .
          <source>IEEE Transactions on Software Engineering</source>
          ,
          <volume>20</volume>
          (
          <issue>6</issue>
          ):
          <fpage>476</fpage>
          -
          <lpage>493</lpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>Sven</given-names>
            <surname>Efftinge</surname>
          </string-name>
          and
          <string-name>
            <given-names>Markus</given-names>
            <surname>Völter</surname>
          </string-name>
          . oAW xText:
          <article-title>a framework for textual DSLs</article-title>
          . In Eclipse Summit Europe, Eclipse Modeling Symposium, Esslingen, Germany,
          <year>October 2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>Torbjörn</given-names>
            <surname>Ekman</surname>
          </string-name>
          and
          <string-name>
            <given-names>Görel</given-names>
            <surname>Hedin</surname>
          </string-name>
          .
          <article-title>The JastAdd extensible Java compiler</article-title>
          .
          <source>In OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          , New York, NY, USA,
          <year>2007</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>Torbjörn</given-names>
            <surname>Ekman</surname>
          </string-name>
          and
          <string-name>
            <given-names>Görel</given-names>
            <surname>Hedin</surname>
          </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>
          ):
          <fpage>14</fpage>
          -
          <lpage>26</lpage>
          ,
          <year>December 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>Görel</given-names>
            <surname>Hedin</surname>
          </string-name>
          .
          <article-title>Incremental semantic analysis</article-title>
          .
          <source>PhD thesis</source>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>Görel</given-names>
            <surname>Hedin</surname>
          </string-name>
          .
          <article-title>An overview of door attribute grammars</article-title>
          . In Peter Fritzson, editor, CC, volume
          <volume>786</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>31</fpage>
          -
          <lpage>51</lpage>
          . Springer,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>Jan</given-names>
            <surname>Heering</surname>
          </string-name>
          and
          <string-name>
            <given-names>Paul</given-names>
            <surname>Klint</surname>
          </string-name>
          .
          <article-title>Semantics of programming languages: a tool-oriented approach</article-title>
          .
          <source>SIGPLAN Notices</source>
          ,
          <volume>35</volume>
          (
          <issue>3</issue>
          ):
          <fpage>39</fpage>
          -
          <lpage>48</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>Daqing</given-names>
            <surname>Hou</surname>
          </string-name>
          and
          <string-name>
            <given-names>Yuejiao</given-names>
            <surname>Wang</surname>
          </string-name>
          .
          <article-title>An empirical analysis of the evolution of user-visible features in an integrated development environment</article-title>
          .
          <source>In CASCON '09: Proceedings of the 2009 Conference of the Center for Advanced Studies on Collaborative Research</source>
          , pages
          <fpage>122</fpage>
          -
          <lpage>135</lpage>
          , New York, NY, USA,
          <year>2009</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <article-title>The JastAdd Team</article-title>
          . jastadd.org. http://jastadd.org/ [Access May
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Larry</surname>
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Jones</surname>
          </string-name>
          .
          <article-title>Efficient evaluation of circular attribute grammars</article-title>
          .
          <source>ACM Trans. Program. Lang. Syst.</source>
          ,
          <volume>12</volume>
          (
          <issue>3</issue>
          ):
          <fpage>429</fpage>
          -
          <lpage>462</lpage>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>Gilles</given-names>
            <surname>Kahn</surname>
          </string-name>
          .
          <article-title>Natural semantics</article-title>
          . In
          <string-name>
            <surname>Franz-Josef</surname>
            <given-names>Brandenburg</given-names>
          </string-name>
          , Guy Vidal-Naquet, and Martin Wirsing, editors,
          <source>STACS</source>
          , volume
          <volume>247</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>22</fpage>
          -
          <lpage>39</lpage>
          . Springer,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22. Uwe Kastens.
          <article-title>Ordered attributed grammars</article-title>
          .
          <source>Acta Informatica</source>
          ,
          <volume>13</volume>
          (
          <issue>3</issue>
          ):
          <fpage>229</fpage>
          -
          <lpage>256</lpage>
          ,
          <year>March 1980</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Lennart C. L. Kats</surname>
            , Karl T. Kalleberg, and
            <given-names>Eelco</given-names>
          </string-name>
          <string-name>
            <surname>Visser</surname>
          </string-name>
          .
          <article-title>Domain specific languages for composable editor plugins</article-title>
          .
          <source>In Torbjörn Ekman and Jurgen Vinju</source>
          , editors,
          <source>Proceedings of the Ninth Workshop on Language Descriptions</source>
          , Tools, and
          <string-name>
            <surname>Applications</surname>
          </string-name>
          (LDTA
          <year>2009</year>
          ), Electronic Notes in Theoretical Computer Science. Elsevier
          <string-name>
            <surname>B. V.</surname>
          </string-name>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Lennart C. L. Kats</surname>
          </string-name>
          ,
          <string-name>
            <surname>Anthony M. Sloane</surname>
            , and
            <given-names>Eelco</given-names>
          </string-name>
          <string-name>
            <surname>Visser</surname>
          </string-name>
          .
          <article-title>Decorated attribute grammars: Attribute evaluation meets strategic programming</article-title>
          .
          <source>In Oege de Moor and Michael I. Schwartzbach</source>
          , editors, CC, volume
          <volume>5501</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>142</fpage>
          -
          <lpage>157</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <given-names>Paul</given-names>
            <surname>Klint</surname>
          </string-name>
          .
          <article-title>A meta-environment for generating programming environments</article-title>
          .
          <source>ACM Transactions on Software Engineering and Methodology (TOSEM)</source>
          ,
          <volume>2</volume>
          (
          <issue>2</issue>
          ):
          <fpage>176</fpage>
          -
          <lpage>201</lpage>
          ,
          <year>April 1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Donald</surname>
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Knuth</surname>
          </string-name>
          .
          <article-title>Semantics of context-free languages</article-title>
          .
          <source>Journal Theory of Computing Systems</source>
          ,
          <volume>2</volume>
          (
          <issue>2</issue>
          ):
          <fpage>127</fpage>
          -
          <lpage>145</lpage>
          ,
          <year>June 1968</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Holger</surname>
            <given-names>Krahn</given-names>
          </string-name>
          , Bernhard Rumpe, and Steven Völkel.
          <article-title>MontiCore: Modular development of textual domain specific languages</article-title>
          . In Richard F. Paige and Bertrand Meyer, editors,
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>