Курс языка программирования 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' —
гибкость без необходимости расписывать, где пробел может стоять, а где
нет.
Навигация по курсу
← Присваивание с пробелами | Грамматики, классы и наследование →