سؤال

إذا اتصلت:

java org.antlr.Tool -o outdir sources/com/example/Java5.g

... مع Antlr-3.1.3 سيتم إنشاء رمز المحلل ومحلل Lexer في الدليل outdir/sources/com/example. وبعد لكن الفئات التي تم إنشاؤها لا تملك أي package بيان. أحتاجهم إلى الحياة في الحزمة com.example.

هل هناك طريقة لتحديد الحزمة المستهدفة؟

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

المحلول

يوفر Antlr أداة رأس تتيح لك تضمين الحزمة والاستيراد. يمكنك تضمين هذا في ملف * grammar الخاص بك *

@header {
    package org.xmlcml.cml.converters.antlr;
    import java.util.HashMap;
}

وقد تحتاجها في Lexer كذلك:

@lexer::header {package org.xmlcml.cml.converters.antlr;}

وفي حال كنت بحاجة إلى إضافة بعض الأعضاء والرمز:

@members {
    HashMap<String, Object> objectMap = new HashMap<String, Object>();
    //...

    private void addArrayValue(String content) {
    //... code required by snippets in the grammar

    }
}

نصائح أخرى

سؤال قديم مع إجابة جيدة تماما، ولكن نظرا لأن التعليق على السؤال طلب خيار سطر الأوامر (وهذا كان ما كنت في الواقع الذي كنت أبحث عنه عندما وصلت إلى هنا)، فكرت في أنني فقط تتناغم ويقول ما يلي ...

يمكنك تحديد الحزمة الموجودة في سطر الأوامر إذا كنت تستخدم Antlr 4. I التحقق ويبدو أن لا يكون هناك في الإصدار 3 آخر الجواب هو الطريق للذهاب إلى Antlr 3.

هنا مثال:

java -cp antlr-4.4-complete.jar org.antlr.v4.Tool -package my.package MyGram.g4

انظر -package الخيار في خيارات سطر الأوامر ANTLLR للمزيد من المعلومات.

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