Corso di Raku / Espressioni regolari e grammatiche / Grammatiche / Grammatiche, classi ed ereditarietà / Exercises / Ereditate una grammatica
Soluzione: Ereditate una grammatica
Ecco una possibile soluzione del compito.
Codice
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;🦋 Trova il programma nel file inherit-a-grammar.raku.
Output
True
True
FalseCommenti
Sia
Dog is AnimalsiaCat is Animalereditano immutato il tokenTOPdalla base; ciascuna fornisce solo il propriosound.Così un’unica grammatica base viene estesa in due modi diversi.
Dogriconosce solowoofeCatsolomeow— ed è per questo cheDog.parse('meow')fallisce: un cane conserva il propriosoundsovrascritto, esattamente come si comportano i metodi sovrascritti sugli oggetti.