06.01.2015 Views

Manual

Manual

Manual

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!