Recherche…


Configuration de TestRig

ANTLR contient un outil de test dans sa bibliothèque d'exécution. Cet outil peut être utilisé pour afficher des informations détaillant la manière dont l'analyse est effectuée pour faire correspondre les entrées aux règles définies dans votre fichier de grammaire.

Pour utiliser cet outil contenu dans le fichier JAR ANTLR, vous devez configurer votre chemin de classe système pour autoriser l'accès à l'outil ANTLR et à la bibliothèque d'exécution:

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

Remarque: Assurez-vous que le point précède tout chemin pour garantir que la machine virtuelle Java ne verra pas les classes dans votre répertoire de travail actuel.

Alises peut être utilisé sous Linux / MAC / Unix pour simplifier les commandes utilisées:

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

Notez que la configuration des fenêtres pour les alias et la configuration des classpath peuvent être plus compliquées, voir ici pour plus de détails.

Accéder à TestRig

Une fois que vous avez configuré votre alias, vous pouvez configurer TestRig de la manière suivante, en utilisant à nouveau un alias, car cela réduit le temps requis pour effectuer l'action:

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

Si vous ne souhaitez pas configurer un alias sur Windows, vous pouvez accéder à TestRig en exécutant la commande suivante au même emplacement que votre répertoire 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

Pour exécuter TestRig sur votre grammaire, vous pouvez transmettre les paramètres de votre grammaire comme suit:

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

Construire une grammaire avec l'arborescence d'analyse visuelle

-gui spécifiez l'option de ligne de commande -gui lors de l'exécution d'une grammaire ANTLR dans le banc d'essai, une fenêtre apparaîtra avec une représentation visuelle de l'arbre d'analyse. Par exemple:

Compte tenu de la grammaire suivante:

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
   ;

Étant donné le fichier JSON suivant:

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 syntaxe de ligne de commande suivante:

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

entraînera les fichiers .java & .tokens générés , ainsi que les fichiers .class compilés:

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

et l'arbre d'analyse suivant:

entrer la description de l'image ici



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow