Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / La analizarbo, make kaj made / Exercises / Inversigu la vortordon
Solvo: Inversigu la vortordon
Jen ebla solvo de la tasko.
Kodo
grammar Phrase {
token TOP { <word> [ ' ' <word> ]* { make $<word>».made.join(' ') } }
token word { \w+ { make $/.flip } }
}
say Phrase.parse('hello world').made;🦋 Vi povas trovi la fontkodon en la dosiero reverse-the-words.raku.
Eligo
olleh dlrowKomentoj
Ĉiu ĵetono
wordfaras sian propran inversigitan tekston: ĝia enlinia bloko ruliĝas, kiam ajn vorto kongruas, kajmake $/.flipkonservas la vorton —$/estas la nuna kongruo — literumita malantaŭen.TOPkongruas kun la vortoj per<word> [ ' ' <word> ]*— unu vorto, poste ajna nombro da «spaco kaj vorto» — kaj kombinas ilin.$<word>estas la listo de ĉiu vorta kongruo;».madeeltiras la inversigitan tekston, kiun ĉiu konservis, kaj.join(' ')rekonstruas la frazon per spacoj.Tiu formo «ero, poste ero, poste ero…» estas sufiĉe ofta por havi mallongigon: la apartigilo
%. Skribi<word>+ % ' 'signifas «unu aŭ pli da<word>, apartigitaj per spaco», kaj kongruas ekzakte kun la samaj frazoj kiel<word> [ ' ' <word> ]*— nur pli kompakte.Do
makekajmadefunkcias je du niveloj ĉi tie: la malgrandaj pecoj faras siajn valorojn, kaj la tutaĵo estas farita el ili. Legi.madesur la rezulto donasolleh dlrow.