The annotated C++ reference manual
The annotated C++ reference manual
A gentle introduction to Haskell
ACM SIGPLAN Notices - Haskell special issue
ACM Transactions on Programming Languages and Systems (TOPLAS)
Rie, a compiler generator based on a one-pass-type attribute grammar
Software—Practice & Experience
Incremental static semantic analysis
Incremental static semantic analysis
Efficient and flexible incremental parsing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Regular right part grammars and their parsers
Communications of the ACM
Deterministic parsing of ambiguous grammars
Communications of the ACM
An efficient context-free parsing algorithm
Communications of the ACM
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Reusing Batch Parsers as Incremental Parsers
Proceedings of the 15th Conference on Foundations of Software Technology and Theoretical Computer Science
Rule splitting and attribute-directed parsing
Semantics-Directed Compiler Generation, Proceedings of a Workshop
Attribute-influenced LR parsing
Semantics-Directed Compiler Generation, Proceedings of a Workshop
Efficient self-versioning documents
COMPCON '97 Proceedings of the 42nd IEEE International Computer Conference
Decorating tokens to facilitate recognition of ambiguous language constructs
Software—Practice & Experience
A Bounded Graph-Connect Construction for LR-regular Parsers
CC '01 Proceedings of the 10th International Conference on Compiler Construction
The molhado hypertext versioning system
Proceedings of the fifteenth ACM conference on Hypertext and hypermedia
Multi-level Con.guration Management with Fine-grained Logical Units
EUROMICRO '05 Proceedings of the 31st EUROMICRO Conference on Software Engineering and Advanced Applications
On product versioning for hypertexts
Proceedings of the 12th international workshop on Software configuration management
XGLR: an algorithm for ambiguity in programming languages
Science of Computer Programming - The fourth workshop on language descriptions, tools, and applications (LDTA'04)
Case study: Re-engineering C++ component models via automatic program transformation
Information and Software Technology
Context-aware scanning for parsing extensible languages
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Language Analysis and Tools for Ambiguous Input Streams
Electronic Notes in Theoretical Computer Science (ENTCS)
Prototyping a tool environment for run-time assertion checking in JML with communication histories
Proceedings of the 12th Workshop on Formal Techniques for Java-Like Programs
An incremental approach to abstraction-carrying code
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Incremental resource usage analysis
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Hi-index | 0.01 |
A major research goal for compilers and environments is the automatic derivation of tools from formal specifications. However, the formal model of the language is often inadequate; in particular, LR(k) grammars are unable to describe the natural syntax of many languages, such as C++ and Fortran, which are inherently non-deterministic. Designers of batch compilers work around such limitations by combining generated components with ad hoc techniques (for instance, performing partial type and scope analysis in tandem with parsing). Unfortunately, the complexity of incremental systems precludes the use of batch solutions. The inability to generate incremental tools for important languages inhibits the widespread use of language-rich interactive environments.We address this problem by extending the language model itself, introducing a program representation based on parse dags that is suitable for both batch and incremental analysis. Ambiguities unresolved by one stage are retained in this representation until further stages can complete the analysis, even if the reaolution depends on further actions by the user. Representing ambiguity explicitly increases the number and variety of languages that can be analyzed incrementally using existing methods.To create this representation, we have developed an efficient incremental parser for general context-free grammars. Our algorithm combines Tomita's generalized LR parser with reuse of entire subtrees via state-matching. Disambiguation can occur statically, during or after parsing, or during semantic analysis (using existing incremental techniques); program errors that preclude disambiguation retsin multiple interpretations indefinitely. Our representation and analyses gain efficiency by exploiting the local nature of ambiguities: for the SPEC95 C programs, the explicit representation of ambiguity requires only 0.5% additional space and less than 1% additional time during reconstruction.