这是我第一次使用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
然而,当我这样做时,什么也没发生。只是闪烁光标,好像它正在计算某些东西。有点像这样
/tmp/Hello$ grun Hello r -tree
|
Hello.g4代码有问题,或者我在安装过程中遗漏了什么或grun
只需要很长时间才能完成编译?我也尝试过Antlr4页面中的几个例子,但仍然有同样的事情。
感谢您提前做出任何回复。
答案 0 :(得分:0)
它没有做任何事情,因为它在等待输入。 grun -tree
在某些输入上运行解析器,然后打印该输入的解析树。但是在它有一些要解析的输入文本之前它不能这样做。
因此,您应根据语法输入一些有效的输入(如果您想测试错误报告,则输入有效输入),然后按Ctrl + D(如果您在Windows上,则按Ctrl + Z)关闭输入流。或者,您可以将输入写入文件,然后运行grun Hello r -tree < my_input.txt
。