Pascal Interpreter

dvdlly

Aktives Mitglied
Hallo,
Ich möchte einen interpreter für eine Untermenge von pascal schreiben. Ich stehe vor einer design Entscheidung: Ich möchte eine Klasse Lexer schreiben, die den sourcecode einliest und dann token erzeugt. Hier die bisherige Token Klasse. Das Problem ist, dass ich keine Idee habe, wie ich den Wert des Tokens als attribut in der Token Klasse speichern kann. Jemand eine Idee?
[CODE lang="java" title="Token Klasse"]enum Type {
VARIABLE,
BINOP,
UNOP,
// TBC...
}

public class Token {
Type type;
// Object value; ??
}[/CODE]
 

dvdlly

Aktives Mitglied
Wie würde das aussehen? Der Token-Wert könnte ein integer oder float sein oder eine binop sein mit wert "+", welchem datentyp weise ich das dann zu?
 

fhoffmann

Top Contributor
Ich möchte dich nicht entmutigen.
Aber eine Pascal-Interpreter in Java zu implementieren, benötigt mehrere Jahre Erfahrung in Pascal und in Java.
Wenn du noch nicht einmal weist, wie man einem Konstruktor (in Java) einen Parameter übergibt, soltest du dir möglicherweise ein einfacheres Projekt aussuchen,
 

Neumi5694

Top Contributor
Aber wir wollen ja nicht so sein :)
Java:
public class Token {
    public Token(Type type)    {
        this.type = Objects.requireNonNull(type);
    }
    public Type getType() {
        return type;
    }
    private final Type type;
}

Ich kann mich aber nur meinem Vorredner anschließen: Vergiss den Interpreter. Du bist noch sehr sehr sehr sehr sehr weit davon entfernt, einen funktionierenden Parser schreiben zu können.
 

dvdlly

Aktives Mitglied
Ich glaube ihr habt meine Frage falsch verstanden. Im übrigen habe ich bereits einen interpreter für eine Untermenge von pascal in python geschrieben. Ich wollte wissen, wie ich den WERT des Tokens speichern soll, nicht den Typ.
 

Neumi5694

Top Contributor
Ich glaube ihr habt meine Frage falsch verstanden. Im übrigen habe ich bereits einen interpreter für eine Untermenge von pascal in python geschrieben. Ich wollte wissen, wie ich den WERT des Tokens speichern soll, nicht den Typ.
Genau auf die selbe Art. Füg dem Token die Eigenschaft "value" hinzu.
Falls alle Valueklassen eine gemeinsame Oberklasse haben, dann verwende die, ansonsten verwende Object.

ps: Ja, ich habe die Frage falsch verstanden, bzw. einen Post übersehen.
Wenn du nicht weißt, welchen Typ dein Token hat, dann musst du halt ein Object erwarten und danach auswerten, worum es sich handelt.
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben