Compatibility

PERMANENT DEFAULT CONTRACT

Replace racc without rewriting your parser.

Compatible mode preserves yacc-style grammar input, token contracts, semantic actions, error callbacks, and the familiar do_parse/yyparse runtime API.

Grammar and generation

  • racc-compatible declarations, precedence, actions, and user-code sections
  • Deterministic LALR(1) output with compact or inspectable tables
  • Standalone embedded output with -E
Grammar reference →

Runtime contract

  • Pull, yielding, and caller-driven push parsing
  • Compatible error recovery and callbacks
  • Immutable shared tables and isolated parser sessions
Browse the runtime API →

Migration evidence

Static checks and a subprocess differential harness expose unsupported constructs and compare parser observations before a migration is accepted.

Migration guide →

Compatibility boundary

Opt-in improvements never silently replace compatible behavior. Extended syntax, exact lookahead defaults, and research algorithms require an explicit mode or option.

Stability and deprecation →

Release evidence

Public-gem migrations, external performance measurements, scale construction, error review, and type evidence decide release readiness.

Read the v1.0 decision →