質問
次のように、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
は不要です)。