سؤال

دعنا نقول أن لدي قواعد مثل أدناه:

printable_characters : '\u0020' .. '\uFFEF' ;

newline_characters : '\n' | '\r' ;

الآن دعونا نقول أنني أريد أن أجعل قاعدة جديدة تسمى printable_no_newlines. وبعد أود القيام بذلك عن طريق طرح newline_characters من printable_characters مثل ذلك:

printable_no_newlines : printable_characters - newline_characters ;

لا يعمل بناء الجملة في Antlr3 ولكن أي شخص يعرف ما هي أفضل طريقة هي محاكاة هذا دون إعادة كتابة القاعدة بأكملها؟

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

المحلول

لا أعتقد أن هذا ممكن. أنا أيضا متشكك بأنه سيفعل ما تريد: على سبيل المثال، printable_new_newlines ربما يتضمن "foo\nbar", ، لأنه يطابق printable_characters, ، ولكن لا يتطابق newline_characters (لأن هذا فقط يطابق سلاسل حرف واحد).

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