質問

次のように、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クラスパスに入れてみました;同じ問題です。)

役に立ちましたか?

解決

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

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

他のヒント

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

私は自分でこれを機能させました。 1時間かかった。うん。とにかく、

ステップ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 /

my linux box:

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

ステップ3:antlr2、antlr3、STがクラスパスにあることを確認します。すべてが1つになっています:

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

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バージョンで同じように機能し、特別なターゲットは必要ありません。

Ubuntuでは、これを使用可能にする必要があります。

sudo apt-get install ant-optional

これまでに他の誰もが貢献したことに関する追加情報:

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

Linuxマシンにルートアクセスがない場合は、Antユーザーディレクトリ〜/ .ant / lib にant-antlr3.jarファイルをインストールできます。 この他の投稿

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top