{"publications":[{"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":"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":"Spoofax is a language workbench for efficient, agile development of\r\ntextual domain-specific languages with state-of-the-art IDE support.\r\nSpoofax integrates language processing techniques for parser\r\ngeneration, meta-programming, and IDE development into a single\r\nenvironment.  It uses concise, declarative specifications for\r\nlanguages and IDE services.  In this paper we describe the\r\narchitecture of Spoofax and introduce idioms for high-level\r\nspecifications of language semantics using rewrite rules, showing how\r\nanalyses can be reused for transformations, code generation, and\r\neditor services such as error marking, reference resolving, and\r\ncontent completion.  The implementation of these services is supported\r\nby language-parametric editor service classes that can be dynamically\r\nloaded by the Eclipse IDE, allowing new languages to be developed and\r\nused side-by-side in the same Eclipse environment.\r\n","conferenceYear":"","series":"","lastpage":0,"booktitle":"","number":"","editors":[{"alias":{"id":"c55e9a6d-78c4-44a5-a928-0e2c2e4c275e","name":"Martin Rinard","key":"martin-rinard","url":"http://researchr.org/alias/martin-rinard"}}],"type":"inproceedings","url":"http://researchr.org/publication/KatsVisser2010","firstpage":0,"publisher":"","id":"3f61384d-0578-4b94-b851-54194f553b92","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":"","month":"","volume":"","year":"2010","conference":"OOPSLA","note":"","doi":"http://dx.doi.org/10.1145/1869459.1869497","key":"KatsVisser2010"},{"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":"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":"This paper presents EpiSpin: an Eclipse plug-in for editing Promela models. It provides error markers as you type, various editor services and an interface to perform verification and simulation runs using Spin. An additional tool shows the static relations between channels, processes and global variables. These tools have been built using the Spoofax language workbench.","conferenceYear":"2011","series":"Lecture Notes in Computer Science","booktitle":"Model Checking Software. Proceedings of the 18th International SPIN Workshop","number":"","lastpage":182,"type":"inproceedings","url":"http://researchr.org/publication/VKP2011","firstpage":177,"publisher":"Springer","id":"7905f769-b039-4891-93a5-c0ba1e48c09a","authors":[{"alias":{"id":"8b353070-3107-45cf-ae1c-da4189bcee2c","name":"Bob de Vos","key":"bob-de-vos","url":"http://researchr.org/alias/bob-de-vos"}},{"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"}},{"alias":{"id":"f99f2d1e-2881-4215-a525-c3c713b0c78e","name":"Cornelis Pronk","key":"cornelis-pronk","url":"http://researchr.org/alias/cornelis-pronk"}}],"title":"EpiSpin: An Eclipse Plug-In for Promela/Spin Using Spoofax","organization":"","address":"","month":"","volume":"6823","year":"2011","conference":"","note":"","doi":"http://dx.doi.org/10.1007/978-3-642-22306-8_12","key":"VKP2011"},{"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":"Parser generators are an indispensable tool for rapid language\r\ndevelopment. However, they often fall short of the finesse of a\r\nhand-crafted parser, built with the language semantics in mind.  One\r\narea where generated parsers have provided unsatisfactory results is\r\nthat of error recovery.  Good error recovery is both natural, giving\r\nrecovery suggestions in line with the intention of the programmer; and\r\nflexible, allowing it to be adapted according to language insights and\r\nlanguage changes.  This paper describes a novel approach to error\r\nrecovery, taking into account not only the context-free grammar, but\r\nalso indentation usage.  We base our approach on an extension of the\r\nSGLR parser that supports fine-grained error recovery rules and can be\r\nused to parse complex, composed languages.  We take a\r\ndivide-and-conquer approach to error recovery: using indentation,\r\nerroneous regions of code are identified.  These regions constrain the\r\nsearch space for applying recovery rules, improving performance and\r\nensuring recovery suggestions local to the error. As a last resort,\r\nerroneous regions can be discarded.  Our approach also integrates\r\nbridge parsing to provide more accurate suggestions for\r\nindentation-sensitive language constructs such as scopes.  We evaluate\r\nour approach by comparison with the JDT Java parser used in Eclipse.\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/DeJonge%3ANyman%3A2010","firstpage":0,"publisher":"Springer","id":"1fda1eb7-48a2-49a5-9a5f-8e8110f9a754","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":"","year":"2010","conference":"SLE","note":"","doi":"","key":"DeJonge:Nyman:2010"},{"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":"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":"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":"","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":"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":"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":0,"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"}},{"person":{"id":"23d10985-7265-476b-a44b-c0cb06bad686","fullname":"Gary T.  Leavens","key":"garytleavens","url":"http://researchr.org/profile/garytleavens"},"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/KatsJNV%3AOOPSLA%3A2009","firstpage":0,"publisher":"","id":"4ce511a6-d05a-45f0-a5b5-2bc46a3b5c53","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://dx.doi.org/10.1145/1639949.1640122","key":"KatsJNV:OOPSLA:2009"},{"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":"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":"","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":"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":"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":"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":"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"}],"name":"spoofax"}