Курс Raku / Регулярні вирази та граматики / Граматики / Токени та правила / Вправи / Присвоєння з пробілами

Розв’язання: Присвоєння з пробілами

Ось одне з можливих розв’язань задачі.

Код

grammar Assign {
    rule TOP    { <key> '=' <value> }
    token key   { \w+ }
    token value { \w+ }
}

say Assign.parse('x = 5').defined;

🦋 Знайдіть програму у файлі spaced-assignment.raku.

Вивід

True

Коментарі

  1. Оскільки TOP є rule, пробіли в шаблоні дозволяють пробільні символи навколо = у вхідному тексті.

  2. Тож 'x = 5' розбирається. Якби TOP був token, підійшло б лише 'x=5'.

Пробіли, які дозволяє rule, є необов’язковими, а не обов’язковими: значущий пробіл так само радо зіставляється з нулем пробілів, як і з одним, тож форма без пробілів теж розбирається:

say Assign.parse('x=5').defined; # True

Тому rule однаково приймає і 'x = 5', і 'x=5', і навіть 'x =5' — гнучкість без потреби розписувати, де саме пробіл може бути, а де ні.

Навігація курсом

Присвоєння з пробілами   |   Граматики, класи та успадкування