LALR(1, 1) parser generation for regular right part grammars
Acta Informatica
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
LR parsing: theory and practice
LR parsing: theory and practice
Eli: a complete, flexible compiler construction system
Communications of the ACM
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Extending context-free grammars with permutation phrases
ACM Letters on Programming Languages and Systems (LOPLAS)
ANTLR: a predicated-LL(k) parser generator
Software—Practice & Experience
AMiLP '95 Proceedings of the first international AMAST workshop on Algebraic methods in language processing
Characterization of extended LR (K) grammars
Information Processing Letters
Regular right part grammars and their parsers
Communications of the ACM
The size-change principle for program termination
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT 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
Compiler Design
The Java Language Specification
The Java Language Specification
Deterministic Techniques for Efficient Non-Deterministic Parsers
Proceedings of the 2nd Colloquium on Automata, Languages and Programming
Deterministic, Error-Correcting Combinator Parsers
Advanced Functional Programming, Second International School-Tutorial Text
Journal of Functional Programming
Journal of Functional Programming
Report on the algorithmic language ALGOL 68
Report on the algorithmic language ALGOL 68
Termination analysis and specialization-point insertion in offline partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
Current parser generators are based on context-free grammars. Because such grammars lack abstraction facilities, the resulting specifications are often not easy to read. Fischer's macro grammars extend context-free grammars with macro-like productions thus providing the equivalent of procedural abstraction. However, their use is hampered by the lack of an efficient, off-the-shelf parsing technology for macro grammars. We define specialization for macro grammars to enable reuse of parsing technology for context-free grammars while facilitating the specification of a language with a macro grammar. This specialization yields context-free rules, but it does not always terminate. We present a sound and complete static analysis that applies to any macro grammar and decides whether specialization terminates for it and thus yields a (finite) context-free grammar. The analysis is based on an intuitive notion of self-embedding nonterminals, which is easy to check by hand. We have implemented the analysis as part of a preprocessing tool that transforms a Yacc grammar extended with macro productions to a standard Yacc grammar.