BuK-KA-WHILE-COMPILER

Aus ProgrammingWiki
Archivierte Version vom 2012-06-19T08:02:00+00:00. Aktuelle Version

Aufgabenstellung

Entwickeln Sie einen Compiler, der als Eingabesprache L_{WHILE}\cup L_{GOTO}\cup L_{LOOP} verwendet und ein zur Eingabe äquivalentes Programm aus L_{WHILE} (Zielsprache) erzeugt. Die Interpretation des jeweils entstandenen WHILE-Programms ist nicht gefordert.

Verwenden Sie AtoCC

Grammatik

G = (N, T, P, s)


N={}
T={}
P={
S         -> P_GOTO ; HALT | P_LOOP | P_WHILE
P_GOTO    -> Marke : Anweisung | Anweisung | P_GOTO ; P_GOTO
Anweisung -> Wertezuweisung | GOTO Marke 
           | IF Variable == Konstante THEN GOTO Marke    
P_LOOP    -> Wertezuweisung | P_LOOP ; P_LOOP | LOOP Variable DO P_LOOP END
P_WHILE   -> Wertezuweisung | P_WHILE ; P_WHILE 
           | WHILE Variable != 0 DO P_WHILE END      
Wertezuweisung	-> Variable ':=' Variable Operation Konstante
Variable -> x Konstante
Marke -> M Konstante
Konstante -> Digit Konstante | Digit
Digit  -> 0|1|...|9
Operation -> + | -
}