Для чего нужны таблица символов и AST во время компиляции кода?
Я пытаюсь получить общее представление о процессе компиляции кода на высоком уровне.
Я понимаю основныеследующие шаги:
Лексический анализ
Синтаксический анализ
Семантический анализ
Генерация кода
Оптимизация кода
Связывание
Насколько я понимаю, начинается таблица символовполучить на этапе лексического анализа, так как код лексирован.Это будет включать тип токена и фактические идентифицированные токены.На последующих этапах в таблицу символов добавляется дополнительная информация, такая как область действия и тип данных.Если я правильно понимаю, во время синтаксического анализа создается AST, представляющий структуру кода и снабженный той же информацией, что и в таблице символов.
Я не совсем понимаю, почему и таблица символов, и ASTнеобходимо.Используется ли один для создания другого?Они оба подаются на шаг генерации кода?Зависит ли этот язык (скомпилировано и интерпретировано)?
Где происходит удаление пробелов?Мне сказали, что это во время лексического анализа, но в этом случае my var = 5
будет преобразован в myvar=5
, что теперь синтаксически правильно.
Спасибо за ваш вклад.