Wahlpflichtfach Compilerbau
- Skript:
Kapitel 11 "Compilerbau" in diesem Skript.
- Beispielcode zu Compilerbau:
Ein einfacher Taschenrechner (ogp.c):
- Handgeschriebener, tabellengesteuerter, nichtrekursiver Shift-Reduce-Parser (OGP).
- Lexer, Parser und Auswertung des Syntax-Baumes schön getrennt.
... und dasselbe mit Trace-Ausgaben für die Abarbeitung von Input und Stack:
ogp-trace.c
- Unterlagen & Beispiel für Lex & Yacc:
-
Hier
und
hier gibt es zwei Tutorials zu lex und yacc.
- Hier gibt es die offiziellen Manuals für
flex (GNU lex)
und
bison (GNU yacc).
- Die Files des Beispiels, das wir in der Stunde live gemacht haben
(einfacher Taschenrechner):
- Übung:
Syntax-Analyse: Rekursiver Taschenrechner.
Programm zum Vervollständigen: rechner-angabe.c
Musterlösung:
rechner.c.
Dasselbe mit Trace-Ausgaben:
rechner-trace.c.
- Projekt:
Turtle Graphics Programmiersprache.
(Informationen zur Abgabe stehen am Ende des Dokumentes!)
Meine Hinweise für Lex & Yacc.
Mein Code mit Ausnahme des Lexers und Parsers
(sollte sowohl für einen handgeschriebenen Lexer/Parser
als auch für Lex & Yacc verwendbar sein):
turtle.h,
turtle-types.h,
turtle-nametab.c,
turtle-eval.c,
turtle-main.c.
Beispiele für Turtle-Programme:
spirale,
circle,
random,
sin_cos,
pythagoras_fraktal.