10.0
10.0-rc1
10.1
10.1-rc1
11.0
11.0-rc1
11.0-rc2
11.0-rc3
11.1
11.1-rc1
11.2
11.2-rc1
11.3
11.3-rc1
12.0
12.0-rc1
12.1
12.1-rc1
12.2
12.2-rc1
6.0
6.1
6.1.1
6.3
6.4
6.5
6.6
6.7
6.8
7.0
7.1
7.2
7.3
7.4
7.5
7.5-systemd
7.6
7.6-systemd
7.7
7.7-systemd
7.8
7.8-systemd
7.9
7.9-systemd
8.0
8.1
8.2
8.3
8.4
9.0
9.1
arm
bdubbs/gcc13
ml-11.0
multilib
renodr/libudev-from-systemd
s6-init
trunk
v3_1
v3_2
v3_3
v4_0
v4_1
v5_0
v5_1
v5_1_1
xry111/arm64
xry111/arm64-12.0
xry111/clfs-ng
xry111/lfs-next
xry111/loongarch
xry111/loongarch-12.0
xry111/loongarch-12.1
xry111/loongarch-12.2
xry111/mips64el
xry111/multilib
xry111/pip3
xry111/rust-wip-20221008
xry111/update-glibc
Line | |
---|
1 | <sect2>
|
---|
2 | <title>Contents</title>
|
---|
3 |
|
---|
4 | <para>The Bison package contains the bison program.</para>
|
---|
5 |
|
---|
6 | </sect2>
|
---|
7 |
|
---|
8 | <sect2><title>Description</title>
|
---|
9 |
|
---|
10 | <para>Bison is a parser generator, a replacement for YACC. YACC stands for Yet
|
---|
11 | Another Compiler Compiler. What is Bison then? It is a program that
|
---|
12 | generates a program that analyzes the structure of a text file. Instead
|
---|
13 | of
|
---|
14 | writing the actual program a user specifies how things should be connected
|
---|
15 | and with
|
---|
16 | those rules a program is constructed that analyzes the text file.</para>
|
---|
17 |
|
---|
18 | <para>There are a lot of examples where structure is needed and one of them is
|
---|
19 | the calculator.</para>
|
---|
20 |
|
---|
21 | <para>Given the string :</para>
|
---|
22 |
|
---|
23 | <blockquote><literallayout> 1 + 2 * 3</literallayout></blockquote>
|
---|
24 |
|
---|
25 | <para>A human can easily come to the result 7. Why? Because of the structure.
|
---|
26 | Our brain knows
|
---|
27 | how to interpret the string. The computer doesn't know that and Bison
|
---|
28 | is a
|
---|
29 | tool to help it understand by presenting the string in the following way
|
---|
30 | to the compiler:</para>
|
---|
31 |
|
---|
32 | <blockquote><literallayout> +
|
---|
33 | / \
|
---|
34 | * 1
|
---|
35 | / \
|
---|
36 | 2 3</literallayout></blockquote>
|
---|
37 |
|
---|
38 | <para>Starting at the bottom of a tree and coming across the numbers 2 and
|
---|
39 | 3 which are joined by the multiplication symbol, the computer
|
---|
40 | multiplies 2 and 3. The result of that multiplication is remembered and
|
---|
41 | the next thing that the computer sees is the result of 2*3 and the
|
---|
42 | number 1 which are joined by the add symbol. Adding 1 to the previous
|
---|
43 | result makes 7. In calculating the most complex calculations can be
|
---|
44 | broken down in this tree format and the computer just starts at the
|
---|
45 | bottom and works it's way up to the top and comes with the correct
|
---|
46 | answer. Of course, Bison isn't only used for calculators alone.</para>
|
---|
47 |
|
---|
48 | </sect2>
|
---|
49 |
|
---|
Note:
See
TracBrowser
for help on using the repository browser.