Antlr问题:无法从Antlr工具中编译来自ANTLRWorks的简单文件

时间:2011-03-20 02:14:28

标签: antlr antlr3 antlrworks

这是语法文件:

grammar fred;
test    :   'fred';

以下是启动该工具的批处理文件:

SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_24
SET PATH=%PATH%;%JAVA_HOME%\bin
SET ANTLR_HOME=c:/users/don/workspace/antlrAssign/lib/
java -cp %ANTLR_HOME%/antlr-3.3-complete.jar  antlr.Tool fred.g

结果如下:

ANTLR Parser Generator   Version 2.7.7 (20060906)   1989-2005
fred.g:1:1: unexpected token: grammar
error: Token stream error reading grammar(s):
fred.g:3:19: expecting ''', found 'r'
fred.g:1:1: rule grammar trapped:
fred.g:1:1: unexpected token: grammar
TokenStreamException: expecting ''', found 'r'

之前的帖子指的是“org.antlr.Tool”,但3.3 jar的位置如上所示。我们的想法是创建树解析器的调试版本,根据文档,您必须使用命令行工具。

有没有人见过这个?我疯了吗?这是两行长,它在文件中的第一个单词上死亡。

当然这会在antlrworks中编译。

任何帮助表示赞赏,我无法再对我的药物进行调整。

跟进:

我发现如果你使用Run - >它在ANTLRWORKS中的调试菜单选项会生成一个树解析器的调试版本,但在我手中的命令行工具却没有。生成的调试源位于输出文件夹中以进行生成。在ANTLRWORKS中获取非调试版本使用Generate菜单选项。在eclipse中使用树解析器的调试版本,启动测试工具并等待,然后在treegrammar解析器文件上通过Run Remote Debug与ANTRWORKS连接。它遍历了树的解析器并给了我一个不匹配的树节点错误(不是解析器错误,这很好,因为我正在调试树解析器)。所以现在我只需要找到我做过的其他蠢事。 HTH除了我以外的人。

1 个答案:

答案 0 :(得分:0)

  

之前的帖子指的是“org.antlr.Tool”,但3.3 jar的位置如上所示。

旧的ANTLR 2.x Tool类(antlr.Tool)仍包含在ANTLR的3.x版本中,但您需要使用ANTLR 3.x {{1 (位于:Tool)用于你的语法,因为它是一个3.x语法。