Pull to refresh

Comments 9

Партитура "Щелкунчик" для невидимого оркестра профессиональных флейтистов и стеклодувов.

Можно написать токенизатор 1С, чтобы скармливать ast транслятору gcc вместо ast из с++ кода, но зачем?

Вместо аллегории про дирижёра больше подходит пример про теоретика компиляции, не написавшего ни одного компилятора. И тут в качестве MetaAST не дирижёр, а сами ноты же, а точнее, звуковая информация, он их не транслирует, чтобы партию трубы мог исполнить треугольник.

Было бы интереснее, если бы автор попробовал транслировать код какого-нибудь реального проекта с помощью этой тулы, ибо "x + 5" - пример так себе.

пример про теоретика компиляции, не написавшего ни одного компилятора

Автор писал компиляторы.

Было бы интереснее, если бы автор попробовал транслировать код какого-нибудь реального проекта […]

Автор пробовал, но трансляция кода с одного языка на другой — занятие в высшей степени бессмысленное. Вот для особо одаренных цитата прямо из текста выше:

Кросс-языковая трансляция – не главная цель (хотя и она впечатляет). Главная цель – кросс-языковой анализ.

Надо было поставить уровень текста «Сложный», я переоценил, как обычно, местную публику.

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

Это, конечно же, изрядное хвастовство, и я даже затрудняюсь сказать, это авторское или LLM-ка добавила?

Это, конечно же, изрядное хвастовство […]

Это вы по аватарке надиагнозили?

Никогда не устану удивляться людям, которые огульно готовы обозвать полгода напряженного труда, дошедшего до продакшена, — хвастовством.

Я был излишне краток. Имел в виду во-первых, что называть работу с AST фундаментом - это большая переоценка той роли, которую AST играет в процессе компиляции. А во-вторых, что у интересных языков программирования самое важное будет в той части мета-аст, которая специфична только для этих языков. Я думаю, что универсальный супер-компилятор для тучи языков программирования, backend которого принимает мета-аст, пытающийся абстрагировать все частные случаи конкретных языков, написать не получится.

Я кратко глянул вашу либу, и проверил, что вы мигрировали свой cure на неё, насколько я помню, изначально он её не использовал, либа появилась позже. Хз, насколько вам удобно иметь этот уровень абстракции и распаковывать его, спускаясь к конкретике cure. Также хз, насколько полезен анализ кода, выполняемый на этом высоком уровне абстракции. Не имел в виду, что вы не написали либу или что либа не делает того, что вы описываете. Под хвастовством я имел в виду громкость заявлений.

большая переоценка той роли, которую AST играет в процессе компиляции

При чем тут процесс компиляции вообще? Процесс компиляции — это последнее, ради чего я затевался.

Кроме того, в нормальных современных языках AST играет ключевую роль: компилятор работает только с ним. То, что энтузиасты из раста и голанга не осилили — ну от них никто ничего внятного и не ждал. В плюсах и им подобных — его нет из-за возраста, и лексеры вынужденно переполнены наколеночными адхоками.

Я думаю, что универсальный супер-компилятор для тучи языков программирования, backend которого принимает мета-аст, пытающийся абстрагировать все частные случаи конкретных языков, написать не получится.

Наверняка, а какое отношение это имеет к задаче, которую решаю я?

Хз, насколько вам удобно иметь этот уровень абстракции и распаковывать его, спускаясь к конкретике cure.

Cure использует MetaAST в качестве нативного AST.

Также хз, насколько полезен анализ кода, выполняемый на этом высоком уровне абстракции. 

Так спросите, если хз, я растолкую. У меня и примеров использования вагон и маленькая тележка.

Под хвастовством я имел в виду громкость заявлений.

А что мне надо было написать? «Наговнокодил говнобиблиотеку, ни на что не пригодную», чтобы вас устроило?

Спасибо.

Это уже не просто «задумка» — на этом MetaAST уже работает статический анализатор https://hexdocs.pm/ragex и целый язык https://cure-lang.org

Unified AST

Это полумертвый, едва начатый и заброшенный проект, который и близко не подбирается к званию «meta»:

ProgramItem <- ClassDeclaration | Statement | ClassItem;

Мета не может быть гвоздями прибито к ООП.

Sign up to leave a comment.

Articles