Manual
Manual
Manual
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
i<br />
Table of Contents<br />
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />
Conditions for Using Bison . . . . . . . . . . . . . . . . . . . . 3<br />
GNU GENERAL PUBLIC LICENSE . . . . . . . . . . 5<br />
Preamble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND<br />
MODIFICATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
Appendix: How to Apply These Terms to Your New Programs . . . . . 10<br />
1 The Concepts of Bison . . . . . . . . . . . . . . . . . . . . 11<br />
1.1 Languages and Context-Free Grammars . . . . . . . . . . . . . . . . . . . . . . 11<br />
1.2 From Formal Rules to Bison Input. . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
1.3 Semantic Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
1.4 Semantic Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
1.5 Writing GLR Parsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
1.5.1 Using GLR on Unambiguous Grammars . . . . . . . . . . . . . . . . . 15<br />
1.5.2 Using GLR to Resolve Ambiguities . . . . . . . . . . . . . . . . . . . . . . 17<br />
1.5.3 GLR Semantic Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
1.5.4 Considerations when Compiling GLR Parsers. . . . . . . . . . . . . 20<br />
1.6 Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
1.7 Bison Output: the Parser File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
1.8 Stages in Using Bison. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
1.9 The Overall Layout of a Bison Grammar . . . . . . . . . . . . . . . . . . . . . 22<br />
2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
2.1 Reverse Polish Notation Calculator . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
2.1.1 Declarations for rpcalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
2.1.2 Grammar Rules for rpcalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
2.1.2.1 Explanation of input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
2.1.2.2 Explanation of line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />
2.1.2.3 Explanation of expr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />
2.1.3 The rpcalc Lexical Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
2.1.4 The Controlling Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
2.1.5 The Error Reporting Routine . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
2.1.6 Running Bison to Make the Parser . . . . . . . . . . . . . . . . . . . . . . 28<br />
2.1.7 Compiling the Parser File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
2.2 Infix Notation Calculator: calc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />
2.3 Simple Error Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
2.4 Location Tracking Calculator: ltcalc . . . . . . . . . . . . . . . . . . . . . . . 31<br />
2.4.1 Declarations for ltcalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
2.4.2 Grammar Rules for ltcalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31