ANTLR
TestRig / grun
Sök…
Inställning TestRig
ANTLR innehåller ett testverktyg i sitt runtime-bibliotek, det här verktyget kan användas för att visa information som beskriver hur parsningen utförs för att matcha input mot definierade regler i din grammatikfil.
För att använda detta verktyg som finns i ANTLR-jarfilen, bör du ställa in din systemklassväg för att ge åtkomst till både ANTLR-verktyget och runtime-biblioteket:
export CLASSPATH=".:/usr/local/lib/antlr-4.5.3-complete.jar:$CLASSPATH"
Obs: Se till att punkten föregår vilken väg som helst för att se till att den virtuella java-maskinen inte ser klasser i din nuvarande arbetskatalog.
Alises kan användas på Linux / MAC / Unix för att förenkla använda kommandon:
alias antlr4='java -jar /usr/local/lib/antlr-4.5.3-complete.jar'
//or any directory where your jar is located
Observera att inställningar i windows för alias och klassvägsinställning kan vara mer komplicerade, se här för mer detaljerade detaljer.
Åtkomst till TestRig
När du har konfigurerat ditt alias kan du ställa in TestRig på följande sätt, igen rekommenderas att använda ett alias eftersom det minskar den tid som krävs för att utföra åtgärden:
alias grun='java org.antlr.v4.runtime.misc.TestRig'
Om du inte vill konfigurera ett alias i windows kan du komma åt TestRig genom att köra följande kommando på samma plats som din ANTLR-jar-katalog:
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
För att köra TestRig på din grammatik kan du skicka parametrarna för din grammatik så här:
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'.
Bygg grammatik med Visual Parse Tree
Att ange -gui
kommandoradsalternativet när du kör en ANTLR-grammatik i testriggen kommer att leda till att ett fönster dyker upp med en visuell representation av analysträdet. Till exempel:
Följande 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
;
Följande JSON-fil:
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
}
Följande syntax-kommandoradssyntax:
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
kommer att resultera i de genererade .java- och .tokensfilerna samt de sammanställda .klassfilerna :
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
och följande parse träd: