publications: - title: "Automated evaluation of syntax error recovery" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "http://doi.acm.org/10.1145/2351676.2351736" abstract: "Evaluation of parse error recovery techniques is an open problem. The community lacks objective standards and methods to measure the quality of recovery results. This paper proposes an automated technique for recovery evaluation that offers a solution for two main problems in this area. First, a representative testset is generated by a mutation based fuzzing technique that applies knowledge about common syntax errors. Secondly, the quality of the recovery results is automatically measured using an oracle-based evaluation technique. We evaluate the validity of our approach by comparing results obtained by automated evaluation with results obtained by manual inspection. The evaluation shows a clear correspondence between our quality metric and human judgement. " links: doi: "http://doi.acm.org/10.1145/2351676.2351736" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/kbse/JongeV12" technicalreport: "https://researchr.org/publication/DeJongeVisser2012-TR" researchr: "https://researchr.org/publication/JongeV12" cites: 0 citedby: 0 pages: "322-325" booktitle: "IEEE/ACM International Conference on Automated Software Engineering, ASE'12, Essen, Germany, September 3-7, 2012" editor: - name: "Michael Goedicke" link: "https://researchr.org/alias/michael-goedicke" - name: "Tim Menzies" link: "https://researchr.org/alias/tim-menzies" - name: "Motoshi Saeki" link: "https://researchr.org/alias/motoshi-saeki" publisher: "ACM" isbn: "978-1-4503-1204-2" kind: "inproceedings" key: "JongeV12" - title: "Automated Evaluation of Syntax Error Recovery " author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2012-009.pdf" abstract: "Evaluation of parse error recovery techniques is an open problem. The community lacks objective standards and methods to measure the quality of recovery results. This paper provides an automated technique for recovery evaluation. The technique offers a solution for two main problems in this area. First, a representative testset is generated by a mutation based fuzzing technique that applies knowledge about common syntax errors. Secondly, the quality of the recovery results is automatically measured using an oracle-based evaluation technique. We evaluate the validity of our approach by comparing the results obtained by automated evaluation with the results obtained by manual inspection. The evaluation shows a clear correspondence between our quality metric and human judgement." links: doi: "http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2012-009.pdf" published: "https://researchr.org/publication/JongeV12" tags: - "rule-based" - "source-to-source" - "parsing" - "systematic-approach" - "open-source" researchr: "https://researchr.org/publication/DeJongeVisser2012-TR" cites: 0 citedby: 0 institution: "Delft University of Technology, Software Engineering Research Group" number: "TUD-SERG-2012-035" address: "Delft, The Netherlands" kind: "techreport" key: "DeJongeVisser2012-TR" - title: "Natural and Flexible Error Recovery for Generated Modular Language Environments" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Emma Söderberg" link: "https://researchr.org/alias/emma-s%C3%B6derberg" year: "2012" doi: "http://doi.acm.org/10.1145/2400676.2400678" 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 from 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." links: doi: "http://doi.acm.org/10.1145/2400676.2400678" dblp: "http://dblp.uni-trier.de/rec/bibtex/journals/toplas/JongeKVS12" researchr: "https://researchr.org/publication/JongeKVS12" cites: 0 citedby: 0 journal: "ACM Transactions on Programming Languages and Systems" volume: "34" number: "4" pages: "15" kind: "article" key: "JongeKVS12" - title: "An Algorithm for Layout Preservation in Refactoring Transformations" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" doi: "http://dx.doi.org/10.1007/978-3-642-28830-2_3" abstract: "Transformations and semantic analysis for source-to-source transformations such as refactorings are most effectively implemented using an abstract representation of the source code. An intrinsic limitation of transformation techniques based on abstract syntax trees is the loss of layout, i.e. comments and whitespace. This is especially relevant in the context of refactorings, which produce source code for human consumption. In this paper, we present an algorithm for fully automatic source code reconstruction for source-to-source transformations. The algorithm preserves the layout and comments of the unaffected parts and reconstructs the indentation of the affected parts, using a set of clearly defined heuristic rules to handle comments." links: doi: "http://dx.doi.org/10.1007/978-3-642-28830-2_3" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sle/JongeV11" technicalreport: "https://researchr.org/publication/DeJongeVisser2012-TUD-SERG-2011-027" researchr: "https://researchr.org/publication/JongeV11" cites: 0 citedby: 0 pages: "40-59" booktitle: "Software Language Engineering - 4th International Conference, SLE 2011, Braga, Portugal, July 3-4, 2011, Revised Selected Papers" editor: - name: "Anthony M. Sloane" link: "https://researchr.org/alias/anthony-m.-sloane" - name: "Uwe Aßmann" link: "https://researchr.org/alias/uwe-a%C3%9Fmann" volume: "6940" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-28829-6" kind: "inproceedings" key: "JongeV11" - title: "The Third Rewrite Engines Competition" author: - name: "Francisco Durán" link: "http://www.lcc.uma.es/~duran/" - name: "Manuel Roldán" link: "https://researchr.org/alias/manuel-rold%C3%A1n" - name: "Jean-Christophe Bach" link: "http://www.loria.fr/~bachjeje" - name: "Emilie Balland" link: "http://www.loria.fr/~balland/" - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "James R. Cordy" link: "http://research.cs.queensu.ca/~cordy/" - name: "Steven Eker" link: "http://www.csl.sri.com/people/eker/" - name: "Luc Engelen" link: "https://researchr.org/alias/luc-engelen" - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Karl Trygve Kalleberg" link: "http://www.ii.uib.no/~karltk/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Pierre-Etienne Moreau" link: "http://www.loria.fr/~moreau/dokuwiki/doku.php" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2010" doi: "http://dx.doi.org/10.1007/978-3-642-16310-4_16" abstract: "This paper presents the main results and conclusions of the Third Rewrite Engines Competition (REC III). This edition of the competition took place as part of the 8th Workshop on Rewriting Logic and its Applications (WRLA 2010), and the systems ASF+SDF, Maude, Stratego/XT, Tom, and TXL participated in it." links: doi: "http://dx.doi.org/10.1007/978-3-642-16310-4_16" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/wrla/DuranRBBBCEEJK10" tags: - "graph-rewriting" - "C++" - "rewriting" researchr: "https://researchr.org/publication/DuranRBBBCEEJK10" cites: 0 citedby: 0 pages: "243-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" editor: - name: "Peter Csaba Ölveczky" link: "https://researchr.org/alias/peter-csaba-%C3%B6lveczky" volume: "6381" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-16309-8" kind: "inproceedings" key: "DuranRBBBCEEJK10" - title: "No Escape from Vardanyan s theorem" author: - name: "Albert Visser" link: "https://researchr.org/alias/albert-visser" - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" year: "2006" doi: "http://dx.doi.org/10.1007/s00153-006-0328-0" links: doi: "http://dx.doi.org/10.1007/s00153-006-0328-0" researchr: "https://researchr.org/publication/VisserJ06" cites: 0 citedby: 0 journal: "Arch. Math. Log." volume: "45" number: "5" pages: "539-554" kind: "article" key: "VisserJ06" - title: "A language generic solution for name binding preservation in refactorings" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2012" doi: "http://doi.acm.org/10.1145/2427048.2427050" 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 static name bindings. To detect name binding violations, we implement a technique that reuses the name analysis defined in the compiler front end. Some languages offer the possibility to access 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. These 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 two domain specific languages and a subset of the Java language." links: doi: "http://doi.acm.org/10.1145/2427048.2427050" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/ldta/JongeV12" researchr: "https://researchr.org/publication/JongeV12-LDTA" cites: 0 citedby: 0 pages: "2" booktitle: "International Workshop on Language Descriptions, Tools, and Applications, LDTA '12, Tallinn, Estonia, March 31 - April 1, 2012" editor: - name: "Anthony Sloane" link: "https://researchr.org/alias/anthony-sloane" - name: "Suzana Andova" link: "https://researchr.org/alias/suzana-andova" publisher: "ACM" isbn: "978-1-4503-1536-4" kind: "inproceedings" key: "JongeV12-LDTA" - title: "An Algorithm for Layout Preservation in Refactoring Transformations" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2011" month: "August" abstract: "Transformations and semantic analysis for source-to-source transformations such as refactorings are most effectively implemented using an abstract representation of the source code. An intrinsic limitation of transformation techniques based on abstract syntax trees is the loss of layout, i.e. comments and whitespace. This is especially relevant in the context of refactorings, which produce source code for human consumption. In this paper, we present an algorithm for fully automatic source code reconstruction for source-to-source transformations. The algorithm preserves the layout and comments of the unaffected parts and reconstructs the indentation of the affected parts, using a set of clearly defined heuristic rules to handle comments. " links: published: "https://researchr.org/publication/JongeV11" tags: - "model-to-model transformation" - "rule-based" - "layout" - "abstract syntax" - "model refactoring" - "refactoring" - "points-to analysis" - "analysis" - "source-to-source" - "rules" - "rule-based refactoring" - "model transformation" - "context-aware" - "open-source" - "transformation" researchr: "https://researchr.org/publication/DeJongeVisser2012-TUD-SERG-2011-027" cites: 0 citedby: 0 institution: "Delft University of Technology" number: "TUD-SERG-2011-027" address: "Delft, The Netherlands" kind: "techreport" key: "DeJongeVisser2012-TUD-SERG-2011-027" - title: "Language-parametric Techniques for Language-Specific Editors" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" year: "2014" month: "January" doi: "http://dx.doi.org/10.4233/uuid:5b485a4a-e502-42d9-8bd2-21c02226ed91" abstract: "The goal of this dissertation is to develop techniques that simplify the implementation of tool support for new languages. More specifically, we focus on language-parametric solutions for the implementation of language-specific editor support. In the first part of this dissertation we investigate generic techniques to recover from syntax errors that occur during interactive editing. In the second part we look into language-parametric techniques for the implementation of refactoring tools." links: doi: "http://dx.doi.org/10.4233/uuid:5b485a4a-e502-42d9-8bd2-21c02226ed91" "blog": "http://eelcovisser.org/post/271/language-parametric-techniques-for-language-specific-editors" "pdf": "http://repository.tudelft.nl/assets/uuid:5b485a4a-e502-42d9-8bd2-21c02226ed91/doc.pdf" researchr: "https://researchr.org/publication/DeJonge2014" cites: 0 citedby: 0 school: "Delft University of Technology" address: "Delft, TheNetherlands" advisor: - name: "Eelco Visser" link: "http://eelcovisser.org" - name: "Arie van Deursen" link: "http://www.st.ewi.tudelft.nl/~arie/" kind: "phdthesis" key: "DeJonge2014" - title: "Providing rapid feedback in generated modular language environments: adding error recovery to scannerless generalized-LR parsing" author: - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Emma Nilsson-Nyman" link: "http://www.cs.lth.se/home/Emma.Nilsson_Nyman/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://doi.acm.org/10.1145/1640089.1640122" 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. " links: doi: "http://doi.acm.org/10.1145/1640089.1640122" successor: "https://researchr.org/publication/JongeKVS12" "technical report (pdf)": "http://www.lclnet.nl/publications/error-recovery.pdf" tags: - "parsing algorithm" - "semantics" - "rule-based" - "Java" - "SDF" - "composition" - "analysis" - "principles" - "C++" - "code generation" - "context-aware" - "Meta-Environment" - "parsing" - "scannerless parsing" - "systematic-approach" - "island grammars" - "ASF+SDF" - "grammar" - "Stratego" researchr: "https://researchr.org/publication/KatsJNV09" cites: 0 citedby: 1 pages: "445-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" editor: - name: "Shail Arora" link: "https://researchr.org/alias/shail-arora" - name: "Gary T. Leavens" link: "https://researchr.org/alias/gary-t.-leavens" publisher: "ACM" isbn: "978-1-60558-766-0" kind: "inproceedings" key: "KatsJNV09" - title: "Natural and Flexible Error Recovery for Generated Parsers" author: - name: "Maartje de Jonge" link: "https://researchr.org/profile/maartjedejonge/publications" - name: "Emma Nilsson-Nyman" link: "http://www.cs.lth.se/home/Emma.Nilsson_Nyman/" - name: "Lennart C. L. Kats" link: "http://www.lclnet.nl/" - name: "Eelco Visser" link: "http://eelcovisser.org" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_16" 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. " links: doi: "http://dx.doi.org/10.1007/978-3-642-12107-4_16" successor: "https://researchr.org/publication/JongeKVS12" tags: - "semantics" - "rule-based" - "Java" - "Eclipse" - "rules" - "C++" - "search suggestions" - "context-aware" - "search" - "parsing" - "error recovery" - "systematic-approach" - "SGLR" - "grammar" researchr: "https://researchr.org/publication/JongeNKV09" cites: 0 citedby: 0 pages: "204-223" booktitle: "Software Language Engineering, Second International Conference, SLE 2009, Denver, CO, USA, October 5-6, 2009, Revised Selected Papers" editor: - name: "Mark G. J. van den Brand" link: "http://www.win.tue.nl/~mvdbrand/" - name: "Dragan Gasevic" link: "http://www.sfu.ca/~dgasevic/" - name: "Jeffrey G. Gray" link: "http://www.gray-area.org/" volume: "5969" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-12106-7" kind: "inproceedings" key: "JongeNKV09"