تحليل كلمة محجوزة في Parsing Expressive Grammar (PEG.js)
سؤال
ال سؤال مماثل و ال موقع المؤلف أعطني حلول مثل هذا:
Identifier "identifier"
= !ReservedWord [A-Za-z_]+
ReservedWord
= "test"
/ "abc"
لا يمكن لهذا الحل تحليل معرف مثل "test_var".
في هذا المثال، القواعد النحوية !ReservedWord ستحصر كافة المتغيرات التي تبدأ بـ "test" أو "abc".
شكرا لك مقدما.
المحلول
ReservedWord
ينجح، عند اكتمال الكلمة المحجوزة، بغض النظر عما يلي.لذا فإن الحل هو جعله يفشل عندما يكون هناك تطابق أطول يتضمن المزيد من أحرف المعرف:
Identifier "identifier"
= !ReservedWord [A-Za-z_]+
ReservedWord
= ( "test" / "abc" ) ![A-Za-z_]
لا تنتمي إلى StackOverflow