Во втором чекпоинте мы научились обходить AST при помощи Visitor-ов. Цель этого чекпоинта - построить инфраструктуру для дальнейшего дерева вызова функций.
Продумайте для вашего языка программирования возможные блоки для участков кода:
- Класс
- название
- список полей
- список методов
- Метод
- список аргументов
- возвращаемое значение
- ссылка на scope
- Переменная
- название
- тип
- если переменная является экземпляром класса, то сделайте ссылку на элемент "Класса"
- Scope-блок
- список переменных, определяемых внутри scope-а
Подумайте, каким образом можно идентифицировать scope: зачастую будет полезно иметь доступ к нему по ключу.
Подумайте над иерархией выше перечисленных структур. Если что, не бойтесь задавать вопросы в чате - обсуждение крайне приветствуется!
Схему можно модифицировать на свое усмотрение.