رمز التعبير العادي Antlrv3
-
19-09-2019 - |
سؤال
هل يمكنني كتابة قاعدة حيث يتم إصلاح الرمز الأولية جزئيا وجيرة جزئيا؟
rule: ID '=' NUMBER
;
ID: (A.. Z | a.. Z) +
NUMBER: (0 .. 9) +
ولكن فقط إذا كان معرف الرمز المميز في النموذج var * (var ثابت)
شكرا
المحلول
هل تقصد هذا؟
// Use this instead of ID in all parser rules that take either token
identifier
: VAR_ID | ID
;
VAR_ID
: 'var' ('A'..'Z' | 'a'..'z')*
;
ID
: ('A'..'Z' | 'a'..'z')+
;
اما الطريقة: عندما يكون ذلك ممكنا، افعل ليس استخدام قواعد Lexer صارمة لرسائل الخطأ الخاصة بك. هم انهم أبطأ و غير مقروء تماما للمستخدمين. وبعد يجب أن تحليل ID
في شكل مريح، ثم تحقق في وقت لاحق إذا كان ذلك بالضبط النموذج الصحيح.
لا تنتمي إلى StackOverflow