> For the complete documentation index, see [llms.txt](https://isubasinghe.gitbook.io/isithas-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://isubasinghe.gitbook.io/isithas-wiki/computer_science/programming_language_theory/parsers/lr1.md).

# LR(1) parser

## Basic idea

Canonical LR(1): each state remembers an exact 1-token lookahead, so it accepts every deterministic CFG. Tables are large; LALR(1) is the practical compromise that merges equivalent LR(1) states.

## Key formulas

* Parse time: $O(n)$
* LR(1) item: $\[A \to \alpha \cdot \beta, a]$ where $a$ is the lookahead.
* Strictly more powerful than SLR(1) / LALR(1); accepts all deterministic CFLs.
