репозиторий транслятора
https://github.com/Maxmaxmaximus/coffeepp
по поводу логики, первый этап это построение AST абстрактного синтаксического дерева.
У меня не будет дерева разбора в качестве промежуточного вариванта, я сразу буду парсить из токенов в AST.
Обьясняю суть, я регуляркой пробегаюсь по входному коду и выпарсиваю какие-то значения, числа строки и.т.п.
Это токены. На этом уровне абстракции сделать бы тикены низкоуровневыми в стиле "число" "слово" "символ" "пробел"
но я не хочу этого делать, регулярки быстрые и парсер должен быть быстрый, по этому я уже на этом этапе делаю токены осмысленные и расширяю их типы до:
по скольку я пишу не универсальный парсер а конкретно парсер под свой, и кофеподобные языки, имеет смысл сделать его максимально быстрым и не создавать сущностей без нужды
и чем на более низкий уровень мы можем парсер спустить, тем лучше он будет работать. благо регулярки достаточно гибкие чтобы выпарсивать все необходимые мне токены
Далее мы получаем массив таких токенов и позже я расскажу как мы будем строить по нему ast и как удобно описывать разные конструкции