Manual
Manual
Manual
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
4 Parser C-Language Interface . . . . . . . . . . . . . . 63<br />
4.1 The Parser Function yyparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />
4.2 The Lexical Analyzer Function yylex . . . . . . . . . . . . . . . . . . . . . . . . 64<br />
4.2.1 Calling Convention for yylex . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />
4.2.2 Semantic Values of Tokens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />
4.2.3 Textual Locations of Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />
4.2.4 Calling Conventions for Pure Parsers . . . . . . . . . . . . . . . . . . . . 66<br />
4.3 The Error Reporting Function yyerror . . . . . . . . . . . . . . . . . . . . . . 67<br />
4.4 Special Features for Use in Actions . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />
4.5 Parser Internationalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />
iii<br />
5 The Bison Parser Algorithm. . . . . . . . . . . . . . . 71<br />
5.1 Look-Ahead Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />
5.2 Shift/Reduce Conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />
5.3 Operator Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />
5.3.1 When Precedence is Needed . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />
5.3.2 Specifying Operator Precedence. . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
5.3.3 Precedence Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
5.3.4 How Precedence Works. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
5.4 Context-Dependent Precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />
5.5 Parser States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />
5.6 Reduce/Reduce Conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />
5.7 Mysterious Reduce/Reduce Conflicts. . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
5.8 Generalized LR (GLR) Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />
5.9 Memory Management, and How to Avoid Memory Exhaustion<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />
6 Error Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />
7 Handling Context Dependencies . . . . . . . . . . . 85<br />
7.1 Semantic Info in Token Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />
7.2 Lexical Tie-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />
7.3 Lexical Tie-ins and Error Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />
8 Debugging Your Parser . . . . . . . . . . . . . . . . . . . 89<br />
8.1 Understanding Your Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />
8.2 Tracing Your Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95<br />
9 Invoking Bison . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />
9.1 Bison Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />
9.2 Option Cross Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />
9.3 Yacc Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100