Suche…


Setup TestRig

ANTLR enthält ein Testtool in seiner Laufzeitbibliothek. Dieses Tool kann verwendet werden, um Informationen anzuzeigen, wie die Analyse ausgeführt wird, um die Eingabe mit definierten Regeln in Ihrer Grammatikdatei abzugleichen.

Um dieses Tool in der ANTLR-JAR-Datei verwenden zu können, müssen Sie Ihren Systemklassenpfad einrichten, um den Zugriff auf das ANTLR-Tool und die Laufzeitbibliothek zu ermöglichen:

export CLASSPATH=".:/usr/local/lib/antlr-4.5.3-complete.jar:$CLASSPATH"

Hinweis: Stellen Sie sicher, dass der Punkt vor jedem Pfad steht, um sicherzustellen, dass die virtuelle Java-Maschine keine Klassen in Ihrem aktuellen Arbeitsverzeichnis anzeigt.

Alises kann unter Linux / MAC / Unix verwendet werden, um die verwendeten Befehle zu vereinfachen:

alias antlr4='java -jar /usr/local/lib/antlr-4.5.3-complete.jar' 
//or any directory where your jar is located

Hinweis Setup auf Fenster für Aliase und Classpath - Setup kann komplizierter sein, siehe hier für mehr alle Informationen.

Zugriff auf TestRig

Nachdem Sie Ihren Alias ​​eingerichtet haben, können Sie TestRig auf folgende Weise einrichten. Es wird erneut empfohlen, einen Alias ​​zu verwenden, um die zur Durchführung der Aktion erforderliche Zeit zu reduzieren:

alias grun='java org.antlr.v4.runtime.misc.TestRig'

Wenn Sie unter Windows keinen Alias ​​einrichten möchten, können Sie auf TestRig zugreifen, indem Sie den folgenden Befehl an demselben Ort ausführen wie Ihr ANTLR-JAR-Verzeichnis:

java -cp .;antlr.4.5.3-complete.jar org.antlr.v4.runtime.misc.TestRig
//or
java -cp .;antlr.4.5.3-complete.jar org.antlr.v4.gui.TestRig

Um TestRig für Ihre Grammatik auszuführen, können Sie die Parameter wie folgt für Ihre Grammatik übergeben:

grun yourGrammar yourRule -tree //using the setup alias
java -cp .;antlr.4.5.3-complete.jar org.antlr.v4.gui.TestRig yourGrammar YourRule -tree //on windows with no alias
java -cp .;antlr.4.5.3-complete.jar org.antlr.v4.gui.TestRig yourGrammar Hello r -tree
//Windows with the grammar Hello.g4 starting from the rule 'r'.

Grammatik mit Visual Parse Tree erstellen

Wenn Sie die -gui -gui -gui , wenn Sie eine ANTLR-Grammatik im Testgerät ausführen, wird ein Fenster mit einer visuellen Darstellung des Analysebaums -gui . Zum Beispiel:

Angesichts der folgenden Grammatik:

JSON.g4

/** Taken from "The Definitive ANTLR 4 Reference" by Terence Parr */

// Derived from http://json.org
grammar JSON;

json
   : value
   ;

object
   : '{' pair (',' pair)* '}'
   | '{' '}'
   ;

pair
   : STRING ':' value
   ;

array
   : '[' value (',' value)* ']'
   | '[' ']'
   ;

value
   : STRING
   | NUMBER
   | object
   | array
   | 'true'
   | 'false'
   | 'null'
   ;


STRING
   : '"' (ESC | ~ ["\\])* '"'
   ;
fragment ESC
   : '\\' (["\\/bfnrt] | UNICODE)
   ;
fragment UNICODE
   : 'u' HEX HEX HEX HEX
   ;
fragment HEX
   : [0-9a-fA-F]
   ;
NUMBER
   : '-'? INT '.' [0-9] + EXP? | '-'? INT EXP | '-'? INT
   ;
fragment INT
   : '0' | [1-9] [0-9]*
   ;
// no leading zeros
fragment EXP
   : [Ee] [+\-]? INT
   ;
// \- since - means "range" inside [...]
WS
   : [ \t\n\r] + -> skip
   ;

Angesichts der folgenden JSON-Datei:

beispiel.json

{
  "name": "John Doe",
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "mobile",
      "number": "123 456-7890"
    }
  ],
  "children": [],
  "spouse": null
}

Die folgende Syntax-Befehlszeilensyntax:

export CLASSPATH=".:/usr/local/lib/antlr-4.0-complete.jar:$CLASSPATH"                                                                                      
alias antlr4='java -jar /usr/local/lib/antlr-4.0-complete.jar'                                                                                             
alias grun='java org.antlr.v4.runtime.misc.TestRig'

antlr4 -o . -lib . -no-listener -no-visitor  JSON.g4; javac *.java; grun JSON json -gui example.json

führt zu den generierten .java- und .tokens- Dateien sowie den kompilierten .class- Dateien:

JSON.g4                        JSONLexer.class                JSONListener.java JSONParser$PairContext.class   JSON.tokens                    JSONLexer.java JSONParser$ArrayContext.class  JSONParser$ValueContext.class  JSONBaseListener.class JSONLexer.tokens               JSONParser$JsonContext.class   JSONParser.class
JSONBaseListener.java          JSONListener.class
JSONParser$ObjectContext.class JSONParser.java

und der folgende Parsebaum:

Geben Sie hier die Bildbeschreibung ein



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow