2025-05-30

vak: (бэсм-6)
Рановато я взялся в Си компиляторе за превращение AST в TAC. Бревна не приметил. Сначала следует заняться так называемым семантическим анализом. В языке Би такая штука отсутствовала напрочь, ведь типов не было. В Си же это суть языка. Основные задачи этого прохода:
  1. Построение таблицы символов. То есть имён переменных и функций. Привязка всех идентификаторов в AST к таблице символов.
  2. Построение таблицы типов. Сюда помещаются все определения struct, union и enum.
  3. Расстановка типов во всех выражениях в AST.
  4. Обнаружение неявных преобразований типов и вставка явных преобразований.
  5. Помещение инициализаторов в таблицу символов.
  6. Разметка циклов для операторов break и continue.
Вполне себе объём работ. И только после этого можно будет генерить TAC. Необязательно выделять семантический анализ как отдельный проход. Это вполне может быть фронтенд в проходе tacker.