Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Antlr4试验台不';我什么也不退_Antlr4 - Fatal编程技术网

Antlr4试验台不';我什么也不退

Antlr4试验台不';我什么也不退,antlr4,Antlr4,这是我第一次使用Antlr4,我有一个关于测试设备的问题。 我已经完成了安装过程,并尝试了Antl4主站点和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:$CLASSP

这是我第一次使用Antlr4,我有一个关于测试设备的问题。 我已经完成了安装过程,并尝试了Antl4主站点和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
根据这个例子,当我执行
grun Hello r-tree

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

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


感谢您提前回复。

它没有做任何事情,因为它正在等待输入
grun-tree
对某些输入运行解析器,然后打印该输入的解析树。但在有输入文本要解析之前,它无法做到这一点


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

@NuttawornSujumnong是的,没错(假设“Hello parrt”前后都有换行符)
(r hello parrt)
是输入的“树”(
grun-tree
将解析树打印为s表达式,而不是树的实际ASCII图形)。好的。我只是手动添加
hello parrt
作为输入,然后按ctrl+D,它看起来就像示例中的一样。谢谢你的解释。