Studierende können
- Syntaktisch strukturierte Datenströme durch (attributierte) Grammatiken beschreiben (K6)
- Grammatiken umformen, um LL(1)-Konflikte und Linksrekursion zu beseitigen (K6)
- Einen Scanner für eine als reguläre Grammatik gegebene Menge von Terminalsymbolen entwickeln (K6)
- Einen Parser im rekursiven Abstieg samt Fehlerbehandlung für eine als kontextfreie Grammatik gegebene Sprache entwickeln (K6)
- LALR(1)-Parsertabellen für eine als BNF-Grammatik gegebene Sprache erstellen (K6)
- Namen, Typen und Scopes eines Programms in einer Symbolliste verwalten (K6)
- Aus einem Java-ähnlichen Quellprogramm Code für eine Stackmaschine erzeugen (k6)
- die wesentlichen Merkmale virtueller Maschinen und ihre Unterschiede zu physischen Maschinen erklären (K2, K5)
- einen Compilergenerator (z.B. Coco/R) einsetzen, um aus einer Compilerbeschreibung die Kernteile eines Compilers zu erzeugen (K6)
|
- Grundlagen der formalen Sprachen (reguläre und kontextfreie Grammatiken, BNF, EBNF, endliche Automaten, Kellerautomaten)
- Lexikalische Analyse
- Syntaxanalyse (rekursiver Abstieg, LR(1), LALR(1))
- Attributierte Grammatiken
- Symbollistenverwaltung
- Codeerzeugung
- Virtuelle Maschinen
- Compilergeneratoren
|