سؤال

أنا جديد في Antlr وقد وصلت إلى قاعدة Lexer هذه لتحليل التعليقات، هل ستعمل؟

COMMENT_LINE        :   (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};

(لم أجد أي شيء بخصوص بناء الجملة مثل هذا في المستندات)

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

المحلول

لا تجميع القاعدة الخاصة بك على الإطلاق. إذا كنت تستخدم Antlrworks لإنشاء قواعد Lexer جديدة، فيمكنك التحقق من مربع لإنشاء قاعدة Lexer التي تتطابق مع تعليقات سطر واحد. يولد هذا:

COMMENT
    :   '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
    ;

بدلا من ذلك، يمكنك استخدام شيء مثل هذا لتتناسب مع تعليقات سطر واحد:

COMMENT_LINE 
    : COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
    ;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top