Cursus Raku / Reguliere expressies en grammatica’s / Grammatica’s / Grammatica’s, klassen en overerving / Exercises / Erf een grammatica
Oplossing: Erf een grammatica
Hier is een mogelijke oplossing voor de taak.
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;🦋 Je kunt de broncode vinden in het bestand inherit-a-grammar.raku.
Uitvoer
True
True
FalseOpmerkingen
Zowel
Dog is AnimalalsCat is Animalerft het tokenTOPongewijzigd van de basis; elk levert alleen zijn eigensound.Zo wordt één basisgrammatica op twee verschillende manieren uitgebreid.
Dogmatcht alleenwoofenCatalleenmeow— en daarom misluktDog.parse('meow'): een hond houdt zijn eigen overschrevensound, precies zoals overschreven methoden zich op objecten gedragen.