После перехода от изготовления сквозного «скелета» компилятора к планомерному продвижению, сделано:
- парсер, практически полный, кроме «может быть» типов и null safety операторов — это оставлю на потом, надо еще обдумать.
- первая часть семантического анализа
- для отладки добавлены
- визуализация AST (см. ниже)
- тесты сканера, парсера и семантики (через go test)
Теперь можно уже писать многое, но существенная часть этого «многого» еще не будет переводится в Си.
Пример текста с конструктором массива (в терминологии Го: composite literal):
Компилятор умеет выдать AST в виде S-выражения, который можно вполне удобно рассматривать на сайте s-exploration. Идея визуализации в таком виде принадлежит Дмитрию Соломенникову.
Текст S-выражения строится с помощью рефлексии.
Вот такая картинка AST получается для примера выше:
В модуле есть описание типа (TypeDecl) и Вход (EntryFn) — и далее видны под-узлы и атрибуты.
Постоянная ссылка
«пусть» всё-таки не очень хорошо здесь сидит. Звучит как некое допущение.
«задано» или «дано» звучит как некая предопределённость.
Также может быть приемлемо «опред», «перем», «элем».
Постоянная ссылка
«дано» хорошо для immutable или assign once переменных :), то есть для постоянных.