Developing a parser can be a challenge, especially if you don’t understand the algorithm (see section The Bison Parser Algorithm). This chapter explains how to understand and debug a parser.
The most frequent issue users face is solving their conflicts. To fix them, the first step is understanding how they arise in a given grammar. This is made much easier by automated generation of counterexamples, cover in the first section (see section Generation of Counterexamples).
In most cases though, looking at the structure of the automaton is still needed. The following sections explain how to generate and read the detailed structural description of the automaton. There are several formats available:
The last section focuses on the dynamic part of the parser: how to enable and understand the parser run-time traces (see section Tracing Your Parser).
|• Counterexamples||Understanding conflicts.|
|• Understanding||Understanding the structure of your parser.|
|• Graphviz||Getting a visual representation of the parser.|
|• Xml||Getting a markup representation of the parser.|
|• Tracing||Tracing the execution of your parser.|