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_0
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>
|
---|
5 | The Bison package contains the bison program.
|
---|
6 | </para>
|
---|
7 |
|
---|
8 | </sect2>
|
---|
9 |
|
---|
10 | <sect2><title>Description</title>
|
---|
11 |
|
---|
12 | <para>
|
---|
13 | 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
|
---|
15 | generates a program that analyzes the structure of a text file. Instead
|
---|
16 | of
|
---|
17 | writing the actual program a user specifies how things should be connected
|
---|
18 | and with
|
---|
19 | those rules a program is constructed that analyzes the text file.
|
---|
20 | </para>
|
---|
21 |
|
---|
22 | <para>
|
---|
23 | There are a lot of examples where structure is needed and one of them is
|
---|
24 | the
|
---|
25 | calculator.
|
---|
26 | </para>
|
---|
27 |
|
---|
28 | <para>
|
---|
29 | Given the string :
|
---|
30 | </para>
|
---|
31 |
|
---|
32 | <blockquote><literallayout>
|
---|
33 | 1 + 2 * 3
|
---|
34 | </literallayout></blockquote>
|
---|
35 |
|
---|
36 | <para>
|
---|
37 | A human can easily come to the result 7. Why? Because of the structure.
|
---|
38 | Our brain knows
|
---|
39 | how to interpret the string. The computer doesn't know that and Bison
|
---|
40 | is a
|
---|
41 | tool to help it understand by presenting the string in the following way
|
---|
42 | to the compiler:
|
---|
43 | </para>
|
---|
44 |
|
---|
45 | <blockquote><literallayout>
|
---|
46 | +
|
---|
47 | / \
|
---|
48 | * 1
|
---|
49 | / \
|
---|
50 | 2 3
|
---|
51 | </literallayout></blockquote>
|
---|
52 |
|
---|
53 | <para>
|
---|
54 | Starting at the bottom of a tree and coming across the numbers 2 and
|
---|
55 | 3 which are joined by the multiplication symbol, the computer
|
---|
56 | multiplies 2 and 3. The result of that multiplication is remembered and
|
---|
57 | the next thing that the computer sees is the result of 2*3 and the
|
---|
58 | number 1 which are joined by the add symbol. Adding 1 to the previous
|
---|
59 | result makes 7. In calculating the most complex calculations can be
|
---|
60 | broken down in this tree format and the computer just starts at the
|
---|
61 | bottom and works it's way up to the top and comes with the correct
|
---|
62 | answer. Of course, Bison isn't only used for calculators alone.
|
---|
63 | </para>
|
---|
64 |
|
---|
65 | </sect2>
|
---|
66 |
|
---|
Note:
See
TracBrowser
for help on using the repository browser.