Language-parametric Techniques for Language-Specific Editors

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.

[1]  Welf Löwe,et al.  Cross-Language Program Analysis and Refactoring , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[2]  Eelco Visser,et al.  Natural and Flexible Error Recovery for Generated Modular Language Environments , 2012, TOPL.

[3]  Uwe Aßmann,et al.  Role-based generic model refactoring , 2010, MODELS'10.

[4]  Gordon V. Cormack,et al.  Scannerless NSLR(1) parsing of programming languages , 1989, PLDI '89.

[5]  Robert Grimm,et al.  Jeannie: granting java native interface developers their wishes , 2007, OOPSLA.

[6]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[7]  Ralf Lämmel,et al.  Two-dimensional Approximation Coverage , 2000, Informatica.

[8]  Torbjörn Ekman,et al.  Refactoring is not (yet) about transformation , 2008, WRT '08.

[9]  Bryan Ford,et al.  Parsing expression grammars: a recognition-based syntactic foundation , 2004, POPL '04.

[10]  Jurgen J. Vinju,et al.  Parse Forest Diagnostics with Dr. Ambiguity , 2011, SLE.

[11]  Eelco Visser,et al.  Declaratively programming the mobile web with Mobl , 2011, OOPSLA '11.

[12]  Adrian Johnstone,et al.  Generalised Parsing: Some Costs , 2004, CC.

[13]  Bruce J. McKenzie,et al.  Error repair in shift-reduce parsers , 1995, TOPL.

[14]  Jose Meseguer,et al.  Formal Specification and Verification of Java Refactorings , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[15]  Paul Klint,et al.  The syntax definition formalism SDF—reference manual— , 1989, SIGP.

[16]  Charles N. Fischer,et al.  Determining the extent of lookahead in syntactic error repair , 1988, TOPL.

[17]  Alfred V. Aho,et al.  A Minimum Distance Error-Correcting Parser for Context-Free Languages , 1972, SIAM J. Comput..

[18]  Paul Klint A Meta-Environment for Generating Programming Environments , 1989, Algebraic Methods.

[19]  Görel Hedin,et al.  Reference Attributed Grammars , 2000, Informatica.

[20]  Russell W. Quong,et al.  ANTLR: A predicated‐LL(k) parser generator , 1995, Softw. Pract. Exp..

[21]  Robert Grimm,et al.  Better extensibility through modular syntax , 2006, PLDI '06.

[22]  P. Klint,et al.  Efficient annotated terms , 2000 .

[23]  Kevin A. Schneider,et al.  Processing software source text in automated design recovery and transformation , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[24]  Simon J. Thompson,et al.  Mechanical verification of refactorings , 2008, PEPM '08.

[25]  Eelco Visser,et al.  WebDSL: a domain-specific language for dynamic web applications , 2008, OOPSLA Companion.

[26]  R. Malgady,et al.  Understanding correlation coefficients and regression. , 1986, Physical therapy.

[27]  Eelco Visser,et al.  Mixing source and bytecode: a case for compilation by normalization , 2008, OOPSLA.

[28]  Martin Bichler,et al.  Design science in information systems research , 2006, Wirtschaftsinf..

[29]  Tijs van der Storm,et al.  RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[30]  Stanley M. Sutton,et al.  Accelerating the creation of customized, language-Specific IDEs in Eclipse , 2009, OOPSLA 2009.

[31]  Torbjörn Ekman,et al.  Practical Scope Recovery Using Bridge Parsing , 2008, SLE.

[32]  Frank Tip,et al.  Refactoring using type constraints , 2011, TOPL.

[33]  Bryan Ford,et al.  Packrat Parsing: Simple, Powerful, Lazy, Linear Time , 2006, ICFP 2002.

[34]  Sylvain Schmitz,et al.  MODULAR SYNTAX DEMANDS VERIFICATION , 2006 .

[35]  M. deJonge A pretty-printer for every occasion , 2001 .

[36]  Walter R. Bischofberger,et al.  Sniff—A Pragmatic Approach to a C++ Programming Environment 1 , 1992 .

[37]  Jurgen Vinju,et al.  Rewriting with Layout , 2012 .

[38]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[39]  Martin Fowler,et al.  Domain-Specific Languages , 2010, The Addison-Wesley signature series.

[40]  George C. Necula,et al.  Elkhound: A Fast, Practical GLR Parser Generator , 2003, CC.

[41]  Kuo-Chung Tai,et al.  Syntactic Error Correction in Programming Languages , 1978, IEEE Trans. Software Eng..

[42]  Oscar Nierstrasz,et al.  Traits: A mechanism for fine-grained reuse , 2006, TOPL.

[43]  Charles N. Fischer,et al.  Efficient LL(1) error correction and recovery using only insertions , 1980, Acta Informatica.

[44]  Eelco Visser,et al.  Domain-Specific Languages for Composable Editor Plugins , 2010, Electron. Notes Theor. Comput. Sci..

[45]  Huiqing Li,et al.  Let's make refactoring tools user-extensible! , 2012, WRT '12.

[46]  James J. Horning Structuring Compiler Development , 1976, Compiler Construction.

[47]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[48]  Mirko Seifert,et al.  Derivation and Refinement of Textual Syntax for Models , 2009, ECMDA-FA.

[49]  Ralf Lämmel,et al.  A Strafunski Application Letter , 2003, PADL.

[50]  David G. Cantor,et al.  On The Ambiguity Problem of Backus Systems , 1962, JACM.

[51]  Terence Parr,et al.  LL(*): the foundation of the ANTLR parser generator , 2011, PLDI '11.

[52]  Bernhard Rumpe,et al.  MontiCore: Modular Development of Textual Domain Specific Languages , 2008, TOOLS.

[53]  Laurence Tratt Direct left-recursive parsing expression grammars , 2010 .

[54]  Richard Edwin Stearns,et al.  Syntax-Directed Transduction , 1966, JACM.

[55]  Don Roberts,et al.  Practical analysis for refactoring , 1999 .

[56]  E. Visser A Family of Syntax Definition Formalisms , 1995 .

[57]  Rohit Gheyi,et al.  Making Program Refactoring Safer , 2010, IEEE Software.

[58]  Ralf Lämmel,et al.  Towards generic refactoring , 2002, RULE '02.

[59]  Lusheng Wang,et al.  Alignment of trees: an alternative to tree edit , 1995 .

[60]  Eelco Visser,et al.  Building program optimizers with rewriting strategies , 1998, ICFP '98.

[61]  Bernhard Rumpe,et al.  MontiCore: a framework for the development of textual domain specific languages , 2008, ICSE Companion '08.

[62]  Eelco Visser,et al.  Scannerless Generalized-LR Parsing , 1997 .

[63]  S. Doaitse Swierstra,et al.  Deterministic, Error-Correcting Combinator Parsers , 1996, Advanced Functional Programming.

[64]  Torbjörn Ekman,et al.  Stepping Stones over the Refactoring Rubicon , 2009, ECOOP.

[65]  Zachary N. J. Peterson,et al.  Analysis of Mutation and Generation-Based Fuzzing , 2007 .

[66]  Ralf Lämmel,et al.  Deriving tolerant grammars from a base-line grammar , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[67]  Frank DeRemer,et al.  A forward move algorithm for LR error recovery , 1978, POPL '78.

[68]  Gordon B. Davis,et al.  A study of errors, error-proneness, and error diagnosis in Cobol , 1976, CACM.

[69]  Eelco Visser,et al.  Natural and Flexible Error Recovery for Generated Parsers , 2009, SLE.

[70]  Eelco Visser,et al.  Disambiguation Filters for Scannerless Generalized LR Parsers , 2002, CC.

[71]  Arie van Deursen,et al.  The ASF+SDF Meta-environment: A Component-Based Language Development Environment , 2001 .

[72]  M. de Jonge Pretty-printing for software reengineering , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[73]  Torbjörn Ekman,et al.  Sound and extensible renaming for java , 2008, OOPSLA.

[74]  RAINER KOPPLER A Systematic Approach to Fuzzy Parsing , 1997, Softw. Pract. Exp..

[75]  Jennifer Widom,et al.  Change detection in hierarchically structured information , 1996, SIGMOD '96.

[76]  Eelco Visser,et al.  Automated evaluation of syntax error recovery , 2012, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

[77]  Paul Klint,et al.  Ambiguity Detection: Scaling to Scannerless , 2011, SLE.

[78]  Masaru Tomita,et al.  Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems , 1985 .

[79]  Eelco Visser,et al.  Stratego/XT 0.17. A language and toolset for program transformation , 2008, Sci. Comput. Program..

[80]  Huiqing Li,et al.  Tool support for refactoring functional programs , 2003, PEPM '08.

[81]  Michael G. Burke,et al.  A practical method for LR and LL syntactic error diagnosis and recovery , 1987, TOPL.

[82]  Eelco Visser,et al.  Implementing Refactorings in the Spoofax Language Workbench , 2013 .

[83]  Bin Yao,et al.  High-fidelity C/C++ code transformation , 2005, Sci. Comput. Program..

[84]  Alon Lavie,et al.  GLR* – An Efficient Noise-skipping Parsing Algorithm For Context Free Grammars , 1993, IWPT.

[85]  Gabriël D. P. Konat Language-Parametric Incremental and Parallel Name Resolution , 2012 .

[86]  van der,et al.  The Rascal Language Workbench , 2011 .

[87]  Eelco Visser,et al.  Declarative, formal, and extensible syntax definition for aspectJ , 2006, OOPSLA '06.

[88]  Ralf Lämmel,et al.  Parse-tree annotations meet re-engineering concerns , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[89]  Oege de Moor,et al.  Scripting refactorings with JunGL , 2006, OOPSLA '06.

[90]  Eelco Visser,et al.  An Algorithm for Layout Preservation in Refactoring Transformations , 2011, SLE.

[91]  Eelco Visser,et al.  Program Transformation with Scoped Dynamic Rewrite Rules , 2006, Fundam. Informaticae.

[92]  Leon Moonen,et al.  Generating robust parsers using island grammars , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[93]  Sebastian Erdweg,et al.  SugarJ: library-based syntactic language extensibility , 2011, OOPSLA '11.

[94]  Stanley M. Sutton,et al.  IMP: a meta-tooling platform for creating language-specific ides in eclipse , 2007, ASE '07.

[95]  László Lövei,et al.  Refactoring Erlang programs , 2007 .

[96]  Darko Marinov,et al.  Automated testing of refactoring engines , 2007, ESEC-FSE '07.

[97]  Torbjörn Ekman,et al.  The jastadd extensible java compiler , 2007, OOPSLA.

[98]  M. L. Van De Vanter,et al.  Preserving the documentary structure of source code in language-based transformation tools , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[99]  G. David Ripley,et al.  A Statistical Analysis of Syntax Errors , 1978, Comput. Lang..

[100]  Eric Van Wyk,et al.  Verifiable composition of deterministic grammars , 2009, PLDI '09.

[101]  Huiqing Li,et al.  The Haskell Refactorer, HaRe, and its API , 2005, Electron. Notes Theor. Comput. Sci..

[102]  Wilco Koorn,et al.  Substring parsing for arbitrary context-free grammars , 1991, SIGP.

[103]  S. P. Luttik,et al.  Specification of rewriting strategies , 1997 .

[104]  Eelco Visser,et al.  Pure and declarative syntax definition: paradise lost and regained , 2010, OOPSLA.

[105]  Jean Bézivin,et al.  TCS:: a DSL for the specification of textual concrete syntaxes in model engineering , 2006, GPCE '06.

[106]  Eelco Visser,et al.  Code Generation by Model Transformation , 2008, ICMT@TOOLS.

[107]  Róbert KITLEI,et al.  LAYOUT PRESERVING PARSER FOR REFACTORING IN ERLANG , 2009 .

[108]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[109]  Eric Van Wyk,et al.  Context-aware scanning for parsing extensible languages , 2007, GPCE '07.

[110]  Eelco Visser,et al.  A language generic solution for name binding preservation in refactorings , 2012, LDTA.

[111]  Richard C. Holt,et al.  Hierarchic syntax error repair for LR grammars , 1982, International Journal of Computer & Information Sciences.

[112]  Eelco Visser,et al.  Generation of formatters for context-free languages , 1996, TSEM.

[113]  Eelco Visser,et al.  Syntax definition for language prototyping , 1997 .

[114]  Eelco Visser,et al.  A Case Study in Optimizing Parsing Schemata by Disambiguation Filters , 1997, IWPT.

[115]  Charles B. Haley,et al.  Practical LR error recovery , 1979, SIGPLAN '79.

[116]  Paul Klint,et al.  Using The Meta-Environment for Maintenance and Renovation , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[117]  Xuejun Yang,et al.  Test-case reduction for C compiler bugs , 2012, PLDI.

[118]  R. Valkering Syntax Error Handling in Scannerless Generalized LR Parsers , 2007 .

[119]  Leon Moonen Lightweight impact analysis using island grammars , 2002, Proceedings 10th International Workshop on Program Comprehension.

[120]  Eelco Visser,et al.  Meta-programming with Concrete Object Syntax , 2002, GPCE.

[121]  Benjamin C. Pierce,et al.  Combinators for bi-directional tree transformations: a linguistic approach to the view update problem , 2005, POPL '05.

[122]  Eelco Visser,et al.  The spoofax language workbench: rules for declarative specification of languages and IDEs , 2010, OOPSLA.

[123]  Anthony M. Sloane,et al.  Decorated Attribute Grammars . Attribute Evaluation Meets Strategic Programming ( Extended Technical Report ) , 2008 .

[124]  Gordon Lyon,et al.  Syntax-directed least-errors analysis for context-free languages , 1974, Commun. ACM.

[125]  Eelco Visser,et al.  WebDSL: A Case Study in Domain-Specific Language Engineering , 2007, GTTSE.

[126]  Johannes Sametinger,et al.  Design and implementation aspects of an experimental C++ programming environment , 1995, Softw. Pract. Exp..

[127]  Eelco Visser,et al.  Growing a language environment with editor libraries , 2011, GPCE '11.

[128]  Eelco Visser,et al.  Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9 , 2003, Domain-Specific Program Generation.

[129]  Pierre-Etienne Moreau,et al.  Tom: Piggybacking Rewriting on Java , 2007, RTA.

[130]  Mikhail Posypkin,et al.  Survey of Compiler Testing Methods , 2005, Programming and Computer Software.

[131]  Arie van Deursen,et al.  Building documentation generators , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[132]  Jurgen Vinju,et al.  Analysis and transformation of source code by parsing and rewriting , 2005 .

[133]  Eelco Visser,et al.  Preventing injection attacks with syntax embeddings , 2007, GPCE '07.

[134]  Günter Riedewald,et al.  Towards automatical migration of transformation rules after grammar extension , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[135]  Adrian Johnstone,et al.  GLL Parsing , 2010, LDTA.

[136]  J.-P. Lévy,et al.  Automatic correction of syntax-errors in programming languages , 2004, Acta Informatica.

[137]  Huiqing Li,et al.  Comparative Study of Refactoring Haskell and Erlang Programs , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[138]  Richard B. Kieburtz,et al.  Global Context Recovery: A New Strategy for Syntactic Error Recovery by Table-Drive Parsers , 1980, TOPL.

[139]  Susan L. Graham,et al.  History-Sensitive Error Recovery , 1999 .

[140]  Gordana Dodig Crnkovic,et al.  Constructive Research and Info-computational Knowledge Generation , 2010 .

[141]  José Antonio Pérez,et al.  Repairing syntax errors in LR parsers , 2002, TOPL.

[142]  Donald E. Knuth,et al.  On the Translation of Languages from Left to Right , 1965, Inf. Control..

[143]  James Hook,et al.  An Overview of the Programatica Toolset , 2004 .

[144]  Bernhard Rumpe,et al.  Efficient Editor Generation for Compositional DSLs in Eclipse , 2014, ArXiv.

[145]  Paul Klint,et al.  Compiling language definitions: the ASF+SDF compiler , 2000, TOPL.

[146]  Corrado Priami,et al.  Comparison of syntactic error handling in LR parsers , 1995, Softw. Pract. Exp..

[147]  Kevin A. Schneider,et al.  Using design recovery techniques to transform legacy systems , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[148]  Joseph S. Ullian,et al.  Ambiguity in context free languages , 1966, JACM.

[149]  C. Cerecke Repairing Syntax Errors in LR-based Parsers , 2002, ACSC.

[150]  Eelco Visser,et al.  Concrete syntax for objects: domain-specific language embedding and assimilation without restrictions , 2004, OOPSLA '04.