سؤال

أحاول استدعاء مهمة 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-runtime-3.1.jar
  • stringtemplate-3.2.jar

ولكن لا يبدو أن أيًا من هؤلاء لديه تعريف المهمة.(لقد حاولت أيضًا وضع تلك الجرار في مسار فصل Ant الخاص بي؛نفس المشكلة.)

هل كانت مفيدة؟

المحلول

جرة مهمة Antlr الحالية متاحة في http://www.antlr.org/share/1169924912745/antlr3-task.zip

يمكن العثور عليها على antlr.org موقع الويب تحت عنوان "مشاركة الملفات".

نصائح أخرى

يجب عليك استخدام جرة antlrall.jar.يمكنك المضي قدمًا وإسقاطه في تثبيت Ant الخاص بك ولكن هذا يعني أنه سيعمل فقط مع هذا التثبيت الواحد.نقوم بفحص الجرة ونستخدم Taskdef لتحميل ملف الجرة حتى لا يصبح خطوة أخرى للمطورين عندما يبدأون في الفريق أو ينتقلون إلى جهاز كمبيوتر جديد.

لقد حصلت على هذا العمل لنفسي.استغرق مني ساعة.قرف.على أي حال،

الخطوة 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/

صندوق لينكس الخاص بي:

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>

أضفت للتو إدخال الأسئلة الشائعة:

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

الطريقة الأساسية لتشغيل 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 حتى لو لم تتغير القواعد.ولكنه يعمل بنفس الطريقة مع كل نسخة من Antlr ولا يحتاج إلى أي أهداف خاصة.

في Ubuntu، يجب أن يجعله ذلك متاحًا:

sudo apt-get install ant-optional

معلومات إضافية فوق ما ساهم به الجميع حتى الآن:

ال ant-optional تتضمن الحزمة في Ubuntu المهمة المرفقة مع Ant 1.8.2 وهي مهمة لـ ANTLR 2.7.2 لذا سيفشل هذا مع وجود خطأ كما هو موضح في هذا المنصب.الطريقة التي وصفها Terence هي أفضل طريقة لاستخدام مهمة ANTLR3.

إذا لم يكن لديك حق الوصول إلى الجذر على جهاز Linux، فيمكنك تثبيت ملف ant-antlr3.jar في دليل مستخدم Ant: ~/.ant/lib.تحقق مع ant -diagnostics ما إذا كان ant-antlr3.jar مرئيًا لـ Ant، ​​كما هو موضح في هذا المنصب الآخر.

إذا كنت تستخدم Eclipse، فستحتاج إلى إعادة تشغيل IDE قبل أن يتعرف على المهمة الجديدة وستحتاج أيضًا إلى تضمين antlr3.jar و stringtemplate.jar في مسار الفصل الخاص بك (ولكن ant-antlr3.jar ليس ضروري).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top