Optimization of parser tables for portable compilers
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Efficient Computation of LALR(1) Look-Ahead Sets
ACM Transactions on Programming Languages and Systems (TOPLAS)
A new method for compiler code generation
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Experimental comparison of some parsing methods
ACM SIGPLAN Notices
OPG: an optimizing parser generator
ACM SIGPLAN Notices
Recursive ascent: an LR analog to recursive descent
ACM SIGPLAN Notices
Automatic generation of fast optimizing code generators
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Searching in discrete universes
ACM SIGPLAN Notices
A Four Russians algorithm for regular expression pattern matching
Journal of the ACM (JACM)
RE2C: a more versatile scanner generator
ACM Letters on Programming Languages and Systems (LOPLAS)
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Generation of LR parsers by partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Directly-Executable Earley Parsing
CC '01 Proceedings of the 10th International Conference on Compiler Construction
Hardcoding finite state automata processing
SAICSIT '03 Proceedings of the 2003 annual research conference of the South African institute of computer scientists and information technologists on Enablement through technology
Comparative efficiency of general and residual parsers
ACM SIGPLAN Notices
Efficient computation of LALR(1) look-ahead sets
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Performance of hardcoded finite automata
Software—Practice & Experience - Research Articles
Journal of Functional Programming
Building language towers with ziggurat
Journal of Functional Programming
Towards Efficient, Typed LR Parsers
Electronic Notes in Theoretical Computer Science (ENTCS)
TOOL PAPER: ScalaBison Recursive Ascent-Descent Parser Generator
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
LR parsers can be made to run 6 to 10 times as fast as the best table-interpretive LR parsers. The resulting parse time is negligible compared to the time required by the remainder of a typical compiler containing the parser.A parsing speed of 1/2 million lines per minute on a computer similar to a VAX 11/780 was achieved, up from an interpretive speed of 40,000 lines per minute. A speed of 240,000 lines per minute on an Intel 80286 was achieved, up from an interpretive speed of 37,000 lines per minute.The improvement is obtained by translating the parser's finite state control into assembly language. States become code memory addresses. The current input symbol resides in a register and a quick sequence of register-constant comparisons determines the next state, which is merely jumped to. The parser's push-down stack is implemented directly on a hardware stack. The stack contains code memory addresses rather than the traditional state numbers.The strongly-connected components of the directed graph induced by the parser's terminal and nonterminal transitions are examined to determine a typically small subset of the states that require parse-time stack-overflow-check code when hardware does not provide the check automatically.The increase in speed is at the expense of space: a factor of 2 to 4 increase in total table size can be expected, depending upon whether syntactic error recovery is required.