我正在尝试在Ant build.xml中调用Antlr任务,如下所示:

<path id="classpath.build">
  <fileset dir="${dir.lib.build}" includes="**/*.jar" />
</path>

...

<target name="generate-lexer" depends="init">
  <antlr target="${file.antlr.lexer}">
    <classpath refid="classpath.build"/>
  </antlr>
</target>

但Ant无法找到任务定义。 我已将所有以下内容放在dir.lib.build

  • ANTLR-3.1.jar
  • ANTLR-2.7.7.jar
  • ANTLR运行时,3.1.jar
  • StringTemplate的-3.2.jar

但这些似乎都没有任务定义。 (我也尝试将这些jar放在我的Ant类路径中;同样的问题。)

===============>>#1 票数:4 已采纳

当前的Antlr任务jar可从http://www.antlr.org/share/1169924912745/antlr3-task.zip获得

它可以在antlr.org网站的“文件共享”标题下找到。

===============>>#2 票数:2

你应该使用antlrall.jar jar。 您可以继续将其放入Ant安装中,但这确实意味着它只适用于那个安装。 我们检查jar并使用taskdef加载jar文件,这样当开发人员开始团队或移动到新计算机时,它不会成为开发人员的另一个步骤。

===============>>#3 票数:2

我刚才为自己工作了。 花了我一个小时。 啊。 无论如何,

第1步:从中下载ant-antlr3任务

http://www.antlr.org/share/1169924912745/antlr3-task.zip

第2步:复制到ant可以看到的地方。 我的mac:

sudo cp /usr/local/lib/ant-antlr3.jar / usr / share / ant / lib /

我的linux盒子:

sudo cp /tmp/ant-antlr3.jar /usr/local/apache-ant-1.8.1/lib/

第3步:确保antlr2,antlr3,ST在类路径中。 一切都在这里:

http://antlr.org/download/antlr-3.3-complete.jar

第4步:在build.xml中使用

<path id="classpath">
    <pathelement location="${antlr3.jar}"/>
    <pathelement location="${ant-antlr3.jar}"/>
</path>

<target name="antlr" depends="init">
    <antlr:ant-antlr3 xmlns:antlr="antlib:org/apache/tools/ant/antlr"
        target="src/T.g"
        outputdirectory="build">
        <classpath refid="classpath"/>
    </antlr:ant-antlr3>
</target>

刚刚添加了常见问题条目:

http://www.antlr.org/wiki/pages/viewpage.action?pageId=24805671

===============>>#4 票数:1

运行Antlr的最基本方法是执行Antlr JAR:

<project default="antlr">
  <target name="antlr">
    <java jar="antlr-4.1-complete.jar" fork="true">
      <arg value="grammar.g4"/>
    </java>
  </target>
</project>

这有点慢,因为它会分支JVM并且即使语法没有改变也会运行Antlr。 但它与每个Antlr版本的工作方式相同,不需要任何特殊目标。

===============>>#5 票数:0

到目前为止所有其他人贡献的其他信息:

ant-optional包在Ubuntu包含附带的Ant 1.8.2任务是用于ANTLR 2.7.2任务所以这如所描述的将失败,错误在这篇文章中 Terence描述的方法是使用ANTLR3任务的最佳方式。

如果您在Linux计算机上没有root访问权限,则可以在Ant用户目录中安装ant-antlr3.jar文件: ~/.ant/lib 使用ant -diagnostics检查ant -diagnostics是否可以看到ant-antlr3.jar,如一篇文章中所述

如果您正在使用Eclipse,则需要在识别新任务之前重新启动IDE,并且还需要在类路径中包含antlr3.jarstringtemplate.jar (但不需要ant-antlr3.jar )。

===============>>#6 票数:0

在Ubuntu上,这应该可用:

sudo apt-get install ant-optional

  ask by James A. Rosen translate from so

未解决问题?本站智能推荐: