Scannerless NSLR(1) parsing of programming languages
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Substring parsing for arbitrary context-free grammars
ACM SIGPLAN Notices
Comparison of syntactic error handling in LR parsers
Software—Practice & Experience
ANTLR: a predicated-LL(k) parser generator
Software—Practice & Experience
Software—Practice & Experience
A forward move algorithm for LR error recovery
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
Compiling language definitions: the ASF+SDF compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Packrat parsing:: simple, powerful, lazy, linear time, functional pearl
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Disambiguation Filters for Scannerless Generalized LR Parsers
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Alignment of Trees - An Alternative to Tree Edit
CPM '94 Proceedings of the 5th Annual Symposium on Combinatorial Pattern Matching
Generating Robust Parsers using Island Grammars
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Building Documentation Generators
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Lightweight Impact Analysis using Island Grammars
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
Deriving tolerant grammars from a base-line grammar
ICSM '03 Proceedings of the International Conference on Software Maintenance
Robust multilingual parsing using island grammars
CASCON '03 Proceedings of the 2003 conference of the Centre for Advanced Studies on Collaborative research
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Declarative, formal, and extensible syntax definition for aspectJ
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Using The Meta-Environment for Maintenance and Renovation
CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
High-fidelity C/C++ code transformation
Science of Computer Programming
Preventing injection attacks with syntax embeddings
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
IMP: a meta-tooling platform for creating language-specific ides in eclipse
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Stratego/XT 0.17. A language and toolset for program transformation
Science of Computer Programming
Mixing source and bytecode: a case for compilation by normalization
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Accelerating the creation of customized, language-Specific IDEs in Eclipse
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Domain-Specific Languages for Composable Editor Plugins
Electronic Notes in Theoretical Computer Science (ENTCS)
The spoofax language workbench: rules for declarative specification of languages and IDEs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Pure and declarative syntax definition: paradise lost and regained
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Incremental concrete syntax for embedded languages
Proceedings of the 2011 ACM Symposium on Applied Computing
Integrated language definition testing: enabling test-driven language development
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Natural and flexible error recovery for generated parsers
SLE'09 Proceedings of the Second international conference on Software Language Engineering
Software development environments on the web: a research agenda
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Natural and Flexible Error Recovery for Generated Modular Language Environments
ACM Transactions on Programming Languages and Systems (TOPLAS)
Incremental concrete syntax for embedded languages with support for separate compilation
Science of Computer Programming
Hi-index | 0.00 |
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.