06.01.2015 Views

Manual

Manual

Manual

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!