Lx0: Prototyp -- Scope
Scope für den Sichtbarkeitsbereich hat SymbolTable ersetzt, womit schon einmal der Aufruf von Prozeduren funktioniert.
Scope ist aus dem ANTLR Wiki abgeleitet. Über parent sind die einzelnen Sichtbarkeitsbereiche miteinander verknüpft. pop() liefert den jeweils darüberliegenden Bereich. Die weiteren Methoden sind aus SymbolTable übernommen:
public class Scope {
private Scope parent = null;
private HashMap symbols = new HashMap();
public Scope pop() {}
public Symbol getSymbol(String name) {}
public void putSymbol(Symbol symbol) {}
...
SymbolProcedure
SymbolProcedure erweitert Symbol um die Parameterliste. Diese enthält Referenzen auf die Symbole im aktuellen Bereich und dient dann im nächsten Schritt zum Überprüfen der Typen beim Aufruf:
public class SymbolProcedure extends Symbol {
private List <Symbol> parameters = new ArrayList();
public void addParameter(Symbol symbol) {
this.parameters.add(symbol);
}
expr mit Typ
Dazu müssen die Ausdrücke noch Typen enthalten. Das werde ich zunächst mit der Zuweisung ausprobieren, da muss bei versuchter Zuweisung eines floats an einer int-Variable ja auch eine Fehlermeldung erfolgen und der Zuweisungscode ist übersichtlicher als der Prozedurencode.
Quelltext
Der komplette Lx0-Quelltext steht in Subversion.
