Frage

Ich versuche, eine Antlr Aufgabe in meiner Ant build.xml zu nennen wie folgt:

<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>

Aber Ant kann nicht die Aufgabendefinition finden. Ich habe alle folgenden in diesem dir.lib.build setzen:

  • antlr-3.1.jar
  • antlr-2.7.7.jar
  • antlr-Runtime-3.1.jar
  • String-3.2.jar

Aber keiner von denen scheint die Aufgabendefinition zu haben. (Ich habe auch versucht, diese Gläser in meinem Ant Classpath setzen; gleiches Problem.)

War es hilfreich?

Lösung

Der aktuelle Antlr-Task-jar finden Sie unter http: // www. antlr.org/share/1169924912745/antlr3-task.zip

Es kann auf dem antlr.org Website unter der "File Sharing" Überschrift.

Andere Tipps

Sie sollten das antlrall.jar Glas verwenden. Sie können weiter gehen und es einfach in Ihre Ant Installation fallen, aber das bedeutet, dass es nur für diese eine funktioniert installieren. Wir überprüfen das Glas in und verwenden taskdef die JAR-Datei zu laden, so dass es nicht ein weiterer Schritt für Entwickler ist, wenn sie auf dem Team oder verschieben auf einen neuen Computer zu starten.

ich diese Arbeit für mich gerade bekam. Nahm mich eine Stunde. Pfui. wie auch immer,

Schritt 1: Laden Sie ant-antlr3 Aufgabe von

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

Schritt 2: Kopieren Sie, wo Ameisen sie sehen können. Mein Mac:

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

meine Linux-Box:

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

Schritt 3: stellen Sie sicher, antlr2, antlr3, ST sind in Classpath. Alles in einem ist hier:

http://antlr.org/download/antlr-3.3-complete.jar

Schritt 4: Verwendung in 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>

hat soeben einen FAQ-Eintrag:

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

Die einfachste Art und Weise Antlr zu laufen ist die Antlr JAR auszuführen:

<project default="antlr">
  <target name="antlr">
    <java jar="antlr-4.1-complete.jar" fork="true">
      <arg value="grammar.g4"/>
    </java>
  </target>
</project>

Das ist ein bisschen langsamer, weil es die JVM Gabeln und es läuft Antlr auch wenn die Grammatik nicht ändern. Aber es funktioniert auf die gleiche Art und Weise mit jeder Antlr Version und benötigt keine speziellen Ziele.

Auf Ubuntu sollte es verfügbar machen:

sudo apt-get install ant-optional

Weitere Informationen auf, was alle anderen bisher beigetragen haben:

Das ant-optional Paket in Ubuntu enthält die Aufgabe mit Ant ausgeliefert 1.8.2 das ist eine Aufgabe für ANTLR 2.7.2 so wird dies mit einem Fehler fehlschlagen, wie in diesem Beitrag . Das beschriebene Verfahren von Terence ist der beste Weg, um die antlr3 Aufgabe zu verwenden.

Wenn Sie keinen Root-Zugriff auf einem Linux-Rechner haben, können Sie die Ameisen antlr3.jar Datei im Ant-Benutzerverzeichnis installieren: ~/.ant/lib. Erkundigen Sie sich bei ant -diagnostics ob ameisen antlr3.jar sichtbar zu Ant, wie erklärt in diesem anderen post .

Wenn Sie Eclipse verwenden, müssen Sie die IDE neu starten, bevor er die neue Aufgabe erkennt und Sie müssen auch antlr3.jar und stringtemplate.jar in Ihrem Classpath enthalten (aber ant-antlr3.jar ist nicht notwendig).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top