Vorlesung 10 Thomas

Aus ProgrammingWiki

Inhaltsverzeichnis

Kreativaufgabe: LOOP, WHILE, GOTO - Compiler

Grammatik

St52pybu_Buk_grammatik.jpg

Parser

St52pybu_Buk_parser.jpg

Compiler

LOOP -> WHILE

  • LOOP Syntax
    • Wertzuweisung x_i~:=x_j~+c~x_i~:=x_j~-c
    • Sequenz P_1:P_2
    • Zyklus \mathrm{P} ist ein LOOP-Programm, dann ist \mathrm{LOOP}~x_i~\mathrm{DO}~\mathrm{P}~ \mathrm{END} auch ein LOOP Programm
  • minimalistische Syntaktik wird nicht geparst, Bsp: x_i := x_j
  • LOOP kann mit WHILE Simuliert werden
    • x_i~:=~x_j;~\mathrm {WHILE}~x_i~\neq~0~\mathrm{DO}~x_i~:=~x_i~-~1;~\mathrm{P}~\mathrm{END}

WHILE -> WHILE

  • WHILE Syntax
    • \mathrm {WHILE}~x_i~\neq~0~\mathrm{DO}~\mathrm{P}~\mathrm{END}

GOTO -> WHILE

  • GOTO Syntax
    • Wertzuweisung x_i~:=x_j~+c~x_i~:=x_j~-c
    • unbedingter Sprung: \mathrm{GOTO}~M_i
    • bedingter Sprung: \mathrm{IF}~x_i~=~\mathrm{c}~\mathrm{THEN}~\mathrm{GOTO}~M_j
    • Stopanweisung: \mathrm{HALT}

Idee zu GOTO -> WHILE

St52pybu_Buk_gotoW.jpg St52pybu_Buk_gotoW2.jpg


  • Entwicklung eines zweiten/dritten Compilers
    • 1ter Compiler -> Loop, GOTO, WHILE -> LOOP, WHILE Syntax
    • 2/3ter Compiler -> LOOP, WHILE -> WHILE
      • Beispiel: IF Anweisungen von LOOP zu WHILE
    • Prüfung ob Loop, GOTO, WHILE -> LOOP -> WHILE "einfacher"

St52pybu_Buk_g1.jpg St52pybu_Buk_g2.jpg St52pybu_Buk_compiler_idee.png