{
  "name": "modse",
  "publications": [
    {
      "type": "inproceedings",
      "conference": "Onward!",
      "conferenceYear": "",
      "booktitle": "Proceedings of Onward! 2010",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "ACM",
      "editors": [],
      "firstpage": 0,
      "lastpage": 0,
      "id": "00568775-6658-49eb-af5d-e5a65b0bbeb0",
      "key": "KWV10",
      "title": "Pure and Declarative Syntax Definition: Paradise Lost and Regained",
      "month": "",
      "year": "2010",
      "doi": "",
      "note": "",
      "abstract": "Syntax definitions are pervasive in modern software systems,\r\nand serve as the basis for language processing tools\r\nlike parsers and compilers. Mainstream parser generators\r\npose restrictions on syntax definitions that follow from their\r\nimplementation algorithm. They hamper evolution, maintainability,\r\nand compositionality of syntax definitions. The\r\npureness and declarativity of syntax definitions is lost. We\r\nanalyze how these problems arise for different aspects of\r\nsyntax definitions, discuss their consequences for language\r\nengineers, and show how the pure and declarative nature of\r\nsyntax definitions can be regained.",
      "url": "https://researchr.org/publication/KWV10",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/guido-wachsmuth",
            "id": "d5ff2ef2-75d4-4ac7-847f-098d645baf0e",
            "key": "guido-wachsmuth",
            "name": "Guido Wachsmuth"
          },
          "person": {
            "url": "https://researchr.org/profile/guwac",
            "id": "2260a4e5-f714-4f97-a046-c3f0a685e646",
            "key": "guwac",
            "fullname": "Guido Wachsmuth"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "sle",
      "conferenceYear": "",
      "booktitle": "Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers",
      "volume": "5969",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/mark-van-den-brand",
            "id": "ec0da5fa-6834-4952-9fff-9c4fecce7cb7",
            "key": "mark-van-den-brand",
            "name": "Mark van den Brand"
          },
          "person": {
            "url": "https://researchr.org/profile/markgjvandenbrand",
            "id": "97855301-a569-413e-8e19-c2c376c50842",
            "key": "markgjvandenbrand",
            "fullname": "Mark G. J. van den Brand"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/dragan-gasevic",
            "id": "4e952583-7834-4817-8b6e-04feaa97fad9",
            "key": "dragan-gasevic",
            "name": "Dragan Gasevic"
          },
          "person": {
            "url": "https://researchr.org/profile/dragangasevic",
            "id": "892937c7-d9f9-49a8-89e6-734b1fb47253",
            "key": "dragangasevic",
            "fullname": "Dragan Gasevic"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/jeff-gray",
            "id": "fefac3e9-8142-40df-9285-12943249e210",
            "key": "jeff-gray",
            "name": "Jeff Gray"
          },
          "person": {
            "url": "https://researchr.org/profile/jeffgray",
            "id": "474ab36e-49c3-4f85-aa00-417d49005952",
            "key": "jeffgray",
            "fullname": "Jeffrey G. Gray"
          }
        }
      ],
      "firstpage": 224,
      "lastpage": 243,
      "id": "0e398fc9-9416-4e73-8782-33f2e8c242ad",
      "key": "HemelV09",
      "title": "PIL: A Platform Independent Language for Retargetable DSLs",
      "month": "",
      "year": "2009",
      "doi": "http://dx.doi.org/10.1007/978-3-642-12107-4_17",
      "note": "",
      "abstract": "Intermediate languages are used in compiler construction to simplify retargeting compilers to multiple machine architectures. In the implementation of domain-specific languages (DSLs), compilers typically generate high-level source code, rather than low-level machine instructions. DSL compilers target a software platform, i.e. a programming language with a set of libraries, deployable on one or more operating systems. DSLs enable targeting multiple software platforms if its abstractions are platform independent. While transformations from DSL to each targeted platform are often conceptually very similar, there is little reuse between transformations due to syntactic and API differences of the target platforms, making supporting multiple platforms expensive. In this paper, we discuss the design and implementation of PIL, a Platform Independent Language, an intermediate language providing a layer of abstraction between DSL and target platform code, abstracting from syntactic and API differences between platforms, thereby removing the need for platform-specific transformations. We discuss the use of PIL in an implemementation of WebDSL, a DSL for building web applications.",
      "url": "https://researchr.org/publication/HemelV09",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "id": "0ea56216-7a6f-4826-9daf-8864c568a047",
      "key": "zef-hemel-thesis",
      "title": "Middleware for Semantic Service Advertising and Discovery on MANETs",
      "month": "",
      "year": "2006",
      "doi": "",
      "note": "",
      "abstract": "MANETs (Mobile Ad-hoc Networks) offer exciting new research opportunities now that devices with wireless capabilities become more widespread. Many wireless technologies, such as 802.11, support these ad-hoc style networks. Opportunities lie in many areas, such as routing protocols, services and applications. The network topology of MANETs is constantly changing and the devices on these networks, like laptops and PDAs, have limited processing and battery power.\r\n\r\nResearch on low-level protocols that do semantic service discovery on ad-hoc networks is emerging. Pervasive and mobile computing applications require these protocols, but using them requires a lot of engineering and knowledge of network protocols and service matching.\r\n\r\nThis dissertation describes the design, implementation and evaluation of middleware that makes the task of defining, advertising and discovering semantic services on MANETs more straight-forward by offering APIs to complete these tasks. As part of the semantic service matching, context such as location and workload can be defined and matched to further improve the discovery results. Services and context are described using ontologies. Queries for services can be expressed in a newly developed query language called RaSSQL (RDF and Semantic Service Query Language). The middleware, implemented in Python, is based on ideas from the OntoMobil protocol, but can use any protocol that discovers services based on concept dissemination.\r\n\r\nTo evaluate the middleware, an application was developed that demonstrates the use of the middleware\u0027s APIs to define a set of semantic services and location context. These services are queried using a RaSSQL query defining a desired service profile and service location. A peer flood protocol is implemented as the low-level protocol. Additionally, it is explained how the OntoMobil protocol could be implemented in the middleware.",
      "url": "https://researchr.org/publication/zef-hemel-thesis",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "models",
      "conferenceYear": "",
      "booktitle": "Model Driven Engineering Languages and Systems, 11th International Conference, MoDELS 2008, Toulouse, France, September 28 - October 3, 2008. Proceedings",
      "volume": "5301",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/krzysztof-czarnecki",
            "id": "59b12c15-22de-472e-9b7a-453385164e3b",
            "key": "krzysztof-czarnecki",
            "name": "Krzysztof Czarnecki"
          },
          "person": {
            "url": "https://researchr.org/profile/krzysztofczarnecki",
            "id": "f8475ad2-6a3b-4cd6-9986-5a1ede62a0ae",
            "key": "krzysztofczarnecki",
            "fullname": "Krzysztof Czarnecki"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/ileana-ober",
            "id": "97d0ba88-fa64-4d21-9b99-6be14f7df22b",
            "key": "ileana-ober",
            "name": "Ileana Ober"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/jean-michel-bruel",
            "id": "085d761f-a34a-4f06-b51f-8a2807e6a5dd",
            "key": "jean-michel-bruel",
            "name": "Jean-Michel Bruel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/axel-uhl",
            "id": "7b20a7a8-8513-48de-8345-c8c66c6c4cd7",
            "key": "axel-uhl",
            "name": "Axel Uhl"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/markus-v%C3%B6lter",
            "id": "ab591369-2e2d-42ef-a605-52de9dba9aab",
            "key": "markus-völter",
            "name": "Markus Völter"
          },
          "person": {
            "url": "https://researchr.org/profile/markusvoelter",
            "id": "d0507709-858d-4c99-9af3-97f51623b905",
            "key": "markusvoelter",
            "fullname": "Markus Völter"
          }
        }
      ],
      "firstpage": 113,
      "lastpage": 127,
      "id": "1f88b13a-f07c-4968-b8f6-ff56b9271487",
      "key": "HemelVV08",
      "title": "WebWorkFlow: An Object-Oriented Workflow Modeling Language for Web Applications",
      "month": "",
      "year": "2008",
      "doi": "http://dx.doi.org/10.1007/978-3-540-87875-9_8",
      "note": "",
      "abstract": "Workflow languages are designed for the high-level description of processes and are typically not suitable for the generation of complete applications. In this paper, we present WebWorkFlow, an object-oriented workflow modeling language for the high-level description of workflows in web applications. Workflow descriptions define procedures operating on domain objects. Procedures are composed using sequential and concurrent process combinators. WebWorkFlow is an embedded language, extending WebDSL, a domain-specific language for web application development, with workflow abstractions. The extension is implemented by means of model-to-model transformations. Rather than providing an exclusive workflow language, WebWorkFlow supports interaction with the underlying WebDSL language. WebWorkFlow supports most of the basic workflow control patterns. ",
      "url": "https://researchr.org/publication/HemelVV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/ruben-verhaaf",
            "id": "b9250f8d-3dc2-464c-a154-f540d5c5f0b1",
            "key": "ruben-verhaaf",
            "name": "Ruben Verhaaf"
          },
          "person": {
            "url": "https://researchr.org/profile/rubenverhaaf",
            "id": "870e57e4-0504-4d53-bce2-79c0715d4085",
            "key": "rubenverhaaf",
            "fullname": "Ruben  Verhaaf"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "LDTA",
      "conferenceYear": "",
      "booktitle": "Proceedings of the Eight Workshop on Language Descriptions, Tools, and Applications",
      "volume": "238",
      "number": "5",
      "series": "Electronic Notes in Theoretical Computer Science   ",
      "address": "",
      "organization": "",
      "publisher": "Elsevier",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/jurgen-vinju",
            "id": "b192b666-9f59-43fd-8c2d-bf9b302c615e",
            "key": "jurgen-vinju",
            "name": "Jurgen Vinju"
          },
          "person": {
            "url": "https://researchr.org/profile/jurgenjvinju",
            "id": "8ed1149d-5533-4120-8079-88085c44c8ef",
            "key": "jurgenjvinju",
            "fullname": "Jurgen J.  Vinju"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/adrian-johnstone",
            "id": "66b4b346-c931-42c1-bcdf-21c93821d263",
            "key": "adrian-johnstone",
            "name": "Adrian Johnstone"
          },
          "person": {
            "url": "https://researchr.org/profile/adrianjohnstone",
            "id": "ff880c0e-3b9e-457a-b85d-1c6c0f861bd6",
            "key": "adrianjohnstone",
            "fullname": "Adrian Johnstone"
          }
        }
      ],
      "firstpage": 0,
      "lastpage": 0,
      "id": "2195628c-07af-4701-9494-14541726038d",
      "key": "KatsKV08",
      "title": "Generating Editors for Embedded Languages. Integrating SGLR into IMP",
      "month": "April",
      "year": "2008",
      "doi": "",
      "note": "",
      "abstract": "Integrated Development Environments (IDEs) increase productivity by providing a rich user interface and rapid feedback for a specific language. Creating an editor for a specific language is not a trivial undertaking, and is a cumbersome task even when working with an extensible framework such as Eclipse. A new IBM-guided effort, the IMP framework, relieves the IDE developer from a significant portion of the required work by providing various abstractions for this. For embedded languages, such as embedded regular expressions, SQL queries, or code generation templates, its LALR parser generator falls short, however. Scannerless parsing with SGLR enables concise, modular definition of such languages. In this paper, we present an integration of SGLR into IMP, demonstrating that a scannerless parser can be successfully integrated into an IDE. Given an SDF syntax definition, the sdf2imp tool automatically generates an editor plugin based on the IMP API, complete with syntax checking, syntax highlighting, outline view, and code folding. Using declarative domain-specific languages, these services can be customized, and using the IMP metatooling framework it can be extended with other features. ",
      "url": "https://researchr.org/publication/KatsKV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/karl-trygve-kalleberg",
            "id": "3ee71cd9-6b84-45a5-ab19-8f8783c8dba3",
            "key": "karl-trygve-kalleberg",
            "name": "Karl Trygve Kalleberg"
          },
          "person": {
            "url": "https://researchr.org/profile/karltk",
            "id": "d774aeed-7606-4770-8a56-2cf4990644b4",
            "key": "karltk",
            "fullname": "Karl Trygve Kalleberg"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "oopsla",
      "conferenceYear": "",
      "booktitle": "Proceedings of the 24th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2009, October 25-29, 2009, Orlando, Florida, USA",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "ACM",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/shail-arora",
            "id": "0c07716a-6765-46eb-adf2-127d0d707917",
            "key": "shail-arora",
            "name": "Shail Arora"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/gary-t.-leavens",
            "id": "1a42cab0-1af8-42b8-b90d-096a5ec5440d",
            "key": "gary-t.-leavens",
            "name": "Gary T. Leavens"
          }
        }
      ],
      "firstpage": 445,
      "lastpage": 464,
      "id": "232e4c5f-180d-4eb0-8fab-0d21c12eb66b",
      "key": "KatsJNV09",
      "title": "Providing rapid feedback in generated modular language environments: adding error recovery to scannerless generalized-LR parsing",
      "month": "",
      "year": "2009",
      "doi": "http://doi.acm.org/10.1145/1640089.1640122",
      "note": "",
      "abstract": "Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. A heavy burden lies on developers of new languages to provide adequate IDE support. Code generation techniques provide a viable, efficient approach to semi-automatically produce IDE plugins. Key components for the realization of plugins are the language\u0027s grammar and parser. For embedded languages and language extensions, constituent IDE plugin modules and their grammars can be combined. Unlike conventional parsing algorithms, scannerless generalized-LR parsing supports the full set of context-free grammars, which is closed under composition, and hence can parse language embeddings and extensions composed from separate grammar modules. To apply this algorithm in an interactive environment, this paper introduces a novel error recovery mechanism, which allows it to be used with files with syntax errors -- common in interactive editing. Error recovery is vital for providing rapid feedback in case of syntax errors, as most IDE services depend on the parser -- from syntax highlighting to semantic analysis and cross-referencing. We base our approach on the principles of island grammars, and derive permissive grammars with error recovery productions from normal SDF grammars. To cope with the added complexity of these grammars, we adapt the parser to support backtracking. We evaluate the recovery quality and performance of our approach using a set of composed languages, based on Java and Stratego. ",
      "url": "https://researchr.org/publication/KatsJNV09",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/maartje-de-jonge",
            "id": "dcf00ea7-8042-4c07-8f81-9498e4c4a6f7",
            "key": "maartje-de-jonge",
            "name": "Maartje de Jonge"
          },
          "person": {
            "url": "https://researchr.org/profile/maartjedejonge",
            "id": "195eff8f-ca21-4c28-8b32-d60a0bcec22c",
            "key": "maartjedejonge",
            "fullname": "Maartje  de Jonge"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/emma-nilsson-nyman",
            "id": "acb79742-eafa-497b-9ba1-b9d3f9258506",
            "key": "emma-nilsson-nyman",
            "name": "Emma Nilsson-Nyman"
          },
          "person": {
            "url": "https://researchr.org/profile/emmanilssonnyman",
            "id": "3f77872b-c6b8-42dd-bf3b-4f66dc371407",
            "key": "emmanilssonnyman",
            "fullname": "Emma  Nilsson-Nyman"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "gttse",
      "conferenceYear": "",
      "booktitle": "Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007",
      "volume": "5235",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "Braga, Portugal",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/ralf-l%C3%A4mmel",
            "id": "1cd5b8f9-4e0d-4121-a444-1a1c3466e59c",
            "key": "ralf-lämmel",
            "name": "Ralf Lämmel"
          },
          "person": {
            "url": "https://researchr.org/profile/ralflaemmel",
            "id": "1605f420-86fe-4521-9126-c8999c59b3ed",
            "key": "ralflaemmel",
            "fullname": "Ralf Lämmel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/joost-visser",
            "id": "a2685a71-4f48-405f-8d9b-0c4757bcef35",
            "key": "joost-visser",
            "name": "Joost Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/joostvisser",
            "id": "96380068-84b9-436b-ab9b-40d90a566d94",
            "key": "joostvisser",
            "fullname": "Joost Visser"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/jo%C3%A3o-saraiva",
            "id": "55af31cd-7a9b-4070-894f-8497836f6610",
            "key": "joão-saraiva",
            "name": "João Saraiva"
          },
          "person": {
            "url": "https://researchr.org/profile/joosaraiva",
            "id": "5c5d9adc-5293-437a-80e2-bf1044dc8837",
            "key": "joosaraiva",
            "fullname": "João Saraiva"
          }
        }
      ],
      "firstpage": 291,
      "lastpage": 373,
      "id": "29f153a5-8b61-4bf9-96f8-33d1b849c1c3",
      "key": "Visser07",
      "title": "WebDSL: A Case Study in Domain-Specific Language Engineering",
      "month": "",
      "year": "2007",
      "doi": "http://dx.doi.org/10.1007/978-3-540-88643-3_7",
      "note": "",
      "abstract": " The goal of domain-speciﬁc languages (DSLs) is to increase \r\nthe productivity of software engineers by abstracting from low-level boil- \r\nerplate code. Introduction of DSLs in the software development process \r\nrequires a smooth workﬂow for the production of DSLs themselves. This \r\nrequires technology for designing and implementing DSLs, but also a \r\nmethodology for using that technology. That is, a collection of guidelines, \r\ndesign patterns, and reusable DSL components that show developers how \r\nto tackle common language design and implementation issues. This paper \r\npresents a case study in domain-speciﬁc language engineering. It reports \r\non a pro ject in which the author designed and built WebDSL, a DSL \r\nfor web applications with a rich data model, using several DSLs for DSL \r\nengineering: SDF for syntax deﬁnition and Stratego/XT for code gener- \r\nation. The paper follows the stages in the development of the DSL. The \r\ncontributions of the paper are three-fold. (1) A tutorial in the application \r\nof the speciﬁc SDF and Stratego/XT technology for building DSLs. (2) A \r\ndescription of an incremental DSL development process. (3) A domain- \r\nspeciﬁc language for web-applications with rich data models. The paper \r\nconcludes with a survey of related approaches. \r\n",
      "url": "https://researchr.org/publication/Visser07",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "id": "2e661dfa-d284-429b-8340-b4db356a378e",
      "key": "VermolenWachsmuthVisser-TUD-SERG-2011-026",
      "title": "Reconstructing Complex Metamodel Evolution",
      "month": "August",
      "year": "2011",
      "doi": "",
      "note": "",
      "abstract": "Metamodel evolution requires model migration. \r\nTo correctly migrate models, evolution needs to be made explicit.\r\nManually describing evolution is error-prone and redundant.\r\nMetamodel matching offers a solution by automatically detecting evolution, yet detects primitive evolution steps only.\r\nIn practice, primitive evolution steps are jointly applied to form a complex evolution step, which has the same effect on a metamodel as the sum of its parts, yet generally has a different effect in migration.\r\nDetection of complex evolution is therefore needed.\r\nIn this paper we present an approach to reconstructing complex evolution between two metamodel versions, using a matching result as input.\r\nIt supports operator dependencies and mixed, overlapping and incorrectly ordered complex operator components.\r\nIt also supports interference between operators, where the effect of one operator, is partially, or completely hidden from the target metamodel by other operators.",
      "url": "https://researchr.org/publication/VermolenWachsmuthVisser-TUD-SERG-2011-026",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/sander-vermolen",
            "id": "e66dcfe1-17bf-4b96-b120-24054e8138fc",
            "key": "sander-vermolen",
            "name": "Sander Vermolen"
          },
          "person": {
            "url": "https://researchr.org/profile/sandervermolen",
            "id": "3433e8ce-d019-4123-a0d4-6470d5f26ac6",
            "key": "sandervermolen",
            "fullname": "Sander Vermolen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/guido-wachsmuth",
            "id": "d5ff2ef2-75d4-4ac7-847f-098d645baf0e",
            "key": "guido-wachsmuth",
            "name": "Guido Wachsmuth"
          },
          "person": {
            "url": "https://researchr.org/profile/guwac",
            "id": "2260a4e5-f714-4f97-a046-c3f0a685e646",
            "key": "guwac",
            "fullname": "Guido Wachsmuth"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "OOPSLA",
      "conferenceYear": "",
      "booktitle": "Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, OOPSLA 2011",
      "volume": "",
      "number": "",
      "series": "",
      "address": "New York, NY, USA",
      "organization": "",
      "publisher": "ACM",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/kathleen-fisher",
            "id": "e0e131f2-6a9a-4b6c-804b-058cdfb5d2e2",
            "key": "kathleen-fisher",
            "name": "Kathleen Fisher"
          },
          "person": {
            "url": "https://researchr.org/profile/kathleenfisher",
            "id": "cb10db3c-8c94-4190-ba6b-c0a09d673b01",
            "key": "kathleenfisher",
            "fullname": "Kathleen Fisher"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/cristina-videira-lopes",
            "id": "7e59d9ab-6822-40bf-8bc6-7a614a58ef35",
            "key": "cristina-videira-lopes",
            "name": "Cristina Videira Lopes"
          },
          "person": {
            "url": "https://researchr.org/profile/cristinavideiralopes",
            "id": "59a2d3a5-8c38-4bee-a335-d0518f11800f",
            "key": "cristinavideiralopes",
            "fullname": "Cristina Videira  Lopes"
          }
        }
      ],
      "firstpage": 695,
      "lastpage": 712,
      "id": "2ebe76b5-a270-4532-a875-26d39aa3efe6",
      "key": "HemelVisser2011dup",
      "title": "Declaratively Programming the Mobile Web with Mobl",
      "month": "",
      "year": "2011",
      "doi": "http://dx.doi.org/10.1145/2048066.2048121",
      "note": "",
      "abstract": "A new generation of mobile touch devices, such as the\r\niPhone, Android and iPad, are equipped with powerful, modern\r\nbrowsers. However, regular websites are not optimized\r\nfor the specific features and constraints of these devices,\r\nsuch as limited screen estate, unreliable Internet access,\r\ntouch-based interaction patterns, and features such as GPS.\r\nWhile recent advances in web technology enable web developers\r\nto build web applications that take advantage of\r\nthe unique properties of mobile devices, developing such\r\napplications exposes a number of problems, specifically: developers\r\nare required to use many loosely coupled languages\r\nwith limited tool support and application code is often verbose\r\nand imperative. We introduce mobl, a new language\r\ndesigned to declaratively construct mobile web applications.\r\nMobl integrates languages for user interface design, styling,\r\ndata modeling, querying and application logic into a single,\r\nunified language that is flexible, expressive, enables early\r\ndetection of errors, and has good IDE support.",
      "url": "https://researchr.org/publication/HemelVisser2011dup",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "oopsla",
      "conferenceYear": "",
      "booktitle": "Companion to the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-13, 2007, Nashville, TN, USA",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "ACM",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/gail-e.-harris",
            "id": "af52a55a-04f9-476c-a946-013c96a7023e",
            "key": "gail-e.-harris",
            "name": "Gail E. Harris"
          }
        }
      ],
      "firstpage": 779,
      "lastpage": 780,
      "id": "32577b4a-6586-41f6-bb9e-ed0aeb8b74e4",
      "key": "GroenewegenHKV08",
      "title": "WebDSL: a domain-specific language for dynamic web applications",
      "month": "",
      "year": "2008",
      "doi": "http://doi.acm.org/10.1145/1449814.1449858",
      "note": "",
      "abstract": "WebDSL is a domain-specific language for the implementation of dynamic web applications with a rich datamodel. It consists of a core language with constructs to define entities, pages and business logic. Higher-level abstractions, modeling access control and workflow, are defined in a modular fashion as extensions of the core language.",
      "url": "https://researchr.org/publication/GroenewegenHKV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-m.-groenewegen",
            "id": "46cf4818-8ce7-4644-9ee1-414e4c4960e7",
            "key": "danny-m.-groenewegen",
            "name": "Danny M. Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "SLE",
      "conferenceYear": "2009",
      "booktitle": "Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers",
      "volume": "",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/mark-van-den-brand",
            "id": "ec0da5fa-6834-4952-9fff-9c4fecce7cb7",
            "key": "mark-van-den-brand",
            "name": "Mark van den Brand"
          },
          "person": {
            "url": "https://researchr.org/profile/markgjvandenbrand",
            "id": "97855301-a569-413e-8e19-c2c376c50842",
            "key": "markgjvandenbrand",
            "fullname": "Mark G. J. van den Brand"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/dragan-gasevic",
            "id": "4e952583-7834-4817-8b6e-04feaa97fad9",
            "key": "dragan-gasevic",
            "name": "Dragan Gasevic"
          },
          "person": {
            "url": "https://researchr.org/profile/dragangasevic",
            "id": "892937c7-d9f9-49a8-89e6-734b1fb47253",
            "key": "dragangasevic",
            "fullname": "Dragan Gasevic"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/jeff-gray",
            "id": "fefac3e9-8142-40df-9285-12943249e210",
            "key": "jeff-gray",
            "name": "Jeff Gray"
          },
          "person": {
            "url": "https://researchr.org/profile/jeffgray",
            "id": "474ab36e-49c3-4f85-aa00-417d49005952",
            "key": "jeffgray",
            "fullname": "Jeffrey G. Gray"
          }
        }
      ],
      "firstpage": 0,
      "lastpage": 0,
      "id": "3cbb4cf5-3a01-4ad3-a434-e10a45844b7c",
      "key": "GroenewegenV09-SLE",
      "title": "Integration of Data Validation and User Interface Concerns in a DSL for Web Applications",
      "month": "",
      "year": "2010",
      "doi": "https://doi.org/10.1007/978-3-642-12107-4_13",
      "note": "",
      "abstract": "Data validation rules constitute the constraints that data input and pro-\r\ncessing must adhere to in addition to the structural constraints imposed by a data\r\nmodel. Web modeling tools do not address data validation concerns explicitly,\r\nhampering full code generation and model expressivity. Web application frame-\r\nworks do not offer a consistent interface for data validation. In this paper, we\r\npresent a solution for the integration of declarative data validation rules with\r\nuser interface models in the domain of web applications, unifying syntax, mecha-\r\nnisms for error handling, and semantics of validation checks, and covering value\r\nwell-formedness, data invariants, input assertions, and action assertions. We have\r\nimplemented the approach in WebDSL, a domain-specific language for the defi-\r\nnition of web applications.\r\n",
      "url": "https://researchr.org/publication/GroenewegenV09-SLE",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-m.-groenewegen",
            "id": "46cf4818-8ce7-4644-9ee1-414e4c4960e7",
            "key": "danny-m.-groenewegen",
            "name": "Danny M. Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "article",
      "journal": "J. Symb. Comput.",
      "volumenumber": "46",
      "issuenumber": "2",
      "firstpage": 150,
      "lastpage": 182,
      "id": "400b1f51-6715-4889-b92a-3325a437ee76",
      "key": "HemelGKV11",
      "title": "Static consistency checking of web applications with WebDSL",
      "month": "",
      "year": "2011",
      "doi": "https://doi.org/10.1016/j.jsc.2010.08.006",
      "note": "",
      "abstract": "Modern web application development frameworks provide web application developers with high-level abstractions to improve their productivity. However, their support for static verification of applications is limited. Inconsistencies in an application are often not detected statically, but appear as errors at run-time. The reports about these errors are often obscure and hard to trace back to the source of the inconsistency. A major part of this inadequate consistency checking can be traced back to the lack of linguistic integration of these frameworks. Parts of an application are defined with separate domain-specific languages, which are not checked for consistency with the rest of the application. Examples include regular expressions, query languages and XML-based languages for definition of user interfaces. We give an overview and analysis of typical problems arising in development with frameworks for web application development, with Ruby on Rails, Lift and Seam as representatives.\r\n\r\nTo remedy these problems, in this paper, we argue that domain-specific languages should be designed from the ground up with static verification and cross-aspect consistency checking in mind, providing linguistic integration of domain-specific sub-languages. We show how this approach is applied in the design of WebDSL, a domain-specific language for web applications, by examining how its compiler detects inconsistencies not caught by web frameworks, providing accurate and clear error messages. Furthermore, we show how this consistency analysis can be expressed with a declarative rule-based approach using the Stratego transformation language.",
      "url": "https://researchr.org/publication/HemelGKV11",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-m.-groenewegen",
            "id": "46cf4818-8ce7-4644-9ee1-414e4c4960e7",
            "key": "danny-m.-groenewegen",
            "name": "Danny M. Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "sle",
      "conferenceYear": "",
      "booktitle": "Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers",
      "volume": "5969",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/mark-van-den-brand",
            "id": "ec0da5fa-6834-4952-9fff-9c4fecce7cb7",
            "key": "mark-van-den-brand",
            "name": "Mark van den Brand"
          },
          "person": {
            "url": "https://researchr.org/profile/markgjvandenbrand",
            "id": "97855301-a569-413e-8e19-c2c376c50842",
            "key": "markgjvandenbrand",
            "fullname": "Mark G. J. van den Brand"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/dragan-gasevic",
            "id": "4e952583-7834-4817-8b6e-04feaa97fad9",
            "key": "dragan-gasevic",
            "name": "Dragan Gasevic"
          },
          "person": {
            "url": "https://researchr.org/profile/dragangasevic",
            "id": "892937c7-d9f9-49a8-89e6-734b1fb47253",
            "key": "dragangasevic",
            "fullname": "Dragan Gasevic"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/jeff-gray",
            "id": "fefac3e9-8142-40df-9285-12943249e210",
            "key": "jeff-gray",
            "name": "Jeff Gray"
          },
          "person": {
            "url": "https://researchr.org/profile/jeffgray",
            "id": "474ab36e-49c3-4f85-aa00-417d49005952",
            "key": "jeffgray",
            "fullname": "Jeffrey G. Gray"
          }
        }
      ],
      "firstpage": 204,
      "lastpage": 223,
      "id": "497b9673-b265-4da8-a8ac-78e1aebd4526",
      "key": "JongeNKV09",
      "title": "Natural and Flexible Error Recovery for Generated Parsers",
      "month": "",
      "year": "2009",
      "doi": "http://dx.doi.org/10.1007/978-3-642-12107-4_16",
      "note": "",
      "abstract": "Parser generators are an indispensable tool for rapid language development. However, they often fall short of the finesse of a hand-crafted parser, built with the language semantics in mind. One area where generated parsers have provided unsatisfactory results is that of error recovery. Good error recovery is both natural, giving recovery suggestions in line with the intention of the programmer; and flexible, allowing it to be adapted according to language insights and language changes. This paper describes a novel approach to error recovery, taking into account not only the context-free grammar, but also indentation usage. We base our approach on an extension of the SGLR parser that supports fine-grained error recovery rules and can be used to parse complex, composed languages. We take a divide-and-conquer approach to error recovery: using indentation, erroneous regions of code are identified. These regions constrain the search space for applying recovery rules, improving performance and ensuring recovery suggestions local to the error. As a last resort, erroneous regions can be discarded. Our approach also integrates bridge parsing to provide more accurate suggestions for indentation-sensitive language constructs such as scopes. We evaluate our approach by comparison with the JDT Java parser used in Eclipse. ",
      "url": "https://researchr.org/publication/JongeNKV09",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/maartje-de-jonge",
            "id": "dcf00ea7-8042-4c07-8f81-9498e4c4a6f7",
            "key": "maartje-de-jonge",
            "name": "Maartje de Jonge"
          },
          "person": {
            "url": "https://researchr.org/profile/maartjedejonge",
            "id": "195eff8f-ca21-4c28-8b32-d60a0bcec22c",
            "key": "maartjedejonge",
            "fullname": "Maartje  de Jonge"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/emma-nilsson-nyman",
            "id": "acb79742-eafa-497b-9ba1-b9d3f9258506",
            "key": "emma-nilsson-nyman",
            "name": "Emma Nilsson-Nyman"
          },
          "person": {
            "url": "https://researchr.org/profile/emmanilssonnyman",
            "id": "3f77872b-c6b8-42dd-bf3b-4f66dc371407",
            "key": "emmanilssonnyman",
            "fullname": "Emma  Nilsson-Nyman"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "article",
      "journal": "Electr. Notes Theor. Comput. Sci.",
      "volumenumber": "203",
      "issuenumber": "2",
      "firstpage": 21,
      "lastpage": 36,
      "id": "55fff84a-9403-44c6-9c22-a8f5cdbff9f8",
      "key": "KallebergV08",
      "title": "Fusing a Transformation Language with an Open Compiler",
      "month": "",
      "year": "2008",
      "doi": "http://dx.doi.org/10.1016/j.entcs.2008.03.042",
      "note": "",
      "abstract": "Program transformation systems provide powerful analysis and transformation frameworks as well as concise languages for language processing, but instantiating them for every subject language is an arduous task, most often resulting in half-completed frontends. Compilers provide mature frontends with robust parsers and type checkers, but solving language processing problems in general-purpose languages without transformation libraries is tedious. Reusing these frontends with existing transformation systems is therefore attractive. However, for this reuse to be optimal, the functional logic found in the frontend should be exposed to the transformation system – simple data serialization of the abstract syntax tree is not enough, since this fails to expose important compiler functionality, such as import graphs, symbol tables and the type checker.\r\n\r\nIn this paper, we introduce a novel and general technique for combining term-based transformation systems with existing language frontends. The technique is presented in the context of a scriptable analysis and transformation framework for Java built on top of the Eclipse Java compiler. The framework consists of an adapter automatically extracted from the abstract syntax tree of the compiler and an interpreter for the Stratego program transformation language. The adapter allows the Stratego interpreter to rewrite directly on the compiler AST. We illustrate the applicability of our system with scripts written in Stratego that perform framework and library-specific analyses and transformations.",
      "url": "https://researchr.org/publication/KallebergV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/karl-trygve-kalleberg",
            "id": "3ee71cd9-6b84-45a5-ab19-8f8783c8dba3",
            "key": "karl-trygve-kalleberg",
            "name": "Karl Trygve Kalleberg"
          },
          "person": {
            "url": "https://researchr.org/profile/karltk",
            "id": "d774aeed-7606-4770-8a56-2cf4990644b4",
            "key": "karltk",
            "fullname": "Karl Trygve Kalleberg"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "SLE",
      "conferenceYear": "2010",
      "booktitle": "Software Language Engineering, Third International Conference, SLE 2010, Eindhoven, The Netherlands, October 12-13, 2010, Revised Selected Papers",
      "volume": "",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/mark-van-den-brand",
            "id": "ec0da5fa-6834-4952-9fff-9c4fecce7cb7",
            "key": "mark-van-den-brand",
            "name": "Mark van den Brand"
          },
          "person": {
            "url": "https://researchr.org/profile/markgjvandenbrand",
            "id": "97855301-a569-413e-8e19-c2c376c50842",
            "key": "markgjvandenbrand",
            "fullname": "Mark G. J. van den Brand"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/brian-malloy",
            "id": "656064e2-e4fc-45ea-b03b-abc5e7783b99",
            "key": "brian-malloy",
            "name": "Brian Malloy"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/steffen-staab",
            "id": "38c08b6b-f450-4293-9d46-4ca937072e67",
            "key": "steffen-staab",
            "name": "Steffen Staab"
          }
        }
      ],
      "firstpage": 0,
      "lastpage": 0,
      "id": "5b267063-eaf3-4fa7-9255-e7edccbde578",
      "key": "hvw10catalog",
      "title": "An Extensive Catalog of Operators for the Coupled Evolution of Metamodels and Models",
      "month": "",
      "year": "2011",
      "doi": "",
      "note": "",
      "abstract": "Modeling languages and thus their metamodels are subject to change. When a metamodel is evolved, existing models may no longer conform to it. Manual migration of these models in response to metamodel evolution is tedious and error-prone. To significantly automate model migration, operator-based approaches provide reusable coupled operators that encapsulate both metamodel evolution and model migration. The success of an operator-based approach highly depends on the library of reusable coupled operators it provides. In this paper, we thus present an extensive catalog of coupled operators that is based both on a literature survey as well as real-life case studies. The catalog is organized according to a number of criteria to ease assessing the impact on models as well as selecting the right operator for a metamodel change at hand.",
      "url": "https://researchr.org/publication/hvw10catalog",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/markus-herrmannsd%C3%B6rfer",
            "id": "1fe5effb-7b75-4d9f-a3c5-50b5eb33dd98",
            "key": "markus-herrmannsdörfer",
            "name": "Markus Herrmannsdörfer"
          },
          "person": {
            "url": "https://researchr.org/profile/markusherrmannsdoerfer",
            "id": "235b3504-6ca2-4787-9138-6fe743308513",
            "key": "markusherrmannsdoerfer",
            "fullname": "Markus Herrmannsdörfer"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/sander-vermolen",
            "id": "e66dcfe1-17bf-4b96-b120-24054e8138fc",
            "key": "sander-vermolen",
            "name": "Sander Vermolen"
          },
          "person": {
            "url": "https://researchr.org/profile/sandervermolen",
            "id": "3433e8ce-d019-4123-a0d4-6470d5f26ac6",
            "key": "sandervermolen",
            "fullname": "Sander Vermolen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/guido-wachsmuth",
            "id": "d5ff2ef2-75d4-4ac7-847f-098d645baf0e",
            "key": "guido-wachsmuth",
            "name": "Guido Wachsmuth"
          },
          "person": {
            "url": "https://researchr.org/profile/guwac",
            "id": "2260a4e5-f714-4f97-a046-c3f0a685e646",
            "key": "guwac",
            "fullname": "Guido Wachsmuth"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "",
      "conferenceYear": "",
      "booktitle": "Proceedings of the Seventh Workshop on Language Descriptions, Tools and Applications (LDTA 2007)",
      "volume": "",
      "number": "",
      "series": "Electronic Notes in Theoretical Computer Science",
      "address": "Braga, Portugal",
      "organization": "",
      "publisher": "Elsevier",
      "firstpage": 0,
      "lastpage": 0,
      "id": "630d8e0f-e5f6-4f0f-ae4a-5a2ac6197506",
      "key": "KallebergV07",
      "title": "Spoofax: An Interactive Development Environment for Program Transformation with Stratego/XT",
      "month": "March",
      "year": "2007",
      "doi": "",
      "note": "",
      "abstract": "",
      "url": "https://researchr.org/publication/KallebergV07",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/karl-trygve-kalleberg",
            "id": "3ee71cd9-6b84-45a5-ab19-8f8783c8dba3",
            "key": "karl-trygve-kalleberg",
            "name": "Karl Trygve Kalleberg"
          },
          "person": {
            "url": "https://researchr.org/profile/karltk",
            "id": "d774aeed-7606-4770-8a56-2cf4990644b4",
            "key": "karltk",
            "fullname": "Karl Trygve Kalleberg"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "wcre",
      "conferenceYear": "",
      "booktitle": "WCRE 2008, Proceedings of the 15th Working Conference on Reverse Engineering, Antwerp, Belgium, October 15-18, 2008",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "IEEE",
      "editors": [],
      "firstpage": 197,
      "lastpage": 201,
      "id": "63cea9fb-8d91-4565-909a-2afe7450ce71",
      "key": "GeestVDV08",
      "title": "Generating Version Convertors for Domain-Specific Languages",
      "month": "",
      "year": "2008",
      "doi": "http://dx.doi.org/10.1109/WCRE.2008.50",
      "note": "",
      "abstract": "Domain-specific languages (DSLs) improve programmer productivity by providing high-level abstractions for the development of applications in a particular domain. However,the smaller distance to the application domain entails more frequent changes to the language. As a result, existing DSL models need to be converted to the new version. Manual conversion is tedious and error prone.This paper presents an approach to support DSL evolution by generation of convertors between DSLs. By analyzing the differences between DSL meta-models, a mapping is reverse engineered which can be used to generate reengineering tools to automatically convert models between different versions of a DSL. The approach has been implemented for the Microsoft DSL Tools infrastructure in two tools called DSLCompare and ConverterGenerator. The approach has been evaluated by means of three case studies taken from the software development practice at the company Avanade.",
      "url": "https://researchr.org/publication/GeestVDV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/gerardo-de-geest",
            "id": "6774ed5c-e832-45f4-9898-145c69482161",
            "key": "gerardo-de-geest",
            "name": "Gerardo de Geest"
          },
          "person": {
            "url": "https://researchr.org/profile/gerardodegeest",
            "id": "f8d97508-144f-42b4-a139-a5a60132860e",
            "key": "gerardodegeest",
            "fullname": "Gerardo de Geest"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/sander-vermolen",
            "id": "e66dcfe1-17bf-4b96-b120-24054e8138fc",
            "key": "sander-vermolen",
            "name": "Sander Vermolen"
          },
          "person": {
            "url": "https://researchr.org/profile/sandervermolen",
            "id": "3433e8ce-d019-4123-a0d4-6470d5f26ac6",
            "key": "sandervermolen",
            "fullname": "Sander Vermolen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/arie-van-deursen",
            "id": "31e0f562-35ad-4860-b7fb-43c609ae5fc7",
            "key": "arie-van-deursen",
            "name": "Arie van Deursen"
          },
          "person": {
            "url": "https://researchr.org/profile/arievandeursen",
            "id": "5e9231bc-7344-4887-b4ed-688c0bf897eb",
            "key": "arievandeursen",
            "fullname": "Arie  van Deursen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "SLE",
      "conferenceYear": "2011",
      "booktitle": "Software Language Engineering, Fourth International Conference, SLE 2011, Braga, Portugal, July, 2011, Revised Selected Papers",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/uwe-assmann",
            "id": "8be162e1-1814-4d05-84fe-1bb5a2673f4d",
            "key": "uwe-assmann",
            "name": "Uwe Assmann"
          },
          "person": {
            "url": "https://researchr.org/profile/uweamann",
            "id": "f3c78505-3b84-442e-a8e0-0d4353c10c02",
            "key": "uweamann",
            "fullname": "Uwe  Aßmann"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/tony-sloane",
            "id": "a037cb7f-a2e6-4ee9-ad8a-8eff3c869696",
            "key": "tony-sloane",
            "name": "Tony Sloane"
          },
          "person": {
            "url": "https://researchr.org/profile/anthonymsloane",
            "id": "30f25bf3-1656-4413-9a94-659dd3ba4ded",
            "key": "anthonymsloane",
            "fullname": "Anthony M. Sloane"
          }
        }
      ],
      "firstpage": 0,
      "lastpage": 0,
      "id": "7e253a2d-1a8f-4a92-95b3-45ebc816279d",
      "key": "DeJongeVisser2012",
      "title": "An Algorithm for Layout Preservation in Refactoring Transformations",
      "month": "",
      "year": "2012",
      "doi": "",
      "note": "",
      "abstract": "Transformations and semantic analysis for source-to-source\r\ntransformations such as refactorings are most effectively implemented using\r\nan abstract representation of the source code.  An intrinsic limitation\r\nof transformation techniques based on abstract syntax trees is the loss of layout,\r\ni.e. comments and whitespace.  This is especially\r\nrelevant in the context of refactorings, which produce source code for\r\nhuman consumption.  In this paper, we present an algorithm for fully\r\nautomatic source code reconstruction for source-to-source\r\ntransformations. The algorithm preserves the layout and comments of\r\nthe unaffected parts and reconstructs the indentation of the affected\r\nparts, using a set of clearly defined heuristic rules to handle comments.\r\n",
      "url": "https://researchr.org/publication/DeJongeVisser2012",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/maartje-de-jonge",
            "id": "dcf00ea7-8042-4c07-8f81-9498e4c4a6f7",
            "key": "maartje-de-jonge",
            "name": "Maartje de Jonge"
          },
          "person": {
            "url": "https://researchr.org/profile/maartjedejonge",
            "id": "195eff8f-ca21-4c28-8b32-d60a0bcec22c",
            "key": "maartjedejonge",
            "fullname": "Maartje  de Jonge"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "article",
      "journal": "sosym",
      "volumenumber": "12",
      "issuenumber": "1",
      "firstpage": 35,
      "lastpage": 52,
      "id": "7f489c91-d67c-4ecf-a8fd-1fa6b55e6f62",
      "key": "GroenewegenVisser2013",
      "title": "Integration of Data Validation and User Interface Concerns in a DSL for Web Applications",
      "month": "February",
      "year": "2013",
      "doi": "http://dx.doi.org/10.1007/s10270-010-0173-9",
      "note": "",
      "abstract": "Data validation rules constitute the constraints that data input and processing must adhere to in addition to the structural constraints imposed by a data model. Web modeling tools do not make all types of data validation explicit in their models, hampering full code generation and model expressivity. Web application frameworks do not offer a consistent interface for data validation. In this paper, we present a solution for the integration of declarative data validation rules with user interface models in the domain of web applications, unifying syntax, mechanisms for error handling, and semantics of validation checks, and covering value well-formedness, data invariants, input assertions, and action assertions. We have implemented the approach in WebDSL, a domain-specific language for the definition of web applications.",
      "url": "https://researchr.org/publication/GroenewegenVisser2013",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-groenewegen",
            "id": "79a481d2-fb45-404b-9192-8e9b286f9338",
            "key": "danny-groenewegen",
            "name": "Danny Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "oopsla",
      "conferenceYear": "",
      "booktitle": "Companion to the 24th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2009, October 25-29, 2009, Orlando, Florida, USA",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "ACM",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/shail-arora",
            "id": "0c07716a-6765-46eb-adf2-127d0d707917",
            "key": "shail-arora",
            "name": "Shail Arora"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/gary-t.-leavens",
            "id": "1a42cab0-1af8-42b8-b90d-096a5ec5440d",
            "key": "gary-t.-leavens",
            "name": "Gary T. Leavens"
          }
        }
      ],
      "firstpage": 797,
      "lastpage": 798,
      "id": "8096ad25-8bf7-4954-9332-84e850384286",
      "key": "GroenewegenV09-demo",
      "title": "Weaving web applications with WebDSL: (demonstration)",
      "month": "",
      "year": "2009",
      "doi": "http://doi.acm.org/10.1145/1639950.1640020",
      "note": "",
      "abstract": "WebDSL is a domain-specific language for the development of web applications that integrates data-models, user-interface models, actions, validation, access control, and workflow. The compiler verifies the consistency of applications and generates complete implementations in Java or Python. We illustrate the key concepts of the language with a small web application.",
      "url": "https://researchr.org/publication/GroenewegenV09-demo",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-m.-groenewegen",
            "id": "46cf4818-8ce7-4644-9ee1-414e4c4960e7",
            "key": "danny-m.-groenewegen",
            "name": "Danny M. Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "SLE",
      "conferenceYear": "2011",
      "booktitle": "Software Language Engineering, Fourth International Conference, SLE 2011, Braga, Portugal, July, 2011, Revised Selected Papers",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/uwe-assmann",
            "id": "8be162e1-1814-4d05-84fe-1bb5a2673f4d",
            "key": "uwe-assmann",
            "name": "Uwe Assmann"
          },
          "person": {
            "url": "https://researchr.org/profile/uweamann",
            "id": "f3c78505-3b84-442e-a8e0-0d4353c10c02",
            "key": "uweamann",
            "fullname": "Uwe  Aßmann"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/tony-sloane",
            "id": "a037cb7f-a2e6-4ee9-ad8a-8eff3c869696",
            "key": "tony-sloane",
            "name": "Tony Sloane"
          },
          "person": {
            "url": "https://researchr.org/profile/anthonymsloane",
            "id": "30f25bf3-1656-4413-9a94-659dd3ba4ded",
            "key": "anthonymsloane",
            "fullname": "Anthony M. Sloane"
          }
        }
      ],
      "firstpage": 201,
      "lastpage": 221,
      "id": "897ffd63-2171-4227-9386-7baaa0450185",
      "key": "VermolenWachsmuthVisser2011dup",
      "title": "Reconstructing Complex Metamodel Evolution",
      "month": "",
      "year": "2012",
      "doi": "http://dx.doi.org/10.1007/978-3-642-28830-2_11",
      "note": "",
      "abstract": "Metamodel evolution requires model migration. \r\nTo correctly migrate models, evolution needs to be made explicit.\r\nManually describing evolution is error-prone and redundant.\r\nMetamodel matching offers a solution by automatically detecting evolution, yet detects primitive evolution steps only.\r\nIn practice, primitive evolution steps are jointly applied to form a complex evolution step, which has the same effect on a metamodel as the sum of its parts, yet generally has a different effect in migration.\r\nDetection of complex evolution is therefore needed.\r\nIn this paper we present an approach to reconstructing complex evolution between two metamodel versions, using a matching result as input.\r\nIt supports operator dependencies and mixed, overlapping and incorrectly ordered complex operator components.\r\nIt also supports interference between operators, where the effect of one operator, is partially, or completely hidden from the target metamodel by other operators.",
      "url": "https://researchr.org/publication/VermolenWachsmuthVisser2011dup",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/sander-vermolen",
            "id": "e66dcfe1-17bf-4b96-b120-24054e8138fc",
            "key": "sander-vermolen",
            "name": "Sander Vermolen"
          },
          "person": {
            "url": "https://researchr.org/profile/sandervermolen",
            "id": "3433e8ce-d019-4123-a0d4-6470d5f26ac6",
            "key": "sandervermolen",
            "fullname": "Sander Vermolen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/guido-wachsmuth",
            "id": "d5ff2ef2-75d4-4ac7-847f-098d645baf0e",
            "key": "guido-wachsmuth",
            "name": "Guido Wachsmuth"
          },
          "person": {
            "url": "https://researchr.org/profile/guwac",
            "id": "2260a4e5-f714-4f97-a046-c3f0a685e646",
            "key": "guwac",
            "fullname": "Guido Wachsmuth"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "icwe",
      "conferenceYear": "",
      "booktitle": "Proceedings of the Eighth International Conference on Web Engineering, ICWE 2008, 14-18 July 2008, Yorktown Heights, New York, USA",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "IEEE",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/daniel-schwabe",
            "id": "2d04b4d6-1f36-42d7-9ed5-cf3eb57476ab",
            "key": "daniel-schwabe",
            "name": "Daniel Schwabe"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/francisco-curbera",
            "id": "0de9c4c8-6721-462d-bd06-379db775070f",
            "key": "francisco-curbera",
            "name": "Francisco Curbera"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/paul-dantzig",
            "id": "e6f58540-1442-46a5-bcd0-1142327d1f5f",
            "key": "paul-dantzig",
            "name": "Paul Dantzig"
          }
        }
      ],
      "firstpage": 175,
      "lastpage": 188,
      "id": "8e9937b6-ec04-40f1-ae0b-0658da576d24",
      "key": "GroenewegenV08",
      "title": "Declarative Access Control for WebDSL: Combining Language Integration and Separation of Concerns",
      "month": "",
      "year": "2008",
      "doi": "http://dx.doi.org/10.1109/ICWE.2008.15",
      "note": "",
      "abstract": "In this paper, we present the extension of WebDSL, a domain-specific\r\nlanguage for web application development, with abstractions for\r\ndeclarative definition of access control.  The extension supports the\r\ndefinition of a wide range of access control policies concisely and\r\ntransparently as a separate concern.  In addition to regulating the\r\naccess to pages and actions, access control rules are used to infer\r\nnavigation options not accessible to the current user, preventing the\r\npresentation of inaccessible links.  The extension is an illustration\r\nof a general approach to the design of domain-specific languages for\r\ndifferent technical domains to support separation of concerns in\r\napplication development, while preserving linguistic integration. This\r\napproach is realized by means of a transformational semantics that\r\nweaves separately defined aspects into an integrated implementation.\r\n",
      "url": "https://researchr.org/publication/GroenewegenV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-m.-groenewegen",
            "id": "46cf4818-8ce7-4644-9ee1-414e4c4960e7",
            "key": "danny-m.-groenewegen",
            "name": "Danny M. Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "models",
      "conferenceYear": "",
      "booktitle": "Model Driven Engineering Languages and Systems, 11th International Conference, MoDELS 2008, Toulouse, France, September 28 - October 3, 2008. Proceedings",
      "volume": "5301",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/krzysztof-czarnecki",
            "id": "59b12c15-22de-472e-9b7a-453385164e3b",
            "key": "krzysztof-czarnecki",
            "name": "Krzysztof Czarnecki"
          },
          "person": {
            "url": "https://researchr.org/profile/krzysztofczarnecki",
            "id": "f8475ad2-6a3b-4cd6-9986-5a1ede62a0ae",
            "key": "krzysztofczarnecki",
            "fullname": "Krzysztof Czarnecki"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/ileana-ober",
            "id": "97d0ba88-fa64-4d21-9b99-6be14f7df22b",
            "key": "ileana-ober",
            "name": "Ileana Ober"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/jean-michel-bruel",
            "id": "085d761f-a34a-4f06-b51f-8a2807e6a5dd",
            "key": "jean-michel-bruel",
            "name": "Jean-Michel Bruel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/axel-uhl",
            "id": "7b20a7a8-8513-48de-8345-c8c66c6c4cd7",
            "key": "axel-uhl",
            "name": "Axel Uhl"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/markus-v%C3%B6lter",
            "id": "ab591369-2e2d-42ef-a605-52de9dba9aab",
            "key": "markus-völter",
            "name": "Markus Völter"
          },
          "person": {
            "url": "https://researchr.org/profile/markusvoelter",
            "id": "d0507709-858d-4c99-9af3-97f51623b905",
            "key": "markusvoelter",
            "fullname": "Markus Völter"
          }
        }
      ],
      "firstpage": 630,
      "lastpage": 644,
      "id": "8ec5abd4-8021-4b55-bea1-b83d8cb59baf",
      "key": "VermolenV08",
      "title": "Heterogeneous Coupled Evolution of Software Languages",
      "month": "",
      "year": "2008",
      "doi": "http://dx.doi.org/10.1007/978-3-540-87875-9_44",
      "note": "",
      "abstract": "As most software artifacts, meta-models can evolve. Their evolution requires conforming models to co-evolve along with them. Coupled evolution supports this. Its applicability is not limited to the modeling domain. Other domains are for example evolving grammars or database schemas. Existing approaches to coupled evolution focus on a single, homogeneous domain. They solve the co-evolution problems locally and repeatedly. In this paper we present a systematic, heterogeneous approach to coupled evolution. It provides an automatically derived domain specific transformation language; a means of executing transformations at the top level; a derivation of the coupled bottom level transformation; and it allows for generic abstractions from elementary transformations. The feasibility of the architecture is evaluated by applying it to data model evolution.",
      "url": "https://researchr.org/publication/VermolenV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/sander-vermolen",
            "id": "e66dcfe1-17bf-4b96-b120-24054e8138fc",
            "key": "sander-vermolen",
            "name": "Sander Vermolen"
          },
          "person": {
            "url": "https://researchr.org/profile/sandervermolen",
            "id": "3433e8ce-d019-4123-a0d4-6470d5f26ac6",
            "key": "sandervermolen",
            "fullname": "Sander Vermolen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "DSM",
      "conferenceYear": "",
      "booktitle": "Proceedings of the 8th OOPSLA Workshop on Domain Specific Modelling (DSM\u002708)",
      "volume": "",
      "number": "",
      "series": "",
      "address": "Nashville, Tennessee, USA",
      "organization": "",
      "publisher": "",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/jeff-gray",
            "id": "fefac3e9-8142-40df-9285-12943249e210",
            "key": "jeff-gray",
            "name": "Jeff Gray"
          },
          "person": {
            "url": "https://researchr.org/profile/jeffgray",
            "id": "474ab36e-49c3-4f85-aa00-417d49005952",
            "key": "jeffgray",
            "fullname": "Jeffrey G. Gray"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/jonathan-sprinkle",
            "id": "16e79076-7883-45fe-90fc-0c3977c3d347",
            "key": "jonathan-sprinkle",
            "name": "Jonathan Sprinkle"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/juha-pekka-tolvanen",
            "id": "b80a1d8a-78dc-416b-94f1-8f8a509c89d1",
            "key": "juha-pekka-tolvanen",
            "name": "Juha-Pekka Tolvanen"
          },
          "person": {
            "url": "https://researchr.org/profile/juhapekkatolvanen",
            "id": "6db1c895-c1d2-4236-8222-8a3a2f75a3fa",
            "key": "juhapekkatolvanen",
            "fullname": "Juha-Pekka Tolvanen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/matti-rossi",
            "id": "742d5829-d5fa-4b91-9401-13da2172a210",
            "key": "matti-rossi",
            "name": "Matti Rossi"
          }
        }
      ],
      "firstpage": 0,
      "lastpage": 0,
      "id": "905a355c-2b70-4656-b9db-f4dd7c2eaa19",
      "key": "GroenewegenHKV08-DSM",
      "title": "When Frameworks Let You Down. Platform-Imposed Constraints on the Design and Evolution of Domain-Specific Languages",
      "month": "October",
      "year": "2008",
      "doi": "",
      "note": "",
      "abstract": "Application frameworks encapsulate domain knowledge in a reusable\r\nlibrary, providing abstractions for a particular domain. As such, they\r\ncan form the basis for domain-specific languages, which may offer\r\nnotational constructs, static analysis, and optimizations specific for\r\nthe domain. Additional abstractions can be incrementally added on top\r\nof a domain-specific, following an inductive approach towards its\r\ndesign, evolving the language as new domain insights are acquired. A\r\nproblem arises when such additions do not align well with the\r\nunderlying framework. In this paper, we provide different examples of\r\nthis problem and describe scenarios of dealing with it.",
      "url": "https://researchr.org/publication/GroenewegenHKV08-DSM",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-m.-groenewegen",
            "id": "46cf4818-8ce7-4644-9ee1-414e4c4960e7",
            "key": "danny-m.-groenewegen",
            "name": "Danny M. Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "sle",
      "conferenceYear": "2008",
      "booktitle": "Software Language Engineering, First International Conference, SLE 2008, Toulouse, France, September 29-30, 2008. Revised Selected Papers",
      "volume": "5452",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/dragan-gasevic",
            "id": "4e952583-7834-4817-8b6e-04feaa97fad9",
            "key": "dragan-gasevic",
            "name": "Dragan Gasevic"
          },
          "person": {
            "url": "https://researchr.org/profile/dragangasevic",
            "id": "892937c7-d9f9-49a8-89e6-734b1fb47253",
            "key": "dragangasevic",
            "fullname": "Dragan Gasevic"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/ralf-l%C3%A4mmel",
            "id": "1cd5b8f9-4e0d-4121-a444-1a1c3466e59c",
            "key": "ralf-lämmel",
            "name": "Ralf Lämmel"
          },
          "person": {
            "url": "https://researchr.org/profile/ralflaemmel",
            "id": "1605f420-86fe-4521-9126-c8999c59b3ed",
            "key": "ralflaemmel",
            "fullname": "Ralf Lämmel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eric-van-wyk",
            "id": "a2b5cb8d-5bd0-4330-8551-0e8bb70f39a6",
            "key": "eric-van-wyk",
            "name": "Eric Van Wyk"
          },
          "person": {
            "url": "https://researchr.org/profile/ericvanwyk",
            "id": "eb02e639-84a8-42de-9254-a07ddacb849e",
            "key": "ericvanwyk",
            "fullname": "Eric {Van Wyk}"
          }
        }
      ],
      "firstpage": 74,
      "lastpage": 94,
      "id": "95304a00-3ebc-442e-afbc-ea6d7d12aabf",
      "key": "BravenboerV08",
      "title": "Parse Table Composition",
      "month": "",
      "year": "2009",
      "doi": "http://dx.doi.org/10.1007/978-3-642-00434-6_6",
      "note": "",
      "abstract": "Module systems, separate compilation, deployment of binary components, and dynamic linking have enjoyed wide acceptance in programming languages and systems. In contrast, the syntax of languages is usually defined in a non-modular way, cannot be compiled separately, cannot easily be combined with the syntax of other languages, and cannot be deployed as a component for later composition. Grammar formalisms that do support modules use whole program compilation.\r\n\r\nCurrent extensible compilers focus on source-level extensibility, which requires users to compile the compiler with a specific configuration of extensions. A compound parser needs to be generated for every combination of extensions. The generation of parse tables is expensive, which is a particular problem when the composition configuration is not fixed to enable users to choose language extensions.\r\n\r\nIn this paper we introduce an algorithm for parse table composition to support separate compilation of grammars to parse table components. Parse table components can be composed (linked) efficiently at runtime, i.e. just before parsing. While the worst-case time complexity of parse table composition is exponential (like the complexity of parse table generation itself), for realistic language combination scenarios involving grammars for real languages, our parse table composition algorithm is an order of magnitude faster than computation of the parse table for the combined grammars.\r\n",
      "url": "https://researchr.org/publication/BravenboerV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/martin-bravenboer",
            "id": "d43052f6-9073-47d6-98d0-b38cb940c618",
            "key": "martin-bravenboer",
            "name": "Martin Bravenboer"
          },
          "person": {
            "url": "https://researchr.org/profile/martinbravenboer",
            "id": "629a35fe-abf1-4cd3-ad19-ae3021609c90",
            "key": "martinbravenboer",
            "fullname": "Martin  Bravenboer"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "article",
      "journal": "Science of Computer Programming",
      "volumenumber": "75",
      "issuenumber": "7",
      "firstpage": 473,
      "lastpage": 495,
      "id": "a228dbe3-5c04-4691-8a21-cdb5224e0623",
      "key": "BravenboerDV-SCP-2010",
      "title": "Preventing injection attacks with syntax embeddings",
      "month": "July",
      "year": "2010",
      "doi": "http://dx.doi.org/10.1016/j.scico.2009.05.004",
      "note": "",
      "abstract": "Software written in one language often needs to construct sentences in another language, such as SQL queries, XML output, or shell command invocations. This is almost always done using unhygienic string manipulation, the concatenation of constants and client-supplied strings. A client can then supply specially crafted input that causes the constructed sentence to be interpreted in an unintended way, leading to an injection attack. We describe a more natural style of programming that yields code that is impervious to injections by construction. Our approach embeds the grammars of the guest languages (e.g. SQL) into that of the host language (e.g. Java) and automatically generates code that maps the embedded language to constructs in the host language that reconstruct the embedded sentences, adding escaping functions where appropriate. This approach is generic, meaning that it can be applied with relative ease to any combination of context-free host and guest languages.",
      "url": "https://researchr.org/publication/BravenboerDV-SCP-2010",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/martin-bravenboer",
            "id": "d43052f6-9073-47d6-98d0-b38cb940c618",
            "key": "martin-bravenboer",
            "name": "Martin Bravenboer"
          },
          "person": {
            "url": "https://researchr.org/profile/martinbravenboer",
            "id": "629a35fe-abf1-4cd3-ad19-ae3021609c90",
            "key": "martinbravenboer",
            "fullname": "Martin  Bravenboer"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-dolstra",
            "id": "c73bbd9f-3809-4463-9a56-d449cf26dff3",
            "key": "eelco-dolstra",
            "name": "Eelco Dolstra"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcodolstra",
            "id": "c0bae0b4-2a49-491c-b0be-e681f6cde43e",
            "key": "eelcodolstra",
            "fullname": "Eelco  Dolstra"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "Proceedings of The Ninth Workshop on Language Descriptions, Tools, and Applications (LDTA 2009)",
      "conferenceYear": "2009",
      "booktitle": "Proceedings of The Ninth Workshop on Language Descriptions, Tools, and Applications (LDTA 2009)",
      "volume": "253",
      "number": "7",
      "series": "ENTCS",
      "address": "",
      "organization": "",
      "publisher": "Elsevier",
      "firstpage": 0,
      "lastpage": 0,
      "id": "ade5f17d-32d6-41f9-90df-1236774fb7e5",
      "key": "KKV09",
      "title": "Domain-Specific Languages for Composable Editor Plugins",
      "month": "sept",
      "year": "2010",
      "doi": "http://dx.doi.org/10.1016/j.entcs.2010.08.038",
      "note": "",
      "abstract": "Modern IDEs increase developer productivity by incorporating many different kinds of editor services. These can be purely syntactic, such as syntax highlighting, code folding, and an outline for navigation; or they can be based on the language semantics, such as in-line type error reporting and resolving identifier declarations. Building all these services from scratch requires both the extensive knowledge of the sometimes complicated and highly interdependent APIs and extension mechanisms of an IDE framework, and an in-depth understanding of the structure and semantics of the targeted language. This paper describes Spoofax/IMP, a meta-tooling suite that provides high-level domain-specific languages for describing editor services, relieving editor developers from much of the framework-specific programming. Editor services are defined as composable modules of rules coupled to a modular SDF grammar. The composability provided by the SGLR parser and the declaratively defined services allows embedded languages and language extensions to be easily formulated as additional rules extending an existing language definition. The service definitions are used to generate Eclipse editor plugins. We discuss two examples: an editor plugin for WebDSL, a domain-specific language for web applications, and the embedding of WebDSL in Stratego, used for expressing the (static) semantic rules of WebDSL. ",
      "url": "https://researchr.org/publication/KKV09",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/karl-trygve-kalleberg",
            "id": "3ee71cd9-6b84-45a5-ab19-8f8783c8dba3",
            "key": "karl-trygve-kalleberg",
            "name": "Karl Trygve Kalleberg"
          },
          "person": {
            "url": "https://researchr.org/profile/karltk",
            "id": "d774aeed-7606-4770-8a56-2cf4990644b4",
            "key": "karltk",
            "fullname": "Karl Trygve Kalleberg"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "wcre",
      "conferenceYear": "",
      "booktitle": "WCRE 2008, Proceedings of the 15th Working Conference on Reverse Engineering, Antwerp, Belgium, October 15-18, 2008",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "IEEE",
      "editors": [],
      "firstpage": 323,
      "lastpage": 326,
      "id": "b27c529e-41f1-43a4-8e86-f6517a1bf03d",
      "key": "Vermolen08",
      "title": "Software Language Evolution",
      "month": "",
      "year": "2008",
      "doi": "http://dx.doi.org/10.1109/WCRE.2008.42",
      "note": "",
      "abstract": "By abstraction and factoring out domain specific knowledge, model driven engineering addresses the problem of increasing software complexity. Both models and meta models are generally subject to evolution, yet evolution of a meta model can cause conforming models to no longer conform and thereby no longer be usable. Therefore, models need to be migrated to reflect changes to their meta models. As evolution is typically frequent and reoccurring, manual migration of models is cumbersome and holds back the development process, yet automatic support is generally lacking. In this research we identify the problems caused by meta model evolution and develop methodologies and tools to solve these by supporting meta model evolution generically and automatically.",
      "url": "https://researchr.org/publication/Vermolen08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/sander-vermolen",
            "id": "e66dcfe1-17bf-4b96-b120-24054e8138fc",
            "key": "sander-vermolen",
            "name": "Sander Vermolen"
          },
          "person": {
            "url": "https://researchr.org/profile/sandervermolen",
            "id": "3433e8ce-d019-4123-a0d4-6470d5f26ac6",
            "key": "sandervermolen",
            "fullname": "Sander Vermolen"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "oopsla",
      "conferenceYear": "",
      "booktitle": "Proceedings of the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-23, 2008, Nashville, TN, USA",
      "volume": "",
      "number": "",
      "series": "",
      "address": "",
      "organization": "",
      "publisher": "ACM",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/gail-e.-harris",
            "id": "af52a55a-04f9-476c-a946-013c96a7023e",
            "key": "gail-e.-harris",
            "name": "Gail E. Harris"
          }
        }
      ],
      "firstpage": 91,
      "lastpage": 108,
      "id": "c4413cee-a32d-4df1-85ab-01dd3c8e9361",
      "key": "KatsBV08",
      "title": "Mixing source and bytecode: a case for compilation by normalization",
      "month": "",
      "year": "2008",
      "doi": "http://doi.acm.org/10.1145/1449764.1449772",
      "note": "",
      "abstract": "Language extensions increase programmer productivity by providing concise, often domain-specific syntax, and support for static verification of correctness, security, and style constraints. Language extensions can often be realized through translation to the base language, supported by preprocessors and extensible compilers. However, various kinds of extensions require further adaptation of a base compiler\u0027s internal stages and components, for example to support separate compilation or to make use of low-level primitives of the platform (e.g., jump instructions or unbalanced synchronization). To allow for a more loosely coupled approach, we propose an open compiler model based on normalization steps from a high-level language to a subset of it, the core language. We developed such a compiler for a mixed Java and (core) bytecode language, and evaluate its effectiveness for composition mechanisms such as traits, as well as statement-level and expression-level language extensions.\r\n\r\n",
      "url": "https://researchr.org/publication/KatsBV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/martin-bravenboer",
            "id": "d43052f6-9073-47d6-98d0-b38cb940c618",
            "key": "martin-bravenboer",
            "name": "Martin Bravenboer"
          },
          "person": {
            "url": "https://researchr.org/profile/martinbravenboer",
            "id": "629a35fe-abf1-4cd3-ad19-ae3021609c90",
            "key": "martinbravenboer",
            "fullname": "Martin  Bravenboer"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "article",
      "journal": "sosym",
      "volumenumber": "9",
      "issuenumber": "3",
      "firstpage": 375,
      "lastpage": 402,
      "id": "c6ab7ca9-2764-4354-964b-ba8c3244bd88",
      "key": "HemelKGV-2010",
      "title": "Code generation by model transformation: a case study in transformation modularity",
      "month": "June",
      "year": "2010",
      "doi": "http://dx.doi.org/10.1007/s10270-009-0136-1",
      "note": "",
      "abstract": "The realization of model-driven software development requires effective techniques for implementing code generators for domain-specific languages. This paper identifies techniques for improving separation of concerns in the implementation of generators. The core technique is code generation by model transformation, that is, the generation of a structured representation (model) of the target program instead of plain text. This approach enables the transformation of code after generation, which in turn enables the extension of the target language with features that allow better modularity in code generation rules. The technique can also be applied to ‘internal code generation’ for the translation of high-level extensions of a DSL to lower-level constructs within the same DSL using model-to-model transformations. This paper refines our earlier description of code generation by model transformation with an improved architecture for the composition of model-to-model normalization rules, solving the problem of combining type analysis and transformation. Instead of coarse-grained stages that alternate between normalization and type analysis, we have developed a new style of type analysis that can be integrated with normalizing transformations in a fine-grained manner. The normalization strategy has a simple extension interface and integrates non-local, context-sensitive transformation rules. We have applied the techniques in a realistic case study of domain-specific language engineering, i.e. the code generator for WebDSL, using Stratego, a high-level transformation language that integrates model-to-model, model-to-code, and code-to-code transformations. ",
      "url": "https://researchr.org/publication/HemelKGV-2010",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-m.-groenewegen",
            "id": "46cf4818-8ce7-4644-9ee1-414e4c4960e7",
            "key": "danny-m.-groenewegen",
            "name": "Danny M. Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "icmt",
      "conferenceYear": "",
      "booktitle": "Theory and Practice of Model Transformations, First International Conference, ICMT 2008, Zürich, Switzerland, July 1-2, 2008, Proceedings",
      "volume": "5063",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/antonio-vallecillo",
            "id": "ea43e3ee-9d5c-44a9-ae63-3a0991587df7",
            "key": "antonio-vallecillo",
            "name": "Antonio Vallecillo"
          },
          "person": {
            "url": "https://researchr.org/profile/antoniovallecillo",
            "id": "fcd91adb-afc8-49ea-8462-8ea7e21fcd02",
            "key": "antoniovallecillo",
            "fullname": "Antonio Vallecillo"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/jeff-gray",
            "id": "fefac3e9-8142-40df-9285-12943249e210",
            "key": "jeff-gray",
            "name": "Jeff Gray"
          },
          "person": {
            "url": "https://researchr.org/profile/jeffgray",
            "id": "474ab36e-49c3-4f85-aa00-417d49005952",
            "key": "jeffgray",
            "fullname": "Jeffrey G. Gray"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/alfonso-pierantonio",
            "id": "6bdb8120-94a2-4358-a8ff-970aeb5a607f",
            "key": "alfonso-pierantonio",
            "name": "Alfonso Pierantonio"
          },
          "person": {
            "url": "https://researchr.org/profile/alfonsopierantonio",
            "id": "b3878a28-8c5a-4748-8d0d-392889211b46",
            "key": "alfonsopierantonio",
            "fullname": "Alfonso Pierantonio"
          }
        }
      ],
      "firstpage": 183,
      "lastpage": 198,
      "id": "c9b49596-d81d-483c-b093-ee6d3b6ab486",
      "key": "HemelKV08",
      "title": "Code Generation by Model Transformation",
      "month": "",
      "year": "2008",
      "doi": "http://dx.doi.org/10.1007/978-3-540-69927-9_13",
      "note": "",
      "abstract": "The realization of model-driven software development requires effective techniques for implementing code generators. In this paper, we present a case study of code generation by model transformation  with Stratego, a high-level transformation language based on the paradigm of rewrite rules with programmable strategies that integrates model-to-model, model-to-code, and code-to-code transformations. The use of concrete object syntax guarantees syntactic correctness of code patterns, and enables the subsequent transformation of generated code. The composability of strategies supports two dimensions of transformation modularity. Vertical modularity is achieved by designing a generator as a pipeline of model-to-model transformations that gradually transforms a high-level input model to an implementation. Horizontal modularity is achieved by supporting the definition of plugins which implement all aspects of a language feature. We discuss the application of these techniques in the implementation of WebDSL, a domain-specific language for dynamic web applications with a rich data model. ",
      "url": "https://researchr.org/publication/HemelKV08",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "oopsla",
      "conferenceYear": "",
      "booktitle": "Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA",
      "volume": "",
      "number": "",
      "series": "",
      "address": "Reno/Tahoe, Nevada",
      "organization": "",
      "publisher": "ACM",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/william-r.-cook",
            "id": "9a3ff127-3980-45d1-8b6b-baa769285bbc",
            "key": "william-r.-cook",
            "name": "William R. Cook"
          },
          "person": {
            "url": "https://researchr.org/profile/williamrcook",
            "id": "7f55f747-1ff4-4fa3-85ea-b40e083546b5",
            "key": "williamrcook",
            "fullname": "William R. Cook"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/siobh%7B%5Eb%27a%7Dn-clarke",
            "id": "a3306b32-66ba-486a-b518-c8019b0e80a0",
            "key": "siobh{\\\u0027a}n-clarke",
            "name": "Siobh{\\\u0027a}n Clarke"
          },
          "person": {
            "url": "https://researchr.org/profile/siobhnclarke",
            "id": "ed27bbb0-cb5a-499a-a50b-f5a211ae3647",
            "key": "siobhnclarke",
            "fullname": "Siobhán Clarke"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/martin-c.-rinard",
            "id": "503be362-fe58-475e-81c6-7763a1803fb6",
            "key": "martin-c.-rinard",
            "name": "Martin C. Rinard"
          }
        }
      ],
      "firstpage": 918,
      "lastpage": 932,
      "id": "c9bf2a96-cfb5-443a-b100-6249f0e340e3",
      "key": "KatsVW10",
      "title": "Pure and declarative syntax definition: paradise lost and regained",
      "month": "",
      "year": "2010",
      "doi": "http://doi.acm.org/10.1145/1869459.1869535",
      "note": "",
      "abstract": "Syntax definitions are pervasive in modern software systems, and serve as the basis for language processing tools like parsers and compilers. Mainstream parser generators pose restrictions on syntax definitions that follow from their implementation algorithm. They hamper evolution, maintainability, and compositionality of syntax definitions. The pureness and declarativity of syntax definitions is lost. We analyze how these problems arise for different aspects of syntax definitions, discuss their consequences for language engineers, and show how the pure and declarative nature of syntax definitions can be regained.",
      "url": "https://researchr.org/publication/KatsVW10",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/guido-wachsmuth",
            "id": "d5ff2ef2-75d4-4ac7-847f-098d645baf0e",
            "key": "guido-wachsmuth",
            "name": "Guido Wachsmuth"
          },
          "person": {
            "url": "https://researchr.org/profile/guwac",
            "id": "2260a4e5-f714-4f97-a046-c3f0a685e646",
            "key": "guwac",
            "fullname": "Guido Wachsmuth"
          }
        }
      ]
    },
    {
      "id": "dc0ece7b-7365-4c49-a2bd-e4bf110e4f3e",
      "key": "HemelVisser2011A",
      "title": "Programming the Mobile Web with Mobl",
      "month": "January",
      "year": "2011",
      "doi": "",
      "note": "",
      "abstract": "A new generation of mobile touch devices, such as the iPhone,\r\nAndroid and iPad, are equipped with powerful, modern browsers.\r\nHowever, regular websites are not optimized for the specific\r\nfeatures and constraints of these devices, such as limited\r\nscreen estate, unreliable Internet access, touch-based\r\ninteraction patterns, and features such as GPS. While recent\r\nadvances in web technology enable web developers to\r\nbuild web applications that take advantage of the unique\r\nproperties of mobile devices, developing such applications\r\nis not a clean, well-integrated experience. Developers are\r\nrequired to use many loosely coupled languages with limited\r\ntool support and application code is often verbose and\r\nimperative. We introduce mobl, a new language designed\r\nto declaratively construct mobile web applications. Mobl\r\nintegrates languages for user interface design, data modeling\r\nand querying, scripting and web services into a single,\r\nunified language that is flexible, expressive, enables early\r\ndetection of errors, and has good IDE support. We illustrate\r\nthe design of the language with the implementation of\r\nConfPlan, an application for keeping track of the schedule\r\nof conference events.",
      "url": "https://researchr.org/publication/HemelVisser2011A",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "models",
      "conferenceYear": "",
      "booktitle": "Models in Software Engineering, Workshops and Symposia at MoDELS 2007, Nashville, TN, USA, September 30 - October 5, 2007, Reports and Revised Selected Papers",
      "volume": "5002",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/holger-giese",
            "id": "4a69e75b-f301-4349-ada8-c93a4ca58a5a",
            "key": "holger-giese",
            "name": "Holger Giese"
          }
        }
      ],
      "firstpage": 34,
      "lastpage": 46,
      "id": "e9b0e084-565d-4e41-891b-75ba447623d0",
      "key": "BravenboerV07",
      "title": "Designing Syntax Embeddings and Assimilations for Language Libraries",
      "month": "",
      "year": "2007",
      "doi": "http://dx.doi.org/10.1007/978-3-540-69073-3_5",
      "note": "",
      "abstract": "Language libraries extend regular libraries with domain-specific notation. More precisely, a language library is a combination of a domain-specific language embedded in the general-purpose host language, a regular library implementing the underlying functionality, and an assimilation transformation that maps embedded DSL fragments to host language code. While the basic architecture for realizing language libraries is the same for all applications, there are many design choices to be made in the design of a particular combination of library, guest language syntax, host language, and assimilation. In this paper, we give an overview of the design space for syntax embeddings and assimilations for the realization of language libraries. ",
      "url": "https://researchr.org/publication/BravenboerV07",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/martin-bravenboer",
            "id": "d43052f6-9073-47d6-98d0-b38cb940c618",
            "key": "martin-bravenboer",
            "name": "Martin Bravenboer"
          },
          "person": {
            "url": "https://researchr.org/profile/martinbravenboer",
            "id": "629a35fe-abf1-4cd3-ad19-ae3021609c90",
            "key": "martinbravenboer",
            "fullname": "Martin  Bravenboer"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "article",
      "journal": "IEEE Software",
      "volumenumber": "27",
      "issuenumber": "5",
      "firstpage": 0,
      "lastpage": 0,
      "id": "ee143ab7-9c84-4e9b-8bec-4561750c52f5",
      "key": "GroenewegenHV-IEEESW-2010",
      "title": "Separation of Concerns and Linguistic Integration in WebDSL",
      "month": "September/October",
      "year": "2010",
      "doi": "http://dx.doi.org/10.1109/MS.2010.92",
      "note": "",
      "abstract": "WebDSL is a domain-\r\nspecific language\r\nfor Web information\r\nsystems that\r\nmaintains separation\r\nof concerns while\r\nintegrating its\r\nsublanguages,\r\nenabling consistency\r\nchecking and\r\nreusing common\r\nlanguage concepts.",
      "url": "https://researchr.org/publication/GroenewegenHV-IEEESW-2010",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/danny-m.-groenewegen",
            "id": "46cf4818-8ce7-4644-9ee1-414e4c4960e7",
            "key": "danny-m.-groenewegen",
            "name": "Danny M. Groenewegen"
          },
          "person": {
            "url": "https://researchr.org/profile/dannymgroenewegen",
            "id": "f50a3666-08fe-4b30-9734-181aed455bb1",
            "key": "dannymgroenewegen",
            "fullname": "Danny M.  Groenewegen"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/zef-hemel",
            "id": "7816809a-e2e6-42c6-8c44-481a821fb0bd",
            "key": "zef-hemel",
            "name": "Zef Hemel"
          },
          "person": {
            "url": "https://researchr.org/profile/zefhemel",
            "id": "947901fa-e910-454b-8546-c514c5a191be",
            "key": "zefhemel",
            "fullname": "Zef  Hemel"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    },
    {
      "type": "inproceedings",
      "conference": "cc",
      "conferenceYear": "2009",
      "booktitle": "Compiler Construction, 18th International Conference, CC 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings",
      "volume": "5501",
      "number": "",
      "series": "Lecture Notes in Computer Science",
      "address": "",
      "organization": "",
      "publisher": "Springer",
      "editors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/oege-de-moor",
            "id": "23153e23-c6bd-434a-9197-e5b6c0d878fa",
            "key": "oege-de-moor",
            "name": "Oege de Moor"
          },
          "person": {
            "url": "https://researchr.org/profile/oegedemoor",
            "id": "5991e76d-b9a7-4b37-b08a-c72d4c05db58",
            "key": "oegedemoor",
            "fullname": "Oege de Moor"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/michael-i.-schwartzbach",
            "id": "55b2c00c-f58d-4303-b161-0f5fbede2eb8",
            "key": "michael-i.-schwartzbach",
            "name": "Michael I. Schwartzbach"
          },
          "person": {
            "url": "https://researchr.org/profile/michaelischwartzbach",
            "id": "506c63b4-7861-4301-8905-29b7620b6473",
            "key": "michaelischwartzbach",
            "fullname": "Michael I. Schwartzbach"
          }
        }
      ],
      "firstpage": 142,
      "lastpage": 157,
      "id": "fc5d00ce-4f71-4d82-ac2e-56221181deae",
      "key": "KatsSV09",
      "title": "Decorated Attribute Grammars: Attribute Evaluation Meets Strategic Programming",
      "month": "",
      "year": "2009",
      "doi": "http://dx.doi.org/10.1007/978-3-642-00722-4_11",
      "note": "",
      "abstract": "Attribute grammars are a powerful specification formalism for tree-based computation, particularly for software language processing. Various extensions have been proposed to abstract over common patterns in attribute grammar specifications. These include various forms of copy rules to support non-local dependencies, collection attributes, and expressing dependencies that are evaluated to a fixed point. Rather than implementing extensions natively in an attribute evaluator, we propose attribute decorators that describe an abstract evaluation mechanism for attributes, making it possible to provide such extensions as part of a library of decorators. Inspired by strategic programming, decorators are specified using generic traversal operators. To demonstrate their effectiveness, we describe how to employ decorators in name, type, and flow analysis. ",
      "url": "https://researchr.org/publication/KatsSV09",
      "authors": [
        {
          "alias": {
            "url": "https://researchr.org/alias/lennart-c.-l.-kats",
            "id": "f6b6789b-a32a-417c-a90e-c37a12f25728",
            "key": "lennart-c.-l.-kats",
            "name": "Lennart C. L. Kats"
          },
          "person": {
            "url": "https://researchr.org/profile/lennartclkats",
            "id": "6e29bb96-28c9-4c76-915d-160ef1947602",
            "key": "lennartclkats",
            "fullname": "Lennart C. L. Kats"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/anthony-m.-sloane",
            "id": "4cebde5d-1a0c-46b4-abdc-cd51b77b3c88",
            "key": "anthony-m.-sloane",
            "name": "Anthony M. Sloane"
          },
          "person": {
            "url": "https://researchr.org/profile/anthonymsloane",
            "id": "30f25bf3-1656-4413-9a94-659dd3ba4ded",
            "key": "anthonymsloane",
            "fullname": "Anthony M. Sloane"
          }
        },
        {
          "alias": {
            "url": "https://researchr.org/alias/eelco-visser",
            "id": "f68ba0ee-899e-4c4c-9d8a-6fed5092830a",
            "key": "eelco-visser",
            "name": "Eelco Visser"
          },
          "person": {
            "url": "https://researchr.org/profile/eelcovisser",
            "id": "f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b",
            "key": "eelcovisser",
            "fullname": "Eelco Visser"
          }
        }
      ]
    }
  ]
}