4

次のように、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-runtime-3.1.jar
  • stringtemplate-3.2.jar

しかし、それらのどれもタスク定義を持っていないようです。(これらの jar を Ant クラスパスに入れてみましたが、同じ問題です。)

4

6 に答える 6

4

現在の Antlr-task jar は、http: //www.antlr.org/share/1169924912745/antlr3-task.zip で入手できます。

これは、antlr.org Web サイトの「ファイル共有」見出しの下にあります。

于 2008-08-25T00:11:09.850 に答える
2

私はこれを自分で機能させました。私に1時間かかりました。うーん。とりあえず、

ステップ1:ant-antlr3タスクをからダウンロードする

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

ステップ2:アリが見ることができる場所にコピーします。私のマック:

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

于 2010-12-23T02:42:44.747 に答える
2

antlrall.jar jar を使用する必要があります。そのまま Ant インストールにドロップすることもできますが、それはその 1 つのインストールでしか機能しないことを意味します。jar をチェックインし、taskdef を使用して jar ファイルをロードします。これにより、開発者がチームに参加したり、新しいコンピューターに移動したりするときに、開発者が別のステップにならないようにします。

于 2008-08-25T00:12:09.630 に答える
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 を fork し、文法が変更されていなくても Antlr を実行するため、少し遅くなります。ただし、Antlr のすべてのバージョンで同じように機能し、特別なターゲットは必要ありません。

于 2014-01-22T10:48:39.150 に答える
0

他の皆さんがこれまでに貢献したものに加えて、追加情報:

Ubuntuのant-optionalパッケージには、ANTLR 2.7.2 のタスクである Ant 1.8.2 に同梱されているタスクが含まれているため、この投稿で説明されているように、これはエラーで失敗します。Terence によって説明された方法は、ANTLR3 タスクを使用する最良の方法です。

Linux マシンでルート アクセス権がない場合は、ant-antlr3.jar ファイルを Ant ユーザー ディレクトリにインストールできます~/.ant/libこの他の投稿 でant -diagnostics説明されているように、ant-antlr3.jar が Ant に表示されるかどうかを確認します。

Eclipse を使用している場合は、IDE が新しいタスクを認識する前に IDE を再起動する必要があります。また、クラスパスにantlr3.jarandを含める必要があります (必須ではありません)。stringtemplate.jarant-antlr3.jar

于 2012-05-04T21:22:53.570 に答える
0

Ubuntu では、これで利用できるようになります。

sudo apt-get install ant-optional

于 2011-06-14T22:04:20.670 に答える