Antlr4 Testrig ничего не возвращает - PullRequest
0 голосов
/ 06 июня 2018

Это первый раз, когда я использую Antlr4, и у меня есть вопрос, касающийся тестовой установки.Я закончил процесс установки и опробовал пример, приведенный как на основном сайте Antlr4, так и на странице github.Вот что я сделал:

Установка:

/usr/local/lib$ sudo curl -O https://www.antlr.org/download/antlr-4.7.1-complete.jar
/usr/local/lib$ export CLASSPATH=".:/usr/local/lib/antlr-4.7.1-complete.jar:$CLASSPATH"
/usr/local/lib$ alias grun='java org.antlr.v4.gui.TestRig'

Я запустил только antlr4 и grun, чтобы посмотреть, все ли установлено правильно:

$ antler4
ANTLR Parser Generator  Version 4.7.1
 -o ___              specify output directory where all output is generated
 -lib ___            specify location of grammars, tokens files
 .
 .
$ grun
java org.antlr.v4.gui.TestRig GrammarName startRuleName
  [-tokens] [-tree] [-gui] [-ps file.ps] [-encoding encodingname]
  .
  .

Итак, все прошлои создал пример Hello.g4 в /tmp, который выглядит следующим образом

/// Define a grammar called Hello
grammar Hello;
r  : 'hello' ID ;         // match keyword hello followed by an identifier
ID : [a-z]+ ;             // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines

и запустил:

$ antlr4 Hello.g4
$ javac Hello*.java

В соответствии с примером он должен по крайней мере вернуть графический интерфейсдерево и некоторый вывод, когда я делаю grun Hello r -tree

Однако, когда я это сделал, ничего не произошло.Просто мигает курсор, как будто он что-то вычисляет.Вроде как

/tmp/Hello$ grun Hello r -tree
|

Что-то не так с кодом Hello.g4, или я что-то упустил во время установки, или grun занимает очень много времени для завершения компиляции?Я также попробовал с несколькими примерами со страницы Antlr4, все еще получил то же самое.

спасибо за любой ответ заранее.

1 Ответ

0 голосов
/ 06 июня 2018

Он ничего не делает, потому что ждет ввода.grun -tree запускает синтаксический анализатор для некоторого ввода и затем печатает дерево синтаксического анализа для этого ввода.Но он не может этого сделать, пока у него не будет некоторого входного текста для анализа.

Таким образом, вы должны ввести некоторые входные данные, которые действительны в соответствии с грамматикой (или нет, если вы хотите проверить отчеты об ошибках), а затем нажмитеCtrl + D (Ctrl + Z, если вы в Windows), чтобы закрыть поток ввода.В качестве альтернативы вы можете записать ввод в файл и затем запустить grun Hello r -tree < my_input.txt.

...