Проектная лаборатория
Собственный интерпретатор
Этап 83 · Наследование
Ключевое слово super
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы добавите поддержку ключевого слова super в свой интерпретатор Lox. Ключевое слово super позволяет методам вызывать переопределённые методы своего суперкласса.
Ссылка на книгу
Код для этого этапа реализован в разделе 13.3: Вызов методов суперкласса.
Проверки
Тестирующая система выполнит серию проверок с файлами test.lox, использующими ключевое слово super.
Например, если test.lox содержит следующее:
class Doughnut {
cook() {
print "Fry until golden brown.";
}
}
// Super can be used to call the overridden method
// of the parent class
class BostonCream < Doughnut {
cook() {
super.cook();
}
}
BostonCream().cook();Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.sh run test.lox
Fry until golden brown.Тестирующая система выполнит несколько таких проверок с super в разных контекстах, например:
Тестовый случай 1:
Входные данные:
class Base {
method() {
print "Base.method()";
}
}
class Parent < Base {
method() {
super.method();
}
}
class Child < Parent {
method() {
super.method();
}
}
var parent = Parent();
parent.method();
var child = Child();
child.method();Ожидаемый вывод:
Base.method()
Base.method()Тестирующая система проверит, что ваша программа корректно обрабатывает ключевое слово super, включая:
- Вызов методов суперкласса через несколько уровней наследования.
- Сохранение корректного разрешения методов в сложных цепочках наследования.
- Правильное связывание
superв различных контекстах.
Примечания
- Этот формат вывода соответствует спецификации в репозитории книги
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init interpreter ./my-interpreter --language go2. Откройте папку в IDE
cd ./my-interpreterРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage qi0Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.