2008-08-25 10 views
4

Ich versuche, eine Antlr Aufgabe in meiner Ant build.xml zu nennen wie folgt:Woher bekomme ich die Antlr Ant-Aufgabe?

<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 können die Aufgabendefinition finden.

  • antlr-3.1.jar
  • antlr-2.7.7.jar
  • antlr-Runtime-3.1.jar
  • String-3.2: Ich habe alle folgenden in diesem dir.lib.build setzen. jar

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

Antwort

2

Sie sollten das Glas antlrall.jar verwenden. Sie können weitermachen und es einfach in Ihre Ant-Installation einfügen, aber das bedeutet, dass es nur für diese eine Installation funktioniert. Wir überprüfen das JAR in und verwenden taskdef, um die JAR-Datei zu laden, damit sie für die Entwickler nicht zu einem weiteren Schritt wird, wenn sie im Team starten oder auf einen neuen Computer wechseln.

2

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

Schritt 1: Download 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, dass sich antlr2, antlr3, ST im Klassenpfad befinden. 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> 

haben soeben einen FAQ-Eintrag:

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

+0

Wie wäre es mit ANTLR 4.1? – ceving

+0

@ceving: Laden Sie einfach 4.1 (oder einen neuen 4.2 Schnappschuss) herunter und fügen Sie Ihren Weg ein. Siehe Antworten unten. –

0

auf Ubuntu sollte es zur Verfügung stellen:

sudo apt-get install ant-optional

0

Weitere Informationen auf, was alle anderen auch so beigetragen weit:

Das Paket ant-optional in Ubuntu enthält die mit Ant 1.8.2 gelieferte Aufgabe, die eine Aufgabe für ANTLR 2.7.2 ist, so dass dies mit einem Fehler wie beschrieben in this post fehlschlägt. Die von Terence beschriebene Methode ist der beste Weg, die ANTLR3-Aufgabe zu verwenden. Wenn Sie keinen Root-Zugriff auf einem Linux-Rechner haben, können Sie die Datei ant-antlr3.jar im Ant-Benutzerverzeichnis installieren: ~/.ant/lib. Überprüfen Sie mit ant -diagnostics, ob ant-antlr3.jar für Ant sichtbar ist, wie erklärt in this other post.

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

1

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> 

Dies ist etwas langsamer, weil es die JVM Gabeln und es läuft Antlr auch wenn die Grammatik nicht ändern. Aber es funktioniert in jeder Antlr-Version genauso und benötigt keine speziellen Ziele.

Verwandte Themen