Здравствуйте, Kolesiki, Вы писали:
K>По поводу статьи "Описание языка описания расширяемых парсеров «Nitra»":
K>Замечание глобальное: много деталей, за которыми не видно леса. Напоминает автогенерённую документацию по аннотациям методов. Если человеку вывалить все инструменты сразу, он просто офигеет и потеряется! Но если по очереди доставать инструменты для каждой задачи, всё будет легко и понятно.
Ну, я это и писал в расчете в дальнейшем из этого доку сделать. Чтобы ее не читать от корки до корки, а находить нужные фрагменты и уже их изучать досконально.
K>Калькулятор. Самый ужасный, порочный и неправильный пример в области компиляторов — он даёт совсем другое представление о работе, нежели должно быть при работе с АСТ. Мне кажется, куда удобнее был бы простейший язык, типа:
K>K>a = 4 + 6 * 3 // переменные и две операции разного приоритета
K>? a + 1 // печать выражения
K>
Такой пример есть —
[Nitra] Пример простого языка вычисляющего выражения, но и его забраковал, в свое время.
Калькулятор — это классический пример. Его сделали еще во времена когда у нас не поддерживалась типизация (АСТ, символы, области видимости, связывание). Считай, что его сделали по традиции. К тому же он демонстрирует, как работать с деревом разбора без типизации (в режиме простого парсера).
K>Да, и ни слова не увидел про ту бриллиантовую фичу, ради которой был потрачен целый год исследований — восстановление после ошибок. Его тоже неплохо бы описать: что мы имели ДО него, что имеем сейчас и как это здорово (лучше в применении к конкретному примеру на игрушечном языке).
А что тут рассказывать то? Без восстановления вся Nitra на фиг не нужна. Точнее, можно было бы, конечно, заставить писать спецправила на каждый чих, но это очень очень трудозатратно.
Восстановление работает. Для жизни хватает. Не без проблем, но все же. В крайних случаях можно спец-правила писать.
K>После такого примера будет легче увидеть, что за всемогутер у нас в руках — просто перечисление фич не даст ощутить всю (по)мощь Нитры.
Я тут уже приводил гифки анимированные. На них видно как работает редактирвоание и восстановление. Скоро один наш общий знакомый должен выкатить первый коммерческий язык на Nitra. У него уже есть большие видео с процессом редактирования кода на его языке.