{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","publications":[{"abstract":"The reverse and reengineering research communities have a strong tradition of collecting, organizing, and unifying research results. Typical examples include an explicit taxonomy, dedicated web sites, an annotated bibliography, as well as efforts in exchange formats and tool evaluation. In this paper we describe and evaluate the use of a web authoring system to integrate such efforts. To that end, we propose the \"Reengineering Wiki\", which uses Wiki technology to enable web site visitors themselves to maintain and organize pages devoted to their topics of interest. This paper covers web authoring criteria, an introduction to wiki technology, typical wiki usage, and an evaluation of wiki-based systems. Moreover, the paper discusses the organization and contents of the Reengineering Wiki, and concludes with an invitation to participate in the Reengineering Wiki project.","conferenceYear":"","series":"","lastpage":220,"booktitle":"6th European Conference on Software Maintenance and Reengineering (CSMR 2002), 11-13 March 2002, Budapest, Hungary, Proceedings","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/DeursenV02","firstpage":217,"publisher":"IEEE Computer Society","id":"14ae9b8a-c29a-414d-94ef-a948160ea634","authors":[{"person":{"id":"5e9231bc-7344-4887-b4ed-688c0bf897eb","fullname":"Arie  van Deursen","key":"arievandeursen","url":"http://researchr.org/profile/arievandeursen"},"alias":{"id":"31e0f562-35ad-4860-b7fb-43c609ae5fc7","name":"Arie van Deursen","key":"arie-van-deursen","url":"http://researchr.org/alias/arie-van-deursen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Reengineering Wiki","organization":"","address":"","month":"","volume":"","year":"2002","conference":"csmr","note":"","doi":"http://csdl.computer.org/comp/proceedings/csmr/2002/1438/00/14380217abs.htm","key":"DeursenV02"},{"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","conferenceYear":"","series":"","lastpage":188,"booktitle":"Proceedings of the Eighth International Conference on Web Engineering, ICWE 2008, 14-18 July 2008, Yorktown Heights, New York, USA","number":"","editors":[{"alias":{"id":"2d04b4d6-1f36-42d7-9ed5-cf3eb57476ab","name":"Daniel Schwabe","key":"daniel-schwabe","url":"http://researchr.org/alias/daniel-schwabe"}},{"alias":{"id":"0de9c4c8-6721-462d-bd06-379db775070f","name":"Francisco Curbera","key":"francisco-curbera","url":"http://researchr.org/alias/francisco-curbera"}},{"alias":{"id":"e6f58540-1442-46a5-bcd0-1142327d1f5f","name":"Paul Dantzig","key":"paul-dantzig","url":"http://researchr.org/alias/paul-dantzig"}}],"type":"inproceedings","url":"http://researchr.org/publication/GroenewegenV08","firstpage":175,"publisher":"IEEE","id":"8e9937b6-ec04-40f1-ae0b-0658da576d24","authors":[{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"46cf4818-8ce7-4644-9ee1-414e4c4960e7","name":"Danny M. Groenewegen","key":"danny-m.-groenewegen","url":"http://researchr.org/alias/danny-m.-groenewegen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Declarative Access Control for WebDSL: Combining Language Integration and Separation of Concerns","organization":"","address":"","month":"","volume":"","year":"2008","conference":"icwe","note":"","doi":"http://dx.doi.org/10.1109/ICWE.2008.15","key":"GroenewegenV08"},{"abstract":"During the development of the ASF+SDF compiler it became clear that a simplification of the back-end could be achieved by eliminating associative lists and conditional equations in an early phase of compilation. In this thesis the transformation of conditional equational term rewrite systems with \\em associative lists to term rewrite systems without lists is described by means of an algebraic specification. To make as much of the specification reusable the specification is written in a style called {\\em Combinatory Algebraic Specification}. In this style it is possible to define polymorphic higher-order functions (or combinators) and use these as arguments to functions and as results of computations. Using this style a vast library of general purpose combinators is developed. The specification of the combinatory language, the library of combinators and the specification of the transformation are written in a \\em Literate Specification style, meaning that the specification and the text explaining it are integrated.","id":"b18ccfd4-a01e-45a2-990d-262676197e5f","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Combinatory Algebraic Specification & Compilation of List Matching","month":"June","year":"1993","url":"http://researchr.org/publication/Visser%3A1993","note":"","doi":"","key":"Visser:1993"},{"abstract":"Program transformation is used in a wide range of applications including compiler \r\nconstruction, optimization, program synthesis, refactoring, software renovation, and \r\nreverse engineering. Complex program transformations are achieved through a num- \r\nber of consecutive modiﬁcations of a program. Transformation rules deﬁne basic \r\nmodiﬁcations. A transformation strategy is an algorithm for choosing a path in \r\nthe rewrite relation induced by a set of rules. This paper surveys the support for \r\nthe deﬁnition of strategies in program transformation systems. After a discussion \r\nof kinds of program transformation and choices in program representation, the \r\nbasic elements of a strategy system are discussed and the choices in the design of a \r\nstrategy language are considered. Several styles of strategy systems as provided in \r\nexisting languages are then analyzed.","lastpage":0,"type":"article","url":"http://researchr.org/publication/Visser01%3AWRS","firstpage":0,"issuenumber":"","journal":"Electr. Notes Theor. Comput. Sci.","id":"2960d3a8-d4be-4e59-9428-4d9b25b00242","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A Survey of Strategies in Program Transformation Systems","month":"","volumenumber":"57","year":"2001","note":"","key":"Visser01:WRS","doi":"http://www.elsevier.nl/locate/entcs/volume57.html"},{"abstract":"Program generation and transformation systems work on two language levels, the object-level (i.e., the language of the manipulated programs), and the meta-level (i.e., the implementation language of the system itself). The meta-level representations of object-level program fragments are usually built in an essentially syntax-free fashion using the operations provided by the meta-language. However, syntax matters and a large conceptual distance between the two languages makes it difficult to maintain and extend such systems. Here we describe how an existing Prolog-based system can gradually be retrofitted with concrete object-level syntax using the approach outlined in [5], thus shrinking this distance.","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":58,"booktitle":"Logic Based Program Synthesis and Transformation, 13th International Symposium LOPSTR 2003, Uppsala, Sweden, August 25-27, 2003, Revised Selected Papers","number":"","editors":[{"alias":{"id":"5120437c-c943-4a77-a07d-a96dd5642a76","name":"Maurice Bruynooghe","key":"maurice-bruynooghe","url":"http://researchr.org/alias/maurice-bruynooghe"}}],"type":"inproceedings","url":"http://researchr.org/publication/FischerV03%3A0","firstpage":56,"publisher":"Springer","id":"44166c37-164c-40e8-9589-1f10fb04612c","authors":[{"person":{"id":"10b8c928-1c71-4ef2-983c-d919e30bd25c","fullname":"Bernd  Fischer","key":"berndfischer","url":"http://researchr.org/profile/berndfischer"},"alias":{"id":"231729d8-d690-4294-8a00-8c6bb24204d8","name":"Bernd Fischer","key":"bernd-fischer","url":"http://researchr.org/alias/bernd-fischer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Adding Concrete Syntax to a Prolog-Based Program Synthesis System (Extended Abstract)","organization":"","address":"","month":"","volume":"3018","year":"2003","conference":"lopstr","note":"","doi":"http://springerlink.metapress.com/openurl.asp?genre=article&amp;issn=0302-9743&amp;volume=3018&amp;spage=56","key":"FischerV03:0"},{"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.","conferenceYear":"","series":"","lastpage":0,"booktitle":"Proceedings of the 8th OOPSLA Workshop on Domain Specific Modelling (DSM'08)","number":"","editors":[{"person":{"id":"474ab36e-49c3-4f85-aa00-417d49005952","fullname":"Jeffrey G. Gray","key":"jeffgray","url":"http://researchr.org/profile/jeffgray"},"alias":{"id":"fefac3e9-8142-40df-9285-12943249e210","name":"Jeff Gray","key":"jeff-gray","url":"http://researchr.org/alias/jeff-gray"}},{"alias":{"id":"16e79076-7883-45fe-90fc-0c3977c3d347","name":"Jonathan Sprinkle","key":"jonathan-sprinkle","url":"http://researchr.org/alias/jonathan-sprinkle"}},{"person":{"id":"6db1c895-c1d2-4236-8222-8a3a2f75a3fa","fullname":"Juha-Pekka Tolvanen","key":"juhapekkatolvanen","url":"http://researchr.org/profile/juhapekkatolvanen"},"alias":{"id":"b80a1d8a-78dc-416b-94f1-8f8a509c89d1","name":"Juha-Pekka Tolvanen","key":"juha-pekka-tolvanen","url":"http://researchr.org/alias/juha-pekka-tolvanen"}},{"alias":{"id":"742d5829-d5fa-4b91-9401-13da2172a210","name":"Matti Rossi","key":"matti-rossi","url":"http://researchr.org/alias/matti-rossi"}}],"type":"inproceedings","url":"http://researchr.org/publication/GroenewegenHKV08-DSM","firstpage":0,"publisher":"","id":"905a355c-2b70-4656-b9db-f4dd7c2eaa19","authors":[{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"46cf4818-8ce7-4644-9ee1-414e4c4960e7","name":"Danny M. Groenewegen","key":"danny-m.-groenewegen","url":"http://researchr.org/alias/danny-m.-groenewegen"}},{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"When Frameworks Let You Down. Platform-Imposed Constraints on the Design and Evolution of Domain-Specific Languages","organization":"","address":"Nashville, Tennessee, USA","month":"October","volume":"","year":"2008","conference":"DSM","note":"","doi":"","key":"GroenewegenHKV08-DSM"},{"abstract":"Priority and associativity declarations are used to disambiguate ambiguous fragments of context-free grammars. Usually this concerns expression grammars. It is possible to describe the same language by means of an ambiguous context-free grammar only, but using auxiliary non-terminals and extra chain productions resulting in a grammar that generates different and larger trees and extra parse steps.\r\n\r\nIn this paper we introduce a grammar transformation that translates a context-free grammar with priorities to a character class grammar that does only generate trees without priority conflicts. The transformed grammar has the property that each production corresponds to a production in the original grammar and that no extra productions are used. The parse trees over the transformed grammar are therefore isomorphic to parse trees over the original grammar.","id":"3dcfeaf7-d541-4412-97d5-0883e2612a0b","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"From Context-free Grammars with\r\nPriorities to Character Class Grammars","month":"October","year":"1997","url":"http://researchr.org/publication/Visser1997-CCG","note":"","doi":"","key":"Visser1997-CCG"},{"abstract":"Many language processing operations have a generic underlying algorithm. However,\r\nthese generic algorithms either have to be implemented specifically for the language\r\nunder consideration or the language needs to be encoded in a generic format that the\r\ngeneric algorithm works on.  Stratego is a language for program transformation that\r\nsupports both specific and generic views of data types.\r\n\r\nA Stratego program defines a transformation on first-order ground\r\nterms. Transformation rules define single transformation steps. Transformation rules\r\nare combined into transformation \\emph{strategies} by means of combinators that\r\ndetermine where and in what order rules are applied.  These combinators include:\r\nprimitives for traversal to the direct subterms of a node, allowing the definition of\r\nmany kinds of full term traversals; full control over recursion in traversals;\r\npatterns as first-class citizens; generic term construction and deconstruction.\r\n\r\nThese features create a setting in which it is possible to combine generic traversal\r\nwith data type specific pattern matching, and separating logic (transformation,\r\npattern matching) from control (traversal).  This makes it possible to give language\r\nindependent descriptions of language processing operations that can be instantiated\r\nto a specific language by providing the patterns of the relevant constructs. These\r\ngeneric algorithms only touch relevant constructors and do not need to know the\r\nentire datatype, making the algorithms insensitive to changes in the abstract syntax\r\nthat do not affect the constructors relevant to the operation.\r\n\r\nStratego is currently implemented by compilation to C code.  All constructs of the\r\nlanguage are implemented directly, i.e., the compiled program is as large as the\r\nspecification, in contrast to approaches that rely on preprocessing or program\r\ngeneration which may have a scaling problem when dealing with large languages.\r\n\r\nThe approach to generic programming in Stratego is illustrated by means of several\r\nexamples including free variable extraction, bound variable renaming, substitution\r\nand syntactic unification.","conferenceYear":"","series":"","booktitle":"Workshop on Generic Programming (WGP 2000)","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/Vis00","firstpage":0,"publisher":"Technical Report UU-CS-2000-19, Department of Information and Computing Sciences, Universiteit Utrecht","id":"622abc06-f22c-42df-b722-29d488a79240","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Language Independent Traversals for Program Transformation","organization":"","address":"Ponte de Lima, Portugal","month":"July","volume":"","year":"2000","conference":"","note":"","doi":"","key":"Vis00"},{"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. ","conferenceYear":"2009","series":"Lecture Notes in Computer Science","lastpage":157,"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","number":"","editors":[{"person":{"id":"5991e76d-b9a7-4b37-b08a-c72d4c05db58","fullname":"Oege de Moor","key":"oegedemoor","url":"http://researchr.org/profile/oegedemoor"},"alias":{"id":"23153e23-c6bd-434a-9197-e5b6c0d878fa","name":"Oege de Moor","key":"oege-de-moor","url":"http://researchr.org/alias/oege-de-moor"}},{"person":{"id":"506c63b4-7861-4301-8905-29b7620b6473","fullname":"Michael I. Schwartzbach","key":"michaelischwartzbach","url":"http://researchr.org/profile/michaelischwartzbach"},"alias":{"id":"55b2c00c-f58d-4303-b161-0f5fbede2eb8","name":"Michael I. Schwartzbach","key":"michael-i.-schwartzbach","url":"http://researchr.org/alias/michael-i.-schwartzbach"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsSV09","firstpage":142,"publisher":"Springer","id":"fc5d00ce-4f71-4d82-ac2e-56221181deae","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Decorated Attribute Grammars: Attribute Evaluation Meets Strategic Programming","organization":"","address":"","month":"","volume":"5501","year":"2009","conference":"cc","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-00722-4_11","key":"KatsSV09"},{"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.","id":"f9b96a7f-7f49-4baf-9d61-9ce8ec5c8377","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Preventing injection attacks with syntax embeddings","month":"July","year":"2010","url":"http://researchr.org/publication/preprint-BravenboerDV-SCP-2009","note":"","doi":"","key":"preprint-BravenboerDV-SCP-2009"},{"abstract":"Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. It provides a comprehensive environment that integrates syntax definition, program transformation, code generation, and declarative specification of IDE components.","conferenceYear":"","series":"","lastpage":238,"booktitle":"Companion to the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, SPLASH/OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA","number":"","editors":[{"person":{"id":"7f55f747-1ff4-4fa3-85ea-b40e083546b5","fullname":"William R. Cook","key":"williamrcook","url":"http://researchr.org/profile/williamrcook"},"alias":{"id":"9a3ff127-3980-45d1-8b6b-baa769285bbc","name":"William R. Cook","key":"william-r.-cook","url":"http://researchr.org/alias/william-r.-cook"}},{"person":{"id":"ed27bbb0-cb5a-499a-a50b-f5a211ae3647","fullname":"Siobhán Clarke","key":"siobhnclarke","url":"http://researchr.org/profile/siobhnclarke"},"alias":{"id":"fc121095-62be-4b66-9cb4-23b9ec7fb533","name":"Siobhán Clarke","key":"siobhán-clarke","url":"http://researchr.org/alias/siobh%C3%A1n-clarke"}},{"alias":{"id":"503be362-fe58-475e-81c6-7763a1803fb6","name":"Martin C. Rinard","key":"martin-c.-rinard","url":"http://researchr.org/alias/martin-c.-rinard"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsV10a","firstpage":237,"publisher":"ACM","id":"22fbd667-0bbf-46fa-b124-ee5c8c27d154","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Spoofax language workbench (poster paper)","organization":"","address":"","month":"","volume":"","year":"2010","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1869542.1869592","key":"KatsV10a"},{"abstract":"","id":"6e088d57-d727-4a42-9fec-8cf60e2e28b6","authors":[{"alias":{"id":"e70b2003-21df-4f2e-8664-2f5accf05f81","name":"J. van Wijngaarden","key":"j.-van-wijngaarden","url":"http://researchr.org/alias/j.-van-wijngaarden"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"412320fa-df42-44b8-bcc7-71dd6057a3ec","name":"E. Visser","key":"e.-visser","url":"http://researchr.org/alias/e.-visser"}}],"title":"Program Transformation Mechanics. A Classification of Mechanisms for Program Transformation with a Survey of Existing Transformation Systems","month":"","year":"2003","url":"http://researchr.org/publication/WijngaardenVisser2003","note":"","doi":"","key":"WijngaardenVisser2003"},{"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","id":"4ccb100a-01b4-4996-b4ac-d86402c6722e","authors":[{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"An Algorithm for Layout Preservation in Refactoring Transformations","month":"August","year":"2011","url":"http://researchr.org/publication/DeJongeVisser2012-TUD-SERG-2011-027","note":"","doi":"","key":"DeJongeVisser2012-TUD-SERG-2011-027"},{"abstract":"Programming language semantics based on pure rewrite rules suﬀers from the gap \r\nbetween the rewriting strategy implemented in rewriting engines and the intended \r\nevaluation strategy. This paper shows how programmable rewriting strategies can \r\nbe used to implement interpreters for programming languages based on rewrite \r\nrules. The advantage of this approach is that reduction rules are ﬁrst class entities \r\nthat can be reused in diﬀerent strategies, even in other kinds of program transfor- \r\nmations such as optimizers. The approach is illustrated with several interpreters for \r\nthe lambda calculus based on implicit and explicit (parallel) substitution, diﬀerent \r\nstrategies including normalization, eager evaluation, lazy evaluation, and lazy eval- \r\nuation with updates. An extension with pattern matching and choice shows that \r\nsuch interpreters can easily be extended.","lastpage":0,"type":"article","url":"http://researchr.org/publication/DolstraV02","firstpage":0,"issuenumber":"3","journal":"Electr. Notes Theor. Comput. Sci.","id":"7f592469-182e-43c4-83a9-a6fcfa72fb23","authors":[{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Building Interpreters with Rewriting Strategies","month":"","volumenumber":"65","year":"2002","note":"","key":"DolstraV02","doi":"http://www.elsevier.com/gej-ng/31/29/23/117/52/show/Products/notes/index.htt#007"},{"abstract":"The transformation language Stratego provides high-level abstractions for implementation of a wide range of transformations. Our aim is to integrate transformation in the software development process and make it available to programmers. This requires the transformations provided by the programming environment to be extensible. This paper presents a case study in the implementation of extensible programming environments using Stratego, by developing a small collection of language extensions and several typical transformations for these languages.","conferenceYear":"","series":"","lastpage":0,"booktitle":"5th IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2005), 30 September - 1 October 2005, Budapest, Hungary","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/Visser-SCAM-2005","firstpage":0,"publisher":"IEEE Computer Society","id":"9beeda2c-2448-4895-88e5-1274f39b3fe3","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Transformations for Abstractions","organization":"","address":"","month":"October","volume":"","year":"2005","conference":"SCAM","note":"","doi":"http://dx.doi.org/10.1109/SCAM.2005.26","key":"Visser-SCAM-2005"},{"abstract":"","conferenceYear":"","series":"Electronic Notes in Theoretical Computer Science","booktitle":"Proceedings of the Seventh Workshop on Language Descriptions, Tools and Applications (LDTA 2007)","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/KV07.spoofax","firstpage":0,"publisher":"Elsevier","id":"630d8e0f-e5f6-4f0f-ae4a-5a2ac6197506","authors":[{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Spoofax: An Interactive Development Environment for Program Transformation with Stratego/XT","organization":"","address":"Braga, Portugal","month":"March","volume":"","year":"2007","conference":"","note":"","doi":"","key":"KV07.spoofax"},{"abstract":"Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable transformation components, and tools for generating such components from declarative specifications. Complete program transformation systems are composed from these components.","lastpage":70,"type":"article","url":"http://researchr.org/publication/BravenboerKVV08","firstpage":52,"issuenumber":"1-2","journal":"Sci. Comput. Program.","id":"a6da54f9-956a-4574-854c-6f0f3aee1618","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f6aa2423-57ab-44c6-909c-dd1d19dfbe85","fullname":"Rob Vermaas","key":"robvermaas","url":"http://researchr.org/profile/robvermaas"},"alias":{"id":"6a38d57e-6acc-4105-be50-25e9b31b00fa","name":"Rob Vermaas","key":"rob-vermaas","url":"http://researchr.org/alias/rob-vermaas"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Stratego/XT 0.17. A language and toolset for program transformation","month":"","volumenumber":"72","year":"2008","note":"","key":"BravenboerKVV08","doi":"http://dx.doi.org/10.1016/j.scico.2007.11.003"},{"abstract":"Current deterministic parsing techniques have a number of problems. These \r\ninclude the limitations of parser generators for deterministic languages and the \r\ncomplex interface between scanner and parser. Scannerless parsing is a parsing technique in which lexical and context-free syntax are integrated into one \r\ngrammar and are all handled by a single context-free analysis phase. This approach has a number of advantages including discarding of the scanner and \r\nlexical disambiguation by means of the context in which a lexical token occurs,\r\nScannerless parsing generates a number of interesting problems as well. Integrated grammars do not fit the requirements of the conventional deterministic \r\nparsing techniques. A plain context-free grammar formalism leads to unwieldy \r\ngrammars. if all lexical information is included. Lexical disambiguation needs \r\nto be reformulated for use in context-free parsing.\r\n \r\nThe scannerless generalized-LR parsing approach presented in this paper \r\nsolves these problems. Grammar normalization is used to support an expressive \r\ngrammar formalism without complicating the underlying machinery. Follow restrictions are used to express longest match lexical disambiguation. Reject productions are used to express the prefer keywords rule for lexical disambiguation. The SLR parser generation algorithm is adapted to implement disambiguation by general priority and associativity declarations and to interpret follow restrictions. Generalized-LR parsing is used to provide dynamic lookahead and \r\nto support parsing of arbitrary context-free grammars including ambiguous ones.\r\nAn adaptation of the GLR algorithm supports the interpretation of grammars \r\nwith reject productions.\r\n","id":"f45971f5-71a4-4560-9b8b-b95ed82dfa5a","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Scannerless Generalized-LR Parsing","month":"July","year":"1997","url":"http://researchr.org/publication/Vis97.sglr","note":"","doi":"","key":"Vis97.sglr"},{"abstract":"User-deﬁnable strategies for the application of rewrite rules provide a means to construct transformation systems that \r\napply rewrite rules in a controlled way. This paper describes a strategy language and its interpretation. The language \r\nis used to control the rewriting of terms using labeled rewrite rules. Rule labels are atomic strategies. Compound \r\nstrategies are formed by means of sequential composition, nondeterministic choice, left choice, ﬁxed point recursion, \r\nand two primitives for expressing term traversal. Several complex strategies such as bottom-up and top-down applica- \r\ntion and (parallel) innermost and (parallel) outermost reduction can be deﬁned in terms of these primitives. The paper \r\ncontains two case studies of the application of strategies. ","conferenceYear":"","series":"Electronic Workshops in Computing","lastpage":0,"booktitle":"2nd International Workshop on the Theory and Practice of Algebraic Specifications (ASF+SDF 1997)","number":"","editors":[{"alias":{"id":"8c4e1fb3-f8c6-4d2c-ba6d-3d5c715e1ba9","name":"M. P. A. Sellink","key":"m.-p.-a.-sellink","url":"http://researchr.org/alias/m.-p.-a.-sellink"}}],"type":"inproceedings","url":"http://researchr.org/publication/LV97","firstpage":0,"publisher":"Springer-Verlag","id":"70289778-dec1-4366-b4e7-a6981a245acb","authors":[{"person":{"id":"e1825185-91ff-4c75-ac6e-404158585c50","fullname":"Bas Luttik","key":"basluttik","url":"http://researchr.org/profile/basluttik"},"alias":{"id":"5844e345-452e-4a03-b49c-8cc7b1cfde30","name":"Luttik, Bas","key":"luttik,-bas","url":"http://researchr.org/alias/luttik%2C-bas"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Specification of Rewriting Strategies","organization":"","address":"Berlin","month":"November","volume":"","year":"1997","conference":"ASF+SDF","note":"","doi":"","key":"LV97"},{"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.","conferenceYear":"","series":"","lastpage":712,"booktitle":"Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, OOPSLA 2011","number":"","editors":[{"person":{"id":"cb10db3c-8c94-4190-ba6b-c0a09d673b01","fullname":"Kathleen Fisher","key":"kathleenfisher","url":"http://researchr.org/profile/kathleenfisher"},"alias":{"id":"e0e131f2-6a9a-4b6c-804b-058cdfb5d2e2","name":"Kathleen Fisher","key":"kathleen-fisher","url":"http://researchr.org/alias/kathleen-fisher"}},{"person":{"id":"59a2d3a5-8c38-4bee-a335-d0518f11800f","fullname":"Cristina Videira  Lopes","key":"cristinavideiralopes","url":"http://researchr.org/profile/cristinavideiralopes"},"alias":{"id":"7e59d9ab-6822-40bf-8bc6-7a614a58ef35","name":"Cristina Videira Lopes","key":"cristina-videira-lopes","url":"http://researchr.org/alias/cristina-videira-lopes"}}],"type":"inproceedings","url":"http://researchr.org/publication/HemelVisser2011","firstpage":695,"publisher":"ACM","id":"2ebe76b5-a270-4532-a875-26d39aa3efe6","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Declaratively Programming the Mobile Web with Mobl","organization":"","address":"New York, NY, USA","month":"","volume":"","year":"2011","conference":"OOPSLA","note":"","doi":"http://dx.doi.org/10.1145/2048066.2048121","key":"HemelVisser2011"},{"abstract":"The reliability of implementations of language definitions\r\n\u2013 compilers, interpreters, and development environments \u2013\r\nis essential for effective software development and maintenance.\r\nThey are often tested only as an afterthought.\r\nLanguages with a smaller scope, such as domain-specific\r\nlanguages, often remain untested. General-purpose testing\r\ntechniques and test case generation methods fall short in\r\nproviding a low-threshold solution for test-driven language\r\ndevelopment. In this paper we introduce the notion of a\r\nlanguage-parametric testing language (LPTL) that provides\r\na reusable, generic basis for declaratively specifying language\r\ndefinition tests. We integrate the syntax, semantics,\r\nand editor services of a language under test into the LPTL\r\nfor writing test inputs. This paper describes the design of an\r\nLPTL and the tool support provided for it, shows use cases\r\nusing examples, and describes our implementation in the\r\nform of the Spoofax testing language.","conferenceYear":"","series":"","lastpage":154,"booktitle":"Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, OOPSLA 2011","number":"","editors":[{"person":{"id":"cb10db3c-8c94-4190-ba6b-c0a09d673b01","fullname":"Kathleen Fisher","key":"kathleenfisher","url":"http://researchr.org/profile/kathleenfisher"},"alias":{"id":"e0e131f2-6a9a-4b6c-804b-058cdfb5d2e2","name":"Kathleen Fisher","key":"kathleen-fisher","url":"http://researchr.org/alias/kathleen-fisher"}},{"person":{"id":"59a2d3a5-8c38-4bee-a335-d0518f11800f","fullname":"Cristina Videira  Lopes","key":"cristinavideiralopes","url":"http://researchr.org/profile/cristinavideiralopes"},"alias":{"id":"7e59d9ab-6822-40bf-8bc6-7a614a58ef35","name":"Cristina Videira Lopes","key":"cristina-videira-lopes","url":"http://researchr.org/alias/cristina-videira-lopes"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsVermaasVisser2011","firstpage":139,"publisher":"ACM","id":"85e3f105-2114-4d24-bc34-d7acc4cb9e2b","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f6aa2423-57ab-44c6-909c-dd1d19dfbe85","fullname":"Rob Vermaas","key":"robvermaas","url":"http://researchr.org/profile/robvermaas"},"alias":{"id":"6a38d57e-6acc-4105-be50-25e9b31b00fa","name":"Rob Vermaas","key":"rob-vermaas","url":"http://researchr.org/alias/rob-vermaas"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Integrated Language Definition Testing. Enabling Test-Driven Language Development","organization":"","address":"New York, NY, USA","month":"","volume":"","year":"2011","conference":"OOPSLA","note":"","doi":"http://dx.doi.org/10.1145/2048066.2048080","key":"KatsVermaasVisser2011"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":243,"booktitle":"Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers","number":"","editors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"892937c7-d9f9-49a8-89e6-734b1fb47253","fullname":"Dragan Gasevic","key":"dragangasevic","url":"http://researchr.org/profile/dragangasevic"},"alias":{"id":"4e952583-7834-4817-8b6e-04feaa97fad9","name":"Dragan Gasevic","key":"dragan-gasevic","url":"http://researchr.org/alias/dragan-gasevic"}},{"person":{"id":"474ab36e-49c3-4f85-aa00-417d49005952","fullname":"Jeffrey G. Gray","key":"jeffgray","url":"http://researchr.org/profile/jeffgray"},"alias":{"id":"fefac3e9-8142-40df-9285-12943249e210","name":"Jeff Gray","key":"jeff-gray","url":"http://researchr.org/alias/jeff-gray"}}],"type":"inproceedings","url":"http://researchr.org/publication/HemelV09","firstpage":224,"publisher":"Springer","id":"0e398fc9-9416-4e73-8782-33f2e8c242ad","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"PIL: A Platform Independent Language for Retargetable DSLs","organization":"","address":"","month":"","volume":"5969","year":"2009","conference":"sle","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-12107-4_17","key":"HemelV09"},{"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","conferenceYear":"2011","series":"","lastpage":0,"booktitle":"Software Language Engineering, Fourth International Conference, SLE 2011, Braga, Portugal, July, 2011, Revised Selected Papers","number":"","editors":[{"person":{"id":"f3c78505-3b84-442e-a8e0-0d4353c10c02","fullname":"Uwe  Aßmann","key":"uweamann","url":"http://researchr.org/profile/uweamann"},"alias":{"id":"8be162e1-1814-4d05-84fe-1bb5a2673f4d","name":"Uwe Assmann","key":"uwe-assmann","url":"http://researchr.org/alias/uwe-assmann"}},{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"a037cb7f-a2e6-4ee9-ad8a-8eff3c869696","name":"Tony Sloane","key":"tony-sloane","url":"http://researchr.org/alias/tony-sloane"}}],"type":"inproceedings","url":"http://researchr.org/publication/DeJongeVisser2012","firstpage":0,"publisher":"Springer","id":"7e253a2d-1a8f-4a92-95b3-45ebc816279d","authors":[{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"An Algorithm for Layout Preservation in Refactoring Transformations","organization":"","address":"","month":"","volume":"","year":"2012","conference":"SLE","note":"","doi":"","key":"DeJongeVisser2012"},{"abstract":"Traversals over the object structure are widely used in object-oriented\r\nprogramming, in particular in language processing applications. The vis-\r\nitor pattern separates computation from traversal by specifying the com-\r\nputations that should be performed at each object in a separate visitor\r\nclass. This makes the implementation of di\u000berent computations reusing\r\nthe same traversal scheme possible. However, navigation through the ob-\r\nject structure is \fxed in the accept methods implemented by the objects\r\nthat are traversed. This makes it di\u000ecult to use other navigation orders.\r\nIn this paper, we introduce the Guide pattern that describes the sep-\r\naration of navigation from computation and object structure using a\r\ndouble-dispatching iterator. The pattern makes it possible to implement\r\na whole range of navigation schemes for an object-structure. Using a self-\r\ndispatching approach based on re\r\nective method lookup such navigation\r\nschemes can be made reusable for whole classes of object-structures (im-\r\nplementing a common interface). The e\u000eciency of this approach is pro-\r\nvided by caching method lookups. We extend the approach to generic nav-\r\nigation through arbitrary object-structures using re\r\nective \feld lookup.\r\nThis results in a generalization of the Walkabout class of Palsberg and\r\nJay with a huge performance improvement in Java, making the Walka-\r\nbout usable in practice.","id":"7474af0d-d44e-4282-a11f-b3b43dedeef5","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"c34fbe0a-721f-424f-bc79-bde11bfd9097","name":"Bravenboer, Martin ","key":"bravenboer,-martin","url":"http://researchr.org/alias/bravenboer%2C-martin"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Guiding visitors: separating navigation from computation","month":"","year":"2001","url":"http://researchr.org/publication/BravenboerVisser2001","note":"","doi":"","key":"BravenboerVisser2001"},{"abstract":"","lastpage":163,"type":"article","url":"http://researchr.org/publication/KatsKV10","firstpage":149,"issuenumber":"7","journal":"Electr. Notes Theor. Comput. Sci.","id":"8ec84981-9675-4f26-9421-274b6068e118","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Domain-Specific Languages for Composable Editor Plugins","month":"","volumenumber":"253","year":"2010","note":"","key":"KatsKV10","doi":"http://dx.doi.org/10.1016/j.entcs.2010.08.038"},{"abstract":"AUTOBAYES is a fully automatic, schema-based program synthesis \r\nsystem for statistical data analysis applications. Its core component is a schema \r\nlibrary, i.e., a collection of generic code templates with associated applicability \r\nconstraints which are instantiated in a problem-speciﬁc way during synthesis. \r\nCurrently, AUTOBAYE S is implemented in Prolog; the schemas thus use abstract \r\nsyntax (i.e., Prolog terms) to formulate the templates. However, the conceptual \r\ndistance between this abstract representation and the concrete syntax of the generated programs makes the schemas hard to create and maintain. \r\n\r\nIn this paper we describe how AUTOBAYE S is retroﬁtted with concrete syn- \r\ntax. We show how it is integrated into Prolog and describe how the seamless \r\ninteraction of concrete syntax fragments with AUTOBAYE S\u2019s remaining \u201clegacy\u201d \r\nmeta-programming kernel based on abstract syntax is achieved. We apply the \r\napproach to gradually migrate individual schemas without forcing a disruptive \r\nmigration of the entire system to a different meta-programming language. First \r\nexperiences show that a smooth migration can be achieved. Moreover, it can re- \r\nsult in a considerable reduction of the code size and improved readability of the \r\ncode. In particular, abstracting out fresh-variable generation and second-order \r\nterm construction allows the formulation of larger continuous fragments.","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":253,"booktitle":"Domain-Specific Program Generation, International Seminar, Dagstuhl Castle, Germany, March 23-28, 2003, Revised Papers","number":"","editors":[{"person":{"id":"ef3493a4-c823-43d6-b7d4-2a302d206e7e","fullname":"Christian Lengauer","key":"christianlengauer","url":"http://researchr.org/profile/christianlengauer"},"alias":{"id":"418346b7-d9f6-48b5-8f4d-55a344ab78fe","name":"Christian Lengauer","key":"christian-lengauer","url":"http://researchr.org/alias/christian-lengauer"}},{"person":{"id":"38f8a44a-60f3-472f-870d-68ed0ae161e8","fullname":"Don S. Batory","key":"donsbatory","url":"http://researchr.org/profile/donsbatory"},"alias":{"id":"57485cad-e284-4e71-b180-2b0878b3c28f","name":"Don S. Batory","key":"don-s.-batory","url":"http://researchr.org/alias/don-s.-batory"}},{"alias":{"id":"a1653a2a-1cf9-4ff3-8dfa-cb71f898a0c3","name":"Charles Consel","key":"charles-consel","url":"http://researchr.org/alias/charles-consel"}},{"person":{"id":"f85bed9a-ff64-4608-b607-1d8cb84a1d4a","fullname":"Martin Odersky","key":"martinodersky","url":"http://researchr.org/profile/martinodersky"},"alias":{"id":"4a0a243e-c2c5-4bb8-b69e-6c245cd64e3b","name":"Martin Odersky","key":"martin-odersky","url":"http://researchr.org/alias/martin-odersky"}}],"type":"inproceedings","url":"http://researchr.org/publication/FischerV03","firstpage":239,"publisher":"Springer","id":"727d24fc-16dc-4a77-9742-206441595283","authors":[{"person":{"id":"10b8c928-1c71-4ef2-983c-d919e30bd25c","fullname":"Bernd  Fischer","key":"berndfischer","url":"http://researchr.org/profile/berndfischer"},"alias":{"id":"231729d8-d690-4294-8a00-8c6bb24204d8","name":"Bernd Fischer","key":"bernd-fischer","url":"http://researchr.org/alias/bernd-fischer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Retrofitting the AutoBayes Program Synthesis System with Concrete Syntax","organization":"","address":"","month":"","volume":"3016","year":"2003","conference":"dagstuhl","note":"","doi":"http://springerlink.metapress.com/openurl.asp?genre=article&amp;issn=0302-9743&amp;volume=3016&amp;spage=239","key":"FischerV03"},{"abstract":"","lastpage":468,"type":"article","url":"http://researchr.org/publication/RamalingamV11","firstpage":467,"issuenumber":"6","journal":"Sci. Comput. Program.","id":"7ba1cb48-29e3-4b99-8b73-4f1720ccab9d","authors":[{"person":{"id":"e2bf0b18-2846-4f9a-a4ba-66b6db6f86d5","fullname":"Ganesan Ramalingam","key":"gramalingam","url":"http://researchr.org/profile/gramalingam"},"alias":{"id":"c804191a-322a-4e96-b82d-ef5b8a985c12","name":"G. Ramalingam","key":"g.-ramalingam","url":"http://researchr.org/alias/g.-ramalingam"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Special issue on Partial Evaluation and Program Manipulation (selected papers from PEPM 2007)","month":"June","volumenumber":"76","year":"2011","note":"","key":"RamalingamV11","doi":"http://dx.doi.org/10.1016/j.scico.2011.01.001"},{"abstract":"Array processing languages such as APL, Matlab and Octave rely on dynamic typechecking by the interpreter rather than static typechecking and are designed for user convenience with a syntax close to mathematical notation. Functions and operators are highly overloaded. The price to be paid for this flexibility is computational performance, since the run-time system is responsible for type checking, array shape determination, function call dispatching, and handling possible run-time errors. In order to produce effecient code, an Octave compiler should address those issues at compile-time as much as possible. In particular, static type and shape inferencing can improve the quality of the generated code. In this paper we discuss how overloading in dynamically typed Octave programs can be resolved by program specialization. We discuss the typing issues in compilation of Octave programs and give an overview of the implementation of the specializer in the transformation language Stratego.","conferenceYear":"","series":"","lastpage":150,"booktitle":"3rd IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003), 26-27 September 2003, Amsterdam, The Netherlands","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/OlmosV03","firstpage":141,"publisher":"IEEE Computer Society","id":"34bdf2c8-357c-4079-a9c6-91569d436f99","authors":[{"person":{"id":"3a540653-1069-400e-93e1-051060c87ab1","fullname":"Karina Olmos","key":"karinaolmos","url":"http://researchr.org/profile/karinaolmos"},"alias":{"id":"8e6fdae1-9b09-4e01-8a08-f1ac76e40742","name":"Karina Olmos","key":"karina-olmos","url":"http://researchr.org/alias/karina-olmos"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Turning Dynamic Typing into Static Typing by Program Specialization in a Compiler Front-end for Octave","organization":"","address":"","month":"","volume":"","year":"2003","conference":"scam","note":"","doi":"http://csdl.computer.org/comp/proceedings/scam/2003/2005/00/20050141abs.htm","key":"OlmosV03"},{"abstract":"","lastpage":219,"type":"article","url":"http://researchr.org/publication/SloaneKV10","firstpage":205,"issuenumber":"7","journal":"Electr. Notes Theor. Comput. Sci.","id":"fd753d87-3a72-4a03-99b0-b899ca62c1e1","authors":[{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A Pure Object-Oriented Embedding of Attribute Grammars","month":"","volumenumber":"253","year":"2010","note":"","key":"SloaneKV10","doi":"http://dx.doi.org/10.1016/j.entcs.2010.08.043"},{"abstract":"Stratego is a language for the specification of transformation rules and strategies for applying them. The basic actions of transformations are matching and building instantiations of first-order term patterns. The language supports concise formulation of generic and data type-specific term traversals. One of the unusual features of Stratego is the separation of scope from matching, allowing sharing of variables through traversals. The combination of first-order patterns with strategies forms an expressive formalism for pattern matching. In this paper we discuss three examples of strategic pattern matching: (1) Contextual rules allow matching and replacement of a pattern at an arbitrary depth of a subterm of the root pattern. (2) Recursive patterns can be used to characterize concisely the structure of languages that form a restriction of a larger language. (3) Overlays serve to hide the representation of a language in another (more generic) language. These techniques are illustrated by means of specifications in Stratego. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":44,"booktitle":"Rewriting Techniques and Applications, 10th International Conference, RTA-99, Trento, Italy, July 2-4, 1999, Proceedings","number":"","editors":[{"alias":{"id":"ab8352f4-6b9b-4609-ac88-799139a0da74","name":"Paliath Narendran","key":"paliath-narendran","url":"http://researchr.org/alias/paliath-narendran"}},{"alias":{"id":"cde17f86-a3d0-48e7-8054-ba19075db873","name":"Michaël Rusinowitch","key":"michaël-rusinowitch","url":"http://researchr.org/alias/micha%C3%ABl-rusinowitch"}}],"type":"inproceedings","url":"http://researchr.org/publication/Visser99","firstpage":30,"publisher":"Springer","id":"c181edbb-b256-42df-96b9-75a80094bbc7","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Strategic Pattern Matching","organization":"","address":"","month":"","volume":"1631","year":"1999","conference":"rta","note":"","doi":"http://link.springer.de/link/service/series/0558/bibs/1631/16310030.htm","key":"Visser99"},{"abstract":"XT bundles existing and newly developed program transformation libraries and tools into an open framework that supports component-based development of program transformations. We discuss the roles of XT's constituents in the development process of program transformation tools, as well as some experiences with building program transformation systems with XT. ","lastpage":0,"type":"article","url":"http://researchr.org/publication/JongeVV01","firstpage":0,"issuenumber":"2","journal":"Electr. Notes Theor. Comput. Sci.","id":"cc787b47-a9e5-42f5-b1b3-5597258397f7","authors":[{"person":{"id":"3a8ae491-5c79-4670-9a35-cfe59537630e","fullname":"Merijn de Jonge","key":"merijndejonge","url":"http://researchr.org/profile/merijndejonge"},"alias":{"id":"c2fd021b-7f7b-44c3-af97-49d7d58c8f32","name":"Merijn de Jonge","key":"merijn-de-jonge","url":"http://researchr.org/alias/merijn-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"96380068-84b9-436b-ab9b-40d90a566d94","fullname":"Joost Visser","key":"joostvisser","url":"http://researchr.org/profile/joostvisser"},"alias":{"id":"a2685a71-4f48-405f-8d9b-0c4757bcef35","name":"Joost Visser","key":"joost-visser","url":"http://researchr.org/alias/joost-visser"}}],"title":"XT: a bundle of program transformation tools","month":"","volumenumber":"44","year":"2001","note":"","key":"JongeVV01","doi":"http://dx.doi.org/10.1016/S1571-0661(04)80921-6"},{"abstract":"Software is rapidly moving from the desktop to the Web. The\r\nWeb provides a generic user interface that allows ubiquitous\r\naccess, instant collaboration, integration with other online\r\nservices, and avoids installation and configuration on desktop\r\ncomputers. For software development, the Web presents\r\na shift away from developer workstations as a silo, and has\r\nthe promise of closer collaboration and improved feedback\r\nthrough innovations in Web-based interactive development\r\nenvironments (IDEs). Moving IDEs to the Web is not just a\r\nmatter of \u201cporting\u201d desktop IDEs; a fundamental reconsideration\r\nof the IDE architecture is necessary in order to realize\r\nthe full potential that the combination of modern IDEs and\r\nthe Web can offer. This paper discusses research challenges\r\nand opportunities in this area, guided by a pilot study of a\r\nWeb IDE implementation.","conferenceYear":"","series":"","booktitle":"Proceedings of the 11th SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software (Onward 2012)","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/KatsVKV2012","firstpage":0,"publisher":"ACM Press","id":"a604f464-2415-46d4-b808-9570a521adf6","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"d1c1e20d-534e-431c-b4d4-63ae9ebf4066","fullname":"Richard Vogelij","key":"richardvogelij","url":"http://researchr.org/profile/richardvogelij"},"alias":{"id":"49262e4e-b758-4069-a100-a574286ce2cc","name":"Richard G. Vogelij","key":"richard-g.-vogelij","url":"http://researchr.org/alias/richard-g.-vogelij"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Software Development Environments on the Web: A Research Agenda","organization":"","address":"","month":"","volume":"","year":"2012","conference":"Onward","note":"","doi":"http://dx.doi.org/10.1145/2384592.2384603","key":"KatsVKV2012"},{"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. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":46,"booktitle":"Models in Software Engineering, Workshops and Symposia at MoDELS 2007, Nashville, TN, USA, September 30 - October 5, 2007, Reports and Revised Selected Papers","number":"","editors":[{"alias":{"id":"4a69e75b-f301-4349-ada8-c93a4ca58a5a","name":"Holger Giese","key":"holger-giese","url":"http://researchr.org/alias/holger-giese"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerV07","firstpage":34,"publisher":"Springer","id":"e9b0e084-565d-4e41-891b-75ba447623d0","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Designing Syntax Embeddings and Assimilations for Language Libraries","organization":"","address":"","month":"","volume":"5002","year":"2007","conference":"models","note":"","doi":"http://dx.doi.org/10.1007/978-3-540-69073-3_5","key":"BravenboerV07"},{"abstract":"In meta-programming with concrete object syntax, meta programs can be written using the concrete syntax of manipulated programs. Quotations of concrete syntax fragments and anti-quotations for meta-level expressions and variables are used to manipulate the abstract representation of programs. These small, isolated fragments are often ambiguous and must be explicitly disambiguated with quotation tags or types, using names from the non-terminals of the object language syntax. Discoverability of these names has been an open issue, as they depend on the (grammar) implementation and are not part of the concrete syntax of a language. Based on advances in interactive development environments, we introduce interactive disambiguation to address this issue, providing real-time feedback and proposing quick fixes in case of ambiguities. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":336,"booktitle":"Software Language Engineering - Third International Conference, SLE 2010, Eindhoven, The Netherlands, October 12-13, 2010, Revised Selected Papers","number":"","editors":[{"alias":{"id":"eaa0d610-b519-42c8-9cdd-ddbd308e27b1","name":"Brian A. Malloy","key":"brian-a.-malloy","url":"http://researchr.org/alias/brian-a.-malloy"}},{"alias":{"id":"38c08b6b-f450-4293-9d46-4ca937072e67","name":"Steffen Staab","key":"steffen-staab","url":"http://researchr.org/alias/steffen-staab"}},{"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsKV10-0","firstpage":327,"publisher":"Springer","id":"ce491081-a7d1-47ef-81b6-74f29d9430e8","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Interactive Disambiguation of Meta Programs with Concrete Object Syntax","organization":"","address":"","month":"","volume":"6563","year":"2010","conference":"sle","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-19440-5_22","key":"KatsKV10-0"},{"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.","conferenceYear":"","series":"","lastpage":932,"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","number":"","editors":[{"person":{"id":"7f55f747-1ff4-4fa3-85ea-b40e083546b5","fullname":"William R. Cook","key":"williamrcook","url":"http://researchr.org/profile/williamrcook"},"alias":{"id":"9a3ff127-3980-45d1-8b6b-baa769285bbc","name":"William R. Cook","key":"william-r.-cook","url":"http://researchr.org/alias/william-r.-cook"}},{"person":{"id":"ed27bbb0-cb5a-499a-a50b-f5a211ae3647","fullname":"Siobhán Clarke","key":"siobhnclarke","url":"http://researchr.org/profile/siobhnclarke"},"alias":{"id":"a3306b32-66ba-486a-b518-c8019b0e80a0","name":"Siobh{\\'a}n Clarke","key":"siobh{\\'a}n-clarke","url":"http://researchr.org/alias/siobh%7B%5Eb%27a%7Dn-clarke"}},{"alias":{"id":"503be362-fe58-475e-81c6-7763a1803fb6","name":"Martin C. Rinard","key":"martin-c.-rinard","url":"http://researchr.org/alias/martin-c.-rinard"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsVW10","firstpage":918,"publisher":"ACM","id":"c9bf2a96-cfb5-443a-b100-6249f0e340e3","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}}],"title":"Pure and declarative syntax definition: paradise lost and regained","organization":"","address":"Reno/Tahoe, Nevada","month":"","volume":"","year":"2010","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1869459.1869535","key":"KatsVW10"},{"abstract":"The implementation of refactorings for new languages requires considerable effort from the language developer.  We aim at reducing that effort by using language generic techniques.  This paper focuses on behavior preservation, in particular the preservation of name bindings.  Given an existing name analysis, we implement a language generic technique to detect name binding violations.  Some languages offer the possibility to access global variables using qualified names.  As a refinement to violation detection, we show that name analysis can be defined as a reusable traversal strategy  that can be applied to restore name bindings by creating qualified names. \r\nThese techniques offer an efficient and reliable solution;  the semantics of the language is implemented only once, with the compiler being the single source of truth.  We evaluate our approach by implementing a language generic rename refactoring,  which we apply to different languages.","conferenceYear":"","series":"","lastpage":0,"booktitle":"Workshop on Language Descriptions, Tools, and Applications, Proceedings","number":"","editors":[{"alias":{"id":"5384fbbe-a129-4b4a-8b46-1a54bb9c56fd","name":"Suzana Andova","key":"suzana-andova","url":"http://researchr.org/alias/suzana-andova"}},{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"a037cb7f-a2e6-4ee9-ad8a-8eff3c869696","name":"Tony Sloane","key":"tony-sloane","url":"http://researchr.org/alias/tony-sloane"}}],"type":"inproceedings","url":"http://researchr.org/publication/DeJongeVisser2012-LDTA","firstpage":0,"publisher":"","id":"f3c188c8-d971-429c-b543-9b8c87eec58a","authors":[{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A Language Generic Solution for Name Binding Preservation in Refactorings","organization":"","address":"","month":"","volume":"","year":"2012","conference":"LDTA","note":"","doi":"http://dx.doi.org/10.1145/2427048.2427050","key":"DeJongeVisser2012-LDTA"},{"abstract":"In the next chapters we present the design and specification of a family of \r\nsyntax definition formalisms. The kernel of this family of formalisms is formed \r\nby context-free grammars. A number of orthogonal extensions to the kernel \r\nis defined. Many of these extensions are defined in terms of the primitives of \r\nthe kernel by means of normalization functions. This provides a framework for \r\nconstructing new formalisms by adapting and extending previous ones. \r\n\r\nIncluded in the family are the following extensions of context-free grammars,\r\nuniform definition of lexical and context-free syntax, variables, disambiguation \r\nby priorities, follow restrictions and reject productions, a rich set of regular expressions defined in terms of context-free productions, character classes, aliases,\r\nparameterized modules with hidden imports and renamings. The accumulation \r\nof these extensions is the syntax definition formalism SDF.\r\n\r\nThis chapter provides an introduction to SDF and gives an overview of the \r\ndesign and specification of the family of formalisms.","id":"fa1d002b-b831-45a5-b68c-98fbc64c049e","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A Family of Syntax Definition Formalisms","month":"August","year":"1997","url":"http://researchr.org/publication/Visser-1997-SDF","note":"","doi":"","key":"Visser-1997-SDF"},{"abstract":"Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. Spoofax integrates language processing techniques for parser generation, meta-programming, and IDE development into a single environment. It uses concise, declarative specifications for languages and IDE services. In this paper we describe the architecture of Spoofax and introduce idioms for high-level specifications of language semantics using rewrite rules, showing how analyses can be reused for transformations, code generation, and editor services such as error marking, reference resolving, and content completion. The implementation of these services is supported by language-parametric editor service classes that can be dynamically loaded by the Eclipse IDE, allowing new languages to be developed and used side-by-side in the same Eclipse environment.","conferenceYear":"","series":"","lastpage":463,"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","number":"","editors":[{"person":{"id":"7f55f747-1ff4-4fa3-85ea-b40e083546b5","fullname":"William R. Cook","key":"williamrcook","url":"http://researchr.org/profile/williamrcook"},"alias":{"id":"9a3ff127-3980-45d1-8b6b-baa769285bbc","name":"William R. Cook","key":"william-r.-cook","url":"http://researchr.org/alias/william-r.-cook"}},{"person":{"id":"ed27bbb0-cb5a-499a-a50b-f5a211ae3647","fullname":"Siobhán Clarke","key":"siobhnclarke","url":"http://researchr.org/profile/siobhnclarke"},"alias":{"id":"a3306b32-66ba-486a-b518-c8019b0e80a0","name":"Siobh{\\'a}n Clarke","key":"siobh{\\'a}n-clarke","url":"http://researchr.org/alias/siobh%7B%5Eb%27a%7Dn-clarke"}},{"alias":{"id":"503be362-fe58-475e-81c6-7763a1803fb6","name":"Martin C. Rinard","key":"martin-c.-rinard","url":"http://researchr.org/alias/martin-c.-rinard"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsV10","firstpage":444,"publisher":"ACM","id":"e48132a2-6bc1-416b-a568-dcf0f13a89e4","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Spoofax language workbench: rules for declarative specification of languages and IDEs","organization":"","address":"Reno/Tahoe, Nevada","month":"","volume":"","year":"2010","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1869459.1869497","key":"KatsV10"},{"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 host and guest languages.","conferenceYear":"","series":"","lastpage":12,"booktitle":"Generative Programming and Component Engineering, 6th International Conference, GPCE 2007","number":"","editors":[{"alias":{"id":"a1653a2a-1cf9-4ff3-8dfa-cb71f898a0c3","name":"Charles Consel","key":"charles-consel","url":"http://researchr.org/alias/charles-consel"}},{"person":{"id":"6d36196c-1b66-405d-9143-fdfc0e20f34f","fullname":"Julia L. Lawall","key":"juliallawall","url":"http://researchr.org/profile/juliallawall"},"alias":{"id":"50a0fe78-d70d-4890-904d-f020a9a3f2bd","name":"Julia L. Lawall","key":"julia-l.-lawall","url":"http://researchr.org/alias/julia-l.-lawall"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerDV07","firstpage":3,"publisher":"ACM","id":"fd3bfb67-5415-42bb-86e3-c933ff4840f2","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Preventing injection attacks with syntax embeddings","organization":"","address":"Salzburg, Austria","month":"","volume":"","year":"2007","conference":"gpce","note":"","doi":"http://doi.acm.org/10.1145/1289971.1289975","key":"BravenboerDV07"},{"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.","conferenceYear":"","series":"","lastpage":780,"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","number":"","editors":[{"alias":{"id":"af52a55a-04f9-476c-a946-013c96a7023e","name":"Gail E. Harris","key":"gail-e.-harris","url":"http://researchr.org/alias/gail-e.-harris"}}],"type":"inproceedings","url":"http://researchr.org/publication/GroenewegenHKV08","firstpage":779,"publisher":"ACM","id":"32577b4a-6586-41f6-bb9e-ed0aeb8b74e4","authors":[{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"46cf4818-8ce7-4644-9ee1-414e4c4960e7","name":"Danny M. Groenewegen","key":"danny-m.-groenewegen","url":"http://researchr.org/alias/danny-m.-groenewegen"}},{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"WebDSL: a domain-specific language for dynamic web applications","organization":"","address":"","month":"","volume":"","year":"2008","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1449814.1449858","key":"GroenewegenHKV08"},{"abstract":"","conferenceYear":"","series":"","booktitle":"Companion to the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2011, Portland, OR, USA, October 22 - 27, 2011","number":"","lastpage":188,"type":"inproceedings","url":"http://researchr.org/publication/ErdwegKRKOV11a","firstpage":187,"publisher":"ACM","id":"6129cd96-753d-4cb4-b182-a873e4928472","authors":[{"person":{"id":"e8c80e8e-3d66-402e-bb24-a60cf0085c63","fullname":"Sebastian Erdweg","key":"sebastianerdweg","url":"http://researchr.org/profile/sebastianerdweg"},"alias":{"id":"cda2d354-a0da-4dd7-ab26-dd571a765213","name":"Sebastian Erdweg","key":"sebastian-erdweg","url":"http://researchr.org/alias/sebastian-erdweg"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"2112ab40-0f9a-41fd-bf2e-b12f61810662","fullname":"Tillmann Rendel","key":"tillmannrendel","url":"http://researchr.org/profile/tillmannrendel"},"alias":{"id":"e839bcc2-8db4-4418-a57b-bde2c6b4ecb1","name":"Tillmann Rendel","key":"tillmann-rendel","url":"http://researchr.org/alias/tillmann-rendel"}},{"person":{"id":"829f94e1-744a-4e55-8f54-5eec4781c7cc","fullname":"Christian Kästner","key":"ckaestne","url":"http://researchr.org/profile/ckaestne"},"alias":{"id":"6fb4f8d6-0e7b-4143-9b91-9d7278c2e35b","name":"Christian K{\\\"a}stner","key":"christian-k{\\\"a}stner","url":"http://researchr.org/alias/christian-k%7B%5Eb%22a%7Dstner"}},{"person":{"id":"2c38f199-71de-4a67-9009-0f5c2b394c75","fullname":"Klaus Ostermann","key":"klausostermann","url":"http://researchr.org/profile/klausostermann"},"alias":{"id":"fe7922a4-708f-4fd1-b0df-82072a7a1b57","name":"Klaus Ostermann","key":"klaus-ostermann","url":"http://researchr.org/alias/klaus-ostermann"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"SugarJ: library-based language extensibility","organization":"","address":"","month":"","volume":"","year":"2011","conference":"OOPSLA","note":"","doi":"http://doi.acm.org/10.1145/2048147.2048199","key":"ErdwegKRKOV11a"},{"abstract":"The use of a high-level, abstract coding style can greatly increase developer productivity. For numerical software, this can result in drastically reduced run-time performance. High-level, domain-specific optimisations can eliminate much of the overhead caused by an abstract coding style, but current compilers have poor support for domain-specific optimisation.\r\nIn this paper we present CodeBoost, a source-to-source transformation tool for domain-specific optimisation of C++ programs. CodeBoost performs parsing, semantic analysis and pretty-printing, and transformations can be implemented either in the Stratego program transformation language, or as user-defined rewrite rules embedded within the C++ program. CodeBoost has been used with great success to optimise numerical applications written in the Sophus high-level coding style.\r\n\r\nWe discuss the overall design of the CodeBoost transformation framework, and take a closer look at two important features of CodeBoost: user-defined rules and totem annotations. We also show briefly how CodeBoost is used to optimise Sophus code, resulting in applications that run twice as fast, or more.","conferenceYear":"","series":"","lastpage":0,"booktitle":"3rd IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003), 26-27 September 2003, Amsterdam, The Netherlands","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/BaggeKHV03","firstpage":65,"publisher":"IEEE Computer Society","id":"14e33c30-1b8a-4c65-b0be-7cf54839404d","authors":[{"person":{"id":"3dec3ea9-d4d4-40a2-99e8-3adf6d3df95b","fullname":"Anya Helene Bagge","key":"anyahelenebagge","url":"http://researchr.org/profile/anyahelenebagge"},"alias":{"id":"cb9c3a0c-3a47-4c11-8c3e-d5405b843355","name":"Otto Skrove Bagge","key":"otto-skrove-bagge","url":"http://researchr.org/alias/otto-skrove-bagge"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"7955227e-5645-42b9-a150-f18c8cf269b3","fullname":"Magne Haveraaen","key":"magnehaveraaen","url":"http://researchr.org/profile/magnehaveraaen"},"alias":{"id":"2fe256c3-abf6-4317-97bc-13402491d470","name":"Magne Haveraaen","key":"magne-haveraaen","url":"http://researchr.org/alias/magne-haveraaen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Design of the CodeBoost Transformation System for Domain-Specific Optimisation of C++ Programs","organization":"","address":"","month":"","volume":"","year":"2003","conference":"scam","note":"","doi":"http://csdl.computer.org/comp/proceedings/scam/2003/2005/00/20050065abs.htm","key":"BaggeKHV03"},{"abstract":"Software platforms such as the Java Virtual Machine or the CLR .NET\r\nvirtual machine have their own ecosystem of a core programming\r\nlanguage or instruction set, libraries, and developer community.\r\nProgramming languages can target multiple software platforms to\r\nincrease interoperability or to boost performance.\r\nIntroducing a new compiler backend for a language is the first step\r\ntowards targeting a new platform, translating the language to the\r\nplatform's language or instruction set.\r\nPrograms written in modern languages generally make extensive use of\r\nAPIs, based on the runtime system of the software platform,\r\nintroducing additional portability concerns.\r\nThey may use APIs that are implemented by platform-specific\r\nlibraries. Libraries may perform platform-specific operations, make\r\ndirect native calls, or make assumptions about performance\r\ncharacteristics of operations or about the file system.\r\n\r\nThis paper proposes to use aspect weaving to invasively adapt programs\r\nand libraries to address such portability concerns,\r\nand identifies four classes of aspects for this purpose.\r\nWe evaluate this approach through a case study where we retarget the\r\nStratego program transformation language towards the Java Virtual\r\nMachine.","conferenceYear":"","series":"","lastpage":0,"booktitle":"Proceedings of the Tenth IEEE International Working Conference on Source Code Analysis and Manipulation 2010","number":"","editors":[{"person":{"id":"1aca1e26-166a-4bd5-807d-3eca8accdf25","fullname":"Cristina Marinescu","key":"cristinamarinescu","url":"http://researchr.org/profile/cristinamarinescu"},"alias":{"id":"86dc83e7-4988-4e0f-919c-71d291f3fbbc","name":"Cristina Marinescu","key":"cristina-marinescu","url":"http://researchr.org/alias/cristina-marinescu"}},{"person":{"id":"8ed1149d-5533-4120-8079-88085c44c8ef","fullname":"Jurgen J.  Vinju","key":"jurgenjvinju","url":"http://researchr.org/profile/jurgenjvinju"},"alias":{"id":"b192b666-9f59-43fd-8c2d-bf9b302c615e","name":"Jurgen Vinju","key":"jurgen-vinju","url":"http://researchr.org/alias/jurgen-vinju"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsVisser-SCAM-2010","firstpage":0,"publisher":"","id":"ac13678a-08f3-43c5-a989-925d1bf638b5","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Encapsulating Software Platform Logic by Aspect-Oriented Programming: A Case Study in Using Aspects for Language Portability","organization":"","address":"","month":"","volume":"","year":"2010","conference":"SCAM","note":"","doi":"","key":"KatsVisser-SCAM-2010"},{"abstract":"","conferenceYear":"","series":"","booktitle":"Companion to the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2011, Portland, OR, USA, October 22 - 27, 2011","number":"","lastpage":24,"type":"inproceedings","url":"http://researchr.org/publication/HemelV11a","firstpage":23,"publisher":"ACM","id":"de445df9-cdc2-4d5f-91dd-7e2479ac74c4","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Mobl: the new language of the mobile web","organization":"","address":"","month":"","volume":"","year":"2011","conference":"OOPSLA","note":"","doi":"http://doi.acm.org/10.1145/2048147.2048159","key":"HemelV11a"},{"abstract":"","id":"359afa94-db87-4171-9c0f-271dd510f361","authors":[{"person":{"id":"d0507709-858d-4c99-9af3-97f51623b905","fullname":"Markus Völter","key":"markusvoelter","url":"http://researchr.org/profile/markusvoelter"},"alias":{"id":"dd9460cc-2993-4497-9148-9e82a9e0bd75","name":"Markus Voelter","key":"markus-voelter","url":"http://researchr.org/alias/markus-voelter"}},{"person":{"id":"9d526f25-ecf2-415b-a215-a04993448097","fullname":"Sebastian Benz","key":"sebastianbenz","url":"http://researchr.org/profile/sebastianbenz"},"alias":{"id":"29fe1804-7b14-49bd-bc06-a93cb3cd6301","name":"Sebastian Benz","key":"sebastian-benz","url":"http://researchr.org/alias/sebastian-benz"}},{"alias":{"id":"fe1eb7c9-cbf6-4c5b-a113-656c7ec673bb","name":"Christian Dietrich","key":"christian-dietrich","url":"http://researchr.org/alias/christian-dietrich"}},{"alias":{"id":"b3f5d80b-2384-45c5-b440-141e5ba69bd4","name":" Birgit Engelmann Mats Helander","key":"birgit-engelmann-mats-helander","url":"http://researchr.org/alias/birgit-engelmann-mats-helander"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"bc77897c-76c2-44aa-b377-cca0345f8313","name":"Lennart Kats","key":"lennart-kats","url":"http://researchr.org/alias/lennart-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}}],"title":"DSL Engineering: Designing, Implementing and Using Domain-Specific Languages","month":"","year":"2013","url":"http://researchr.org/publication/DslEngineering2013","note":"http://dslbook.org","doi":"","key":"DslEngineering2013"},{"abstract":"Domain-Specific Languages (DSLs) are languages with high expressivity for a\r\nspecific, narrow problem domain. They are a powerful tool for software\r\nengineering, because they can be tailor-made for a specific class of problems.\r\nHowever, because of the large degree of freedom in designing DSLs, and because\r\nthey are supposed to cover the right domain, completely, and at the right\r\nabstraction level, DSL design is also hard. In this paper we present a framework\r\nfor describing and characterizing external domain specific languages. We\r\nidentify eight design dimensions that span the space within which DSLs are\r\ndesigned: expressivity, coverage, semantics, separation of concerns,\r\ncompleteness, large-scale model structure, language modularization and syntax.\r\nWe illustrate the design alternatives along each of these dimensions with\r\nexamples from five different case studies. These have been selected for their\r\ndiversity in context, style and implementation technologies. The paper concludes\r\nwith an outlook on further steps towards comprehensive DSL design guidance.\r\n","id":"f08a753f-2839-4a6f-9c37-1ffe12445f2b","authors":[{"person":{"id":"d0507709-858d-4c99-9af3-97f51623b905","fullname":"Markus Völter","key":"markusvoelter","url":"http://researchr.org/profile/markusvoelter"},"alias":{"id":"dd9460cc-2993-4497-9148-9e82a9e0bd75","name":"Markus Voelter","key":"markus-voelter","url":"http://researchr.org/alias/markus-voelter"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Dimensions of DSL Design","month":"","year":"2011","url":"http://researchr.org/publication/VoelterVisserDimensions2011","note":"","doi":"","key":"VoelterVisserDimensions2011"},{"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. ","id":"a1cf0f90-9d2b-411e-bce9-8bdc56857837","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Designing Syntax Embeddings and Assimilations for Language Libraries","month":"","year":"2008","url":"http://researchr.org/publication/TUD-SERG-2008-042","note":"","doi":"","key":"TUD-SERG-2008-042"},{"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. ","conferenceYear":"","series":"Electronic Notes in Theoretical Computer Science   ","lastpage":0,"booktitle":"Proceedings of the Eight Workshop on Language Descriptions, Tools, and Applications","number":"5","editors":[{"person":{"id":"8ed1149d-5533-4120-8079-88085c44c8ef","fullname":"Jurgen J.  Vinju","key":"jurgenjvinju","url":"http://researchr.org/profile/jurgenjvinju"},"alias":{"id":"b192b666-9f59-43fd-8c2d-bf9b302c615e","name":"Jurgen Vinju","key":"jurgen-vinju","url":"http://researchr.org/alias/jurgen-vinju"}},{"person":{"id":"ff880c0e-3b9e-457a-b85d-1c6c0f861bd6","fullname":"Adrian Johnstone","key":"adrianjohnstone","url":"http://researchr.org/profile/adrianjohnstone"},"alias":{"id":"66b4b346-c931-42c1-bcdf-21c93821d263","name":"Adrian Johnstone","key":"adrian-johnstone","url":"http://researchr.org/alias/adrian-johnstone"}}],"type":"inproceedings","url":"http://researchr.org/publication/KKV08","firstpage":0,"publisher":"Elsevier","id":"2195628c-07af-4701-9494-14541726038d","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Generating Editors for Embedded Languages. Integrating SGLR into IMP","organization":"","address":"","month":"April","volume":"238","year":"2008","conference":"LDTA","note":"","doi":"","key":"KKV08"},{"abstract":"(has no abstract)","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":804,"booktitle":"TAPSOFT 95: Theory and Practice of Software Development, 6th International Joint Conference CAAP/FASE, Aarhus, Denmark, May 22-26, 1995, Proceedings","number":"","editors":[{"person":{"id":"623b39d6-1f3b-4658-a554-526af664a354","fullname":"Peter D. Mosses","key":"peterdmosses","url":"http://researchr.org/profile/peterdmosses"},"alias":{"id":"d6b2e481-8e19-4944-8c42-56f6cbf33d9b","name":"Peter D. Mosses","key":"peter-d.-mosses","url":"http://researchr.org/alias/peter-d.-mosses"}},{"alias":{"id":"02af29f9-3dba-4b91-8052-489796e5818b","name":"Mogens Nielsen","key":"mogens-nielsen","url":"http://researchr.org/alias/mogens-nielsen"}},{"person":{"id":"506c63b4-7861-4301-8905-29b7620b6473","fullname":"Michael I. Schwartzbach","key":"michaelischwartzbach","url":"http://researchr.org/profile/michaelischwartzbach"},"alias":{"id":"55b2c00c-f58d-4303-b161-0f5fbede2eb8","name":"Michael I. Schwartzbach","key":"michael-i.-schwartzbach","url":"http://researchr.org/alias/michael-i.-schwartzbach"}}],"type":"inproceedings","url":"http://researchr.org/publication/BrandV95","firstpage":803,"publisher":"Springer","id":"682ca2d7-0cc5-4de1-bcb2-b62a9a4b084e","authors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Asf+Sdf Meta-Environment Documentation Tools for Free!","organization":"","address":"","month":"","volume":"915","year":"1995","conference":"tapsoft","note":"","doi":"http://dx.doi.org/10.1007/3-540-59293-8_242","key":"BrandV95"},{"abstract":" Aspect-Oriented Programming (AOP) is attracting attention from both research and industry, as illustrated by the ever-growing popularity of AspectJ, the de facto standard AOP extension of Java. From a compiler construction perspective AspectJ is interesting as it is a typical example of compositional language, ie a language composed of a number of separate languages with different syntactical styles: in addition to plain Java, AspectJ includes a language for defining pointcuts and one for defining advices. Language composition represents a non-trivial challenge for conventional parsing techniques. First, combining several languages with different lexical syntax leads to considerable complexity in the lexical states to processed. Second, as new language features for AOP are being explored, many research proposals are concerned with further extending the AspectJ language, resulting in a need for an extensible syntax definition.This paper shows how scannerless parsing elegantly addresses the issues encountered by conventional techniques when parsing AspectJ . We present the design of a modular, extensible, and formal definition of the lexical and context-free aspects of the AspectJ syntax in the Syntax Definition Formalism SDF, which is implemented by a scannerless, generalized-LR parser (SGLR). We introduce grammar mixins as a novel application of SDF's modularity features, which allows the declarative definition of different keyword policies and combination of extensions. We illustrate the modular extensibility of our definition with syntax extensions taken from current research on aspect languages. Finally, benchmarks show the reasonable performance of scannerless generalized-LR parsing for this grammar. ","conferenceYear":"","series":"","lastpage":228,"booktitle":"Proceedings of the 21th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2006, October 22-26, 2006, Portland, Oregon, USA","number":"","editors":[{"person":{"id":"9d2603cc-b2d8-4bc2-8ba4-97ddbaaa1a97","fullname":"Peri L. Tarr","key":"periltarr","url":"http://researchr.org/profile/periltarr"},"alias":{"id":"29315c14-1e61-4cc7-a003-ed5241a34aee","name":"Peri L. Tarr","key":"peri-l.-tarr","url":"http://researchr.org/alias/peri-l.-tarr"}},{"person":{"id":"7f55f747-1ff4-4fa3-85ea-b40e083546b5","fullname":"William R. Cook","key":"williamrcook","url":"http://researchr.org/profile/williamrcook"},"alias":{"id":"9a3ff127-3980-45d1-8b6b-baa769285bbc","name":"William R. Cook","key":"william-r.-cook","url":"http://researchr.org/alias/william-r.-cook"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerTV06","firstpage":209,"publisher":"ACM","id":"61bf2f5d-5247-4a73-9561-e06a27535dd1","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"2a342878-7b43-45e3-a1e8-77c0c15be613","fullname":"Éric Tanter","key":"etanter","url":"http://researchr.org/profile/etanter"},"alias":{"id":"8308a999-669a-42cd-9d95-3777e7e7e689","name":"Éric Tanter","key":"éric-tanter","url":"http://researchr.org/alias/%C3%A9ric-tanter"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Declarative, formal, and extensible syntax definition for AspectJ","organization":"","address":"","month":"","volume":"","year":"2006","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1167473.1167491","key":"BravenboerTV06"},{"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. ","conferenceYear":"2009","series":"ENTCS","booktitle":"Proceedings of The Ninth Workshop on Language Descriptions, Tools, and Applications (LDTA 2009)","number":"7","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/KKV09","firstpage":0,"publisher":"Elsevier","id":"ade5f17d-32d6-41f9-90df-1236774fb7e5","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Domain-Specific Languages for Composable Editor Plugins","organization":"","address":"","month":"sept","volume":"253","year":"2010","conference":"Proceedings of The Ninth Workshop on Language Descriptions, Tools, and Applications (LDTA 2009)","note":"","doi":"http://dx.doi.org/10.1016/j.entcs.2010.08.038","key":"KKV09"},{"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.","lastpage":495,"type":"article","url":"http://researchr.org/publication/BravenboerDV-SCP-2010","firstpage":473,"issuenumber":"7","journal":"Science of Computer Programming","id":"a228dbe3-5c04-4691-8a21-cdb5224e0623","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Preventing injection attacks with syntax embeddings","month":"July","volumenumber":"75","year":"2010","note":"","key":"BravenboerDV-SCP-2010","doi":"http://dx.doi.org/10.1016/j.scico.2009.05.004"},{"abstract":"","lastpage":37,"type":"article","url":"http://researchr.org/publication/GroenewegenHV10","firstpage":31,"issuenumber":"5","journal":"IEEE Software","id":"2ca8b403-51a1-488a-9aba-6a7652f6c283","authors":[{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"46cf4818-8ce7-4644-9ee1-414e4c4960e7","name":"Danny M. Groenewegen","key":"danny-m.-groenewegen","url":"http://researchr.org/alias/danny-m.-groenewegen"}},{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Separation of Concerns and Linguistic Integration in WebDSL","month":"","volumenumber":"27","year":"2010","note":"","key":"GroenewegenHV10","doi":"http://dx.doi.org/10.1109/MS.2010.92"},{"abstract":"The deployment of services --- sets of running programs that provide some useful facility on a system or network --- is typically implemented through a manual, time-consuming and error-prone process. For instance, system administrators must deploy the necessary software components, edit configuration files, start or stop processes, and so on. This is often done in an ad hoc style with no reproducibility, violating proper configuration management practices. In this paper we show that build management, software deployment and service deployment can be integrated into a single formalism. We do this in the context of the Nix software deployment system, and show that its advantages --- co-existence of versions and variants, atomic upgrades and rollbacks, and component closure --- extend naturally to service deployment. The approach also elegantly extends to distributed services. In addition, we show that the Nix expression language can simplify the implementation of crosscutting variation points in services. ","conferenceYear":"","series":"","lastpage":98,"booktitle":"Proceedings of the 12th International Workshop on Software Configuration Management, SCM 2005, Lisbon, Portugal, September 5-6, 2005","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/DolstraBV05","firstpage":83,"publisher":"ACM","id":"df4ddb9e-dfaa-48a0-b66b-38d3b9f5337d","authors":[{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Service configuration management","organization":"","address":"","month":"","volume":"","year":"2005","conference":"scm","note":"","doi":"http://doi.acm.org/10.1145/1109128.1109135","key":"DolstraBV05"},{"abstract":"A wide range of parser generators are used to generate parsers for programming languages. The grammar formalisms that come with parser generators provide different approaches for defining operator precedence. Some generators (e.g. YACC) support precedence declarations, others require the grammar to be unambiguous, thus encoding the precedence rules. Even if the grammar formalism provides precedence rules, a particular grammar might not use it. The result is grammar variants implementing the same language. For the C language, the GNU Compiler uses YACC with precedence rules, the C-Transformers uses SDF without priorities, while the SDF library does use priorities. For PHP, Zend uses YACC with precedence rules, whereas PHP-front uses SDF with priority and associativity declarations.\r\n\r\nThe variance between grammars raises the question if the precedence rules of one grammar are compatible with those of another. This is usually not obvious, since some languages have complex precedence rules. Also, for some parser generators the semantics of precedence rules is defined operationally, which makes it hard to reason about their effect on the defined language. We present a method and tool for comparing the precedence rules of different grammars and parser generators. Although it is undecidable whether two grammars define the same language, this tool provides support for comparing and recovering precedence rules, which is especially useful for reliable migration of a grammar from one grammar formalism to another. We evaluate our method by the application to non-trivial mainstream programming languages, such as PHP and C.","lastpage":101,"type":"article","url":"http://researchr.org/publication/BouwersBV08","firstpage":85,"issuenumber":"2","journal":"Electr. Notes Theor. Comput. Sci.","id":"26bc7128-7811-4756-8104-c5226758b7dc","authors":[{"person":{"id":"8510e557-d8fd-4439-9a4a-748b6236c7a7","fullname":"Eric Bouwers","key":"ericbouwers","url":"http://researchr.org/profile/ericbouwers"},"alias":{"id":"88862086-f269-41c2-984d-9ea4efbd56ba","name":"Eric Bouwers","key":"eric-bouwers","url":"http://researchr.org/alias/eric-bouwers"}},{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Grammar Engineering Support for Precedence Rule Recovery and Compatibility Checking","month":"","volumenumber":"203","year":"2008","note":"","key":"BouwersBV08","doi":"http://dx.doi.org/10.1016/j.entcs.2008.03.046"},{"abstract":"Properties such as logging, persistence, debugging, tracing, distribution, performance monitoring and exception handling occur in most programming paradigms and are normally very difficult or even impossible to modularize with traditional modularization mechanisms because they are cross-cutting. Recently, aspect-oriented programming has enjoyed recognition as a practical solution for separating these concerns. In this paper we describe an extension to the Stratego term rewriting language for capturing such properties. We show our aspect language offers a concise, practical and adaptable solution for dealing with unanticipated algorithm extension for forward data-flow propagation and dynamic type checking of terms. We briefly discuss some of the challenges faced when designing and implementing an aspect extension for and in a rule-based term rewriting system.","lastpage":30,"type":"article","url":"http://researchr.org/publication/KallebergV06","firstpage":5,"issuenumber":"1","journal":"Electr. Notes Theor. Comput. Sci.","id":"d643cfa1-4ea1-481e-ba8c-1bdba624f172","authors":[{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Combining Aspect-Oriented and Strategic Programming","month":"","volumenumber":"147","year":"2006","note":"","key":"KallebergV06","doi":"http://dx.doi.org/10.1016/j.entcs.2005.06.035"},{"abstract":"The deployment of software components frequently fails because dependencies on other components are not declared explicitly or are declared imprecisely. This results in an incomplete reproduction of the environment necessary for proper operation, or in interference between incompatible variants. In this paper we show that these deployment hazards are similar to pointer hazards in memory models of programming languages and can be countered by imposing a memory management discipline on software deployment. Based on this analysis we have developed a generic, platform and language independent, discipline for deployment that allows precise dependency verification; exact identification of component variants; computation of complete closures containing all components on which a component depends; maximal sharing of components between such closures; and concurrent installation of revisions and variants of components. We have implemented the approach in the Nix deployment system, and used it for the deployment of a large number of existing Linux packages. We compare its effectiveness to other deployment systems.","conferenceYear":"","series":"","lastpage":592,"booktitle":"26th International Conference on Software Engineering (ICSE 2004), 23-28 May 2004, Edinburgh, United Kingdom","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/DolstraVJ04","firstpage":583,"publisher":"IEEE Computer Society","id":"2998a41c-9a75-4d65-9f1c-8797021dae14","authors":[{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"3a8ae491-5c79-4670-9a35-cfe59537630e","fullname":"Merijn de Jonge","key":"merijndejonge","url":"http://researchr.org/profile/merijndejonge"},"alias":{"id":"c2fd021b-7f7b-44c3-af97-49d7d58c8f32","name":"Merijn de Jonge","key":"merijn-de-jonge","url":"http://researchr.org/alias/merijn-de-jonge"}}],"title":"Imposing a Memory Management Discipline on Software Deployment","organization":"","address":"","month":"","volume":"","year":"2004","conference":"icse","note":"","doi":"http://csdl.computer.org/comp/proceedings/icse/2004/2163/00/21630583abs.htm","key":"DolstraVJ04"},{"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.","conferenceYear":"","series":"","lastpage":201,"booktitle":"WCRE 2008, Proceedings of the 15th Working Conference on Reverse Engineering, Antwerp, Belgium, October 15-18, 2008","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/GeestVDV08","firstpage":197,"publisher":"IEEE","id":"63cea9fb-8d91-4565-909a-2afe7450ce71","authors":[{"person":{"id":"f8d97508-144f-42b4-a139-a5a60132860e","fullname":"Gerardo de Geest","key":"gerardodegeest","url":"http://researchr.org/profile/gerardodegeest"},"alias":{"id":"6774ed5c-e832-45f4-9898-145c69482161","name":"Gerardo de Geest","key":"gerardo-de-geest","url":"http://researchr.org/alias/gerardo-de-geest"}},{"person":{"id":"3433e8ce-d019-4123-a0d4-6470d5f26ac6","fullname":"Sander Vermolen","key":"sandervermolen","url":"http://researchr.org/profile/sandervermolen"},"alias":{"id":"e66dcfe1-17bf-4b96-b120-24054e8138fc","name":"Sander Vermolen","key":"sander-vermolen","url":"http://researchr.org/alias/sander-vermolen"}},{"person":{"id":"5e9231bc-7344-4887-b4ed-688c0bf897eb","fullname":"Arie  van Deursen","key":"arievandeursen","url":"http://researchr.org/profile/arievandeursen"},"alias":{"id":"31e0f562-35ad-4860-b7fb-43c609ae5fc7","name":"Arie van Deursen","key":"arie-van-deursen","url":"http://researchr.org/alias/arie-van-deursen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Generating Version Convertors for Domain-Specific Languages","organization":"","address":"","month":"","volume":"","year":"2008","conference":"wcre","note":"","doi":"http://dx.doi.org/10.1109/WCRE.2008.50","key":"GeestVDV08"},{"abstract":"Disambiguation methods for context-free grammars enable concise specification of programming languages by ambiguous grammars. A disambiguation filter is a function that selects a subset from a set of parse trees---the possible parse trees for an ambiguous sentence. The framework of filters provides a declarative description of disambiguation methods independent of parsing. Although filters can be implemented straightforwardly as functions that prune the parse forest produced by some generalized, this can be too inefficient for practical applications.\r\n\r\nIn this paper the optimization of parsing schemata, a framework for high-level description of parsing algorithms, by disambiguation filters is considered in order to find efficient parsing algorithms for declaratively specified disambiguation methods. As a case study the optimization of the parsing schema of Earley's parsing algorithm by two filters is investigated. The main result is a technique for generation of efficient LR-like parsers for ambiguous grammars modulo priorities.","conferenceYear":"","series":"","booktitle":"International Workshop on Parsing Technology (IWPT 1997)","number":"","lastpage":224,"type":"inproceedings","url":"http://researchr.org/publication/Vis97.opt","firstpage":210,"publisher":"","id":"695b974a-7dd1-4a12-b957-63eeb8ec1bc4","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"A Case Study in Optimizing Parsing Schemata by Disambiguation Filters","organization":"Massachusetts Institute of Technology","address":"Boston, USA","month":"September","volume":"","year":"1997","conference":"IWPT","note":"","doi":"","key":"Vis97.opt"},{"abstract":"Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable transformation components, as well as declarative languages for deriving new components. Complete program transformation systems are composed from these components. In this paper we give an overview of Stratego/XT 0.16. ","conferenceYear":"","series":"","lastpage":99,"booktitle":"Proceedings of the 2006 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, 2006, Charleston, South Carolina, USA, January 9-10, 2006","number":"","editors":[{"person":{"id":"3cb35378-1e69-4d04-9436-5cadbc942fe7","fullname":"John Hatcliff","key":"johnhatcliff","url":"http://researchr.org/profile/johnhatcliff"},"alias":{"id":"564ab8ab-0d50-4545-b6b7-d65173111d6a","name":"John Hatcliff","key":"john-hatcliff","url":"http://researchr.org/alias/john-hatcliff"}},{"person":{"id":"95652b5a-2761-4383-ad93-d1f6d62bd6c5","fullname":"Frank Tip","key":"franktip","url":"http://researchr.org/profile/franktip"},"alias":{"id":"3d168b83-5f24-466b-b008-953a9485bf85","name":"Frank Tip","key":"frank-tip","url":"http://researchr.org/alias/frank-tip"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerKVV06","firstpage":95,"publisher":"ACM","id":"7080db9f-97c4-458a-bbfb-d4073dc841f1","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f6aa2423-57ab-44c6-909c-dd1d19dfbe85","fullname":"Rob Vermaas","key":"robvermaas","url":"http://researchr.org/profile/robvermaas"},"alias":{"id":"6a38d57e-6acc-4105-be50-25e9b31b00fa","name":"Rob Vermaas","key":"rob-vermaas","url":"http://researchr.org/alias/rob-vermaas"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Stratego/XT 0.16: components for transformation systems","organization":"","address":"","month":"","volume":"","year":"2006","conference":"pepm","note":"","doi":"http://doi.acm.org/10.1145/1111542.1111558","key":"BravenboerKVV06"},{"abstract":"Existing systems for software deployment are neither safe nor sufficiently flexible. Primary safety issues are the inability to enforce reliable specification of component dependencies, and the lack of support for multiple versions or variants of a component. This renders deployment operations such as upgrading or deleting components dangerous and unpredictable. A deployment system must also be flexible (i.e., policy-free) enough to support both centralised and local package management, and to allow a variety of mechanisms for transferring components. In this paper we present Nix, a deployment system that addresses these issues through a simple technique of using cryptographic hashes to compute unique paths for component instances.","conferenceYear":"","series":"","lastpage":92,"booktitle":"Proceedings of the 18th Conference on Systems Administration (LISA 2004), Atlanta, USA, November 14-19, 2004","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/DolstraJV04","firstpage":79,"publisher":"USENIX","id":"967c2872-3bc1-4b0d-8335-f0e1e6d175ed","authors":[{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"person":{"id":"3a8ae491-5c79-4670-9a35-cfe59537630e","fullname":"Merijn de Jonge","key":"merijndejonge","url":"http://researchr.org/profile/merijndejonge"},"alias":{"id":"c2fd021b-7f7b-44c3-af97-49d7d58c8f32","name":"Merijn de Jonge","key":"merijn-de-jonge","url":"http://researchr.org/alias/merijn-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Nix: A Safe and Policy-Free System for Software Deployment","organization":"","address":"","month":"","volume":"","year":"2004","conference":"lisa","note":"","doi":"http://www.usenix.org/publications/library/proceedings/lisa04/tech/dolstra.html","key":"DolstraJV04"},{"abstract":"Tool support is vital to the effectiveness of domain-specific languages.\r\nWith language workbenches, domain-specific languages\r\nand their tool support can be generated from a combined, high-level\r\nspecification. This paper shows how such a specification can be extended\r\nto describe a debugger for a language. To realize this, we\r\nintroduce a meta-language for coordinating the debugger that abstracts\r\nover the complexity of writing a debugger by hand. We describe\r\nthe implementation of a language-parametric infrastructure\r\nfor debuggers that can be instantiated based on this specification.\r\nThe approach is implemented in the Spoofax language workbench\r\nand validated through realistic case studies with the Stratego transformation\r\nlanguage and the WebDSL web programming language.","conferenceYear":"","series":"","lastpage":136,"booktitle":"Proceedings of the 10th ACM international conference on Generative programming and component engineering (GPCE 2011)","number":"","editors":[{"person":{"id":"775d55cf-8ab9-4dcf-88ff-d79168302e04","fullname":"Ewen  Denney","key":"ewendenney","url":"http://researchr.org/profile/ewendenney"},"alias":{"id":"f809af80-a42a-4a76-b511-47e0467d2a3f","name":"Ewen Denney","key":"ewen-denney","url":"http://researchr.org/alias/ewen-denney"}},{"person":{"id":"11a00680-e802-41ed-a2c4-08dbdfd8f861","fullname":"Ulrik Pagh Schultz","key":"ulrikpaghschultz","url":"http://researchr.org/profile/ulrikpaghschultz"},"alias":{"id":"fbfcac0b-6b2d-4a0d-89fb-270caea943f9","name":"Ulrik Pagh Schultz","key":"ulrik-pagh-schultz","url":"http://researchr.org/alias/ulrik-pagh-schultz"}}],"type":"inproceedings","url":"http://researchr.org/publication/Lindeman-GPCE-2011","firstpage":127,"publisher":"ACM","id":"bc4de316-7242-44a1-9054-c95c0726d272","authors":[{"person":{"id":"1ef55a28-588c-4ca1-8455-8d36ef8648e7","fullname":"Ricky T. Lindeman","key":"rickylindeman","url":"http://researchr.org/profile/rickylindeman"},"alias":{"id":"492cc287-ec05-4d09-a051-d3a6944aa95a","name":"Ricky T. Lindeman","key":"ricky-t.-lindeman","url":"http://researchr.org/alias/ricky-t.-lindeman"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Declaratively Defining Domain-Specific Language Debuggers","organization":"","address":"New York, NY, USA","month":"","volume":"","year":"2011","conference":"GPCE","note":"","doi":"http://dx.doi.org/10.1145/2047862.2047885","key":"Lindeman-GPCE-2011"},{"abstract":"We describe a language for defining term rewriting strategies, and its application to the production of program optimizers. Valid transformations on program terms can be described by a set of rewrite rules; rewriting strategies are used to describe when and how the various rules should be applied in order to obtain the desired optimization effects. Separating rules from strategies in this fashion makes it easier to reason about the behavior of the optimizer as a whole, compared to traditional monolithic optimizer implementations. We illustrate the expressiveness of our language by using it to describe a simple optimizer for an ML-like intermediate representation.The basic strategy language uses operators such as sequential composition, choice, and recursion to build transformers from a set of labeled unconditional rewrite rules. We also define an extended language in which the side-conditions and contextual rules that arise in realistic optimizer specifications can themselves be expressed as strategy-driven rewrites. We show that the features of the basic and extended languages can be expressed by breaking down the rewrite rules into their primitive building blocks, namely matching and building terms in variable binding environments. This gives us a low-level core language which has a clear semantics, can be implemented straightforwardly and can itself be optimized. The current implementation generates C code from a strategy specification. ","conferenceYear":"","series":"","lastpage":26,"booktitle":"Proceedings of the third ACM SIGPLAN international conference on Functional programming","number":"","editors":[{"person":{"id":"4511a544-bb66-4fda-a809-3c82d1f28a1b","fullname":"Matthias Felleisen","key":"matthiasfelleisen","url":"http://researchr.org/profile/matthiasfelleisen"},"alias":{"id":"902af431-fda0-4d7c-8a1d-7d08f7492f59","name":"Matthias Felleisen","key":"matthias-felleisen","url":"http://researchr.org/alias/matthias-felleisen"}},{"person":{"id":"91f15937-b47a-459d-b84b-77733370099b","fullname":"Paul Hudak","key":"paulhudak","url":"http://researchr.org/profile/paulhudak"},"alias":{"id":"a2d886cc-d039-46ed-9be5-ed31020b60b0","name":"Paul Hudak","key":"paul-hudak","url":"http://researchr.org/alias/paul-hudak"}},{"alias":{"id":"afe186d3-e7b1-4cff-9b62-9a09225cfa28","name":"Christian Queinnec","key":"christian-queinnec","url":"http://researchr.org/alias/christian-queinnec"}}],"type":"inproceedings","url":"http://researchr.org/publication/VisserBT98","firstpage":13,"publisher":"ACM","id":"c798f9e6-7239-420e-a253-cd1676aa4905","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"195c7e68-4b94-4590-a45b-ac5b35de94a9","fullname":"Zine-El-Abidine Benaissa","key":"zineelabidinebenaissa","url":"http://researchr.org/profile/zineelabidinebenaissa"},"alias":{"id":"000d6925-b35e-4f88-860f-c95510b5a0d3","name":"Zine-El-Abidine Benaissa","key":"zine-el-abidine-benaissa","url":"http://researchr.org/alias/zine-el-abidine-benaissa"}},{"person":{"id":"d3886820-3597-4bb6-96e9-5094a0be7ca2","fullname":"Andrew P. Tolmach","key":"andrewptolmach","url":"http://researchr.org/profile/andrewptolmach"},"alias":{"id":"1c1758a0-8f75-4a42-8365-aa467678c90b","name":"Andrew P. Tolmach","key":"andrew-p.-tolmach","url":"http://researchr.org/alias/andrew-p.-tolmach"}}],"title":"Building Program Optimizers with Rewriting Strategies","organization":"","address":"Baltimore, Maryland, United States","month":"","volume":"","year":"1998","conference":"icfp","note":"","doi":"http://doi.acm.org/10.1145/289423.289425","key":"VisserBT98"},{"abstract":"Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. 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 languages composed\r\nfrom separate grammar modules. To apply this algorithm in an interactive environment, this paper introduces a novel error recovery mechanism. Our approach is language-independent, and relies on automatic derivation of recovery rules from grammars. By taking layout information into consideration it can efficiently suggest natural recovery suggestions.","lastpage":0,"type":"article","url":"http://researchr.org/publication/DeJongeKSV2012","firstpage":0,"issuenumber":"4","journal":"TOPLAS","id":"45345928-3008-4583-815c-a12feaf8bfa6","authors":[{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"bc77897c-76c2-44aa-b377-cca0345f8313","name":"Lennart Kats","key":"lennart-kats","url":"http://researchr.org/alias/lennart-kats"}},{"alias":{"id":"55105c78-e7be-4b5e-8598-bb641a0d9980","name":" Emma Soderberg","key":"emma-soderberg","url":"http://researchr.org/alias/emma-soderberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Natural and Flexible Error Recovery for Generated Modular Language Environments","month":"December","volumenumber":"34","year":"2012","note":"Article No. 15, 50 pages","key":"DeJongeKSV2012","doi":"http://dx.doi.org/10.1145/2400676.2400678"},{"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. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":223,"booktitle":"Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers","number":"","editors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"892937c7-d9f9-49a8-89e6-734b1fb47253","fullname":"Dragan Gasevic","key":"dragangasevic","url":"http://researchr.org/profile/dragangasevic"},"alias":{"id":"4e952583-7834-4817-8b6e-04feaa97fad9","name":"Dragan Gasevic","key":"dragan-gasevic","url":"http://researchr.org/alias/dragan-gasevic"}},{"person":{"id":"474ab36e-49c3-4f85-aa00-417d49005952","fullname":"Jeffrey G. Gray","key":"jeffgray","url":"http://researchr.org/profile/jeffgray"},"alias":{"id":"fefac3e9-8142-40df-9285-12943249e210","name":"Jeff Gray","key":"jeff-gray","url":"http://researchr.org/alias/jeff-gray"}}],"type":"inproceedings","url":"http://researchr.org/publication/JongeNKV09","firstpage":204,"publisher":"Springer","id":"497b9673-b265-4da8-a8ac-78e1aebd4526","authors":[{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"3f77872b-c6b8-42dd-bf3b-4f66dc371407","fullname":"Emma  Nilsson-Nyman","key":"emmanilssonnyman","url":"http://researchr.org/profile/emmanilssonnyman"},"alias":{"id":"acb79742-eafa-497b-9ba1-b9d3f9258506","name":"Emma Nilsson-Nyman","key":"emma-nilsson-nyman","url":"http://researchr.org/alias/emma-nilsson-nyman"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Natural and Flexible Error Recovery for Generated Parsers","organization":"","address":"","month":"","volume":"5969","year":"2009","conference":"sle","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-12107-4_16","key":"JongeNKV09"},{"abstract":"In modern Integrated Development Environments (IDEs), textual editors are interactive and can handle intermediate, incomplete, or otherwise erroneous texts while still providing editor services such as syntax highlighting, error marking, outline views, and hover help. In this paper, we present an approach for the robust synchronization of interactive textual and graphical editors. The approach recovers from errors during parsing and text-to-model synchronization, preserves textual and graphical layout in the presence of erroneous texts and models, and provides synchronized editor services such as selection sharing and navigation between editors. It was implemented for synchronizing textual editors generated by the Spoofax language workbench and graphical editors generated by the Graphical Modeling Framework.","conferenceYear":"","series":"","booktitle":"International Conference on Model Transformation (ICMT 2013)","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/VanRestWSSV2013","firstpage":0,"publisher":"","id":"94a957c0-7607-47f3-a4ad-235d3b188ea1","authors":[{"person":{"id":"f4508f49-3729-4650-8443-44bead237522","fullname":"Oskar van Rest","key":"oskarvanrest","url":"http://researchr.org/profile/oskarvanrest"},"alias":{"id":"c2c23129-7ae2-4a7a-8fd1-a8dff53a4bd6","name":"Oskar van Rest","key":"oskar-van-rest","url":"http://researchr.org/alias/oskar-van-rest"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}},{"person":{"id":"018c1850-58cb-43df-b09e-575b3fc5eee6","fullname":"Jim  Steel","key":"jimsteel","url":"http://researchr.org/profile/jimsteel"},"alias":{"id":"df9e5da7-74b0-4f78-aff9-6eef6a9c469f","name":"Jim Steel","key":"jim-steel","url":"http://researchr.org/alias/jim-steel"}},{"alias":{"id":"05c8d414-f19d-40a9-b3b0-7d133e674956","name":" Jörn Guy Süss","key":"jörn-guy-süss","url":"http://researchr.org/alias/j%C3%B6rn-guy-s%C3%BCss"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Robust Real-Time Synchronization between Textual and Graphical Editors","organization":"","address":"Budapest, Hungary","month":"June","volume":"","year":"2013","conference":"ICMT","note":"","doi":"","key":"VanRestWSSV2013"},{"abstract":"In modern Integrated Development Environments (IDEs), textual editors are interactive and can handle intermediate, incomplete, or otherwise erroneous texts while still providing editor services such as syntax highlighting, error marking, outline views, and hover help. In this paper, we present an approach for the robust synchronization of interactive textual and graphical editors. The approach recovers from errors during parsing and text-to-model synchronization, preserves textual and graphical layout in the presence of erroneous texts and models, and provides synchronized editor services such as selection sharing and navigation between editors. It was implemented for synchronizing textual editors generated by the Spoofax language workbench and graphical editors generated by the Graphical Modeling Framework.","id":"11d3397f-4909-41b6-a824-90fe9166b3a6","authors":[{"person":{"id":"f4508f49-3729-4650-8443-44bead237522","fullname":"Oskar van Rest","key":"oskarvanrest","url":"http://researchr.org/profile/oskarvanrest"},"alias":{"id":"c2c23129-7ae2-4a7a-8fd1-a8dff53a4bd6","name":"Oskar van Rest","key":"oskar-van-rest","url":"http://researchr.org/alias/oskar-van-rest"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}},{"person":{"id":"018c1850-58cb-43df-b09e-575b3fc5eee6","fullname":"Jim  Steel","key":"jimsteel","url":"http://researchr.org/profile/jimsteel"},"alias":{"id":"df9e5da7-74b0-4f78-aff9-6eef6a9c469f","name":"Jim Steel","key":"jim-steel","url":"http://researchr.org/alias/jim-steel"}},{"alias":{"id":"e656bbbf-491f-4e62-b44a-a0c1752dfa52","name":" Jörn Guy Süss","key":"jörn-guy-süss","url":"http://researchr.org/alias/jo%CC%88rn-guy-su%CC%88ss"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Robust Real-Time Synchronization between Textual and Graphical Editors","month":"June","year":"2013","url":"http://researchr.org/publication/preprint-VanRestWSSV2013","note":"","doi":"","key":"preprint-VanRestWSSV2013"},{"abstract":"The 2nd Rewrite Engines Competition (REC) was celebrated as part of the 7th Workshop on Rewriting Logic and its Applications (WRLA 2008). In this edition of the competition participated \fve systems, namely ASF+SDF, Maude, Stratego/XT, Termware, and Tom. We explain here how the competition was organized and conducted, and present its main results and conclusions.","lastpage":291,"type":"article","url":"http://researchr.org/publication/DuranRBBEKKMSV09","firstpage":281,"issuenumber":"3","journal":"Electr. Notes Theor. Comput. Sci.","id":"5f111201-e880-4f4e-8dd7-dae638ea530c","authors":[{"person":{"id":"5e799ec5-0138-4d52-96e0-9fe2260ccb49","fullname":"Francisco Durán","key":"franciscodurn","url":"http://researchr.org/profile/franciscodurn"},"alias":{"id":"218b4885-c44e-4c75-8ddb-6720e976615d","name":"Francisco Durán","key":"francisco-durán","url":"http://researchr.org/alias/francisco-dur%C3%A1n"}},{"alias":{"id":"c1b2512f-132c-4d2b-88c6-f053a97419ac","name":"Manuel Roldán","key":"manuel-roldán","url":"http://researchr.org/alias/manuel-rold%C3%A1n"}},{"person":{"id":"6f5b80d3-8d42-41aa-aabb-575d9d1767ac","fullname":"Emilie  Balland","key":"emilieballand","url":"http://researchr.org/profile/emilieballand"},"alias":{"id":"08b6c6f0-34b8-4e4a-9381-c83041b2766e","name":"Emilie Balland","key":"emilie-balland","url":"http://researchr.org/alias/emilie-balland"}},{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"68fb48e6-1e6d-4a0c-9048-0a9aaa864bf1","fullname":"Steven Eker","key":"steveneker","url":"http://researchr.org/profile/steveneker"},"alias":{"id":"248785ee-e02c-4164-a184-8a6d88bdcb63","name":"Steven Eker","key":"steven-eker","url":"http://researchr.org/alias/steven-eker"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"6b206ce8-b43a-4f82-8b0e-d96b73eb1943","fullname":"Pierre-Etienne Moreau","key":"pierreetiennemoreau","url":"http://researchr.org/profile/pierreetiennemoreau"},"alias":{"id":"a9f2fbc6-0231-4777-a2f4-c0855cddfeeb","name":"Pierre-Etienne Moreau","key":"pierre-etienne-moreau","url":"http://researchr.org/alias/pierre-etienne-moreau"}},{"alias":{"id":"205bf3ef-c2d8-49fb-9d30-ee8c3fde5bc2","name":"Ruslan Shevchenko","key":"ruslan-shevchenko","url":"http://researchr.org/alias/ruslan-shevchenko"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Second Rewrite Engines Competition","month":"","volumenumber":"238","year":"2009","note":"","key":"DuranRBBEKKMSV09","doi":"http://dx.doi.org/10.1016/j.entcs.2009.05.025"},{"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.","conferenceYear":"","series":"","lastpage":798,"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","number":"","editors":[{"alias":{"id":"0c07716a-6765-46eb-adf2-127d0d707917","name":"Shail Arora","key":"shail-arora","url":"http://researchr.org/alias/shail-arora"}},{"alias":{"id":"1a42cab0-1af8-42b8-b90d-096a5ec5440d","name":"Gary T. Leavens","key":"gary-t.-leavens","url":"http://researchr.org/alias/gary-t.-leavens"}}],"type":"inproceedings","url":"http://researchr.org/publication/GroenewegenV09-0","firstpage":797,"publisher":"ACM","id":"8096ad25-8bf7-4954-9332-84e850384286","authors":[{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"46cf4818-8ce7-4644-9ee1-414e4c4960e7","name":"Danny M. Groenewegen","key":"danny-m.-groenewegen","url":"http://researchr.org/alias/danny-m.-groenewegen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Weaving web applications with WebDSL: (demonstration)","organization":"","address":"","month":"","volume":"","year":"2009","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1639950.1640020","key":"GroenewegenV09-0"},{"abstract":"In this paper we present the fusion of generalized LR parsing and scannerless parsing. This combination supports syntax definitions in which all aspects (lexical and context-free) of the syntax of a language are defined explicitly in one formalism. Furthermore, there are no restrictions on the class of grammars, thus allowing a natural syntax tree structure. Ambiguities that arise through the use of unrestricted grammars are handled by explicit disambiguation constructs, instead of implicit defaults that are taken by traditional scanner and parser generators. Hence, a syntax definition becomes a full declarative description of a language. Scannerless generalized LR parsing is a viable technique that has been applied in various industrial and academic projects. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":158,"booktitle":"Compiler Construction, 11th International Conference, CC 2002, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2002, Grenoble, France, April 8-12, 2002, Proceedings","number":"","editors":[{"alias":{"id":"04110d1a-1a6c-445c-b759-b4b57942fc22","name":"R. Nigel Horspool","key":"r.-nigel-horspool","url":"http://researchr.org/alias/r.-nigel-horspool"}}],"type":"inproceedings","url":"http://researchr.org/publication/BrandSVV02","firstpage":143,"publisher":"Springer","id":"04b09c75-4dda-4550-aa7a-ec96ee3aeccf","authors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"754f998d-c234-484c-af81-a9ce20847311","fullname":"Jeroen Scheerder","key":"jeroenscheerder","url":"http://researchr.org/profile/jeroenscheerder"},"alias":{"id":"ea3d18e7-c65d-4372-8636-5b4608ca32c4","name":"Jeroen Scheerder","key":"jeroen-scheerder","url":"http://researchr.org/alias/jeroen-scheerder"}},{"person":{"id":"8ed1149d-5533-4120-8079-88085c44c8ef","fullname":"Jurgen J.  Vinju","key":"jurgenjvinju","url":"http://researchr.org/profile/jurgenjvinju"},"alias":{"id":"61686a94-9539-4a0b-99de-42c7c3d2acae","name":"Jurgen J. Vinju","key":"jurgen-j.-vinju","url":"http://researchr.org/alias/jurgen-j.-vinju"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Disambiguation Filters for Scannerless Generalized LR Parsers","organization":"","address":"","month":"","volume":"2304","year":"2002","conference":"cc","note":"","doi":"http://link.springer.de/link/service/series/0558/bibs/2304/23040143.htm","key":"BrandSVV02"},{"abstract":"Instruction selection (mapping IR trees to machine instructions) can be expressed by means of rewrite rules. Typically, such sets of rewrite rules are highly ambiguous. Therefore, standard rewriting engines based on fixed, exhaustive strategies are not appropriate for the execution of instruction selection. Code generator generators use special purpose implementations employing dynamic programming. In this paper we show how rewriting strategies for instruction selection can be encoded concisely in Stratego, a language for program transformation based on the paradigm of programmable rewriting strategies. This embedding obviates the need for a language dedicated to code generation, and makes it easy to combine code generation with other optimizations. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":251,"booktitle":"Rewriting Techniques and Applications, 13th International Conference, RTA 2002, Copenhagen, Denmark, July 22-24, 2002, Proceedings","number":"","editors":[{"alias":{"id":"a5278e69-a02e-4cc2-b31f-899420a9e6e7","name":"Sophie Tison","key":"sophie-tison","url":"http://researchr.org/alias/sophie-tison"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerV02","firstpage":237,"publisher":"Springer","id":"3bed5ed3-95ae-4b2f-991e-ac1968ffc47c","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Rewriting Strategies for Instruction Selection","organization":"","address":"","month":"","volume":"2378","year":"2002","conference":"rta","note":"","doi":"http://link.springer.de/link/service/series/0558/bibs/2378/23780237.htm","key":"BravenboerV02"},{"abstract":"In meta-programming with concrete object syntax, meta programs can be\r\nwritten using the concrete syntax of manipulated programs.  Quotations\r\nof concrete syntax fragments and anti-quotations for meta-level\r\nexpressions and variables are used to manipulate the abstract\r\nrepresentation of programs.  These small, isolated fragments are often\r\nambiguous and must be explicitly disambiguated with quotation tags or\r\ntypes, using names from the non-terminals of the object language\r\nsyntax.  Discoverability of these names has been an open issue, as\r\nthey depend on the (grammar) implementation and are not part of the\r\nconcrete syntax of a language.  Based on advances in interactive\r\ndevelopment environments, we introduce _interactive disambiguation_ to\r\naddress this issue, providing real-time feedback and proposing quick\r\nfixes in case of ambiguities.\r\n","conferenceYear":"2010","series":"Lecture Notes in Computer Science","lastpage":0,"booktitle":"Software Language Engineering, Third International Conference, SLE 2010, Eindhoven, The Netherlands, October 12-13, 2010, Revised Selected Papers","number":"","editors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"alias":{"id":"656064e2-e4fc-45ea-b03b-abc5e7783b99","name":"Brian Malloy","key":"brian-malloy","url":"http://researchr.org/alias/brian-malloy"}},{"alias":{"id":"38c08b6b-f450-4293-9d46-4ca937072e67","name":"Steffen Staab","key":"steffen-staab","url":"http://researchr.org/alias/steffen-staab"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsKV-SLE-2010","firstpage":0,"publisher":"Springer","id":"8ba7b2bf-84e7-4fa6-9ff0-5fe7d83e1ad5","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Interactive Disambiguation of Meta Programs with Concrete Object Syntax","organization":"","address":"","month":"","volume":"","year":"2011","conference":"SLE","note":"","doi":"","key":"KatsKV-SLE-2010"},{"abstract":"Data-flow transformations used in optimizing compilers are also useful in other programming tools such as code generators, aspect weavers, domain-specific optimizers, and refactoring tools. These applications require source-to-source transformations rather than transformations on a low-level intermediate representation. In this paper we describe the composition of source-to-source data-flow transformations in the program transformation language Stratego. The language supports the high-level specification of transformations by means of rewriting strategy combinators that allow a natural modeling of data- and control-flow without committing to a specific source language. Data-flow facts are propagated using dynamic rewriting rules. In particular, we introduce the concept of dependent dynamic rewrite rules for modeling the dependencies of data-flow facts on program entities such as variables. The approach supports the combination of analysis and transformation, the combination of multiple transformations, the combination with other types of transformations, and the correct treatment of variable binding constructs and lexical scope to avoid free variable capture.","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":220,"booktitle":"Compiler Construction, 14th International Conference, CC 2005, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2005, Edinburgh, UK, April 4-8, 2005, Proceedings","number":"","editors":[{"alias":{"id":"11352994-4dcb-4067-99c6-a3a3b0c60bbe","name":"Rastislav Bodík","key":"rastislav-bodík","url":"http://researchr.org/alias/rastislav-bod%C3%ADk"}}],"type":"inproceedings","url":"http://researchr.org/publication/OlmosV05","firstpage":204,"publisher":"Springer","id":"1e105541-ccd4-4beb-91ef-7d6031f80c36","authors":[{"person":{"id":"3a540653-1069-400e-93e1-051060c87ab1","fullname":"Karina Olmos","key":"karinaolmos","url":"http://researchr.org/profile/karinaolmos"},"alias":{"id":"8e6fdae1-9b09-4e01-8a08-f1ac76e40742","name":"Karina Olmos","key":"karina-olmos","url":"http://researchr.org/alias/karina-olmos"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Composing Source-to-Source Data-Flow Transformations with Rewriting Strategies and Dependent Dynamic Rewrite Rules","organization":"","address":"","month":"","volume":"3443","year":"2005","conference":"cc","note":"","doi":"http://springerlink.metapress.com/openurl.asp?genre=article&amp;issn=0302-9743&amp;volume=3443&amp;spage=204","key":"OlmosV05"},{"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.","id":"dc0ece7b-7365-4c49-a2bd-e4bf110e4f3e","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Programming the Mobile Web with Mobl","month":"January","year":"2011","url":"http://researchr.org/publication/HemelVisser2011A","note":"","doi":"http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2011-001.pdf","key":"HemelVisser2011A"},{"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.","id":"69a773ef-6fb1-4a0e-8967-79c92f98d45c","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Declaratively Programming the Mobile Web with Mobl","month":"August","year":"2011","url":"http://researchr.org/publication/HemelVisser2011-TUD-SERG-2011-024","note":"","doi":"","key":"HemelVisser2011-TUD-SERG-2011-024"},{"abstract":"Good documentation is important for the production of reusable and maintainable software. For the production of accurate documentation it is necessary that the original program text is not copied manually to obtain a typeset version. Apart from being tedious, this will invariably introduce errors. The production of tools that support the production of legible and accurate documentation is a software engineering challenge in itself. We present an algebraic approach to the generation of tools that produce typographically effective presentations of computer programs. A specification of a formatter is generated from the context-free grammar of a (programming) language. These generated formatters translate abstract syntax trees of programs into box expressions. Box expressions are translated by language-independent interpreters of the box language into ASCII or TEX. The formatting rules that are generated can easily be tuned in order to get the desired formatting of programs. We demonstrate this by means of real-life applications. Furthermore, we give a practical solution for the problem of formatting comments, which occur in the original text. The formatter generation approach proposed in this article can be used to generate formatting programs for arbitrary programming environments. Our formatter generation approach can be used to automatically generate formatters that have to be programmed explicitly in other systems.  ","lastpage":41,"type":"article","url":"http://researchr.org/publication/BrandV96","firstpage":1,"issuenumber":"1","journal":"ACM Trans. Softw. Eng. Methodol.","id":"2a4694ef-8b5b-4111-8cd9-d184ddbc826b","authors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Generation of Formatters for Context-Free Languages","month":"","volumenumber":"5","year":"1996","note":"","key":"BrandV96","doi":"http://doi.acm.org/10.1145/226155.226156"},{"abstract":"Evaluation of parse error recovery techniques is an open problem. \r\nThe community lacks objective \r\nstandards and methods to measure the quality of recovery results.\r\nThis paper proposes an automated technique for recovery evaluation\r\nthat offers a solution for two main problems in this area.\r\nFirst, a representative testset is generated by a mutation based\r\nfuzzing technique that applies knowledge about common syntax errors.\r\nSecondly, the quality of the recovery results is automatically measured using \r\nan oracle-based evaluation technique.\r\nWe evaluate the validity of our approach by comparing results obtained by automated\r\nevaluation with results obtained by manual inspection.\r\nThe evaluation shows a clear correspondence between our quality metric and human judgement.","conferenceYear":"","series":"","booktitle":"27th IEEE/ACM International Conference on Automated Software Engineering (ASE 2012), September 3-7, Essen, Germany","number":"","lastpage":325,"type":"inproceedings","url":"http://researchr.org/publication/DeJongeVisserASE2012","firstpage":322,"publisher":"ACM","id":"6cb73eaf-58a9-45ed-aaf0-42deb98a6a60","authors":[{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Automated Evaluation of Syntax Error Recovery","organization":"","address":"","month":"","volume":"","year":"2012","conference":"ASE","note":"","doi":"http://dx.doi.org/10.1145/2351676.2351736","key":"DeJongeVisserASE2012"},{"abstract":"Syntax discoverability has been a crucial advantage of structure editors\r\nfor new users of a language. Despite this advantage, structure editors have\r\nnot been widely adopted. Based on immediate parsing and analyses, modern\r\ntextual code editors are also increasingly syntax-aware: structure and\r\ntextual editors are converging into a new editing paradigm that combines\r\ntext and templates. Current text-based language workbenches require redundant\r\nspecification of the ingredients for a template-based editor, which\r\nis detrimental to the quality of syntactic completion, as consistency and\r\ncompleteness of the definition cannot be guaranteed.\r\n\r\nIn this paper we describe the design and implementation of a specification\r\nlanguage for syntax definition based on templates. It unifies\r\nthe specification of parsers, unparsers and template-based editors. We\r\nevaluate the template language by application to to two domain-specific\r\nlanguages used for tax benefits and mobile applications.","conferenceYear":"","series":"","lastpage":0,"booktitle":"Workshop on Language Descriptions, Tools, and Applications, Proceedings","number":"","editors":[{"alias":{"id":"5384fbbe-a129-4b4a-8b46-1a54bb9c56fd","name":"Suzana Andova","key":"suzana-andova","url":"http://researchr.org/alias/suzana-andova"}},{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"a037cb7f-a2e6-4ee9-ad8a-8eff3c869696","name":"Tony Sloane","key":"tony-sloane","url":"http://researchr.org/alias/tony-sloane"}}],"type":"inproceedings","url":"http://researchr.org/publication/VollebregtKatsVisser2012","firstpage":0,"publisher":"","id":"fc2723a0-e1de-48d3-9dea-e1dfb862f2e4","authors":[{"person":{"id":"a56299ba-72e6-4ef6-ba16-675a77c6c404","fullname":"Tobi Vollebregt","key":"tobivollebregt","url":"http://researchr.org/profile/tobivollebregt"},"alias":{"id":"d1785a71-00c6-47b7-a033-b5c70787c46d","name":"Tobi Vollebregt","key":"tobi-vollebregt","url":"http://researchr.org/alias/tobi-vollebregt"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Declarative Specification of Template-Based Textual Editors","organization":"","address":"","month":"","volume":"","year":"2012","conference":"LDTA","note":"","doi":"http://dx.doi.org/10.1145/2427048.2427056","key":"VollebregtKatsVisser2012"},{"abstract":"This chapter introduces a modular, applicative, multi-level equational specification formalism that supports algebraic specification with user-definable type constructors, polymorphic functions and higher-order functions. Specifications consist of one or more levels numbered $0$ to $n$. Level~0 defines the object level terms. Level~1 defines the types used in the signature of level~0. In general, the terms used as types in level~$n$ are defined in level~$n+1$. This setup makes the algebra of types and the algebra of types of types, etc., user-definable. The applicative term structure makes functions first-class citizens and facilitates higher-order functions. The use of variables in terms used as types provides polymorphism (including higher-order polymorphism, i.e., abstraction over type constructors). Functions and variables can be overloaded. Specifications can be divided into modules. Modules can be imported at several levels by means of a specification lifting operation. Equations define the semantics of terms over a signature. The formalism also allows equations over types, by means of which many type systems can be described. The typechecker presented in this chapter does not take into account type equations. \r\n\r\nThe specification, in Asf+Sdf, of the syntax, type system and semantics of the formalism is presented in three stages: (1) untyped equational specifications (2) applicative one-level specifications (3) modular multi-level specifications. The definition of a typechecker for stages (2) and (3) is divided into four parts: (a) well-formedness judgements verifying type correctness of fully annotated terms and specifications, (b) non well-formedness rules giving descriptive error messages for the cases not covered under (a), (c) a type assignment function annotating the terms in a plain specification with types, and (d) a typechecking function which checks well-formedness after applying type assignment. These functions are defined uniformly for all levels of a specification. \r\n\r\nAside of defining a new specification formalism, this chapter illustrates the use of Asf+Sdf for the design and prototyping of sophisticated specification formalisms.","series":"AMAST Series in Computing","booktitle":"Language Prototyping. An Algebraic Specification Approach","number":"","lastpage":0,"editors":[{"person":{"id":"5e9231bc-7344-4887-b4ed-688c0bf897eb","fullname":"Arie  van Deursen","key":"arievandeursen","url":"http://researchr.org/profile/arievandeursen"},"alias":{"id":"5d7ca2cc-276c-42f2-8b13-7b2349837763","name":"A.  van Deursen","key":"a.-van-deursen","url":"http://researchr.org/alias/a.-van-deursen"}},{"person":{"id":"6e354bcc-77fd-46b2-a845-aa07ea761006","fullname":"Jan Heering","key":"janheering","url":"http://researchr.org/profile/janheering"},"alias":{"id":"27a5e972-4d3c-4667-9381-c99daccf42b4","name":"J. Heering","key":"j.-heering","url":"http://researchr.org/alias/j.-heering"}},{"person":{"id":"37c2b529-fbd6-4ebd-9ca5-6dbe5dcdeeba","fullname":"Paul  Klint","key":"paulklint","url":"http://researchr.org/profile/paulklint"},"alias":{"id":"73deb339-2532-424f-a75e-f554d7452182","name":"P.  Klint","key":"p.-klint","url":"http://researchr.org/alias/p.-klint"}}],"type":"inproceedings","url":"http://researchr.org/publication/Vis96.mls","firstpage":0,"publisher":"World Scientific","id":"60631d4d-28ee-49d7-997a-7d99e5501693","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Multi-Level Specifications","organization":"","address":"Singapore","month":"September","volume":"5","year":"1996","note":"","doi":"","key":"Vis96.mls"},{"abstract":"Data-ﬂow optimizations are usually implemented on low-level intermediate repre- \r\nsentations. This is not appropriate for source-to-source optimizations, which re- \r\nconstruct a source level program after transformation. In this paper we show how \r\nconstant propagation, a well known data-ﬂow optimization problem, can be imple- \r\nmented on abstract syntax trees in Stratego, a rewriting system extended with \r\nprogrammable rewriting strategies for the control over the application of rules and \r\ndynamic rewrite rules for the propagation of information. ","lastpage":0,"type":"article","url":"http://researchr.org/publication/OlmosV02","firstpage":0,"issuenumber":"6","journal":"Electr. Notes Theor. Comput. Sci.","id":"dbd8e28e-c916-4843-bd37-30ee12d7c116","authors":[{"person":{"id":"3a540653-1069-400e-93e1-051060c87ab1","fullname":"Karina Olmos","key":"karinaolmos","url":"http://researchr.org/profile/karinaolmos"},"alias":{"id":"8e6fdae1-9b09-4e01-8a08-f1ac76e40742","name":"Karina Olmos","key":"karina-olmos","url":"http://researchr.org/alias/karina-olmos"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Strategies for Source-to-Source Constant Progagation","month":"","volumenumber":"70","year":"2002","note":"","key":"OlmosV02","doi":"http://www.elsevier.com/gej-ng/31/29/23/125/47/show/Products/notes/index.htt#009"},{"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","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":373,"booktitle":"Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007","number":"","editors":[{"person":{"id":"1605f420-86fe-4521-9126-c8999c59b3ed","fullname":"Ralf Lämmel","key":"ralflaemmel","url":"http://researchr.org/profile/ralflaemmel"},"alias":{"id":"1cd5b8f9-4e0d-4121-a444-1a1c3466e59c","name":"Ralf Lämmel","key":"ralf-lämmel","url":"http://researchr.org/alias/ralf-l%C3%A4mmel"}},{"person":{"id":"96380068-84b9-436b-ab9b-40d90a566d94","fullname":"Joost Visser","key":"joostvisser","url":"http://researchr.org/profile/joostvisser"},"alias":{"id":"a2685a71-4f48-405f-8d9b-0c4757bcef35","name":"Joost Visser","key":"joost-visser","url":"http://researchr.org/alias/joost-visser"}},{"person":{"id":"5c5d9adc-5293-437a-80e2-bf1044dc8837","fullname":"João Saraiva","key":"joosaraiva","url":"http://researchr.org/profile/joosaraiva"},"alias":{"id":"55af31cd-7a9b-4070-894f-8497836f6610","name":"João Saraiva","key":"joão-saraiva","url":"http://researchr.org/alias/jo%C3%A3o-saraiva"}}],"type":"inproceedings","url":"http://researchr.org/publication/Visser07","firstpage":291,"publisher":"Springer","id":"29f153a5-8b61-4bf9-96f8-33d1b849c1c3","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"WebDSL: A Case Study in Domain-Specific Language Engineering","organization":"","address":"Braga, Portugal","month":"","volume":"5235","year":"2007","conference":"gttse","note":"","doi":"http://dx.doi.org/10.1007/978-3-540-88643-3_7","key":"Visser07"},{"abstract":"","lastpage":0,"type":"article","url":"http://researchr.org/publication/CabotV12","firstpage":0,"issuenumber":"2","journal":"Journal of Object Technology","id":"37c808b5-ae09-4908-b312-a078301a90e3","authors":[{"person":{"id":"f0e3a767-436d-4b2f-918d-2591770dafbe","fullname":"Jordi  Cabot","key":"jordicabot","url":"http://researchr.org/profile/jordicabot"},"alias":{"id":"f1481976-15a0-4533-ba1f-ec68705035ba","name":"Jordi Cabot","key":"jordi-cabot","url":"http://researchr.org/alias/jordi-cabot"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"ICMT 2011 Special Section","month":"","volumenumber":"11","year":"2012","note":"","key":"CabotV12","doi":""},{"abstract":"Evaluation of parse error recovery techniques is an open problem.\r\nThe community lacks objective standards and methods to measure\r\nthe quality of recovery results. This paper provides an automated\r\ntechnique for recovery evaluation. The technique offers\r\na solution for two main problems in this area. First, a representative\r\ntestset is generated by a mutation based fuzzing technique\r\nthat applies knowledge about common syntax errors. Secondly, the\r\nquality of the recovery results is automatically measured using an\r\noracle-based evaluation technique. We evaluate the validity of our\r\napproach by comparing the results obtained by automated evaluation\r\nwith the results obtained by manual inspection. The evaluation\r\nshows a clear correspondence between our quality metric and human\r\njudgement.","id":"19f6175e-9bdc-4473-89b6-13ab858bafa3","authors":[{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Automated Evaluation of Syntax Error Recovery ","month":"","year":"2012","url":"http://researchr.org/publication/DeJongeVisser2012-TR","note":"","doi":"http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2012-009.pdf","key":"DeJongeVisser2012-TR"},{"abstract":"In this paper we design a syntax definition formalism as a family of formalisms. Starting with a small kernel, several features for syntax definition are designed orthogonally to each other. This provides a framework for constructing new formalisms by adapting and extending old ones. The formalism is developed with the algebraic specification formalism ASF+SDF. It provides the following features: lexical and context-free syntax, variables, disambiguation by priorities, regular expressions, character classes and modular definitions. New are the uniform treatment of lexical syntax, context-free syntax and variables, the treatment of regular expressions by normalization yielding abstract syntax without auxiliary sorts, regular expressions as result of productions and modules with hidden imports and renamings.","conferenceYear":"","series":"","lastpage":0,"booktitle":"ASF+SDF 1995. A Workshop on Generating Tools from Algebraic Specifications","number":"","editors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"45ff7626-fa05-4763-b4ae-78375c138a81","name":"van den Brand, M. G. J.","key":"van-den-brand,-m.-g.-j.","url":"http://researchr.org/alias/van-den-brand%2C-m.-g.-j."}},{"alias":{"id":"4b1256a9-5257-4ec4-ac39-c0eaec448c43","name":"others","key":"others","url":"http://researchr.org/alias/others"}}],"type":"inproceedings","url":"http://researchr.org/publication/Vis95.sdf","firstpage":0,"publisher":"Technical Report P9504, Programming Research Group, University of Amsterdam","id":"c7085129-45c7-4a8f-af2c-0418170b7335","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A Family of Syntax Definition Formalisms","organization":"","address":"","month":"May","volume":"","year":"1995","conference":"ASFSDF","note":"","doi":"","key":"Vis95.sdf"},{"abstract":"Strategic programming is a generic programming idiom for processing compound data such as terms or object structures. At the heart of the approach is the separation of two concerns: basic dataprocessing computations vs. traversal schemes. Actual traversals are composed by passing the former as arguments to the latter. Traversal schemes can be defined by the strategic programmer using a combinator style that relies on primitives for layered traversal.In this paper, we take a look at strategic programming from an aspect-oriented programming perspective. Throughout the paper, we compare strategic programming with adaptive programming, which is a well-established aspectual approach to the traversal of object structures. We start from the observation that aspect-oriented programming terms, e.g., crosscutting, join point, and advice can be instantiated for aspectual traversal approaches. ","conferenceYear":"","series":"","lastpage":177,"booktitle":"AOSD","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/LammelVV03","firstpage":168,"publisher":"","id":"215807d6-85e6-4019-baa2-2cf3d5d60f50","authors":[{"person":{"id":"1605f420-86fe-4521-9126-c8999c59b3ed","fullname":"Ralf Lämmel","key":"ralflaemmel","url":"http://researchr.org/profile/ralflaemmel"},"alias":{"id":"1cd5b8f9-4e0d-4121-a444-1a1c3466e59c","name":"Ralf Lämmel","key":"ralf-lämmel","url":"http://researchr.org/alias/ralf-l%C3%A4mmel"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"96380068-84b9-436b-ab9b-40d90a566d94","fullname":"Joost Visser","key":"joostvisser","url":"http://researchr.org/profile/joostvisser"},"alias":{"id":"a2685a71-4f48-405f-8d9b-0c4757bcef35","name":"Joost Visser","key":"joost-visser","url":"http://researchr.org/alias/joost-visser"}}],"title":"Strategic programming meets adaptive programming","organization":"","address":"","month":"","volume":"","year":"2003","conference":"aosd","note":"","doi":"http://doi.acm.org/10.1145/643603.643621","key":"LammelVV03"},{"abstract":"Meta programs manipulate structured representations, i.e., abstract syntax trees, of programs. The conceptual distance between the concrete syntax meta-programmers use to reason about programs and the notation for abstract syntax manipulation provided by general purpose (meta-) programming languages is too great for many applications. In this paper it is shown how the syntax definition formalism SDF can be employed to fit any meta-programming language with concrete syntax notation for composing and analyzing object programs. As a case study, the addition of concrete syntax to the program transformation language Stratego is presented. The approach is then generalized to arbitrary meta-languages. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":315,"booktitle":"Generative Programming and Component Engineering, ACM SIGPLAN/SIGSOFT Conference, GPCE 2002, Pittsburgh, PA, USA, October 6-8, 2002, Proceedings","number":"","editors":[{"person":{"id":"38f8a44a-60f3-472f-870d-68ed0ae161e8","fullname":"Don S. Batory","key":"donsbatory","url":"http://researchr.org/profile/donsbatory"},"alias":{"id":"57485cad-e284-4e71-b180-2b0878b3c28f","name":"Don S. Batory","key":"don-s.-batory","url":"http://researchr.org/alias/don-s.-batory"}},{"alias":{"id":"a1653a2a-1cf9-4ff3-8dfa-cb71f898a0c3","name":"Charles Consel","key":"charles-consel","url":"http://researchr.org/alias/charles-consel"}},{"person":{"id":"9c636405-26d3-47df-8bbf-4f1ea7dceb7b","fullname":"Walid Taha","key":"walidtaha","url":"http://researchr.org/profile/walidtaha"},"alias":{"id":"d7722e79-9b93-45ef-bc15-de1703553ecf","name":"Walid Taha","key":"walid-taha","url":"http://researchr.org/alias/walid-taha"}}],"type":"inproceedings","url":"http://researchr.org/publication/Visser02","firstpage":299,"publisher":"Springer","id":"c99e9946-9756-4928-84a3-d07e6af1a3e6","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Meta-programming with Concrete Object Syntax","organization":"","address":"","month":"","volume":"2487","year":"2002","conference":"gpce","note":"","doi":"http://link.springer.de/link/service/series/0558/bibs/2487/24870299.htm","key":"Visser02"},{"abstract":"","conferenceYear":"","series":"","booktitle":"Companion to the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2011, Portland, OR, USA, October 22 - 27, 2011","number":"","lastpage":18,"type":"inproceedings","url":"http://researchr.org/publication/ErdwegKRKOV11","firstpage":17,"publisher":"ACM","id":"5d2c7fbc-f068-4b87-a284-eb0f38714bb3","authors":[{"person":{"id":"e8c80e8e-3d66-402e-bb24-a60cf0085c63","fullname":"Sebastian Erdweg","key":"sebastianerdweg","url":"http://researchr.org/profile/sebastianerdweg"},"alias":{"id":"cda2d354-a0da-4dd7-ab26-dd571a765213","name":"Sebastian Erdweg","key":"sebastian-erdweg","url":"http://researchr.org/alias/sebastian-erdweg"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"2112ab40-0f9a-41fd-bf2e-b12f61810662","fullname":"Tillmann Rendel","key":"tillmannrendel","url":"http://researchr.org/profile/tillmannrendel"},"alias":{"id":"e839bcc2-8db4-4418-a57b-bde2c6b4ecb1","name":"Tillmann Rendel","key":"tillmann-rendel","url":"http://researchr.org/alias/tillmann-rendel"}},{"person":{"id":"829f94e1-744a-4e55-8f54-5eec4781c7cc","fullname":"Christian Kästner","key":"ckaestne","url":"http://researchr.org/profile/ckaestne"},"alias":{"id":"6fb4f8d6-0e7b-4143-9b91-9d7278c2e35b","name":"Christian K{\\\"a}stner","key":"christian-k{\\\"a}stner","url":"http://researchr.org/alias/christian-k%7B%5Eb%22a%7Dstner"}},{"person":{"id":"2c38f199-71de-4a67-9009-0f5c2b394c75","fullname":"Klaus Ostermann","key":"klausostermann","url":"http://researchr.org/profile/klausostermann"},"alias":{"id":"fe7922a4-708f-4fd1-b0df-82072a7a1b57","name":"Klaus Ostermann","key":"klaus-ostermann","url":"http://researchr.org/alias/klaus-ostermann"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Library-based model-driven software development with SugarJ","organization":"","address":"","month":"","volume":"","year":"2011","conference":"OOPSLA","note":"","doi":"http://doi.acm.org/10.1145/2048147.2048156","key":"ErdwegKRKOV11"},{"abstract":"Many language processing operations have a generic underlying algorithm. However,\r\nthese generic algorithms either have to be implemented specifically for the language\r\nunder consideration or the language needs to be encoded in a generic format that the\r\ngeneric algorithm works on.  Stratego is a language for program transformation that\r\nsupports both specific and generic views of data types.\r\n\r\nA Stratego program defines a transformation on first-order ground\r\nterms. Transformation rules define single transformation steps. Transformation rules\r\nare combined into transformation \\emph{strategies} by means of combinators that\r\ndetermine where and in what order rules are applied.  These combinators include:\r\nprimitives for traversal to the direct subterms of a node, allowing the definition of\r\nmany kinds of full term traversals; full control over recursion in traversals;\r\npatterns as first-class citizens; generic term construction and deconstruction.\r\n\r\nThese features create a setting in which it is possible to combine generic traversal\r\nwith data type specific pattern matching, and separating logic (transformation,\r\npattern matching) from control (traversal).  This makes it possible to give language\r\nindependent descriptions of language processing operations that can be instantiated\r\nto a specific language by providing the patterns of the relevant constructs. These\r\ngeneric algorithms only touch relevant constructors and do not need to know the\r\nentire datatype, making the algorithms insensitive to changes in the abstract syntax\r\nthat do not affect the constructors relevant to the operation.\r\n\r\nStratego is currently implemented by compilation to C code.  All constructs of the\r\nlanguage are implemented directly, i.e., the compiled program is as large as the\r\nspecification, in contrast to approaches that rely on preprocessing or program\r\ngeneration which may have a scaling problem when dealing with large languages.\r\n\r\nThe approach to generic programming in Stratego is illustrated by means of several\r\nexamples including free variable extraction, bound variable renaming, substitution\r\nand syntactic unification.","id":"171a32f7-ef6d-4a35-801c-f0377651ce49","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Language Independent Traversals for Program Transformation","month":"July","year":"2000","url":"http://researchr.org/publication/preprint-Vis00","note":"","doi":"","key":"preprint-Vis00"},{"abstract":"Hospital environments are currently primarily device-oriented: software services are installed, often manually, on specific devices. For instance, an application to view MRI scans may only be available on a limited number of workstations. The medical world is changing to a service-oriented environment, which means that every software service should be available on every device. However, these devices have widely varying capabilities, ranging from powerful workstations to PDAs, and high-bandwidth local machines to low-bandwidth remote machines. To support running applications in such an environment, we need to treat the hospital machines as a cloud, where components of the application are automatically deployed to machines in the cloud with the required capabilities and connectivity. In this paper, we suggest an architecture for applications in such a cloud, in which components are reliably and automatically deployed on the basis of a declarative model of the application using the Nix package manager.","conferenceYear":"","series":"","lastpage":0,"booktitle":"CLOUD '09: Proceedings of the 2009 ICSE Workshop on Software Engineering Challenges of Cloud Computing","number":"","editors":[{"alias":{"id":"8fd3be78-37e4-49af-8572-8c947c727c3d","name":"Kamal Bhattacharya","key":"kamal-bhattacharya","url":"http://researchr.org/alias/kamal-bhattacharya"}},{"alias":{"id":"d2a9ca7b-c978-4f40-b64a-67cf027df263","name":"Martin Bichler","key":"martin-bichler","url":"http://researchr.org/alias/martin-bichler"}},{"alias":{"id":"e7406112-226b-43ee-8d05-5925e6917648","name":"Stefan Tai","key":"stefan-tai","url":"http://researchr.org/alias/stefan-tai"}}],"type":"inproceedings","url":"http://researchr.org/publication/BDV09.cloud","firstpage":0,"publisher":"IEEE Computer Society","id":"7c0937a3-3668-4bf5-b7c8-b7122158ed4f","authors":[{"person":{"id":"3c0a97d9-6bc7-4621-8452-5e6bfd1190e4","fullname":"Sander  van der Burg","key":"sandervanderburg","url":"http://researchr.org/profile/sandervanderburg"},"alias":{"id":"fde9ca0d-5679-486a-9a53-efa35d81da4b","name":"Sander van der Burg","key":"sander-van-der-burg","url":"http://researchr.org/alias/sander-van-der-burg"}},{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"3a8ae491-5c79-4670-9a35-cfe59537630e","fullname":"Merijn de Jonge","key":"merijndejonge","url":"http://researchr.org/profile/merijndejonge"},"alias":{"id":"c2fd021b-7f7b-44c3-af97-49d7d58c8f32","name":"Merijn de Jonge","key":"merijn-de-jonge","url":"http://researchr.org/alias/merijn-de-jonge"}}],"title":"Software deployment in a dynamic cloud: From device to service orientation in a hospital environment","organization":"","address":"Vancouver, Canada","month":"May","volume":"","year":"2009","conference":"CLOUD","note":"","doi":"http://dx.doi.org/10.1109/CLOUD.2009.5071534","key":"BDV09.cloud"},{"abstract":"","conferenceYear":"","series":"","booktitle":"Companion to the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2011, Portland, OR, USA, October 22 - 27, 2011","number":"","lastpage":188,"type":"inproceedings","url":"http://researchr.org/publication/DBLP%3Aconf-oopsla-ErdwegKRKOV11a-0","firstpage":187,"publisher":"ACM","id":"cc728aa1-50cc-4b18-adb3-e991b59295a5","authors":[{"person":{"id":"e8c80e8e-3d66-402e-bb24-a60cf0085c63","fullname":"Sebastian Erdweg","key":"sebastianerdweg","url":"http://researchr.org/profile/sebastianerdweg"},"alias":{"id":"cda2d354-a0da-4dd7-ab26-dd571a765213","name":"Sebastian Erdweg","key":"sebastian-erdweg","url":"http://researchr.org/alias/sebastian-erdweg"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"2112ab40-0f9a-41fd-bf2e-b12f61810662","fullname":"Tillmann Rendel","key":"tillmannrendel","url":"http://researchr.org/profile/tillmannrendel"},"alias":{"id":"e839bcc2-8db4-4418-a57b-bde2c6b4ecb1","name":"Tillmann Rendel","key":"tillmann-rendel","url":"http://researchr.org/alias/tillmann-rendel"}},{"person":{"id":"829f94e1-744a-4e55-8f54-5eec4781c7cc","fullname":"Christian Kästner","key":"ckaestne","url":"http://researchr.org/profile/ckaestne"},"alias":{"id":"6fb4f8d6-0e7b-4143-9b91-9d7278c2e35b","name":"Christian K{\\\"a}stner","key":"christian-k{\\\"a}stner","url":"http://researchr.org/alias/christian-k%7B%5Eb%22a%7Dstner"}},{"person":{"id":"2c38f199-71de-4a67-9009-0f5c2b394c75","fullname":"Klaus Ostermann","key":"klausostermann","url":"http://researchr.org/profile/klausostermann"},"alias":{"id":"fe7922a4-708f-4fd1-b0df-82072a7a1b57","name":"Klaus Ostermann","key":"klaus-ostermann","url":"http://researchr.org/alias/klaus-ostermann"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"SugarJ: library-based language extensibility","organization":"","address":"","month":"","volume":"","year":"2011","conference":"OOPSLA","note":"","doi":"http://doi.acm.org/10.1145/2048147.2048199","key":"DBLP:conf-oopsla-ErdwegKRKOV11a-0"},{"abstract":"Stratego/XT is a framework for the development of transformation systems aiming to support a wide range of program transformations. The framework consists of the transformation language Stratego and the XT collection of transformation tools. Stratego is based on the paradigm of rewriting under the control of programmable rewriting strategies. The XT tools provide facilities for the infrastructure of transformation systems including parsing and pretty-printing. The framework addresses the entire range of the development process; from the specification of transformations to their composition into transformation systems. This chapter gives an overview of the main ingredients involved in the composition of transformation systems with Stratego/XT, where we distinguish the abstraction levels of rules, strategies, tools, and systems.","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":238,"booktitle":"Domain-Specific Program Generation, International Seminar, Dagstuhl Castle, Germany, March 23-28, 2003, Revised Papers","number":"","editors":[{"person":{"id":"ef3493a4-c823-43d6-b7d4-2a302d206e7e","fullname":"Christian Lengauer","key":"christianlengauer","url":"http://researchr.org/profile/christianlengauer"},"alias":{"id":"418346b7-d9f6-48b5-8f4d-55a344ab78fe","name":"Christian Lengauer","key":"christian-lengauer","url":"http://researchr.org/alias/christian-lengauer"}},{"person":{"id":"38f8a44a-60f3-472f-870d-68ed0ae161e8","fullname":"Don S. Batory","key":"donsbatory","url":"http://researchr.org/profile/donsbatory"},"alias":{"id":"57485cad-e284-4e71-b180-2b0878b3c28f","name":"Don S. Batory","key":"don-s.-batory","url":"http://researchr.org/alias/don-s.-batory"}},{"alias":{"id":"a1653a2a-1cf9-4ff3-8dfa-cb71f898a0c3","name":"Charles Consel","key":"charles-consel","url":"http://researchr.org/alias/charles-consel"}},{"person":{"id":"f85bed9a-ff64-4608-b607-1d8cb84a1d4a","fullname":"Martin Odersky","key":"martinodersky","url":"http://researchr.org/profile/martinodersky"},"alias":{"id":"4a0a243e-c2c5-4bb8-b69e-6c245cd64e3b","name":"Martin Odersky","key":"martin-odersky","url":"http://researchr.org/alias/martin-odersky"}}],"type":"inproceedings","url":"http://researchr.org/publication/Visser03","firstpage":216,"publisher":"Springer","id":"cc6d8c51-e589-49a4-b7dc-ccee24ca147a","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9","organization":"","address":"","month":"","volume":"3016","year":"2003","conference":"dagstuhl","note":"","doi":"http://springerlink.metapress.com/openurl.asp?genre=article&amp;issn=0302-9743&amp;volume=3016&amp;spage=216","key":"Visser03"},{"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.","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":644,"booktitle":"Model Driven Engineering Languages and Systems, 11th International Conference, MoDELS 2008, Toulouse, France, September 28 - October 3, 2008. Proceedings","number":"","editors":[{"person":{"id":"f8475ad2-6a3b-4cd6-9986-5a1ede62a0ae","fullname":"Krzysztof Czarnecki","key":"krzysztofczarnecki","url":"http://researchr.org/profile/krzysztofczarnecki"},"alias":{"id":"59b12c15-22de-472e-9b7a-453385164e3b","name":"Krzysztof Czarnecki","key":"krzysztof-czarnecki","url":"http://researchr.org/alias/krzysztof-czarnecki"}},{"alias":{"id":"97d0ba88-fa64-4d21-9b99-6be14f7df22b","name":"Ileana Ober","key":"ileana-ober","url":"http://researchr.org/alias/ileana-ober"}},{"alias":{"id":"085d761f-a34a-4f06-b51f-8a2807e6a5dd","name":"Jean-Michel Bruel","key":"jean-michel-bruel","url":"http://researchr.org/alias/jean-michel-bruel"}},{"alias":{"id":"7b20a7a8-8513-48de-8345-c8c66c6c4cd7","name":"Axel Uhl","key":"axel-uhl","url":"http://researchr.org/alias/axel-uhl"}},{"person":{"id":"d0507709-858d-4c99-9af3-97f51623b905","fullname":"Markus Völter","key":"markusvoelter","url":"http://researchr.org/profile/markusvoelter"},"alias":{"id":"ab591369-2e2d-42ef-a605-52de9dba9aab","name":"Markus Völter","key":"markus-völter","url":"http://researchr.org/alias/markus-v%C3%B6lter"}}],"type":"inproceedings","url":"http://researchr.org/publication/VermolenV08","firstpage":630,"publisher":"Springer","id":"8ec5abd4-8021-4b55-bea1-b83d8cb59baf","authors":[{"person":{"id":"3433e8ce-d019-4123-a0d4-6470d5f26ac6","fullname":"Sander Vermolen","key":"sandervermolen","url":"http://researchr.org/profile/sandervermolen"},"alias":{"id":"e66dcfe1-17bf-4b96-b120-24054e8138fc","name":"Sander Vermolen","key":"sander-vermolen","url":"http://researchr.org/alias/sander-vermolen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Heterogeneous Coupled Evolution of Software Languages","organization":"","address":"","month":"","volume":"5301","year":"2008","conference":"models","note":"","doi":"http://dx.doi.org/10.1007/978-3-540-87875-9_44","key":"VermolenV08"},{"abstract":"Large software projects consist of code written in a multitude of\r\ndifferent (possibly domain-specific) languages, which are often\r\ndeeply interspersed even in single files. While many proposals exist\r\non how to integrate languages semantically and syntactically,\r\nthe question of how to support this scenario in integrated development\r\nenvironments (IDEs) remains open: How can standard IDE\r\nservices, such as syntax highlighting, outlining, or reference resolving,\r\nbe provided in an extensible and compositional way, such that\r\nan open mix of languages is supported in a single file?\r\nBased on our library-based syntactic extension language for\r\nJava, SugarJ, we propose to make IDEs extensible by organizing\r\neditor services in editor libraries. Editor libraries are libraries written\r\nin the object language, SugarJ, and hence activated and composed\r\nthrough regular import statements on a file-by-file basis. We\r\nhave implemented an IDE for editor libraries on top of SugarJ\r\nand the Eclipse-based Spoofax language workbench. We have validated\r\neditor libraries by evolving this IDE into a fully-fledged and\r\nschema-aware XML editor as well as an extensible LATEX editor,\r\nwhich we used for writing this paper.","conferenceYear":"","series":"","lastpage":176,"booktitle":"Proceedings of the 10th ACM international conference on Generative programming and component engineering (GPCE 2011)","number":"","editors":[{"person":{"id":"775d55cf-8ab9-4dcf-88ff-d79168302e04","fullname":"Ewen  Denney","key":"ewendenney","url":"http://researchr.org/profile/ewendenney"},"alias":{"id":"f809af80-a42a-4a76-b511-47e0467d2a3f","name":"Ewen Denney","key":"ewen-denney","url":"http://researchr.org/alias/ewen-denney"}},{"person":{"id":"11a00680-e802-41ed-a2c4-08dbdfd8f861","fullname":"Ulrik Pagh Schultz","key":"ulrikpaghschultz","url":"http://researchr.org/profile/ulrikpaghschultz"},"alias":{"id":"fbfcac0b-6b2d-4a0d-89fb-270caea943f9","name":"Ulrik Pagh Schultz","key":"ulrik-pagh-schultz","url":"http://researchr.org/alias/ulrik-pagh-schultz"}}],"type":"inproceedings","url":"http://researchr.org/publication/Erdweg-GPCE-2011","firstpage":167,"publisher":"ACM","id":"2dd6ccc3-cc67-4056-b212-35a4f3a93b83","authors":[{"person":{"id":"e8c80e8e-3d66-402e-bb24-a60cf0085c63","fullname":"Sebastian Erdweg","key":"sebastianerdweg","url":"http://researchr.org/profile/sebastianerdweg"},"alias":{"id":"cda2d354-a0da-4dd7-ab26-dd571a765213","name":"Sebastian Erdweg","key":"sebastian-erdweg","url":"http://researchr.org/alias/sebastian-erdweg"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"2112ab40-0f9a-41fd-bf2e-b12f61810662","fullname":"Tillmann Rendel","key":"tillmannrendel","url":"http://researchr.org/profile/tillmannrendel"},"alias":{"id":"167fdee1-1d39-48d3-98d5-10953e2f4d92","name":"Rendel","key":"rendel","url":"http://researchr.org/alias/rendel"}},{"person":{"id":"829f94e1-744a-4e55-8f54-5eec4781c7cc","fullname":"Christian Kästner","key":"ckaestne","url":"http://researchr.org/profile/ckaestne"},"alias":{"id":"b2072040-d57a-4f6c-8750-12a657f94f62","name":"Christian Kastner","key":"christian-kastner","url":"http://researchr.org/alias/christian-kastner"}},{"person":{"id":"2c38f199-71de-4a67-9009-0f5c2b394c75","fullname":"Klaus Ostermann","key":"klausostermann","url":"http://researchr.org/profile/klausostermann"},"alias":{"id":"fe7922a4-708f-4fd1-b0df-82072a7a1b57","name":"Klaus Ostermann","key":"klaus-ostermann","url":"http://researchr.org/alias/klaus-ostermann"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Growing a Language Environment with Editor Libraries","organization":"","address":"New York, NY, USA","month":"","volume":"","year":"2011","conference":"GPCE","note":"","doi":"http://dx.doi.org/10.1145/2047862.2047891","key":"Erdweg-GPCE-2011"},{"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 \u2018internal code generation\u2019 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. ","lastpage":402,"type":"article","url":"http://researchr.org/publication/HemelKGV-2010","firstpage":375,"issuenumber":"3","journal":"sosym","id":"c6ab7ca9-2764-4354-964b-ba8c3244bd88","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"46cf4818-8ce7-4644-9ee1-414e4c4960e7","name":"Danny M. Groenewegen","key":"danny-m.-groenewegen","url":"http://researchr.org/alias/danny-m.-groenewegen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Code generation by model transformation: a case study in transformation modularity","month":"June","volumenumber":"9","year":"2010","note":"","key":"HemelKGV-2010","doi":"http://dx.doi.org/10.1007/s10270-009-0136-1"},{"abstract":"An ambiguous context-free grammar defines a language in which some sentences have multiple interpretations. For conciseness, ambiguous context-free grammars are frequently used to define even completely unambiguous languages and numerous disambiguation methods exist for specifying which interpretation is the intended one for each sentence. The existing methods can be divided in `parser specific' methods that describe how some parsing technique deals with ambiguous sentences and `logical' methods that describe the intended interpretation without reference to a specific parsing technique. We propose a framework of \\em filters\\/ to describe and compare a wide range of disambiguation problems in a parser-independent way. A filter is a function that selects from a set of parse trees (the canonical representation of the interpretations of a sentence) the intended trees. The framework enables us to define several general properties of disambiguation methods. The expressive power of filters is illustrated by several case studies. Finally, a start is made with the study of efficient implementation techniques for filters by exploiting the commutativity of parsing steps and filter steps for certain classes of filters.","id":"1cdbd086-5ac4-4489-8b12-72063d71d880","authors":[{"person":{"id":"37c2b529-fbd6-4ebd-9ca5-6dbe5dcdeeba","fullname":"Paul  Klint","key":"paulklint","url":"http://researchr.org/profile/paulklint"},"alias":{"id":"0a368544-9581-4fbb-b9f1-9876ab92cb3f","name":"Klint, Paul ","key":"klint,-paul","url":"http://researchr.org/alias/klint%2C-paul"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Using Filters for the Disambiguation of Context-free Grammars","month":"October","year":"1994","url":"http://researchr.org/publication/KlintV94-P9426","note":"","doi":"","key":"KlintV94-P9426"},{"abstract":"","series":"","booktitle":"Pre-Proceedings of the International Summer School on Generative and Transformational Techniques in Software Engineering (GTTSE 2007)","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/Visser1997-1","firstpage":0,"publisher":"","id":"87a62f25-9312-4150-92f1-7897cc3f2742","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Domain-specific language engineering","organization":"Universidade do Minho","address":"Braga, Portugal","month":"","volume":"","year":"2007","note":"","doi":"","key":"Visser1997-1"},{"abstract":"In textual software languages, names are used to reference elements like variables, methods, classes, etc. Name resolution analyses these names in order to establish references between definition and use sites of elements. In this paper, we identify recurring patterns for name bindings in programming languages and introduce a declarative metalanguage for the specification of name bindings in terms of namespaces, definition sites, use sites, and scopes. Based on such declarative name binding specifications, we provide a language-parametric algorithm for static name resolution during compile-time. We discuss the integration of the algorithm into the Spoofax Language Workbench and show how its results can be employed in semantic editor services like reference resolution, constraint checking, and content completion.","conferenceYear":"2012","series":"Lecture Notes in Computer Science","lastpage":331,"booktitle":"Software Language Engineering, 5th International Conference, SLE 2012, Dresden, Germany, September 26-28, 2012, Revised Selected Papers","number":"","editors":[{"person":{"id":"f8475ad2-6a3b-4cd6-9986-5a1ede62a0ae","fullname":"Krzysztof Czarnecki","key":"krzysztofczarnecki","url":"http://researchr.org/profile/krzysztofczarnecki"},"alias":{"id":"90e6b89e-5d7d-45cb-9b0d-c81157867ce4","name":"Czarnecki","key":"czarnecki","url":"http://researchr.org/alias/czarnecki"}},{"person":{"id":"5d7d5fd9-c563-43af-a011-42970a398b45","fullname":"Görel Hedin","key":"grelhedin","url":"http://researchr.org/profile/grelhedin"},"alias":{"id":"da20f253-5a98-47ab-9955-f9dcf209d5b4","name":"Görel Hedin","key":"görel-hedin","url":"http://researchr.org/alias/g%C3%B6rel-hedin"}}],"type":"inproceedings","url":"http://researchr.org/publication/KonatKWV13","firstpage":311,"publisher":"Springer","id":"b6f7debb-176c-49ac-bee5-debe6396f974","authors":[{"person":{"id":"a497348b-9ba2-4f94-8859-8dfccb46ff48","fullname":"Gabriël D. P. Konat","key":"gabrielkonat","url":"http://researchr.org/profile/gabrielkonat"},"alias":{"id":"7be69c7e-6700-4818-8c23-f129788c3eef","name":"Gabriël Konat","key":"gabriël-konat","url":"http://researchr.org/alias/gabri%C3%ABl-konat"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Declarative Name Binding and Scope Rules ","organization":"","address":"","month":"","volume":"7745","year":"2013","conference":"SLE","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-36089-3_18","key":"KonatKWV13"},{"abstract":"An ambiguous context-free grammar defines a language in which some sentences have multiple interpretations. For conciseness, ambiguous context-free grammars are frequently used to define even completely unambiguous languages and numerous disambiguation methods exist for specifying which interpretation is the intended one for each sentence. The existing methods can be divided in `parser specific' methods that describe how some parsing technique deals with ambiguous sentences and `logical' methods that describe the intended interpretation without reference to a specific parsing technique. We propose a framework of \\em filters\\/ to describe and compare a wide range of disambiguation problems in a parser-independent way. A filter is a function that selects from a set of parse trees (the canonical representation of the interpretations of a sentence) the intended trees. The framework enables us to define several general properties of disambiguation methods. The expressive power of filters is illustrated by several case studies. Finally, a start is made with the study of efficient implementation techniques for filters by exploiting the commutativity of parsing steps and filter steps for certain classes of filters.","conferenceYear":"","series":"","booktitle":"Proceedings of the ASMICS Workshop on Parsing Theory","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/KlintV94","firstpage":0,"publisher":"Tech. Rep. 126--1994, Dipartimento di Scienze dell'Informazione, Universit\\`a di Milano","id":"82d688c9-1679-441c-b88b-760a066564f5","authors":[{"person":{"id":"37c2b529-fbd6-4ebd-9ca5-6dbe5dcdeeba","fullname":"Paul  Klint","key":"paulklint","url":"http://researchr.org/profile/paulklint"},"alias":{"id":"0a368544-9581-4fbb-b9f1-9876ab92cb3f","name":"Klint, Paul ","key":"klint,-paul","url":"http://researchr.org/alias/klint%2C-paul"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Using Filters for the Disambiguation of Context-free Grammars","organization":"","address":"Milano, Italy","month":"October","volume":"","year":"1994","conference":"","note":"","doi":"","key":"KlintV94"},{"abstract":"Language prototyping is the activity of designing and testing definitions of new or existing computer languages. An important aspect of a language definition is the definition of its syntax. The subject of this thesis are new formalisms and techniques that support the development and prototyping of syntax definitions. There are four main subjects: (1) Techniques for parsing and disambiguation of context-free languages. (2) Design and implementation of a new syntax definition formalism. (3) Design of a multi-level algebraic specification formalism. (4) Study of polymorphic syntax definition. ","id":"8ce91ce4-54ad-450e-944a-ccb7b49ea1d2","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Syntax Definition for Language Prototyping","month":"September","year":"1997","url":"http://researchr.org/publication/Vis97.thesis","note":"","doi":"","key":"Vis97.thesis"},{"abstract":"","conferenceYear":"","series":"","lastpage":156,"booktitle":"Tenth IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2010, Timisoara, Romania, 12-13 September 2010","number":"","editors":[],"type":"inproceedings","url":"http://researchr.org/publication/KatsV10-0","firstpage":147,"publisher":"IEEE Computer Society","id":"09c3d38a-5ab1-4e5e-bb95-2bcff6100636","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Encapsulating Software Platform Logic by Aspect-Oriented Programming: A Case Study in Using Aspects for Language Portability","organization":"","address":"","month":"","volume":"","year":"2010","conference":"scam","note":"","doi":"http://dx.doi.org/10.1109/SCAM.2010.11","key":"KatsV10-0"},{"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's 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. ","conferenceYear":"","series":"","lastpage":464,"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","number":"","editors":[{"alias":{"id":"0c07716a-6765-46eb-adf2-127d0d707917","name":"Shail Arora","key":"shail-arora","url":"http://researchr.org/alias/shail-arora"}},{"alias":{"id":"1a42cab0-1af8-42b8-b90d-096a5ec5440d","name":"Gary T. Leavens","key":"gary-t.-leavens","url":"http://researchr.org/alias/gary-t.-leavens"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsJNV09","firstpage":445,"publisher":"ACM","id":"232e4c5f-180d-4eb0-8fab-0d21c12eb66b","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"3f77872b-c6b8-42dd-bf3b-4f66dc371407","fullname":"Emma  Nilsson-Nyman","key":"emmanilssonnyman","url":"http://researchr.org/profile/emmanilssonnyman"},"alias":{"id":"acb79742-eafa-497b-9ba1-b9d3f9258506","name":"Emma Nilsson-Nyman","key":"emma-nilsson-nyman","url":"http://researchr.org/alias/emma-nilsson-nyman"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Providing rapid feedback in generated modular language environments: adding error recovery to scannerless generalized-LR parsing","organization":"","address":"","month":"","volume":"","year":"2009","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1640089.1640122","key":"KatsJNV09"},{"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","conferenceYear":"2008","series":"Lecture Notes in Computer Science","lastpage":94,"booktitle":"Software Language Engineering, First International Conference, SLE 2008, Toulouse, France, September 29-30, 2008. Revised Selected Papers","number":"","editors":[{"person":{"id":"892937c7-d9f9-49a8-89e6-734b1fb47253","fullname":"Dragan Gasevic","key":"dragangasevic","url":"http://researchr.org/profile/dragangasevic"},"alias":{"id":"4e952583-7834-4817-8b6e-04feaa97fad9","name":"Dragan Gasevic","key":"dragan-gasevic","url":"http://researchr.org/alias/dragan-gasevic"}},{"person":{"id":"1605f420-86fe-4521-9126-c8999c59b3ed","fullname":"Ralf Lämmel","key":"ralflaemmel","url":"http://researchr.org/profile/ralflaemmel"},"alias":{"id":"1cd5b8f9-4e0d-4121-a444-1a1c3466e59c","name":"Ralf Lämmel","key":"ralf-lämmel","url":"http://researchr.org/alias/ralf-l%C3%A4mmel"}},{"person":{"id":"eb02e639-84a8-42de-9254-a07ddacb849e","fullname":"Eric Van Wyk","key":"ericvanwyk","url":"http://researchr.org/profile/ericvanwyk"},"alias":{"id":"a2b5cb8d-5bd0-4330-8551-0e8bb70f39a6","name":"Eric Van Wyk","key":"eric-van-wyk","url":"http://researchr.org/alias/eric-van-wyk"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerV08","firstpage":74,"publisher":"Springer","id":"95304a00-3ebc-442e-afbc-ea6d7d12aabf","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Parse Table Composition","organization":"","address":"","month":"","volume":"5452","year":"2009","conference":"sle","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-00434-6_6","key":"BravenboerV08"},{"abstract":"Abstract programming supports the separation of logical concerns from issues of \r\ncontrol in program construction. While this separation of concerns leads to reduced \r\ncode size and increased reusability of code, its main disadvantage is the computa- \r\ntional overhead it incurs. Fusion techniques can be used to combine the reusability \r\nof abstract programs with the eﬃciency of specialized programs. \r\n\r\nIn this paper we illustrate some of the ways in which rewriting strategies can be \r\nused to separate the deﬁnition of program transformation rules from the strategies \r\nunder which they are applied. Doing so supports the generic deﬁnition of program \r\ntransformation components. Fusion techniques for strategies can then be used to \r\nspecialize such generic components. \r\n\r\nWe show how the generic innermost rewriting strategy can be optimized by fusing \r\nit with the rules to which it is applied. Both the optimization and the programs to \r\nwhich the optimization applies are speciﬁed in the strategy language Stratego. The \r\noptimization is based on small transformation rules that are applied locally under \r\nthe control of strategies, using special knowledge about the contexts in which the \r\nrules are applied. \r\n","lastpage":0,"type":"article","url":"http://researchr.org/publication/JohannV01","firstpage":0,"issuenumber":"","journal":"Electr. Notes Theor. Comput. Sci.","id":"9711732a-e6f0-408a-b8a9-7c772cb13428","authors":[{"person":{"id":"33bf14c1-e6a4-41d9-8f87-f2b97a07b9fd","fullname":"Patricia Johann","key":"patriciajohann","url":"http://researchr.org/profile/patriciajohann"},"alias":{"id":"d1ef5f4c-fa61-45ca-9b1a-559c2f751f04","name":"Patricia Johann","key":"patricia-johann","url":"http://researchr.org/alias/patricia-johann"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Fusing Logic and Control with Local Transformations: An Example Optimization","month":"","volumenumber":"57","year":"2001","note":"","key":"JohannV01","doi":"http://www.elsevier.nl/locate/entcs/volume57.html"},{"abstract":"","conferenceYear":"","series":"","booktitle":"Companion to the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2011, Portland, OR, USA, October 22 - 27, 2011","number":"","lastpage":26,"type":"inproceedings","url":"http://researchr.org/publication/KatsVV11a","firstpage":25,"publisher":"ACM","id":"bbe71bf8-5076-4a42-ae77-28fd5580e762","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f6aa2423-57ab-44c6-909c-dd1d19dfbe85","fullname":"Rob Vermaas","key":"robvermaas","url":"http://researchr.org/profile/robvermaas"},"alias":{"id":"6a38d57e-6acc-4105-be50-25e9b31b00fa","name":"Rob Vermaas","key":"rob-vermaas","url":"http://researchr.org/alias/rob-vermaas"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Testing domain-specific languages","organization":"","address":"","month":"","volume":"","year":"2011","conference":"OOPSLA","note":"","doi":"http://doi.acm.org/10.1145/2048147.2048160","key":"KatsVV11a"},{"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's 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","conferenceYear":"","series":"","lastpage":108,"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","number":"","editors":[{"alias":{"id":"af52a55a-04f9-476c-a946-013c96a7023e","name":"Gail E. Harris","key":"gail-e.-harris","url":"http://researchr.org/alias/gail-e.-harris"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsBV08","firstpage":91,"publisher":"ACM","id":"c4413cee-a32d-4df1-85ab-01dd3c8e9361","authors":[{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Mixing source and bytecode: a case for compilation by normalization","organization":"","address":"","month":"","volume":"","year":"2008","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1449764.1449772","key":"KatsBV08"},{"abstract":"","lastpage":348,"type":"article","url":"http://researchr.org/publication/GluckV11","firstpage":347,"issuenumber":"5","journal":"Sci. Comput. Program.","id":"7bf2d7b0-6408-4b0e-992d-991c423d9690","authors":[{"person":{"id":"0f5284d5-d83b-4419-839c-d1fdd6bd4560","fullname":"Robert Glück","key":"robertglueck","url":"http://researchr.org/profile/robertglueck"},"alias":{"id":"cd7b018f-3287-4d39-bca4-3fbc5034dde1","name":"Robert Glück","key":"robert-glück","url":"http://researchr.org/alias/robert-gl%C3%BCck"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Special Issue on Generative Programming and Component Engineering (Selected Papers from GPCE 2004/2005)","month":"May","volumenumber":"76","year":"2011","note":"","key":"GluckV11","doi":"http://dx.doi.org/10.1016/j.scico.2011.02.001"},{"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.","id":"2e661dfa-d284-429b-8340-b4db356a378e","authors":[{"person":{"id":"3433e8ce-d019-4123-a0d4-6470d5f26ac6","fullname":"Sander Vermolen","key":"sandervermolen","url":"http://researchr.org/profile/sandervermolen"},"alias":{"id":"e66dcfe1-17bf-4b96-b120-24054e8138fc","name":"Sander Vermolen","key":"sander-vermolen","url":"http://researchr.org/alias/sander-vermolen"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Reconstructing Complex Metamodel Evolution","month":"August","year":"2011","url":"http://researchr.org/publication/VermolenWachsmuthVisser-TUD-SERG-2011-026","note":"","doi":"","key":"VermolenWachsmuthVisser-TUD-SERG-2011-026"},{"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.","conferenceYear":"2011","series":"","lastpage":221,"booktitle":"Software Language Engineering, Fourth International Conference, SLE 2011, Braga, Portugal, July, 2011, Revised Selected Papers","number":"","editors":[{"person":{"id":"f3c78505-3b84-442e-a8e0-0d4353c10c02","fullname":"Uwe  Aßmann","key":"uweamann","url":"http://researchr.org/profile/uweamann"},"alias":{"id":"8be162e1-1814-4d05-84fe-1bb5a2673f4d","name":"Uwe Assmann","key":"uwe-assmann","url":"http://researchr.org/alias/uwe-assmann"}},{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"a037cb7f-a2e6-4ee9-ad8a-8eff3c869696","name":"Tony Sloane","key":"tony-sloane","url":"http://researchr.org/alias/tony-sloane"}}],"type":"inproceedings","url":"http://researchr.org/publication/VermolenWachsmuthVisser2011","firstpage":201,"publisher":"Springer","id":"897ffd63-2171-4227-9386-7baaa0450185","authors":[{"person":{"id":"3433e8ce-d019-4123-a0d4-6470d5f26ac6","fullname":"Sander Vermolen","key":"sandervermolen","url":"http://researchr.org/profile/sandervermolen"},"alias":{"id":"e66dcfe1-17bf-4b96-b120-24054e8138fc","name":"Sander Vermolen","key":"sander-vermolen","url":"http://researchr.org/alias/sander-vermolen"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Reconstructing Complex Metamodel Evolution","organization":"","address":"","month":"","volume":"","year":"2012","conference":"SLE","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-28830-2_11","key":"VermolenWachsmuthVisser2011"},{"abstract":"","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":261,"booktitle":"Rewriting Logic and Its Applications - 8th International Workshop, WRLA 2010, Held as a Satellite Event of ETAPS 2010, Paphos, Cyprus, March 20-21, 2010, Revised Selected Papers","number":"","editors":[{"alias":{"id":"79911b60-1597-4f2b-959d-627cafc960b9","name":"Peter Csaba Ölveczky","key":"peter-csaba-ölveczky","url":"http://researchr.org/alias/peter-csaba-%C3%B6lveczky"}}],"type":"inproceedings","url":"http://researchr.org/publication/DuranRBBBCEEJK10","firstpage":243,"publisher":"Springer","id":"a834ab85-4f05-4026-870e-683b25c68174","authors":[{"person":{"id":"5e799ec5-0138-4d52-96e0-9fe2260ccb49","fullname":"Francisco Durán","key":"franciscodurn","url":"http://researchr.org/profile/franciscodurn"},"alias":{"id":"218b4885-c44e-4c75-8ddb-6720e976615d","name":"Francisco Durán","key":"francisco-durán","url":"http://researchr.org/alias/francisco-dur%C3%A1n"}},{"alias":{"id":"c1b2512f-132c-4d2b-88c6-f053a97419ac","name":"Manuel Roldán","key":"manuel-roldán","url":"http://researchr.org/alias/manuel-rold%C3%A1n"}},{"person":{"id":"d95e270a-568b-409b-b0c2-91d961b751dd","fullname":"Jean-Christophe Bach","key":"jeanchristophebach","url":"http://researchr.org/profile/jeanchristophebach"},"alias":{"id":"a438da1c-713a-4705-87ec-556c367cd53f","name":"Jean-Christophe Bach","key":"jean-christophe-bach","url":"http://researchr.org/alias/jean-christophe-bach"}},{"person":{"id":"6f5b80d3-8d42-41aa-aabb-575d9d1767ac","fullname":"Emilie  Balland","key":"emilieballand","url":"http://researchr.org/profile/emilieballand"},"alias":{"id":"08b6c6f0-34b8-4e4a-9381-c83041b2766e","name":"Emilie Balland","key":"emilie-balland","url":"http://researchr.org/alias/emilie-balland"}},{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"df3f463d-823f-4846-ab31-e2d0ca6dc54c","fullname":"James R.  Cordy","key":"jamesrcordy","url":"http://researchr.org/profile/jamesrcordy"},"alias":{"id":"fe30347d-866d-43ab-910a-e63783b7fc60","name":"James R. Cordy","key":"james-r.-cordy","url":"http://researchr.org/alias/james-r.-cordy"}},{"person":{"id":"68fb48e6-1e6d-4a0c-9048-0a9aaa864bf1","fullname":"Steven Eker","key":"steveneker","url":"http://researchr.org/profile/steveneker"},"alias":{"id":"248785ee-e02c-4164-a184-8a6d88bdcb63","name":"Steven Eker","key":"steven-eker","url":"http://researchr.org/alias/steven-eker"}},{"alias":{"id":"8a3e9775-8c2a-4b74-9ee5-12515a0e38a3","name":"Luc Engelen","key":"luc-engelen","url":"http://researchr.org/alias/luc-engelen"}},{"person":{"id":"195eff8f-ca21-4c28-8b32-d60a0bcec22c","fullname":"Maartje  de Jonge","key":"maartjedejonge","url":"http://researchr.org/profile/maartjedejonge"},"alias":{"id":"dcf00ea7-8042-4c07-8f81-9498e4c4a6f7","name":"Maartje de Jonge","key":"maartje-de-jonge","url":"http://researchr.org/alias/maartje-de-jonge"}},{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"6b206ce8-b43a-4f82-8b0e-d96b73eb1943","fullname":"Pierre-Etienne Moreau","key":"pierreetiennemoreau","url":"http://researchr.org/profile/pierreetiennemoreau"},"alias":{"id":"a9f2fbc6-0231-4777-a2f4-c0855cddfeeb","name":"Pierre-Etienne Moreau","key":"pierre-etienne-moreau","url":"http://researchr.org/alias/pierre-etienne-moreau"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Third Rewrite Engines Competition","organization":"","address":"","month":"","volume":"6381","year":"2010","conference":"wrla","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-16310-4_16","key":"DuranRBBBCEEJK10"},{"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","conferenceYear":"2009","series":"Lecture Notes in Computer Science","lastpage":0,"booktitle":"Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers","number":"","editors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"892937c7-d9f9-49a8-89e6-734b1fb47253","fullname":"Dragan Gasevic","key":"dragangasevic","url":"http://researchr.org/profile/dragangasevic"},"alias":{"id":"4e952583-7834-4817-8b6e-04feaa97fad9","name":"Dragan Gasevic","key":"dragan-gasevic","url":"http://researchr.org/alias/dragan-gasevic"}},{"person":{"id":"474ab36e-49c3-4f85-aa00-417d49005952","fullname":"Jeffrey G. Gray","key":"jeffgray","url":"http://researchr.org/profile/jeffgray"},"alias":{"id":"fefac3e9-8142-40df-9285-12943249e210","name":"Jeff Gray","key":"jeff-gray","url":"http://researchr.org/alias/jeff-gray"}}],"type":"inproceedings","url":"http://researchr.org/publication/GroenewegenV-SLE-2009","firstpage":0,"publisher":"Springer","id":"3cbb4cf5-3a01-4ad3-a434-e10a45844b7c","authors":[{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"46cf4818-8ce7-4644-9ee1-414e4c4960e7","name":"Danny M. Groenewegen","key":"danny-m.-groenewegen","url":"http://researchr.org/alias/danny-m.-groenewegen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Integration of Data Validation and User Interface Concerns in a DSL for Web Applications","organization":"","address":"","month":"","volume":"","year":"2010","conference":"SLE","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-12107-4","key":"GroenewegenV-SLE-2009"},{"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.","lastpage":52,"type":"article","url":"http://researchr.org/publication/GroenewegenVisser2013","firstpage":35,"issuenumber":"1","journal":"sosym","id":"7f489c91-d67c-4ecf-a8fd-1fa6b55e6f62","authors":[{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"79a481d2-fb45-404b-9192-8e9b286f9338","name":"Danny Groenewegen","key":"danny-groenewegen","url":"http://researchr.org/alias/danny-groenewegen"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Integration of Data Validation and User Interface Concerns in a DSL for Web Applications","month":"February","volumenumber":"12","year":"2013","note":"","key":"GroenewegenVisser2013","doi":"http://dx.doi.org/10.1007/s10270-010-0173-9"},{"abstract":"","lastpage":21,"type":"article","url":"http://researchr.org/publication/DolstraFlorijnde-JongeVisser2004","firstpage":18,"issuenumber":"1","journal":"Informatie","id":"1a51a28c-033f-45bd-8846-68739b016b07","authors":[{"person":{"id":"c0bae0b4-2a49-491c-b0be-e681f6cde43e","fullname":"Eelco  Dolstra","key":"eelcodolstra","url":"http://researchr.org/profile/eelcodolstra"},"alias":{"id":"c73bbd9f-3809-4463-9a56-d449cf26dff3","name":"Eelco Dolstra","key":"eelco-dolstra","url":"http://researchr.org/alias/eelco-dolstra"}},{"alias":{"id":"3e990264-ecf8-4875-8bf5-3ca8a6ddfc22","name":"Gert Florijn","key":"gert-florijn","url":"http://researchr.org/alias/gert-florijn"}},{"person":{"id":"3a8ae491-5c79-4670-9a35-cfe59537630e","fullname":"Merijn de Jonge","key":"merijndejonge","url":"http://researchr.org/profile/merijndejonge"},"alias":{"id":"c2fd021b-7f7b-44c3-af97-49d7d58c8f32","name":"Merijn de Jonge","key":"merijn-de-jonge","url":"http://researchr.org/alias/merijn-de-jonge"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Transparantie in variabiliteit: Heldere keuzes in een eenduidige configuratieomgeving","month":"February","volumenumber":"46","year":"2004","note":"","key":"DolstraFlorijnde-JongeVisser2004","doi":""},{"abstract":"System S is a calculus providing the basic abstractions of term rewriting: matching and building terms, term traversal, combining computations and handling failure. The calculus forms a core language for implementation of a wide variety of rewriting languages, or more generally, languages for specifying tree transformations. In this paper we show how a conventional rewriting language based on conditional term rewriting can be implemented straightforwardly in System S. Subsequently we show how this implementation can be extended with features such as matching conditions, negative conditions, default rules, non-strictness annotations and alternative evaluation strategies.","lastpage":0,"type":"article","url":"http://researchr.org/publication/VisserB98","firstpage":0,"issuenumber":"","journal":"Electr. Notes Theor. Comput. Sci.","id":"b69f17ec-a8e1-41e9-8833-79f460c9b4f5","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"195c7e68-4b94-4590-a45b-ac5b35de94a9","fullname":"Zine-El-Abidine Benaissa","key":"zineelabidinebenaissa","url":"http://researchr.org/profile/zineelabidinebenaissa"},"alias":{"id":"000d6925-b35e-4f88-860f-c95510b5a0d3","name":"Zine-El-Abidine Benaissa","key":"zine-el-abidine-benaissa","url":"http://researchr.org/alias/zine-el-abidine-benaissa"}}],"title":"A core language for rewriting","month":"","volumenumber":"15","year":"1998","note":"","key":"VisserB98","doi":"http://dx.doi.org/10.1016/S1571-0661(05)80027-1"},{"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. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":127,"booktitle":"Model Driven Engineering Languages and Systems, 11th International Conference, MoDELS 2008, Toulouse, France, September 28 - October 3, 2008. Proceedings","number":"","editors":[{"person":{"id":"f8475ad2-6a3b-4cd6-9986-5a1ede62a0ae","fullname":"Krzysztof Czarnecki","key":"krzysztofczarnecki","url":"http://researchr.org/profile/krzysztofczarnecki"},"alias":{"id":"59b12c15-22de-472e-9b7a-453385164e3b","name":"Krzysztof Czarnecki","key":"krzysztof-czarnecki","url":"http://researchr.org/alias/krzysztof-czarnecki"}},{"alias":{"id":"97d0ba88-fa64-4d21-9b99-6be14f7df22b","name":"Ileana Ober","key":"ileana-ober","url":"http://researchr.org/alias/ileana-ober"}},{"alias":{"id":"085d761f-a34a-4f06-b51f-8a2807e6a5dd","name":"Jean-Michel Bruel","key":"jean-michel-bruel","url":"http://researchr.org/alias/jean-michel-bruel"}},{"alias":{"id":"7b20a7a8-8513-48de-8345-c8c66c6c4cd7","name":"Axel Uhl","key":"axel-uhl","url":"http://researchr.org/alias/axel-uhl"}},{"person":{"id":"d0507709-858d-4c99-9af3-97f51623b905","fullname":"Markus Völter","key":"markusvoelter","url":"http://researchr.org/profile/markusvoelter"},"alias":{"id":"ab591369-2e2d-42ef-a605-52de9dba9aab","name":"Markus Völter","key":"markus-völter","url":"http://researchr.org/alias/markus-v%C3%B6lter"}}],"type":"inproceedings","url":"http://researchr.org/publication/HemelVV08","firstpage":113,"publisher":"Springer","id":"1f88b13a-f07c-4968-b8f6-ff56b9271487","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"870e57e4-0504-4d53-bce2-79c0715d4085","fullname":"Ruben  Verhaaf","key":"rubenverhaaf","url":"http://researchr.org/profile/rubenverhaaf"},"alias":{"id":"b9250f8d-3dc2-464c-a154-f540d5c5f0b1","name":"Ruben Verhaaf","key":"ruben-verhaaf","url":"http://researchr.org/alias/ruben-verhaaf"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"WebWorkFlow: An Object-Oriented Workflow Modeling Language for Web Applications","organization":"","address":"","month":"","volume":"5301","year":"2008","conference":"models","note":"","doi":"http://dx.doi.org/10.1007/978-3-540-87875-9_8","key":"HemelVV08"},{"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 \u2013 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.","lastpage":36,"type":"article","url":"http://researchr.org/publication/KallebergV08","firstpage":21,"issuenumber":"2","journal":"Electr. Notes Theor. Comput. Sci.","id":"55fff84a-9403-44c6-9c22-a8f5cdbff9f8","authors":[{"person":{"id":"d774aeed-7606-4770-8a56-2cf4990644b4","fullname":"Karl Trygve Kalleberg","key":"karltk","url":"http://researchr.org/profile/karltk"},"alias":{"id":"3ee71cd9-6b84-45a5-ab19-8f8783c8dba3","name":"Karl Trygve Kalleberg","key":"karl-trygve-kalleberg","url":"http://researchr.org/alias/karl-trygve-kalleberg"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Fusing a Transformation Language with an Open Compiler","month":"","volumenumber":"203","year":"2008","note":"","key":"KallebergV08","doi":"http://dx.doi.org/10.1016/j.entcs.2008.03.042"},{"abstract":"This paper investigates the application of domain-specific languages in product\r\nline engineering (PLE). We start by analyzing the limits of expressivity of\r\nfeature models. Feature models correspond to context-free grammars without\r\nrecursion, which prevents the expression of multiple instances and references.\r\nWe then show how domain-specific languages (DSLs) can serve as a middle ground\r\nbetween feature modeling and programming. They can be used in cases where\r\nfeature models are too limited, while keeping the separation between problem\r\nspace and solution space provided by feature models. We then categorize useful\r\ncombinations between configuration with feature model and construction with DSLs\r\nand provide an integration of DSLs into the conceptual framework of PLE. Finally\r\nwe show how use of a consistent, unified formalism for models, code, and\r\nconfiguration can yield important benefits for managing variability and\r\ntraceability. We illustrate the concepts with several examples from industrial\r\ncase studies.","conferenceYear":"","series":"","lastpage":79,"booktitle":"Software Product Line Conference (SPLC), 2011 15th International ","number":"","editors":[{"alias":{"id":"efaf3915-9a4f-4da4-95ea-eac3e52b4c00","name":"Eduardo Santana de Almeida","key":"eduardo-santana-de-almeida","url":"http://researchr.org/alias/eduardo-santana-de-almeida"}},{"alias":{"id":"585e325b-cb6a-4595-a6fd-d46ec1caeafa","name":"Tomoji Kishi","key":"tomoji-kishi","url":"http://researchr.org/alias/tomoji-kishi"}}],"type":"inproceedings","url":"http://researchr.org/publication/VoelterVisser2011","firstpage":70,"publisher":"CPS","id":"4e6cebb1-8270-4737-a73e-516193d075f0","authors":[{"person":{"id":"d0507709-858d-4c99-9af3-97f51623b905","fullname":"Markus Völter","key":"markusvoelter","url":"http://researchr.org/profile/markusvoelter"},"alias":{"id":"dd9460cc-2993-4497-9148-9e82a9e0bd75","name":"Markus Voelter","key":"markus-voelter","url":"http://researchr.org/alias/markus-voelter"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Product Line Engineering using Domain-Specific Languages","organization":"","address":"","month":"","volume":"","year":"2011","conference":"SPLC","note":"","doi":"http://dx.doi.org/10.1109/SPLC.2011.25","key":"VoelterVisser2011"},{"abstract":"Program transformation is used in many areas of software engineering. Examples include compilation, optimization, synthesis, refactoring, migration, normalization and improvement [15]. Rewrite rules are a natural formalism for expressing single program transformations. However, using a standard strategy for normalizing a program with a set of rewrite rules is not adequate for implementing program transformation systems. It may be necessary to apply a rule only in some phase of a transformation, to apply rules in some order, or to apply a rule only to part of a program. These restrictions may be necessary to avoid non-termination or to choose a specific path in a non-con uent rewrite system.\r\nStratego is a language for the specification of program transformation systems based on the paradigm of rewriting strategies. It supports the separation of strategies from transformation rules, thus allowing careful control over the application of these rules. As a result of this separation, transformation rules are reusable in multiple difierent transformations and generic strategies capturing patterns of control can be described independently of the transformation rules they apply. Such strategies can even be formulated independently of the object language by means of the generic term traversal capabilities of Stratego.\r\nIn this short paper I give a description of version 0.5 of the Stratego system, discussing the features of the language (Section 2), the library (Section 3), the compiler (Section 4) and some of the applications that have been built (Section 5). Stratego is available as free software under the GNU General Public License from http://www.stratego-language.org.\r\n","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":362,"booktitle":"Rewriting Techniques and Applications, 12th International Conference, RTA 2001, Utrecht, The Netherlands, May 22-24, 2001, Proceedings","number":"","editors":[{"alias":{"id":"3520681b-1d93-464f-805b-477331cd2c40","name":"Aart Middeldorp","key":"aart-middeldorp","url":"http://researchr.org/alias/aart-middeldorp"}}],"type":"inproceedings","url":"http://researchr.org/publication/Visser01","firstpage":357,"publisher":"Springer","id":"acca3b32-8460-4008-afc2-31179fb2baae","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Stratego: A Language for Program Transformation Based on Rewriting Strategies","organization":"","address":"","month":"","volume":"2051","year":"2001","conference":"rta","note":"","doi":"http://link.springer.de/link/service/series/0558/bibs/2051/20510357.htm","key":"Visser01"},{"abstract":"WebDSL is a domain-specific language for the implementation of\r\ndynamic web applications with a rich datamodel. It provides developers\r\nwith object-oriented data modeling concepts but abstracts\r\nover implementation details for persisting application data in relational\r\ndatabases. When the underlying data model of an application\r\nevolves, persisted application data has to be migrated. While implementing\r\nmigration at the database level breaks the abstractions provided\r\nby WebDSL, an implementation at the data model level requires\r\nto intermingle migration with application code. In this paper,\r\nwe present a domain-specific language for the coupled evolution of\r\ndata models and application data. It allows to specify data model\r\nevolution as a separate concern at the data model level and can be\r\ncompiled to migration code at the database level. Its linguistic integration\r\nwith WebDSL enables static checks for evolution validity\r\nand correctness.","conferenceYear":"","series":"","lastpage":92,"booktitle":"Proceedings of the 10th ACM international conference on Generative programming and component engineering (GPCE 2011)","number":"","editors":[{"person":{"id":"775d55cf-8ab9-4dcf-88ff-d79168302e04","fullname":"Ewen  Denney","key":"ewendenney","url":"http://researchr.org/profile/ewendenney"},"alias":{"id":"f809af80-a42a-4a76-b511-47e0467d2a3f","name":"Ewen Denney","key":"ewen-denney","url":"http://researchr.org/alias/ewen-denney"}},{"person":{"id":"11a00680-e802-41ed-a2c4-08dbdfd8f861","fullname":"Ulrik Pagh Schultz","key":"ulrikpaghschultz","url":"http://researchr.org/profile/ulrikpaghschultz"},"alias":{"id":"fbfcac0b-6b2d-4a0d-89fb-270caea943f9","name":"Ulrik Pagh Schultz","key":"ulrik-pagh-schultz","url":"http://researchr.org/alias/ulrik-pagh-schultz"}}],"type":"inproceedings","url":"http://researchr.org/publication/Vermolen-GPCE-2011","firstpage":83,"publisher":"ACM","id":"688b3a73-2388-48c1-88cc-be7c47fd12d9","authors":[{"person":{"id":"3433e8ce-d019-4123-a0d4-6470d5f26ac6","fullname":"Sander Vermolen","key":"sandervermolen","url":"http://researchr.org/profile/sandervermolen"},"alias":{"id":"8c3c771a-437d-4dd5-8b15-8a4597f06fe6","name":"Sander D. Vermolen","key":"sander-d.-vermolen","url":"http://researchr.org/alias/sander-d.-vermolen"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"d5ff2ef2-75d4-4ac7-847f-098d645baf0e","name":"Guido Wachsmuth","key":"guido-wachsmuth","url":"http://researchr.org/alias/guido-wachsmuth"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Generating Database Migration for Evolving Web Applications","organization":"","address":"New York, NY, USA","month":"","volume":"","year":"2011","conference":"GPCE","note":"","doi":"http://dx.doi.org/10.1145/2047862.2047876","key":"Vermolen-GPCE-2011"},{"abstract":"The applicability of term rewriting to program transformation is limited by the lack \r\nof control over rule application and by the context-free nature of rewrite rules. The \r\nﬁrst problem is addressed by languages supporting user-deﬁnable rewriting strate- \r\ngies. This paper addresses the second problem by extending rewriting strategies \r\nwith scoped dynamic rewrite rules. Dynamic rules are generated at run-time and \r\ncan access variables available from their deﬁnition context. Rules generated within \r\na rule scope are automatically retracted at the end of that scope. The technique is \r\nillustrated by means of several program tranformations: bound variable renaming, \r\nfunction inlining, and dead function elimination. ","lastpage":0,"type":"article","url":"http://researchr.org/publication/Visser01a","firstpage":0,"issuenumber":"4","journal":"Electr. Notes Theor. Comput. Sci.","id":"2ac5d88e-e63c-454a-a3a9-ba818d9c440c","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Scoped Dynamic Rewrite Rules","month":"","volumenumber":"59","year":"2001","note":"","key":"Visser01a","doi":"http://www.elsevier.nl/locate/entcs/volume59.html"},{"abstract":"Character classes are used in syntax definition formalisms as compact representations of sets of characters. A character class is a list of characters and ranges \r\nof characters. For instance [A-Z0-9] describes the set containing all uppercase \r\ncharacters and all digits. One set of characters can be represented in many \r\nways with character classes. In this paper an algebraic specification of character classes is presented. We define a normalization of character classes that \r\nresults in unique, most compact normal forms such that equality of character \r\nclasses becomes syntactic equality of their normal forms.","id":"590ec35f-3db7-4cab-a78b-5c131d5453e3","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}}],"title":"Character Classes","month":"August","year":"1997","url":"http://researchr.org/publication/Vis97.cc","note":"","doi":"","key":"Vis97.cc"},{"abstract":"This paper describes the workflow for performing systematic literature\r\nreviews with the researchr digital library environment.\r\n","id":"c2d8829c-c2cc-4d17-ac2d-3dbe91ed789e","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Performing Systematic Literature Reviews with Researchr: Tool Demonstration","month":"May","year":"2010","url":"http://researchr.org/publication/Visser2010","note":"","doi":"http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2010-10.pdf","key":"Visser2010"},{"abstract":"","conferenceYear":"","series":"","booktitle":"Companion to the 27th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2012, Tucson, AR, USA, October 19 - 26, 2012","number":"","lastpage":0,"type":"inproceedings","url":"http://researchr.org/publication/KonatVKWV2012","firstpage":0,"publisher":"ACM","id":"e290ea1a-bb5c-43e4-8ebb-b7329902915d","authors":[{"person":{"id":"a497348b-9ba2-4f94-8859-8dfccb46ff48","fullname":"Gabriël D. P. Konat","key":"gabrielkonat","url":"http://researchr.org/profile/gabrielkonat"},"alias":{"id":"3f8f6412-0a34-4f44-afbd-58e57ebf377b","name":"Gabriël D. P. Konat","key":"gabriël-d.-p.-konat","url":"http://researchr.org/alias/gabri%C3%ABl-d.-p.-konat"}},{"person":{"id":"1c401700-6273-4c92-b582-223b9f848895","fullname":"Vlad A. Vergu","key":"vladavergu","url":"http://researchr.org/profile/vladavergu"},"alias":{"id":"2afcc82d-748d-49e2-ac16-221972f6986f","name":"Vlad A. Vergu","key":"vlad-a.-vergu","url":"http://researchr.org/alias/vlad-a.-vergu"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"2260a4e5-f714-4f97-a046-c3f0a685e646","fullname":"Guido Wachsmuth","key":"guwac","url":"http://researchr.org/profile/guwac"},"alias":{"id":"032f498d-7a9a-4edf-a66f-13ac255fe023","name":"Guido H. Wachsmuth","key":"guido-h.-wachsmuth","url":"http://researchr.org/alias/guido-h.-wachsmuth"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"The Spoofax Name Binding Language","organization":"","address":"","month":"","volume":"","year":"2012","conference":"","note":"","doi":"","key":"KonatVKWV2012"},{"abstract":"Context-free grammars are used in several algebraic specification formalisms instead of first-order signatures for the definition of the structure of algebras, because grammars provide better notation than signatures. The rigidity of these first-order structures enforces a choice between strongly typed structures with little genericity or generic operations over untyped structures. In two-level signatures level 1 defines the algebra of types used at level 0 providing the possibility to define polymorphic abstract data types. Two-level grammars are the grammatical counterpart of two-level signatures. This paper discusses the correspondence between context-free grammars and first-order signatures, the extension of this correspondence to two-level grammars and signatures, examples of the usage of two-level grammars for polymorphic syntax definition, a restriction of the class of two-level grammars for which the parsing problem is decidable, a parsing algorithm that yields a minimal and finite set of most general parse trees for this class of grammars, and a proof of its correctness.","lastpage":86,"type":"article","url":"http://researchr.org/publication/Visser98","firstpage":57,"issuenumber":"1-2","journal":"Theor. Comput. Sci.","id":"321e1748-2380-4a63-bfc4-c4efa632f00e","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Polymorphic Syntax Definition","month":"","volumenumber":"199","year":"1998","note":"","key":"Visser98","doi":"http://dx.doi.org/10.1016/S0304-3975(97)00268-5"},{"abstract":"Program transformation is the mechanical manipulation of a program in order to improve it relative to some cost function and is understood broadly as the domain of computation where programs are the data. The natural basic building blocks of the domain of program transformation are transformation rules expressing a ?one-step? transformation on a fragment of a program. The ultimate perspective of research in this area is a high-level, language parametric, rule-based program transformation system, which supports a wide range of transformations, admitting efficient implementations that scale to large programs. This situation has not yet been reached, as trade-offs between different goals need to be made. This survey gives an overview of issues in rule-based program transformation systems, focusing on the expressivity of rule-based program transformation systems and in particular on transformation strategies available in various approaches. The survey covers term rewriting, extensions of basic term rewriting, tree parsing strategies, systems with programmable strategies, traversal strategies, and context-sensitive rules.","lastpage":873,"type":"article","url":"http://researchr.org/publication/Visser05","firstpage":831,"issuenumber":"1","journal":"J. Symb. Comput.","id":"cd23c1ea-8d13-43f9-8439-775022f963de","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A survey of strategies in rule-based program transformation systems","month":"","volumenumber":"40","year":"2005","note":"","key":"Visser05","doi":"http://dx.doi.org/10.1016/j.jsc.2004.12.011"},{"abstract":"The Asf+Sdf Meta-environment is an interactive development environment for the automatic generation of interactive systems for constructing language definitions and generating tools for them. Over the years, this system has been used in a variety of academic and commercial projects ranging from formal program manipulation to conversion of COBOL systems. Since the existing implementation of the Meta-environment started exhibiting more and more characteristics of a legacy system, we decided to build a completely new, component-based, version. We demonstrate this new system and stress its open architecture. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":370,"booktitle":"Compiler Construction, 10th International Conference, CC 2001 Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2001 Genova, Italy, April 2-6, 2001, Proceedings","number":"","editors":[{"alias":{"id":"307b8db9-4aca-49ff-885e-7089b4337b7e","name":"Reinhard Wilhelm","key":"reinhard-wilhelm","url":"http://researchr.org/alias/reinhard-wilhelm"}}],"type":"inproceedings","url":"http://researchr.org/publication/BrandDHJJKKMOSVVV01","firstpage":365,"publisher":"Springer","id":"013528a5-046a-497b-bc3f-b9256462d582","authors":[{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"ec0da5fa-6834-4952-9fff-9c4fecce7cb7","name":"Mark van den Brand","key":"mark-van-den-brand","url":"http://researchr.org/alias/mark-van-den-brand"}},{"person":{"id":"5e9231bc-7344-4887-b4ed-688c0bf897eb","fullname":"Arie  van Deursen","key":"arievandeursen","url":"http://researchr.org/profile/arievandeursen"},"alias":{"id":"31e0f562-35ad-4860-b7fb-43c609ae5fc7","name":"Arie van Deursen","key":"arie-van-deursen","url":"http://researchr.org/alias/arie-van-deursen"}},{"person":{"id":"6e354bcc-77fd-46b2-a845-aa07ea761006","fullname":"Jan Heering","key":"janheering","url":"http://researchr.org/profile/janheering"},"alias":{"id":"fa3e7a30-14cd-41f5-91cb-8a8f417d6225","name":"Jan Heering","key":"jan-heering","url":"http://researchr.org/alias/jan-heering"}},{"person":{"id":"35ac85f9-71ce-423d-aba4-5134546e9bde","fullname":"H. A. de Jong","key":"hadejong","url":"http://researchr.org/profile/hadejong"},"alias":{"id":"f24ad6b7-a319-40a9-b4c4-343871614b3c","name":"H. A. de Jong","key":"h.-a.-de-jong","url":"http://researchr.org/alias/h.-a.-de-jong"}},{"person":{"id":"3a8ae491-5c79-4670-9a35-cfe59537630e","fullname":"Merijn de Jonge","key":"merijndejonge","url":"http://researchr.org/profile/merijndejonge"},"alias":{"id":"c2fd021b-7f7b-44c3-af97-49d7d58c8f32","name":"Merijn de Jonge","key":"merijn-de-jonge","url":"http://researchr.org/alias/merijn-de-jonge"}},{"person":{"id":"536863ea-f7a5-4b37-ac98-d5a2cf603fe0","fullname":"Tobias Kuipers","key":"tobiaskuipers","url":"http://researchr.org/profile/tobiaskuipers"},"alias":{"id":"c4488e31-2913-43cb-9b38-bb16f0091939","name":"Tobias Kuipers","key":"tobias-kuipers","url":"http://researchr.org/alias/tobias-kuipers"}},{"person":{"id":"37c2b529-fbd6-4ebd-9ca5-6dbe5dcdeeba","fullname":"Paul  Klint","key":"paulklint","url":"http://researchr.org/profile/paulklint"},"alias":{"id":"1fd9f1b5-3b9a-492a-b6c7-44525de23507","name":"Paul Klint","key":"paul-klint","url":"http://researchr.org/alias/paul-klint"}},{"person":{"id":"a1c8fa61-85f1-45ee-b11c-1a61c9e096ac","fullname":"Leon Moonen","key":"leonmoonen","url":"http://researchr.org/profile/leonmoonen"},"alias":{"id":"d2bd5163-698f-4c11-902d-8f4d02615bc3","name":"Leon Moonen","key":"leon-moonen","url":"http://researchr.org/alias/leon-moonen"}},{"person":{"id":"1ac4e6ee-a780-4064-9851-11aa3fc5f48d","fullname":"Pieter A. Olivier","key":"pieteraolivier","url":"http://researchr.org/profile/pieteraolivier"},"alias":{"id":"389c90c2-cfa5-4ef1-ab65-2389187ae627","name":"Pieter A. Olivier","key":"pieter-a.-olivier","url":"http://researchr.org/alias/pieter-a.-olivier"}},{"person":{"id":"754f998d-c234-484c-af81-a9ce20847311","fullname":"Jeroen Scheerder","key":"jeroenscheerder","url":"http://researchr.org/profile/jeroenscheerder"},"alias":{"id":"ea3d18e7-c65d-4372-8636-5b4608ca32c4","name":"Jeroen Scheerder","key":"jeroen-scheerder","url":"http://researchr.org/alias/jeroen-scheerder"}},{"person":{"id":"8ed1149d-5533-4120-8079-88085c44c8ef","fullname":"Jurgen J.  Vinju","key":"jurgenjvinju","url":"http://researchr.org/profile/jurgenjvinju"},"alias":{"id":"61686a94-9539-4a0b-99de-42c7c3d2acae","name":"Jurgen J. Vinju","key":"jurgen-j.-vinju","url":"http://researchr.org/alias/jurgen-j.-vinju"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}},{"person":{"id":"96380068-84b9-436b-ab9b-40d90a566d94","fullname":"Joost Visser","key":"joostvisser","url":"http://researchr.org/profile/joostvisser"},"alias":{"id":"a2685a71-4f48-405f-8d9b-0c4757bcef35","name":"Joost Visser","key":"joost-visser","url":"http://researchr.org/alias/joost-visser"}}],"title":"The ASF+SDF Meta-environment: A Component-Based Language Development Environment","organization":"","address":"","month":"","volume":"2027","year":"2001","conference":"cc","note":"","doi":"http://link.springer.de/link/service/series/0558/bibs/2027/20270365.htm","key":"BrandDHJJKKMOSVVV01"},{"abstract":"Stratego is a domain-specific language for the specification of program transformation systems. The design of Stratego is based on the paradigm of rewriting strategies: user-definable programs in a little language of strategy operators determine where and in what order transformation rules are (automatically) applied to a program. The separation of rules and strategies supports modularity of specifications. Stratego also provides generic features for specification of program traversals.\r\nIn this paper we present a case study of Stratego as applied to a non-trivial problem in program transformation. We demonstrate the use of Stratego in eliminating intermediate data structures from (also known as deforesting) functional programs via the warm fusion algorithm of Launchbury and Sheard. This algorithm has been specified in Stratego and embedded in a fully automatic transformation system for kernel Haskell. The entire system consists of about 2600 lines of specification code, which breaks down into 1850 lines for a general framework for Haskell transformation and 750 lines devoted to a highly modular, easily extensible specification of the warm fusion transformer itself. Its successful design and construction provides further evidence that programs generated from Stratego specifications are suitable for integration into real systems, and that rewriting strategies are a good paradigm for the implementation of such systems.\r\n","lastpage":34,"type":"article","url":"http://researchr.org/publication/JohannV00","firstpage":1,"issuenumber":"1-4","journal":"Ann. Math. Artif. Intell.","id":"24b38e95-3c2e-4d4c-970e-bd2db48b3d7d","authors":[{"person":{"id":"33bf14c1-e6a4-41d9-8f87-f2b97a07b9fd","fullname":"Patricia Johann","key":"patriciajohann","url":"http://researchr.org/profile/patriciajohann"},"alias":{"id":"d1ef5f4c-fa61-45ca-9b1a-559c2f751f04","name":"Patricia Johann","key":"patricia-johann","url":"http://researchr.org/alias/patricia-johann"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Warm fusion in Stratego: A case study in generation of program transformation systems","month":"","volumenumber":"29","year":"2000","note":"","key":"JohannV00","doi":"http://dx.doi.org/10.1023/A:1018956702672"},{"abstract":"In meta programming with concrete object syntax, object-level programs are composed from fragments written in concrete syntax. The use of small program fragments in such quotations and the use of meta-level expressions within these fragments (anti-quotation) often leads to ambiguities. This problem is usually solved through explicit disambiguation, resulting in considerable syntactic overhead. A few systems manage to reduce this overhead by using type information during parsing. Since this is hard to achieve with traditional parsing technology, these systems provide specific combinations of meta and object languages, and their implementations are difficult to reuse. In this paper, we generalize these approaches and present a language independent method for introducing concrete object syntax without explicit disambiguation. The method uses scannerless generalized-LR parsing to parse meta programs with embedded object-level fragments, which produces a forest of all possible parses. This forest is reduced to a tree by a disambiguating type checker for the meta language. To validate our method we have developed embeddings of several object languages in Java, including AspectJ and Java itself. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":172,"booktitle":"Generative Programming and Component Engineering, 4th International Conference, GPCE 2005","number":"","editors":[{"person":{"id":"0f5284d5-d83b-4419-839c-d1fdd6bd4560","fullname":"Robert Glück","key":"robertglueck","url":"http://researchr.org/profile/robertglueck"},"alias":{"id":"cd7b018f-3287-4d39-bca4-3fbc5034dde1","name":"Robert Glück","key":"robert-glück","url":"http://researchr.org/alias/robert-gl%C3%BCck"}},{"alias":{"id":"eec94bfa-acc5-4ede-ba38-0ed281dfbe01","name":"Michael R. Lowry","key":"michael-r.-lowry","url":"http://researchr.org/alias/michael-r.-lowry"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerVVV05","firstpage":157,"publisher":"Springer","id":"790af31c-26f3-4a03-a6a0-96947b5714d0","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f6aa2423-57ab-44c6-909c-dd1d19dfbe85","fullname":"Rob Vermaas","key":"robvermaas","url":"http://researchr.org/profile/robvermaas"},"alias":{"id":"6a38d57e-6acc-4105-be50-25e9b31b00fa","name":"Rob Vermaas","key":"rob-vermaas","url":"http://researchr.org/alias/rob-vermaas"}},{"person":{"id":"8ed1149d-5533-4120-8079-88085c44c8ef","fullname":"Jurgen J.  Vinju","key":"jurgenjvinju","url":"http://researchr.org/profile/jurgenjvinju"},"alias":{"id":"61686a94-9539-4a0b-99de-42c7c3d2acae","name":"Jurgen J. Vinju","key":"jurgen-j.-vinju","url":"http://researchr.org/alias/jurgen-j.-vinju"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Generalized Type-Based Disambiguation of Meta Programs with Concrete Object Syntax","organization":"","address":"Tallinn, Estonia","month":"","volume":"3676","year":"2005","conference":"gpce","note":"","doi":"http://dx.doi.org/10.1007/11561347_12","key":"BravenboerVVV05"},{"abstract":"Researchr is a web service for indexing, managing, and sharing bibliographic information of scientific publications for researchers by researchers.","id":"88397e33-5bf8-4c8b-92eb-3ba509337faf","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"researchr.org","month":"","year":"2009","url":"http://researchr.org/publication/Visser%3A2009","note":"Researchr is a web service for indexing, managing, and sharing bibliographic information of scientific publications for researchers by researchers.","doi":"http://researchr.org","key":"Visser:2009"},{"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. ","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":198,"booktitle":"Theory and Practice of Model Transformations, First International Conference, ICMT 2008, Zürich, Switzerland, July 1-2, 2008, Proceedings","number":"","editors":[{"person":{"id":"fcd91adb-afc8-49ea-8462-8ea7e21fcd02","fullname":"Antonio Vallecillo","key":"antoniovallecillo","url":"http://researchr.org/profile/antoniovallecillo"},"alias":{"id":"ea43e3ee-9d5c-44a9-ae63-3a0991587df7","name":"Antonio Vallecillo","key":"antonio-vallecillo","url":"http://researchr.org/alias/antonio-vallecillo"}},{"person":{"id":"474ab36e-49c3-4f85-aa00-417d49005952","fullname":"Jeffrey G. Gray","key":"jeffgray","url":"http://researchr.org/profile/jeffgray"},"alias":{"id":"fefac3e9-8142-40df-9285-12943249e210","name":"Jeff Gray","key":"jeff-gray","url":"http://researchr.org/alias/jeff-gray"}},{"person":{"id":"b3878a28-8c5a-4748-8d0d-392889211b46","fullname":"Alfonso Pierantonio","key":"alfonsopierantonio","url":"http://researchr.org/profile/alfonsopierantonio"},"alias":{"id":"6bdb8120-94a2-4358-a8ff-970aeb5a607f","name":"Alfonso Pierantonio","key":"alfonso-pierantonio","url":"http://researchr.org/alias/alfonso-pierantonio"}}],"type":"inproceedings","url":"http://researchr.org/publication/HemelKV08","firstpage":183,"publisher":"Springer","id":"c9b49596-d81d-483c-b093-ee6d3b6ab486","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Code Generation by Model Transformation","organization":"","address":"","month":"","volume":"5063","year":"2008","conference":"icmt","note":"","doi":"http://dx.doi.org/10.1007/978-3-540-69927-9_13","key":"HemelKV08"},{"abstract":"General-purpose programming languages provide limited facilities for expressing domain-specific concepts in a natural manner. All domain concepts need to be captured using the same generic syntactic and semantic constructs. Generative programming methods and program transformation techniques can be used to overcome this lack of abstraction in general-purpose languages.\r\n\r\nIn this tutorial we describe the MetaBorg method for embedding domain-specific languages, tailored syntactically and semantically to the application domain at hand, in a general-purpose language. MetaBorg is based on Stratego/XT, a language and toolset for the implementation of program transformation systems, which is used for the definition of syntactic embeddings and assimilation of the embedded constructs into the surrounding code.\r\n\r\nWe illustrate MetaBorg with three examples. JavaSwul is a custom designed language for implementing graphical user-interfaces, which provides high-level abstractions for component composition and event-handling. JavaRegex is a new embedding of regular expression matching and string rewriting. JavaJava is an embedding of Java in Java for generating Java code. For these cases we show how Java programs in these domains become dramatically more readable, and we give an impression of the implementation of the language embeddings.\r\n","conferenceYear":"","series":"Lecture Notes in Computer Science","lastpage":311,"booktitle":"Generative and Transformational Techniques in Software Engineering, International Summer School, GTTSE 2005, Braga, Portugal, July 4-8, 2005. Revised Papers","number":"","editors":[{"person":{"id":"1605f420-86fe-4521-9126-c8999c59b3ed","fullname":"Ralf Lämmel","key":"ralflaemmel","url":"http://researchr.org/profile/ralflaemmel"},"alias":{"id":"1cd5b8f9-4e0d-4121-a444-1a1c3466e59c","name":"Ralf Lämmel","key":"ralf-lämmel","url":"http://researchr.org/alias/ralf-l%C3%A4mmel"}},{"person":{"id":"5c5d9adc-5293-437a-80e2-bf1044dc8837","fullname":"João Saraiva","key":"joosaraiva","url":"http://researchr.org/profile/joosaraiva"},"alias":{"id":"55af31cd-7a9b-4070-894f-8497836f6610","name":"João Saraiva","key":"joão-saraiva","url":"http://researchr.org/alias/jo%C3%A3o-saraiva"}},{"person":{"id":"96380068-84b9-436b-ab9b-40d90a566d94","fullname":"Joost Visser","key":"joostvisser","url":"http://researchr.org/profile/joostvisser"},"alias":{"id":"a2685a71-4f48-405f-8d9b-0c4757bcef35","name":"Joost Visser","key":"joost-visser","url":"http://researchr.org/alias/joost-visser"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerGV06","firstpage":297,"publisher":"Springer","id":"fca040e0-e9f4-4461-979b-4bd68c2713dc","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"e6362c26-b475-4d1a-97a9-d8c3b55a6c2a","fullname":"René de Groot","key":"rendegroot","url":"http://researchr.org/profile/rendegroot"},"alias":{"id":"1b2b6a39-d8e9-40ac-92ce-21e40d0d32eb","name":"René de Groot","key":"rené-de-groot","url":"http://researchr.org/alias/ren%C3%A9-de-groot"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"MetaBorg in Action: Examples of Domain-Specific Language Embedding and Assimilation Using Stratego/XT","organization":"","address":"","month":"","volume":"4143","year":"2006","conference":"gttse","note":"","doi":"http://dx.doi.org/10.1007/11877028_10","key":"BravenboerGV06"},{"abstract":"The applicability of term rewriting to program transformation is limited by the lack of control over rule application and by the context-free nature of rewrite rules. The first problem is addressed by languages supporting user-definable rewriting strategies. The second problem is addressed by the extension of rewriting strategies with scoped dynamic rewrite rules. Dynamic rules are defined at run-time and can access variables available from their definition context. Rules defined within a rule scope are automatically retracted at the end of that scope. In this paper, we explore the design space of dynamic rules, and their application to transformation problems. The technique is formally defined by extending the operational semantics underlying the program transformation language Stratego, and illustrated by means of several program transformations in Stratego, including constant propagation, bound variable renaming, dead code elimination, function inlining, and function specialization. ","lastpage":178,"type":"article","url":"http://researchr.org/publication/BravenboerDOV06","firstpage":123,"issuenumber":"1-2","journal":"Fundam. Inform.","id":"90951569-3d14-4aec-b74b-30451d86f939","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"7e90e182-d469-41cf-860f-282829bca0fc","fullname":"Arthur van Dam","key":"arthurvandam","url":"http://researchr.org/profile/arthurvandam"},"alias":{"id":"b50e21c9-3399-4469-8743-faeb6995f6a9","name":"Arthur van Dam","key":"arthur-van-dam","url":"http://researchr.org/alias/arthur-van-dam"}},{"person":{"id":"3a540653-1069-400e-93e1-051060c87ab1","fullname":"Karina Olmos","key":"karinaolmos","url":"http://researchr.org/profile/karinaolmos"},"alias":{"id":"8e6fdae1-9b09-4e01-8a08-f1ac76e40742","name":"Karina Olmos","key":"karina-olmos","url":"http://researchr.org/alias/karina-olmos"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Program Transformation with Scoped Dynamic Rewrite Rules","month":"","volumenumber":"69","year":"2006","note":"","key":"BravenboerDOV06","doi":"http://iospress.metapress.com/openurl.asp?genre=article&amp;issn=0169-2968&amp;volume=69&amp;issue=1&amp;spage=123"},{"abstract":"Attribute grammars are a powerful specification paradigm for many language processing tasks, particularly semantic analysis of programming languages. Recent attribute grammar systems use dynamic scheduling algorithms to evaluate attributes on demand. In this paper, we show how to remove the need for a generator, by embedding a dynamic approach in a modern, object-oriented and functional programming language. The result is a small, lightweight attribute grammar library that is part of our larger Kiama language processing library. Kiama\u2019s attribute grammar library supports a range of advanced features including cached, uncached, higher order, parameterised and circular attributes. Forwarding is available to modularise higher order attributes and decorators abstract away from the details of attribute value propagation. Kiama also implements new techniques for dynamic extension and variation of attribute equations. We use the Scala programming language because of its support for domain-specific notations and emphasis on scalability. Unlike generators with specialised notation, Kiama attribute grammars use standard Scala notations such as pattern-matching functions for equations, traits and mixins for composition and implicit parameters for forwarding. A benchmarking exercise shows that our approach is practical for realistic language processing.","lastpage":0,"type":"article","url":"http://researchr.org/publication/SloaneKV2012","firstpage":0,"issuenumber":"","journal":"Science of Computer Programming","id":"8e9096d8-af2f-4ea6-970f-b00e69993d4d","authors":[{"person":{"id":"30f25bf3-1656-4413-9a94-659dd3ba4ded","fullname":"Anthony M. Sloane","key":"anthonymsloane","url":"http://researchr.org/profile/anthonymsloane"},"alias":{"id":"4cebde5d-1a0c-46b4-abdc-cd51b77b3c88","name":"Anthony M. Sloane","key":"anthony-m.-sloane","url":"http://researchr.org/alias/anthony-m.-sloane"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"A pure embedding of attribute grammars","month":"","volumenumber":"","year":"2012","note":"Available online \\url{http://dx.doi.org/10.1016/j.scico.2011.11.005}","key":"SloaneKV2012","doi":"http://dx.doi.org/10.1016/j.scico.2011.11.005"},{"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.","lastpage":182,"type":"article","url":"http://researchr.org/publication/HemelGKV11","firstpage":150,"issuenumber":"2","journal":"J. Symb. Comput.","id":"400b1f51-6715-4889-b92a-3325a437ee76","authors":[{"person":{"id":"947901fa-e910-454b-8546-c514c5a191be","fullname":"Zef  Hemel","key":"zefhemel","url":"http://researchr.org/profile/zefhemel"},"alias":{"id":"7816809a-e2e6-42c6-8c44-481a821fb0bd","name":"Zef Hemel","key":"zef-hemel","url":"http://researchr.org/alias/zef-hemel"}},{"person":{"id":"f50a3666-08fe-4b30-9734-181aed455bb1","fullname":"Danny M.  Groenewegen","key":"dannymgroenewegen","url":"http://researchr.org/profile/dannymgroenewegen"},"alias":{"id":"46cf4818-8ce7-4644-9ee1-414e4c4960e7","name":"Danny M. Groenewegen","key":"danny-m.-groenewegen","url":"http://researchr.org/alias/danny-m.-groenewegen"}},{"person":{"id":"6e29bb96-28c9-4c76-915d-160ef1947602","fullname":"Lennart C. L. Kats","key":"lennartclkats","url":"http://researchr.org/profile/lennartclkats"},"alias":{"id":"f6b6789b-a32a-417c-a90e-c37a12f25728","name":"Lennart C. L. Kats","key":"lennart-c.-l.-kats","url":"http://researchr.org/alias/lennart-c.-l.-kats"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Static consistency checking of web applications with WebDSL","month":"","volumenumber":"46","year":"2011","note":"","key":"HemelGKV11","doi":"http://dx.doi.org/10.1016/j.jsc.2010.08.006"},{"abstract":"We define a translation from an intermediate box language for pretty printing to TeX. This translation can be used as a back-end for pretty printers in documentation tools for programming languages. The translation is formulated in an executable algebraic specification formalism. An important aspect of the translation is the transformation of boxes according to a set of equations. These equations preserve the text formatting semantics of boxes which is also defined algebraically. New in this approach is that algebraic transformations of box terms are used to circumvent the limitations of the typesetter.\r\n\r\nThe TeX generator, which translates the box language to TeX code, is a component of documentation tools generated for the programming environments developed with the ASF+SDF meta-environment, but can also be used as a separate tool. As a case study, the construction of a typesetter for the process specification formalism PSF is shown.","id":"67757dde-73d6-4598-8968-2e9a726624db","authors":[{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"673bfe6f-924b-4751-8fa1-313bb14048be","name":"Visser, Eelco","key":"visser,-eelco","url":"http://researchr.org/alias/visser%2C-eelco"}},{"person":{"id":"97855301-a569-413e-8e19-c2c376c50842","fullname":"Mark G. J. van den Brand","key":"markgjvandenbrand","url":"http://researchr.org/profile/markgjvandenbrand"},"alias":{"id":"1aed439d-7844-4cad-985c-1308ddf31e95","name":"van den Brand, Mark G. J.","key":"van-den-brand,-mark-g.-j.","url":"http://researchr.org/alias/van-den-brand%2C-mark-g.-j."}}],"title":"From Box to TeX: An algebraic approach to the generation of documentation tools","month":"July","year":"1994","url":"http://researchr.org/publication/BV94","note":"","doi":"","key":"BV94"},{"abstract":"","conferenceYear":"","series":"","lastpage":304,"booktitle":"Companion to the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, SPLASH/OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA","number":"","editors":[{"person":{"id":"7f55f747-1ff4-4fa3-85ea-b40e083546b5","fullname":"William R. Cook","key":"williamrcook","url":"http://researchr.org/profile/williamrcook"},"alias":{"id":"9a3ff127-3980-45d1-8b6b-baa769285bbc","name":"William R. Cook","key":"william-r.-cook","url":"http://researchr.org/alias/william-r.-cook"}},{"person":{"id":"ed27bbb0-cb5a-499a-a50b-f5a211ae3647","fullname":"Siobhán Clarke","key":"siobhnclarke","url":"http://researchr.org/profile/siobhnclarke"},"alias":{"id":"fc121095-62be-4b66-9cb4-23b9ec7fb533","name":"Siobhán Clarke","key":"siobhán-clarke","url":"http://researchr.org/alias/siobh%C3%A1n-clarke"}},{"alias":{"id":"503be362-fe58-475e-81c6-7763a1803fb6","name":"Martin C. Rinard","key":"martin-c.-rinard","url":"http://researchr.org/alias/martin-c.-rinard"}}],"type":"inproceedings","url":"http://researchr.org/publication/VolterV10","firstpage":301,"publisher":"ACM","id":"1fc68dbe-b216-4ef9-b06e-ae256da52496","authors":[{"person":{"id":"d0507709-858d-4c99-9af3-97f51623b905","fullname":"Markus Völter","key":"markusvoelter","url":"http://researchr.org/profile/markusvoelter"},"alias":{"id":"ab591369-2e2d-42ef-a605-52de9dba9aab","name":"Markus Völter","key":"markus-völter","url":"http://researchr.org/alias/markus-v%C3%B6lter"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Language extension and composition with language workbenches","organization":"","address":"","month":"","volume":"","year":"2010","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1869542.1869623","key":"VolterV10"},{"abstract":"Application programmer's interfaces give access to domain knowledge encapsulated in class libraries without providing the appropriate notation for expressing domain composition. Since object-oriented languages are designed for extensibility and reuse, the language constructs are often sufficient for expressing domain abstractions at the semantic level. However, they do not provide the right abstractions at the syntactic level. In this paper we describe MetaBorg, a method for providing <i>concrete syntax<\/i> for domain abstractions to application programmers. The method consists of <i>embedding<\/i> domain-specific languages in a general purpose host language and <i>assimilating<\/i> the embedded domain code into the surrounding host code. Instead of extending the implementation of the host language, the assimilation phase implements domain abstractions in terms of existing APIs leaving the host language undisturbed. Indeed, MetaBorg can be considered a method for promoting APIs to the language level. The method is supported by proven and available technology, i.e. the syntax definition formalism SDF and the program transformation language and toolset Stratego/XT. We illustrate the method with applications in three domains: code generation, XML generation, and user-interface construction.","conferenceYear":"","series":"","lastpage":383,"booktitle":"Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2004","number":"","editors":[{"alias":{"id":"3ef6dd94-ba04-4d7e-9913-c1b7ee64abd5","name":"John M. Vlissides","key":"john-m.-vlissides","url":"http://researchr.org/alias/john-m.-vlissides"}},{"alias":{"id":"3d41171b-7a1e-4076-ad18-d50dfdae9d73","name":"Douglas C. Schmidt","key":"douglas-c.-schmidt","url":"http://researchr.org/alias/douglas-c.-schmidt"}}],"type":"inproceedings","url":"http://researchr.org/publication/BravenboerV04","firstpage":365,"publisher":"ACM","id":"d2be6944-9566-4e66-9d44-162d09555785","authors":[{"person":{"id":"629a35fe-abf1-4cd3-ad19-ae3021609c90","fullname":"Martin  Bravenboer","key":"martinbravenboer","url":"http://researchr.org/profile/martinbravenboer"},"alias":{"id":"d43052f6-9073-47d6-98d0-b38cb940c618","name":"Martin Bravenboer","key":"martin-bravenboer","url":"http://researchr.org/alias/martin-bravenboer"}},{"person":{"id":"f0fbf7c0-9729-4ec8-b3c9-5f30dbd9614b","fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"},"alias":{"id":"f68ba0ee-899e-4c4c-9d8a-6fed5092830a","name":"Eelco Visser","key":"eelco-visser","url":"http://researchr.org/alias/eelco-visser"}}],"title":"Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions","organization":"","address":"Vancouver, BC, Canada","month":"","volume":"","year":"2004","conference":"oopsla","note":"","doi":"http://doi.acm.org/10.1145/1028976.1029007","key":"BravenboerV04"}],"fullname":"Eelco Visser","key":"eelcovisser","url":"http://researchr.org/profile/eelcovisser"}