У меня есть несколько вещей относительно отношения AST / Таблица символов, которые я не понимаю.
В настоящее время у меня есть AST, реализованный в C #, который имеет узлы для объявлений переменных (они содержат информацию об имени,тип, исходная позиция, возможное значение константы в качестве узла выражения и т. д.).
Теперь я хочу заполнить таблицу символов (используя шаблон посетителя на моем AST), но мой вопрос: являются ли "символы" новымиклассы, например, VariableSymbol или таблица символов непосредственно хранит VariableDeclarationNode из AST?
Если символы являются новыми классами, то кто будет хранить оцененное значение выражения для константных переменных, VariableDeclarationNode или VariableSymbol или где-то еще?
(я видел несколько примеров интерпретаторов, и они хранятвсе значения переменных, включая константы, в дополнительной хеш-таблице, но я работаю над компилятором источник-источник, а не интерпретатором, поэтому я не уверен, где вы храните вычисленные константы в этом случае. Извините, я знаю, что это несколько кратновопросы)