Показать сообщение отдельно
  #75 (permalink)  
Старый 08.11.2015, 08:21
Профессор
Посмотреть профиль Найти все сообщения от Mаxmaxmаximus
 
Регистрация: 29.10.2015
Сообщений: 473

репозиторий транслятора https://github.com/Maxmaxmaximus/coffeepp

по поводу логики, первый этап это построение AST абстрактного синтаксического дерева.
У меня не будет дерева разбора в качестве промежуточного вариванта, я сразу буду парсить из токенов в AST.


Обьясняю суть, я регуляркой пробегаюсь по входному коду и выпарсиваю какие-то значения, числа строки и.т.п.
Это токены. На этом уровне абстракции сделать бы тикены низкоуровневыми в стиле "число" "слово" "символ" "пробел"
но я не хочу этого делать, регулярки быстрые и парсер должен быть быстрый, по этому я уже на этом этапе делаю токены осмысленные и расширяю их типы до:






по скольку я пишу не универсальный парсер а конкретно парсер под свой, и кофеподобные языки, имеет смысл сделать его максимально быстрым и не создавать сущностей без нужды и чем на более низкий уровень мы можем парсер спустить, тем лучше он будет работать. благо регулярки достаточно гибкие чтобы выпарсивать все необходимые мне токены


Далее мы получаем массив таких токенов и позже я расскажу как мы будем строить по нему ast и как удобно описывать разные конструкции

Последний раз редактировалось Mаxmaxmаximus, 08.11.2015 в 08:38.
Ответить с цитированием