Raku-Kurs / Reguläre Ausdrücke und Grammatiken / Grammatiken / Grammatiken, Klassen und Vererbung / Exercises / Erben Sie eine Grammatik
Lösung: Erben Sie eine Grammatik
Hier ist eine mögliche Lösung der Aufgabe.
Code
grammar Animal {
token TOP { <sound> }
token sound { \w+ }
}
grammar Dog is Animal {
token sound { 'woof' }
}
grammar Cat is Animal {
token sound { 'meow' }
}
say Dog.parse('woof').defined;
say Cat.parse('meow').defined;
say Dog.parse('meow').defined;🦋 Du findest den Quellcode in der Datei inherit-a-grammar.raku.
Ausgabe
True
True
FalseKommentare
Sowohl
Dog is Animalals auchCat is Animalerbt das TokenTOPunverändert von der Basis; jede liefert nur ihr eigenessound.So wird eine Basisgrammatik auf zwei verschiedene Weisen erweitert.
Dogtrifft nurwoofundCatnurmeow— weshalbDog.parse('meow')scheitert: Ein Hund behält sein eigenes überschriebenessound, genau wie sich überschriebene Methoden auf Objekten verhalten.