BuK/IIm20/Vorlesung 12 Grüning

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>FLACI_c3040gfy2wykcr</language>
LoopWhileGoto Compiler

Loop:

<run id="60cb92095735f">
x0 := x4 + 1;
LOOP x2 DO x0 := x4 + 1 END;
x0 := x4 + 1;
LOOP x2 DO LOOP x2 DO x0 := x4 + 1 END END
</run>

Wobei dabei nur das Loop mit dem While erstetzt wird. Das ergibt validen WHILE-Code, jdeoch kann die Semantik verfälscht werden


While:

<run id="60cb9209573ba">
x0 := x4 + 1 ;
WHILE x2 != 0 DO x0 := x4 + 1 END ;
x0 := x4 + 1 ;
WHILE x2 != 0 DO x0 := x4 + 4; WHILE x2 != 0 DO x0 := x4 + 1 END END
</run>


Goto:
<run id="60cb9175a56e0">
M1: IF x1 = 0 THEN GOTO M2;
M3: x0 := x0 + 0;
M2: GOTO M1;
M4: x0 := x0 + 1
</run>

- Um geparst zu werden muss auf jeder Zeile des GOTO-Programms eine Marke stehen.
- GOTO-Programm muss in der Form: $M1: A1; M2: A2; ... ; Mk: Ak$ vorliegen um semantisch richtig kompiliert zu werden.
- $xz > k$ müsste noch implementiert werden