[!] pascal.js-intro Обзор кода проекта в стартовом состоянии - пишем свой интерпретатор

У нас есть как тексты (легше поддерживаться в актуальном состоянии и править) так и видео. См. далее

Текстовые материалы

Видео-материалы

Key Words for FKN + antitotal forum (CS VSU):

В синтаксическом анализаторе класс NumberConstant задействован как "обертка" для класса IntegerConstant из лексического анализатора. Допустимо ли: в синтаксическом анализаторе не применять класс NumberConstant или использовать его для переименования объекта IntegerConstant, чтобы снизить вложенность объектов ?

Ответ:
IntegerConstant это класс для символа. А NumberConstant — класс для элементов дерева. У таких элементов дерева, как числа и идентификаторы, нет дочерних элементов в синтаксическом дереве, поэтому они выглядят как обёртки. А, например, у Addition, есть left и right. Но у всех элементов дерева есть поле symbol для объекта слова. Здесь такое разделение сделано, для элементов дерева одни классы, для символов (слов) — другие. С одной стороны, можно минимизировать, конечно. Я считаю, избавляться от IntegerConstant неправильно. Иначе, у одних элементов дерева объект-символ будет лежать в this.symbol, другие сами будут одновременно символами. Если интерфейсы у всех классов для элементов дерева однообразные, то легче писать универсальные методы, не нужно определять, какой интерфейс использовать для какого объекта.