Поиск…


Настройка TestRig

ANTLR содержит средство тестирования в своей библиотеке времени исполнения, этот инструмент можно использовать для отображения информации, детализирующей, как выполняется синтаксический анализ, для соответствия ввода с определенными правилами в вашем файле грамматики.

Чтобы использовать этот инструмент, содержащийся в файле jar ANTLR, вы должны настроить путь к классам систем, чтобы разрешить доступ как к инструменту ANTLR, так и к библиотеке времени выполнения:

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

Примечание. Убедитесь, что точка предшествует любому пути, чтобы гарантировать, что виртуальная машина Java не увидит классы в вашем текущем рабочем каталоге.

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

Установка примечаний по окнам для псевдонимов и настройки класса пути может быть более сложной, см. Здесь более подробную информацию.

Доступ к TestRig

Как только вы настроите свой псевдоним, вы можете настроить TestRig следующим образом, снова используя псевдоним, рекомендуется уменьшить время, необходимое для выполнения действия:

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

Если вы не хотите настраивать псевдоним в окнах, вы можете получить доступ к TestRig, выполнив следующую команду в том же месте, что и каталог 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

Чтобы запустить 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'.

Построение грамматики с визуальным деревом анализа

Указание -gui командной строки -gui при запуске грамматики ANTLR в тестовой установке приведет к появлению окна с визуальным представлением дерева синтаксического анализа. Например:

Учитывая следующую грамматику:

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