2026-05-12
Филармонический оркестр Радио Франции исполняет "Atom Heart Mother" группы Пинк Флойд. Кто незнаком с музыкой Пинк Флойд - удачный момент приобщиться. Я с 12 лет их фанат.
Давненько я не брал в руки бэсмовского Си компилятора. Начал я его ровно год назад, в мае. Но в июне отвлёкся на другие дела и выпал из темы. Сейчас только нашёл время продолжить его пинать. Компилятор наконец выдал первый результат. Берём простой код на Си:

Запускаем проходы компилятора. Преобразуем сначала в AST, а потом в TAC. Выводим TAC в виде YAML:int f()
{
int x = 10;
return x + 1;
}
Можно нарисовать картинку через Graphviz:$ cast test.c test.ast
$ tacker --yaml test.ast test.yaml
$ cat test.yaml
- toplevel:
kind: function
name: f
global: true
body:
- instruction:
kind: copy
src:
kind: constant
const:
kind: int
value: 10
dst:
kind: var
name: x
- instruction:
kind: binary
op: add
src1:
kind: var
name: x
src2:
kind: constant
const:
kind: int
value: 1
dst:
kind: var
name: t.0
- instruction:
kind: return
src:
kind: var
name: t.0
Осталось закончить генерацию TAC для всех конструкций языка Си, а потом соорудить бэкенд. То есть преобразовалку команд абстрактной машины TAC в конкретные инструкции процессора БЭСМ-6.$ tacker --dot test.ast test.dot
$ dot -Tpdf test.dot -o test.pdf
