ANTLR
TestRig / grun
Zoeken…
TestRig instellen
ANTLR bevat een testtool in de runtime-bibliotheek. Deze tool kan worden gebruikt om informatie weer te geven over hoe de parsing wordt uitgevoerd om de invoer te matchen met gedefinieerde regels in uw grammaticabestand.
Als u deze tool in het ANTLR jar-bestand wilt gebruiken, moet u uw systeemklassepad instellen om toegang te geven tot zowel de ANTLR-tool als de runtime-bibliotheek:
export CLASSPATH=".:/usr/local/lib/antlr-4.5.3-complete.jar:$CLASSPATH"
Opmerking: zorg ervoor dat de stip aan elk pad voorafgaat om ervoor te zorgen dat de java virtuele machine geen klassen in uw huidige werkmap ziet.
Alises kunnen worden gebruikt op Linux / MAC / Unix om de gebruikte opdrachten te vereenvoudigen:
alias antlr4='java -jar /usr/local/lib/antlr-4.5.3-complete.jar'
//or any directory where your jar is located
Opmerking instellen op Windows voor aliassen en klassepad instellen kan ingewikkelder zijn, zie hier voor uitgebreidere details.
Toegang tot TestRig
Nadat u uw alias hebt ingesteld, kunt u TestRig op de volgende manier instellen, opnieuw wordt het gebruik van een alias aanbevolen omdat dit de hoeveelheid tijd vermindert die nodig is om de actie uit te voeren:
alias grun='java org.antlr.v4.runtime.misc.TestRig'
Als u geen alias op Windows wilt instellen, kunt u TestRig openen door de volgende opdracht op dezelfde locatie uit te voeren als uw ANTLR jar-directory:
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
Om TestRig op uw grammatica uit te voeren, kunt u de parameters voor uw grammatica als volgt doorgeven:
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'.
Bouw grammatica met Visual Parse Tree
Als u de opdrachtregeloptie -gui
bij het uitvoeren van een ANTLR-grammatica in de testinstallatie, verschijnt er een venster met een visuele weergave van de parse-boom. Bijvoorbeeld:
Gegeven de volgende 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
;
Gezien het volgende JSON-bestand:
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
}
De volgende syntaxis syntaxis van de opdrachtregel:
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
resulteert in de gegenereerde .java- en .tokens- bestanden, evenals de gecompileerde .class- bestanden:
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
en de volgende parsboom: