Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / Gramatikoj, klasoj kaj heredo / Exercises / Heredu gramatikon
Solvo: Heredu gramatikon
Jen ebla solvo de la tasko.
Kodo
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;🦋 Vi povas trovi la fontkodon en la dosiero inherit-a-grammar.raku.
Eligo
True
True
FalseKomentoj
Kaj
Dog is AnimalkajCat is Animalheredas la ĵetononTOPde la bazo senŝanĝe; ĉiu provizas nur sian propransound.Do unu baza gramatiko estas etendita du malsamajn manierojn.
Dogkongruas nur kunwoofkajCatnur kunmeow— kialDog.parse('meow')malsukcesas: hundo konservas sian propran superregitansound, ekzakte kiel superregitaj metodoj kondutas sur objektoj.