Curso de Raku / Expresiones regulares y gramáticas / Gramáticas / Gramáticas, clases y herencia / Exercises / Herede una gramática
Solución: Herede una gramática
Aquí tienes una posible solución para la tarea.
Código
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;🦋 Puedes encontrar el código fuente en el archivo inherit-a-grammar.raku.
Salida
True
True
FalseComentarios
Tanto
Dog is AnimalcomoCat is Animalheredan sin cambios el tokenTOPde la base; cada una aporta solo su propiosound.Así, una sola gramática base se extiende de dos maneras distintas.
Dogempareja solowoofyCatsolomeow, y por esoDog.parse('meow')falla: un perro conserva su propiosoundsobrescrito, exactamente como se comportan los métodos sobrescritos en los objetos.