AnsichtenInhaltsverzeichnis CodebaumCodes sind von ihrer Struktur her wie Datenbäume aufgebaut. Aus diesem Grund erzeugt der Parser ein Codebaum. Es könnte auch ein komplettes Programm als Codebaum abgebildet werden.
(Da in diesen Beispielen die Zuweisungsvariable A innerhalb der Berechnungen nicht verwendet wird kann Temp1 durch A ersetzt und so optimiert werden. "A = Temp1" fällt dann dadurch weg.) A = B + C * D ^ 4
[=] +-- (A)
|
+-- [+] +-- (B)
|
+-- [*] +-- (C)
|
+-- [^] +-- (D)
|
+-- (4)
Temp1 = D ^ 4
Temp1 = C * Temp1
Temp1 = B + Temp1
A = Temp1
A = ((B + C) * D) ^ 4
[=] +-- (A)
|
+-- [^] +-- [*] +-- [+] +-- (B)
| | |
| | +-- (C)
| |
| +-- (D)
|
+-- (4)
Temp1 = B + C
Temp1 = Temp1 * D
Temp1 = Temp1 ^ 4
A = Temp1
A = (B + C) * (D - 4)
[=] +-- (A)
|
+-- [*] +---------- [+] +-- (B)
| |
| +-- (C)
|
+-- [-] +-- (D)
|
+-- (4)
Temp1 = B + C
Temp2 = D - 4
Temp1 = Temp1 * Temp2
A = Temp
A[G * 2] = (B - ((C / ((D ^ E) * F)) + 4))
[=] +-- (A) <-- [*] +-- (G)
| |
| +-- (2)
|
+------------------ [-] +-- (B)
|
+-- [+] +-- [/] +-- (C)
| |
| +-- [*] +-- [^] +-- (D)
| | |
| | +-- (E)
| |
| +-- (F)
|
+-- (4)
Temp1 = D ^ E
Temp1 = Temp1 * F
Temp1 = C / Temp1
Temp1 = Temp1 + 4
Temp1 = B - Temp1
Pointer = G * 2
A[Pointer] = Temp1
A[G * 2] = ((B - ((C / (D ^ E)) * F)) + 4)
[=] +-- (A) <-- [*] +-- (G)
| |
| +-- (2)
|
+-------------------[+] +-- [-] +-- (B)
| |
| +-- [*] +-- [/] +-- (C)
| | |
| | +-- [^] +-- (D)
| | |
| | +-- (E)
| |
| +-- (F)
|
+-- (4)
Temp1 = D ^ E
Temp1 = C / Temp1
Temp1 = Temp1 * F
Temp1 = B - Temp1
Temp1 = Temp1 + 4
Pointer = G * 2
A[Pointer] = Temp1
IF A = B THEN C = 1 ELSE C = 0
[IF] +---------- [<?>] +-- (A)
| |
| +-- (B)
|
|(True)
+-- [=] +-- (C)
| |
| +-- (1)
|
|(False)
+-- [=] +-- (C)
|
+-- (0)
Temp = TEST(A, B)
IF NOT Temp THEN GOTO J_False
J_True:
C = 1
GOTO J_End
J_False:
C = 0
J_End:
|