Antlr4 Testrig 没有 return 任何东西

Antlr4 Testrig doesn't return anything

这是我第一次使用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]
  .
  .

所以继续在 /tmp 中创建了一个示例 Hello.g4,看起来像这样

/// 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

根据这个例子,它至少应该 return 树的 gui 和一些输出,当我做 grun Hello r -tree

但是,当我这样做时,什么也没有发生。只是闪烁的光标,好像它在计算什么。有点像这样

/tmp/Hello$ grun Hello r -tree
|

是 Hello.g4 代码有问题还是我在安装过程中遗漏了什么或者 grun 只是需要很长时间才能完成编译?我还尝试了 Antlr4 页面中的几个示例,仍然得到同样的结果。

提前感谢您的回复。

它没有做任何事情,因为它正在等待输入。 grun -tree 运行 在某些输入上设置解析器,然后打印该输入的解析树。但它不能这样做,直到它有一些输入文本要解析。

所以你应该输入一些根据语法有效的输入(或者不是,如果你想测试错误报告)然后按 Ctrl+D(如果你在 Windows ) 关闭输入流。或者,您可以将输入写入文件,然后 运行 grun Hello r -tree < my_input.txt.