Raku-Kurs / Reguläre Ausdrücke und Grammatiken / Grammatiken / Der Parsebaum, make und made / Exercises / Kehren Sie die Wörter um
Lösung: Kehren Sie die Wörter um
Hier ist eine mögliche Lösung der Aufgabe.
Code
grammar Phrase {
token TOP { <word> [ ' ' <word> ]* { make $<word>».made.join(' ') } }
token word { \w+ { make $/.flip } }
}
say Phrase.parse('hello world').made;🦋 Du findest den Quellcode in der Datei reverse-the-words.raku.
Ausgabe
olleh dlrowKommentare
Jedes Token
wordmacht seinen eigenen umgedrehten Text: Sein inline stehender Block läuft, sobald ein Wort trifft, undmake $/.fliplegt das Wort —$/ist der aktuelle Treffer — rückwärts geschrieben ab.TOPtrifft die Wörter mit<word> [ ' ' <word> ]*— ein Wort, dann beliebig oft „Leerzeichen und Wort“ — und verbindet sie.$<word>ist die Liste aller Worttreffer;».madeholt den umgedrehten Text heraus, den jeder abgelegt hat, und.join(' ')baut die Wortgruppe mit Leerzeichen wieder auf.Diese Form „Element, dann Element, dann Element …“ kommt oft genug vor, um eine Kurzform zu haben: den Trenner
%.<word>+ % ' 'zu schreiben bedeutet „ein oder mehr<word>, getrennt durch ein Leerzeichen“, und trifft genau dieselben Wortgruppen wie<word> [ ' ' <word> ]*— nur knapper.makeundmadearbeiten hier also auf zwei Ebenen: Die kleinen Stücke machen ihre Werte, und das Ganze wird aus ihnen gemacht..madeauf dem Ergebnis zu lesen ergibtolleh dlrow.