Курс по Raku / Регулярни изрази и граматики / Граматики / Токени и правила / Exercises / Присвояване с интервали
Решение: Присвояване с интервали
Ето едно възможно решение на задачата.
Код
grammar Assign {
rule TOP { <key> '=' <value> }
token key { \w+ }
token value { \w+ }
}
say Assign.parse('x = 5').defined;🦋 Намерете програмата във файла spaced-assignment.raku.
Изход
TrueКоментари
Понеже
TOPеrule, интервалите в шаблона позволяват празни знаци около=във входа.Затова
'x = 5'се разбира. АкоTOPбешеtoken, щеше да съвпадне само'x=5'.
Интервалите, които rule позволява, са
незадължителни, а не задължителни: значещият интервал
съпоставя нула интервала също толкова радушно, колкото и един,
така че формата без интервали също се разбира:
say Assign.parse('x=5').defined; # TrueЗатова rule приема еднакво 'x = 5',
'x=5' и дори 'x =5' — гъвкавост, без да се
разписва къде точно може и къде не може да има интервал.
Навигация в курса
← Присвояване с интервали | Граматики, класове и наследяване →