Kurso de Raku / Aldono 🆕 / Tipoj kaj tekstmaŝinoj / Regulesprimoj kaj gramatikoj / Exercises / Gramatiko por plenaj nomoj
Solvo: Gramatiko por plenaj nomoj
Jen ebla solvo de la tasko.
Kodo
grammar FullName {
token TOP { <first> \s+ <last> }
token first { \w+ }
token last { \w+ }
}
my $match = FullName.parse('Grace Hopper');
say ~$match<first>;
say ~$match<last>;🦋 Vi povas trovi la fontkodon en la dosiero grammar-fullname.raku.
Eligo
Grace
HopperKomentoj
La ĵetono
TOPestas tie, kie la analizo komenciĝas; ĝi referencas la aliajn ĵetonojn laŭ nomo per<first>kaj<last>, kiuj fariĝas ŝlosiloj sur la kongruo.$match<first>estas kongrua objekto; la prefikso~ĉenigas ĝin al la simpla kongruita teksto.