Курс по Raku / Регулярни изрази и граматики / Граматики / Граматики, класове и наследяване / Exercises / Число с proto
Решение: Число с proto
Ето едно възможно решение на задачата.
Код
grammar Number {
token TOP { <number> }
proto token number {*}
token number:sym<dec> { \d+ }
token number:sym<hex> { '0x' <[0..9a..f]>+ }
}
say Number.parse('0xff').defined;🦋 Намерете програмата във файла proto-number.raku.
Изход
TrueКоментари
Прототокенът
numberима два варианта —decиhex.За
0xffвариантътdecсъпоставя само началната0, след което би останалоxff; вариантътhexсъпоставя цялото. Затова по правилото за най-дълъг токен се избираhexи низът се разбира. Същата граматика продължава да приема и обикновено десетично число като42.