making up for cvs export not creating empy dirs
[linux_from_scratch.git] / BOOK / appendixa / bison-desc.xml
blob73932b658a9a4b86fd6ecaff97622539d65fd6a3
1 <sect2>
2 <title>Contents of bison-&bison-contversion;</title>
4 <sect3><title>Program Files</title>
6 <para>bison and yacc</para></sect3>
8 <sect3><title>Descriptions</title>
10 <sect4><title>bison</title>
12 <para>Bison is a parser generator, a replacement for YACC. YACC stands for Yet
13 Another Compiler Compiler. What is Bison then? It is a program that
14 generates a program that analyzes the structure of a text file. Instead of
15 writing the actual program a user specifies how things should be connected
16 and with those rules a program is constructed that analyzes the 
17 text file.  There are a lot of examples where structure is needed and 
18 one of them is the calculator.</para>
20 <para>Given the string :</para>
22 <blockquote><literallayout>        1 + 2 * 3</literallayout></blockquote>
24 <para>A human can easily come to the result 7. Why? Because of the structure. 
25 Our brain knows
26 how to interpret the string. The computer doesn't know that and Bison
27 is a
28 tool to help it understand by presenting the string in the following way
29 to the compiler:</para>
31 <blockquote><literallayout>            +
32            / \
33           *   1
34          / \
35         2   3</literallayout></blockquote>
37 <para>Starting at the bottom of a tree and coming across the numbers 2 and
38 3 which are joined by the multiplication symbol, the computer
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
42 result makes 7. In calculating the most complex calculations can be
43 broken down in this tree format and the computer just starts at the
44 bottom and works its way up to the top and comes with the correct
45 answer. Of course, Bison isn't only used for calculators
46 alone.</para></sect4>
48 <sect4><title>yacc</title>
50 <para>We create a yacc script which calls bison using the -y option.
51 This is for compatibility purposes for programs which use yacc instead
52 of bison.</para></sect4>
54 </sect3>
56 </sect2>