SableCC is a parser generator for building compilers, interpreters ..., strictly-typed abstract syntax trees and tree walkers
linke-seite { -> attribut-typ } = { zweig-name } rechte-seite { -> attribut-wert }
git clone git://dfa.imn.htwk-leipzig.de/ws13-code/pps.git
Benutzung: cd pps/rechner ; make ; make test ; make clean
(dafür muß sablecc
gefunden werden, also /usr/local/waldmann/bin
im PATH
sein)
rechner.grammar
enthält Attributgrammatik, diese beschreibt die Konstruktion
des abstrakten Syntaxbaumes (AST) aus dem Ableitungsbaum (konkreten Syntaxbaum)
Eval.java
enthält Besucherobjekt, dieses beschreibt die Attributierung
der AST-Knoten durch Zahlen
Interpreter.java
Makefile
rechner/*
Multiplikation, Subtraktion, Klammern, Potenzen
Kommentar: in Java fehlen: algebraische Datentypen, Pattern Matching, Funktionen höherer Ordnung. Deswegen muß SableCC das simulieren -- das sieht nicht schön aus. Die „richtige`` Lösung sehen Sie später im Compilerbau.
Abstrakter Syntaxbaum, Interpreter: http://www.imn.htwk-leipzig.de/~waldmann/edu/ws11/cb/folien/main/node12.html, Kombinator-Parser: http://www.imn.htwk-leipzig.de/~waldmann/edu/ws11/cb/folien/main/node70.html