Comments 19
спасибо, интересно, жаль что синтаксис в питоне и его не видно, начал читать и SLY созвучно с https://github.com/joaotavora/sly, и по-началу подумал про https://github.com/kanaka/mal про списки ) эх
Не понял, какой синтаксис в питоне не видно?
сорри я походу ошибся
Так а вы загляните в репозиторий, там тестовых программ уж десятка три точно есть, компилятор уже год как рабочий. Те самые выходные, за которые он был написан, были в январе 2024го :)
https://github.com/ssloy/tinycompiler/blob/main/test-programs/simple/eight-queens.wend
Самый обычный си-образный. Объявление переменных в начале функции, потом идёт объявление вложенных функций. Сам язык меня мало интересует, на самом деле, я ничего в нём не хочу изобретать, уж точно не убийца C :)
Моя задача - научить моих студентов программировать. В данном случае на примере проекта игрушечного компилятора, который я сейчас пытаюсь расширить в оптимизирующий компилятор.
Чтобы написать парсер, надо читать дедушку Вирта.
Сейчас в основном скриптуют чужие парсеры.
Ну вы заметили, что я начал с чужого парсера, да? :)
А вот насчёт дедушки Вирта я, собственно, и не уверен.
так можно свой написать, надо только токены ловить, там скрипт может быть даже на подобии ну паскаля только без двоеточий, заглавными можно задать это самый простейший, можно вообще в императивные скрипты уйти примитивные кирпичики, там синтаксис почти как в бд будет (strtok)
Скрытый текст
MAINTITLE
A:=Path1
B:=Path2
ENDMAINTITLE
Токены ловить вообще примитивная вещь оказалась, я лексер даже в эту статью включать не стал.
https://ssloy.github.io/tinycompiler/lexer/
(Сайт в процессе наполнения, буду сливать туда много моих текстов из разных источников. Но ссылка должна остаться рабочей. Единственное, текст по ней будет на английском)
да токены не сложно, я тоже хотел его использовать в параметризации шаблона под задание шаблона 3 екранов(2д игрушки) от 1 скрипта в менеджер ресурсов, но на тот момент итак был буст от менеджера и это было бы награмождение, как лабу проделал для себя закрепил, пока оставил до лучших времен когда действительно надо будет, спасибо гляну
Зачем Вирт для парсеров, когда для парсеров куда лучше комбинаторы?
Астрологи объявили весёлые выходные отладки грамматики. Количество переписываний парсера увеличено вдвое.
Представьте, что приходит поток лексем TYPE(int) ID(sqrt) ... - это объявление переменной или объявление функции?
вселенная намекает вам, что это одно и тоже :)
спасибо за статью, а почему для построения ast не воспользовались алгоритмом сортировочной станции
в учебных целях (в рамках алгоритма Уорли) для разбора выражений shunting yard algorithm можно использовать?
Компилятор за выходные: синтаксический анализатор Уорли