Сведения о вопросе

1234123213

05:26, 22nd August, 2020

Теги

ant   antlr   parsing    

Где я могу получить задачу Antlr Ant?

Просмотров: 486   Ответов: 6

Я пытаюсь вызвать задачу 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 :

  • антлр-3.1.jar
  • антлр-2.7.7.jar
  • antlr-время выполнения-3.1.jar
  • stringtemplate-3.2.jar

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



  Сведения об ответе

baggs

11:05, 28th August, 2020

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

Его можно найти на сайте antlr.org под заголовком "File Sharing".


  Сведения об ответе

ASER

14:20, 14th August, 2020

Я просто заставила это работать на себя. Это заняло у меня целый час. тьфу. в любом случае,

Шаг 1: Загрузите задачу ant-antlr3 из

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

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

sudo СР /usr/local/lib/ant-antlr3.jar /usr/share/ant/lib/

моя коробка linux:

sudo СР /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>

Просто добавил запись :

http://www.antlr.org/wiki/pages/viewpage.action?pageId=24805671


  Сведения об ответе

DINO

10:54, 4th August, 2020

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


  Сведения об ответе

$DOLLAR

17:16, 19th August, 2020

Самый простой способ запустить 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, даже если grammar не изменился. Но он работает таким же образом с каждой версией Antlr и не нуждается в каких-либо специальных целях.


  Сведения об ответе

SKY

21:02, 24th August, 2020

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

sudo apt-get install ant-optional


  Сведения об ответе

baggs

03:01, 10th August, 2020

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

Пакет ant-optional в Ubuntu включает в себя задачу, поставляемую с Ant 1.8.2, которая является задачей для ANTLR 2.7.2, поэтому это произойдет с ошибкой, как описано в этом сообщении . Метод, описанный Теренсом, является лучшим способом использования задачи ANTLR3.

Если у вас нет корневого доступа на машине Linux, вы можете установить файл ant-antlr3.jar в каталоге пользователя Ant: ~/.ant/lib . Проверьте с помощью ant -diagnostics , является ли ant-antlr3.jar видимым для Ant, как описано в этом другом сообщении .

Если вы используете Eclipse, вам нужно будет перезапустить IDE, прежде чем он распознает новую задачу, и Вам также нужно будет включить antlr3.jar и stringtemplate.jar в свой classpath (но ant-antlr3.jar не требуется).


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться