Где взять задание Antlr Ant?
Вопрос
Я пытаюсь вызвать задачу Antlr в моем Ant build.xml следующим образом:
<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
Но ни один из них, похоже, не имеет определения задачи.(Я также пытался поместить эти банки в свой путь к классам Ant;та же проблема.)
Решение
Текущий jar-файл задачи Antlr доступен по адресу http://www.antlr.org/share/1169924912745/antlr3-task.zip
Его можно найти на antlr.org веб-сайте в разделе «Общий доступ к файлам».
Другие советы
Вам следует использовать банку antlrall.jar.Вы можете пойти дальше и просто добавить его в свою установку Ant, но это означает, что он будет работать только для этой одной установки.Мы проверяем jar и используем Taskdef для загрузки файла jar, чтобы это не стало еще одним шагом для разработчиков, когда они начинают работать в команде или переходят на новый компьютер.
- Антлр http://ant.apache.org/manual/Tasks/antlr.html
- Использование задания задачи http://www.onjava.com/pub/a/onjava/2004/06/02/anttask.html
Я только что получил это для себя.У меня занял час.фу.в любом случае,
Шаг 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>
Просто добавил запись в FAQ:
http://www.antlr.org/wiki/pages/viewpage.action?pageId=24805671
Самый простой способ запустить Antlr — запустить JAR Antlr:
<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
Дополнительная информация помимо того, что уже внесли все остальные:
А ant-optional
Пакет в Ubuntu включает задачу, поставляемую с Ant 1.8.2, которая является задачей для ANTLR 2.7.2, поэтому она завершится с ошибкой, как описано. в этом посте.Метод, описанный Теренсом, — лучший способ использовать задачу ANTLR3.
Если у вас нет root-доступа на компьютере с Linux, вы можете установить файл ant-antlr3.jar в каталог пользователя Ant: ~/.ant/lib
.Проверить с ant -diagnostics
виден ли Ant-antlr3.jar для Ant, как объяснено в этом другом посте.
Если вы используете Eclipse, вам необходимо перезапустить IDE, прежде чем она распознает новую задачу, а также вам необходимо включить antlr3.jar
и stringtemplate.jar
в вашем пути к классам (но ant-antlr3.jar
не обязательно).