Antlr4 Testrig没有返回任何内容

时间:2018-06-06 20:39:37

标签: antlr4

这是我第一次使用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并开始查看是否所有内容都安装正确:

$ 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

时,它应该至少返回树的gui和一些输出

然而,当我这样做时,什么也没发生。只是闪烁光标,好像它正在计算某些东西。有点像这样

/tmp/Hello$ grun Hello r -tree
|

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

感谢您提前做出任何回复。

1 个答案:

答案 0 :(得分:0)

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

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