Efficient full LR(I) parser generation
ACM SIGPLAN Notices
Obtaining practical variants of LL (K) and LR (K) for K greater than 1 by splitting the atomic K-tuple
Transforming LR(k) Grammars to LR(1), SLR(1), and (1,1) Bounded Right-Context Grammars
Journal of the ACM (JACM)
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
The lane tracing algorithm for constructing LR(k) parsers
STOC '73 Proceedings of the fifth annual ACM symposium on Theory of computing
Efficient LR(1) processor construction
STOC '69 Proceedings of the first annual ACM symposium on Theory of computing
ACM SIGPLAN Notices
IELR(1): practical LR(1) parser tables for non-LR(1) grammars with conflict resolution
Proceedings of the 2008 ACM symposium on Applied computing
Measuring and extending lr(1) parser generation
Measuring and extending lr(1) parser generation
Science of Computer Programming
Hi-index | 0.00 |
Despite the popularity of LALR(1) parser generators such as Yacc/Bison and LL parser generators such as ANTLR, robust and effective LR(1) parser generators are rare due to expensive performance and implementation difficulty. This work employed relevant algorithms, including the Knuth canonical algorithm, Pager's practical general method, lane-tracing algorithm, unit production elimination algorithm and its extension, and the edge-pushing algorithm, implemented an efficient, practical and Yacc/Bison-compatible open-source parser generator Hyacc, which supports full LR(0)/LALR(1)/LR(1) and partial LR(k). Based on the implementation, an empirical study was conducted comparing different LR(1) parser generation algorithms and LALR(1) algorithms. The result shows that LR(1) parser generation based upon improved algorithms and carefully selected data structures can be sufficiently efficient to be of practical use with modern computing facilities.