Ricerca…


Setup TestRig

ANTLR contiene uno strumento di test nella sua libreria di runtime, questo strumento può essere utilizzato per visualizzare informazioni dettagliate su come viene eseguita l'analisi per confrontare l'input con le regole definite nel file di grammar.

Per utilizzare questo strumento contenuto nel file jar ANTLR, è necessario configurare il percorso di classe dei sistemi per consentire l'accesso sia allo strumento ANTLR sia alla libreria di runtime:

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

Nota: assicurarsi che il punto preceda qualsiasi percorso per garantire che la macchina virtuale java non visualizzi le classi nella directory di lavoro corrente.

Gli Alise possono essere utilizzati su Linux / MAC / Unix per semplificare i comandi usati:

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

Notare che l'installazione su windows per alias e l'installazione del classpath potrebbe essere più complicata, vedere qui per maggiori dettagli.

Accesso a TestRig

Una volta impostato il proprio alias, è possibile configurare TestRig nel modo seguente, utilizzando nuovamente un alias, in quanto riduce il tempo necessario per eseguire l'azione:

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

Se non si desidera impostare un alias su Windows, è possibile accedere a TestRig eseguendo il seguente comando nella stessa posizione della directory jar ANTLR:

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

Per eseguire TestRig sulla tua grammatica puoi passare i parametri per la tua grammatica in questo modo:

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'.

Costruisci la grammatica con Visual Parse Tree

Se si specifica l'opzione della riga di comando -gui quando si esegue una grammatica ANTLR nell'impianto di test, verrà visualizzata una finestra con una rappresentazione visiva dell'albero di analisi. Per esempio:

Data la seguente grammatica:

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
   ;

Dato il seguente file JSON:

example.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
}

La seguente sintassi della riga di comando della sintassi:

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

genererà i file .java e .tokens generati, così come i file .class compilati:

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

e il seguente albero di analisi:

inserisci la descrizione dell'immagine qui



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow