수색…


TestRig 설치

ANTLR은 런타임 라이브러리에 테스트 도구를 포함하고 있습니다.이 도구는 문법 파일의 정의 된 규칙과 입력을 일치시키기 위해 구문 분석을 수행하는 방법을 자세히 설명하는 정보를 표시하는 데 사용할 수 있습니다.

ANTLR jar 파일에 포함 된이 도구를 사용하려면 시스템 클래스 경로를 설정하여 ANTLR 도구와 런타임 라이브러리에 대한 액세스를 허용해야합니다.

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

주 : java 가상 시스템이 현재 작업중인 디렉토리의 클래스를 보지 못하게하려면 Dot이 경로 앞에 오도록하십시오.

Alises는 Linux / MAC / Unix에서 사용되는 명령을 단순화하기 위해 사용될 수 있습니다 :

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

Windows에서 별칭 및 클래스 경로 설정에 대한 설정이 더 복잡 할 수 있습니다. 자세한 내용은 여기 를 참조 하십시오 .

TestRig에 액세스하기

별칭을 설정하면 TestRig을 다음과 같이 설정할 수 있습니다. 다시 별칭을 사용하면 작업 수행에 필요한 시간이 줄어 듭니다.

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

Windows에 별명을 설정하지 않으려면 ANTLR jar 디렉토리와 같은 위치에서 다음 명령을 실행하여 TestRig에 액세스 할 수 있습니다.

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

문법에 따라 TestRig를 실행하려면 다음과 같이 문법에 대한 매개 변수를 전달하면됩니다.

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

비주얼 파스 트리를 사용하여 문법 빌드

테스트 리그에서 ANTLR 문법을 실행할 때 -gui 명령 행 옵션을 지정하면 구문 분석 트리를 시각적으로 표시하는 창이 나타납니다. 예 :

주어진 문법 :

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
   ;

주어진 다음 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
}

다음 구문 명령 줄 구문은 다음과 같습니다.

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

생성 된 .java.tokens 파일과 컴파일 된 .class 파일이 생성됩니다.

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

및 다음 구문 분석 트리 :

여기에 이미지 설명을 입력하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow