Buscar..


Configurar TestRig

ANTLR contiene una herramienta de prueba en su biblioteca de tiempo de ejecución, esta herramienta puede usarse para mostrar información que detalla cómo se realiza el análisis para hacer coincidir la entrada con las reglas definidas en su archivo de gramática.

Para utilizar esta herramienta contenida en el archivo jar ANTLR, debe configurar la ruta de clase de su sistema para permitir el acceso tanto a la herramienta ANTLR como a la biblioteca de tiempo de ejecución:

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

Nota: asegúrese de que el Punto preceda a cualquier ruta para garantizar que la máquina virtual java no vea clases en su directorio de trabajo actual.

Alises se puede usar en Linux / MAC / Unix para simplificar los comandos utilizados:

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

La configuración de notas en Windows para alias y la configuración de classpath puede ser más complicada, consulte aquí para obtener detalles más completos.

Accediendo a TestRig

Una vez que haya configurado su alias, puede configurar TestRig de la siguiente manera, nuevamente se recomienda usar un alias, ya que reduce la cantidad de tiempo requerido para realizar la acción:

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

Si no desea configurar un alias en Windows, puede acceder a TestRig ejecutando el siguiente comando en la misma ubicación que su directorio jar de 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

Para ejecutar TestRig en su gramática, puede pasar los parámetros para su gramática de la siguiente manera:

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

Construir gramática con Visual Parse Tree

Especificar la opción de línea de comando -gui al ejecutar una gramática ANTLR en la plataforma de prueba dará como resultado una ventana emergente con una representación visual del árbol de análisis. Por ejemplo:

Dada la siguiente gramática:

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
   ;

Dado el siguiente archivo 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 siguiente sintaxis sintaxis de línea de comandos:

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

dará como resultado los archivos .java y .tokens generados, así como los archivos .class compilados:

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

y el siguiente árbol de análisis:

introduzca la descripción de la imagen aquí



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow