compilerbau:erweiterung:start
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Erweiterung der Sprache
Bisher kennt unsere Programmiersprache nur Terme (expressions), keine Anweisungen (statements). Wir wollen sie daher erweitern, so dass beispielsweise folgendes Programm kompiliert und ausgeführt werden kann:
a = 1; b = 2; while(a < 10){ a = a + 1; b = b * 2; print(b); }
Erweiterung der Grammatik
Die EBNF dieser Sprache sieht so aus:
Ziffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; Buchstabe = "A" | "B" | "C" | "D" | … | "Z" | "a" | "b" | … | "z" ; Zahl = Ziffer { Ziffer | "." } ; Text = Buchstabe { Buchstabe | Ziffer | "_" } ; TrueFalse = "true" | "false" ; Term = "(" Aussage ")" | Zahl | Text | TrueFalse | "-" Term ; Produkt = Term | Term "*" Term ; Quotient = Term | Term "/" Term ; ProduktQuotient = Produkt | Quotient ; Summe = ProduktQuotient | ProduktQuotient "+" ProduktQuotient ; Differenz = ProduktQuotient | ProduktQuotient "-" ProduktQuotient ; SummeDifferenz = Summe | Differenz ; Vergleichsoperator = "<" | ">" | "==" | "<=" | ">=" | "!=" ; Aussage = SummeDifferenz | SummeDifferenz Vergleichsoperator SummeDifferenz ; Zuweisung = Text "=" Aussage ";" Wiederholung = "while" "(" Aussage ")" "{" Sequenz "}" ; Ausgabe = "print" "(" Aussage ")" ; Anweisung = Zuweisung | Wiederholung | Ausgabe ; Sequenz = { Anweisung }; Programm = Sequenz ;
compilerbau/erweiterung/start.1635448325.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)