C #, ANTLR, ECMAScript-Grammatikprobleme

9

Ich versuche, JavaScript (ECMASCript) mit C # zu analysieren.

Ich habe folgende Anleitung zum Erstellen eines neuen Projekts gefunden: Ссылка

Also habe ich ANTLRWorks, ANTLR v3, entpackte ANTLR heruntergeladen, ein VS2010-Projekt (.NET4) erstellt, Referenzen hinzugefügt, die Grammatik überprüft und generiert.

Dann habe ich viele Kompilierungsfehler erhalten:

  

Der Typ oder Namespace-Name 'AstParserRuleReturnScope' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?)

     

Der Typ oder Namespace-Name 'GrammarRule' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?)

Stackoverlowed für sie und bekam eine Lösung: antlr c # Fehler bei der Integration in VS2008

Also habe ich eine neue Runtime heruntergeladen, die alte überschrieben und das Projekt neu kompiliert und habe

  

Der Name 'HIDDEN' existiert nicht im aktuellen Kontext d: \ Workspace.1 \ ScriptParser \ ScriptParser \ TestLexer.cs

Ok, ich habe HIDDEN in Hidden geändert, wie in der folgenden Unterhaltung empfohlen: [antlr-interest] Wie lebensfähig ist das Csharp3-Ziel? (spezifischere Fragen)

Jetzt versuche ich die Eingabe zu parsen. Ich fand ein paar Beispiele und schrieb den folgenden Code:

%Vor%

Mein Ziel ist es, JavaScript-Dateien mit ANTLR zu analysieren, aber es scheint, dass es nicht so einfach sein wird, wie ich dachte ...

Aktualisierung:

Wie in vorgeschlagen: Warum sind die Antlr3 c # Parser-Methoden privat? Ich habe die Test.g-Grammatik modifiziert, indem ich das "public" vor der expr-Regel hinzugefügt habe:

%Vor%

und dann den Code neu generiert, HIDDEN bis Hidden (wieder) ersetzt und den Code wie folgt geändert:

%Vor%

Und es stürzt nicht auf der Linie

%Vor%

im folgenden generierten Code

%Vor%

mit der NullReferenceException-Nachricht, da der Adapter null ist.

Ich habe es gelöst, indem ich

hinzugefügt habe %Vor%

Update 2:

Endlich habe ich mit meiner Hauptaufgabe begonnen: JavaScript zu parsen.

ANTLR hebt die ECMAScript-Grammatik von Chris Lambrou hervor.

Also habe ich lexer / parser erzeugt und führe es mit dem sehr einfachen JavaScript-Code aus:

%Vor%

und das Parsen schlägt mit der folgenden Ausgabe von tree.ToStringTree () fehl:

%Vor%     
Alex Netkachov 08.02.2012, 17:06
quelle

1 Antwort

1

Ihre Grammatikregel besagt, dass am Ende des Ausdrucks ein Semikolon stehen sollte, aber in Ihrer Hauptfunktion:

%Vor%

fehlt ein Semikolon. Sollte es nicht "1 + 2" sein?

    
Isaac Betesh 04.09.2012 15:14
quelle

Tags und Links