خطأ antlrworks تجميع قواعد اللغة: "خطأ في بناء الجملة: سحر غير صالح حرفي: غير صالح"

StackOverflow https://stackoverflow.com/questions/1872751

سؤال

كتبت كعبا لقواعد النحو (فقط يطابق التعليقات حتى الآن)، وهذا يعطيني الخطأ:

خطأ في بناء الجملة: سحر غير صالح حرفي:u003CINVALID>

علاوة على ذلك، قمت بتتبع الخطأ في الأمر في الأمر التالي:

... ~LINE_ENDING* ...
LINE_ENDING     : ( '\n' | '\r' | '\r\n');

يمكن للشخص مساعدتي لحل هذه المشكلة؟

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

المحلول

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

~(  'a'..'z'
|   'C'
|   '\r'
|   '\n'
)

لكن لا يمكنك الحصول على هذا لأنه تسلسل (من حرفين) بدلا من تعيين.

~('\r\n')

المشكلة التي واجهتها هي امتداد لهذه الحالة الثانية.

نصائح أخرى

لست متأكدا لماذا تحصل على هذا الخطأ (ليس لدي أي وسيلة لاختباره بنفسي في الوقت الحالي). ربما الحقيقة التي تنفيها إما سحر واحد (\r أو \n) أو سحر مزدوج (\r\n) مشكلة؟

ماذا يحدث إذا حاولت:

SingleLineComment
    :   '//' (~LineBreakChar)* (NewLine | EOF)
    ;

LineBreakChar
    :   '\r' | '\n'
    ;

NewLine
    :   '\r'? '\n' | '\r'
    ;

?

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