wie man Strings mithilfe von GADTs zum Syntaxbaum syntaktisch analysiert

8

Ich habe die Einführung von GADT hier gelesen, und ich fand die Idee, den Programmierer einzuschränken, nur den richtigen Typ zu erstellen Syntaxbaum groß, und ich habe diese Idee in meine einfache Lambda-Kalkül-Interpreter, aber später erkannte ich, dass ich eine Zeichenfolge zu diesem Syntaxbaum nicht analysieren kann, weil eine Parse-Funktion verschiedene Arten von Syntaxbaum abhängig von Eingabe zurückgeben muss. Hier ist ein Beispiel:

%Vor%

Bevor ich GADTs benutzt habe, habe ich folgendes verwendet:

%Vor%

GADTs sind hier von großem Vorteil, weil ich jetzt keine ungültigen Syntaxbäume wie Lambda (Application ..) .. erstellen kann.

Aber mit GADTs konnte ich eine Zeichenfolge nicht analysieren und einen Parse-Baum erstellen. Hier sind Parser für Lambda, Ident und Application Ausdrücke:

%Vor%

Jetzt ist das Problem:

%Vor%

Das funktioniert natürlich nicht, da jeder Parser verschiedene Typen zurückgibt.

Gibt es also eine Möglichkeit, eine Zeichenfolge zu analysieren und einen Syntaxbaum mit GADTs zu erstellen?

    
sinan 19.06.2012, 15:40
quelle

1 Antwort

8

Sie können GADTs verwenden, um einen Typ zu erstellen, der Expr a für eine unbekannte a enthält.

%Vor%

In Situationen, in denen nicht Expr auf einen bestimmten Typ einschränken soll, verwenden Sie AnyExpr .

%Vor%     
Heatsink 19.06.2012, 15:45
quelle

Tags und Links