[8fcc2c0] | 1 | <sect2><title>Contents of Bison</title>
|
---|
| 2 |
|
---|
| 3 | <para>Last checked against version &bison-contversion;.</para>
|
---|
[6370fa6] | 4 |
|
---|
[bdc08c1] | 5 | <sect3><title>Program Files</title>
|
---|
[6370fa6] | 6 |
|
---|
[bdc08c1] | 7 | <para>bison and yacc</para></sect3>
|
---|
| 8 |
|
---|
| 9 | <sect3><title>Descriptions</title>
|
---|
[6370fa6] | 10 |
|
---|
[bdc08c1] | 11 | <sect4><title>bison</title>
|
---|
[6370fa6] | 12 |
|
---|
[cf24ff1] | 13 | <para>bison is a parser generator, a replacement for yacc. yacc stands for Yet
|
---|
| 14 | Another Compiler Compiler. What is bison then? It is a program that
|
---|
[bdc08c1] | 15 | generates a program that analyzes the structure of a text file. Instead of
|
---|
[3cc70a0] | 16 | writing the actual program a user specifies how things should be connected
|
---|
[bdc08c1] | 17 | and with those rules a program is constructed that analyzes the
|
---|
[2c094d6] | 18 | text file. There are a lot of examples where structure is needed and
|
---|
[bdc08c1] | 19 | one of them is the calculator.</para>
|
---|
[6370fa6] | 20 |
|
---|
[b822811] | 21 | <para>Given the string :</para>
|
---|
[6370fa6] | 22 |
|
---|
[b822811] | 23 | <blockquote><literallayout> 1 + 2 * 3</literallayout></blockquote>
|
---|
[6370fa6] | 24 |
|
---|
[b822811] | 25 | <para>A human can easily come to the result 7. Why? Because of the structure.
|
---|
[9aab9f5] | 26 | Our brain knows
|
---|
[cf24ff1] | 27 | how to interpret the string. The computer doesn't know that and bison is a
|
---|
[6370fa6] | 28 | tool to help it understand by presenting the string in the following way
|
---|
[b822811] | 29 | to the compiler:</para>
|
---|
[6370fa6] | 30 |
|
---|
[b822811] | 31 | <blockquote><literallayout> +
|
---|
[6370fa6] | 32 | / \
|
---|
| 33 | * 1
|
---|
| 34 | / \
|
---|
[b822811] | 35 | 2 3</literallayout></blockquote>
|
---|
[6370fa6] | 36 |
|
---|
[b822811] | 37 | <para>Starting at the bottom of a tree and coming across the numbers 2 and
|
---|
[3cc70a0] | 38 | 3 which are joined by the multiplication symbol, the computer
|
---|
[6370fa6] | 39 | multiplies 2 and 3. The result of that multiplication is remembered and
|
---|
| 40 | the next thing that the computer sees is the result of 2*3 and the
|
---|
| 41 | number 1 which are joined by the add symbol. Adding 1 to the previous
|
---|
[2c094d6] | 42 | result makes 7. In calculating, the most complex calculations can be
|
---|
[6370fa6] | 43 | broken down in this tree format and the computer just starts at the
|
---|
[51c0c603] | 44 | bottom and works its way up to the top and comes with the correct
|
---|
[cf24ff1] | 45 | answer. Of course, bison isn't only used for calculators
|
---|
[bdc08c1] | 46 | alone.</para></sect4>
|
---|
| 47 |
|
---|
| 48 | <sect4><title>yacc</title>
|
---|
| 49 |
|
---|
[2b30797] | 50 | <para>We create a bash script called yacc which calls bison using the -y
|
---|
| 51 | option. This is for compatibility purposes for programs which use yacc
|
---|
| 52 | instead of bison.</para></sect4>
|
---|
[bdc08c1] | 53 |
|
---|
| 54 | </sect3>
|
---|
[6370fa6] | 55 |
|
---|
| 56 | </sect2>
|
---|
| 57 |
|
---|