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
Rev | Line | |
---|
[6370fa6] | 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
|
---|
[a9cb6f08] | 15 | generates a program that analyzes the structure of a text file. Instead
|
---|
[6370fa6] | 16 | of
|
---|
[3cc70a0] | 17 | writing the actual program a user specifies how things should be connected
|
---|
[6370fa6] | 18 | and with
|
---|
[a9cb6f08] | 19 | those rules a program is constructed that analyzes the text file.
|
---|
[6370fa6] | 20 | </para>
|
---|
| 21 |
|
---|
| 22 | <para>
|
---|
[a9cb6f08] | 23 | There are a lot of examples where structure is needed and one of them is
|
---|
[6370fa6] | 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>
|
---|
[9aab9f5] | 37 | A human can easily come to the result 7. Why? Because of the structure.
|
---|
| 38 | Our brain knows
|
---|
[a9cb6f08] | 39 | how to interpret the string. The computer doesn't know that and Bison
|
---|
[6370fa6] | 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>
|
---|
[3cc70a0] | 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
|
---|
[6370fa6] | 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.