An iguana
grammar Expressions

E
  =       E "." "f"
  |       E E
  > left  E "*" E
  > left  E "+" E
  |       E "-" E
  >       "-" E
  >       "if" E "then" E "else" E
  > right E ";" E
  >       "(" E ")"
  |       "a"

@Layout @Regex
WS = [\ ]*

A practical GLL parser generator

Get Started

General parsing

Iguana accepts any context-free grammar, including grammars with left recursion and ambiguity, and returns all derivations of an ambiguous input as a shared parse forest.

Declarative disambiguation

Disambiguation in Iguana is explicit. The grammar states precedence, associativity, and restrictions to remove the unintended derivations.

Hatched in Rust

The generated code and parser runtime are written entirely in Rust. Generated parsers can be used as libraries or command-line tools and can also be compiled to WebAssembly.