CoffeeGrinder Earley and Generalized LL parsers in Java Norm Tovey-Walsh Copyright © 2022–2023, 2025 Norm Tovey-Walsh Version 3.3.6-SNAPSHOT Table of Contents Introduction Why two parsers? 1. General use 1.1. Constructing a grammar 1.2. Constructing a parser 1.3. Parsing the input 1.4. Processing the results 1.5. Ambiguous results Part I. API Documentation 2. Parser options 2.1. ParserOptions 2.2. DefaultLogger 3. Grammars 3.1. Grammar 3.2. SourceGrammar 3.3. Rule 3.4. NonterminalSymbol 3.5. TerminalSymbol 3.6. Symbol 3.7. Token 3.8. TokenCharacter 3.9. TokenString 3.10. TokenRegex 3.11. ParserGrammar 4. Parsing 4.1. GearleyParser 4.2. GearleyResult 5. Forests, etc. 5.1. ParseForest 5.2. Arborist 5.3. Lumberjack 5.4. TreeSurgeon 5.5. Axe 5.6. SequentialAxe 5.7. PriorityAxe 5.8. RandomAxe 5.9. TreeBuilder Part II. Reference A. Earley Parser B. GLL Parser