Тривиль — планомерное движение

После перехода от изготовления сквозного «скелета» компилятора к планомерному продвижению, сделано:

  • парсер, практически полный, кроме «может быть» типов и null safety операторов — это оставлю на потом, надо еще обдумать.
  • первая часть семантического анализа
  • для отладки добавлены
    • визуализация AST (см. ниже)
    • тесты сканера, парсера и семантики (через go test)

Теперь можно уже писать многое, но существенная часть этого «многого» еще не будет переводится в Си.

Пример текста с конструктором массива (в терминологии Го: composite literal):

массив

Компилятор умеет выдать AST в виде S-выражения, который можно вполне удобно рассматривать на сайте s-exploration. Идея визуализации в таком виде принадлежит Дмитрию Соломенникову.

Текст S-выражения строится с помощью рефлексии.

Вот такая картинка AST получается для примера выше:

s-ast

В модуле есть описание типа (TypeDecl) и Вход (EntryFn) — и далее видны под-узлы и атрибуты.

2 комментария


  1. «пусть» всё-таки не очень хорошо здесь сидит. Звучит как некое допущение.
    «задано» или «дано» звучит как некая предопределённость.
    Также может быть приемлемо «опред», «перем», «элем».

    Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *