Курс языка программирования Raku / Регулярные выражения и грамматики / Грамматики / Грамматики, классы и наследование / Proto-токены и альтернативы

Тест — Грамматики и наследование

Что выведет следующая программа?

grammar Base {
    token TOP  { <word> }
    token word { 'cat' }
}

grammar Pet is Base {
    token word { 'dog' }
}

say Pet.parse('dog').defined;
1True
0False
0「cat」
0「dog」

Pet наследует TOP от Base, но переопределяет токен word, чтобы тот сопоставлял dog. Когда Pet разбирает 'dog', используется её собственный word, поэтому разбор удаётся и .defined даёт True.

Навигация по курсу

Proto-токены и альтернативы   |   Унаследуйте грамматику