كيفية استبعاد أكثر من حرف واحد في القاعدة؟
-
18-09-2019 - |
سؤال
أحاول كتابة قاعدة مطابقة سلسلة في AntlrWorks، وأحتاج إلى مطابقة إما اقتباسات هرب أو أي حرف غير اقتباس. يمكنني مطابقة اقتباسات هارب ولكن أواجه مشكلة مع الجزء الآخر: ~'\'' | ~'\"'
سوف ينتهي مطابقة كل شيء و ~'\'\"'
يبدو أنه يتم تجاهله من قبل مولد القواعد (على الأقل العرض المرئي). ما تسلسل الشخصيات سوف تحصل لي ما أريد؟
المحلول
جرب شيئا مثل هذا:
StringLiteral
: '"' (EscapeSequence | StringChar)* '"'
;
EscapeSequence
: '\\' ('"' | '\\')
;
StringChar
: ~('"' | '\\')
;
لا تنتمي إلى StackOverflow