Skip to content

Latest commit

 

History

History
41 lines (29 loc) · 2.61 KB

02-visitors-table.md

File metadata and controls

41 lines (29 loc) · 2.61 KB

Чекпоинт 2. Визиторы + проработка базовых символов

Дедлайн - 09 марта, 20:59

Во первом чекпоинте мы научились строить абстрактное дерево. Цель этого чекпоинта - научиться обходить деревья.

В этом чекпоинте предлагается реализовать два визитора:

  • PrintVisitor - визитор, который печатает дерево разбора в файл
  • Interpreter - визитор, который интерпретирует функцию main в MainClass. Считаем, что уровень вложенности равен 1, нет вызовов функций, внутри if и while конструкций нет вызовов функций, создания переменных

Пример можно найти в примере визиторов.

Второй частью задания является проработка возможных структур в коде.

Продумайте для вашего проекта возможные блоки для участков кода:

  • Класс
    • название
    • список полей
    • список методов
  • Метод
    • список аргументов
    • возвращаемое значение
    • ссылка на scope
  • Переменная
    • название
    • тип
    • если переменная является экземпляром класса, то сделайте ссылку на элемент "Класса"
  • Scope-блок
    • список переменных, определяемых внутри scope-а

Подумайте, каким образом можно идентифицировать scope: зачастую будет полезно иметь доступ к нему по ключу.

Подумайте над иерархией выше перечисленных структур. Если что, не бойтесь задавать вопросы в чате - обсуждение крайне приветствуется!

Схему можно модифицировать на свое усмотрение. Главное Получение элемента по имени должно происходить за O(1).

Важно На основе этого чекпоинта будет построен следующий, так что уделите проработке архитектуры больше внимания!

Успехов!