Где я могу получить задание Antlr Ant? - PullRequest
4 голосов
/ 25 августа 2008

Я пытаюсь вызвать задачу 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-среда-3.1.jar
  • StringTemplate-3.2.jar

Но, похоже, ни у одного из них нет определения задачи. (Я также пытался поместить эти банки в мой путь к Ant; та же проблема.)

Ответы [ 6 ]

4 голосов
/ 25 августа 2008

Текущий jar Antlr-задачи доступен в http://www.antlr.org/share/1169924912745/antlr3-task.zip

Его можно найти на веб-сайте antlr.org под заголовком «Общий доступ к файлам».

2 голосов
/ 23 декабря 2010

Я только что получил это на себя. У меня ушел час. тьфу. в любом случае,

Шаг 1: скачать задачу ant-antlr3 из

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

Шаг 2: скопируйте туда, где его видит муравей. Мой Mac:

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

мой linux box:

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

Шаг 3: убедитесь, что antlr2, antlr3, ST находятся в classpath. Все в одном здесь:

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

2 голосов
/ 25 августа 2008

Вы должны использовать банку antlrall.jar. Вы можете пойти дальше и просто вставить его в вашу установку Ant, но это означает, что она будет работать только для этой одной установки. Мы проверяем jar-файл и используем taskdef для загрузки jar-файла, чтобы он не стал другим шагом для разработчиков, когда они начинают работу в команде или переходят на новый компьютер.

1 голос
/ 22 января 2014

Самый простой способ запустить 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 и не требует специальных целей.

0 голосов
/ 05 мая 2012

Дополнительная информация о том, что все остальные сделали до сих пор:

Пакет 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 не требуется).

0 голосов
/ 15 июня 2011

В Ubuntu это должно сделать его доступным:

sudo apt-get install ant-optional

...