Size: a a a

Compiler Development

2021 February 01

M

MaxGraey in Compiler Development
AnyDSL/impala - фронт
источник

M

MaxGraey in Compiler Development
Ну вот в AnyDSL есть online partial evaluation. С возможностью делать фильтры и явными подсказками для какого вызова делать PE чкрез символ «@«
источник

M

MaxGraey in Compiler Development
Такое ощущение что Jai позаимствовал эту позможность
источник

M

MaxGraey in Compiler Development
только там символ «#»  используется
источник

M

MrSmith in Compiler Development
источник

M

MaxGraey in Compiler Development
он гораздо позже появился но тоже очень интерестный
источник

M

MrSmith in Compiler Development
Короче мысль в том что это не мысль, идея что то атрибутировать появилась очень давно
источник

M

MaxGraey in Compiler Development
MrSmith
Короче мысль в том что это не мысль, идея что то атрибутировать появилась очень давно
дело не в атрибутах, А в PE. Partial evaluation весьма не простая вещь. Более того, я думаю в Jai это не PE, а аналог constexpr (то есть compile time интерпретатора)
источник

VK

Val Krylov in Compiler Development
MaxGraey
дело не в атрибутах, А в PE. Partial evaluation весьма не простая вещь. Более того, я думаю в Jai это не PE, а аналог constexpr (то есть compile time интерпретатора)
Вроде не как constexpr, а с произвольными эффектами времени компиляции (включая I/O).
источник

M

MrSmith in Compiler Development
Выше я про SOA и DOD, если говорить про PE то идея тоже старая, и вот так сходу сказать зачем оно в геймдеве я не скажу
источник

ED

Edmond Dantes in Compiler Development
Дмитрий К
А я тут пилю свой пайплайн для компиляции. Может кому-то будет интересно.
Идея в том, что у меня есть чудесный формат для описания AST - простой, наглядный, гибкий и шустрый. Он берёт на себя вопрос с трансформациями и отслеживанием какая часть исходника соответствует какой части результата - об этом голова вообще не болит.  Исходный код пишется либо сразу на языке на базе этого формата (xml.tree, js.tree, wasm.tree, ...), либо первым же шагом в такой язык парсится (MarkedText -> marked.tree, JSON -> json.tree, ...).
Получив AST, далее гоняем по нему трансформации: транспиляции в AST других языков, валидации, оптимизации и тд.
Наконец, применяем один из стандартных сериализаторов и получаем либо строку с кодом + сорсмапы, либо бинарник + DWARF.
Про сам формат я подробно рассказывал тут: https://github.com/nin-jin/slides/tree/master/tree
В песочнице можно поиграться с несколькими языками и трансформациями: https://tree.hyoo.ru/
Описания языков: https://github.com/nin-jin/tree.d/wiki/Tree-based-languages
Хорошая идея с деревом
источник

DP

Dmitry Ponyatov in Compiler Development
Дмитрий К
А я тут пилю свой пайплайн для компиляции. Может кому-то будет интересно.
Идея в том, что у меня есть чудесный формат для описания AST - простой, наглядный, гибкий и шустрый. Он берёт на себя вопрос с трансформациями и отслеживанием какая часть исходника соответствует какой части результата - об этом голова вообще не болит.  Исходный код пишется либо сразу на языке на базе этого формата (xml.tree, js.tree, wasm.tree, ...), либо первым же шагом в такой язык парсится (MarkedText -> marked.tree, JSON -> json.tree, ...).
Получив AST, далее гоняем по нему трансформации: транспиляции в AST других языков, валидации, оптимизации и тд.
Наконец, применяем один из стандартных сериализаторов и получаем либо строку с кодом + сорсмапы, либо бинарник + DWARF.
Про сам формат я подробно рассказывал тут: https://github.com/nin-jin/slides/tree/master/tree
В песочнице можно поиграться с несколькими языками и трансформациями: https://tree.hyoo.ru/
Описания языков: https://github.com/nin-jin/tree.d/wiki/Tree-based-languages
чем кложа за основу не годится?
источник

ДК

Дмитрий К in Compiler Development
Dmitry Ponyatov
чем кложа за основу не годится?
Скобочками. Но я хочу на базе синтаксиса tree сделать свой язык с лисповой концепцией.
источник

ED

Edmond Dantes in Compiler Development
Дмитрий К
Скобочками. Но я хочу на базе синтаксиса tree сделать свой язык с лисповой концепцией.
Язык для управления данными? Или как философия синтаксиса? Я имею ввиду декларативный стиль
источник

DP

Dmitry Ponyatov in Compiler Development
Дмитрий К
Скобочками. Но я хочу на базе синтаксиса tree сделать свой язык с лисповой концепцией.
в чём проблема со скобочками?
для любого программирования или описания данных нужно и достаточно всего 4 вида скобочек - ( ) функции и их аппликация, [ ] списки, { } хэшмапа, ну и короткие сигилы для построения производных часто используемых (сет, кортеж, даты, url/email,...).
ну может еще вместо () выделить оператор : для конструкторов, чтобы чисто синтаксически выделить типа set:[1 2 3] или int:1234
источник

ДК

Дмитрий К in Compiler Development
Edmond Dantes
Язык для управления данными? Или как философия синтаксиса? Я имею ввиду декларативный стиль
Не, мета-язык типа лиспа, который при исполнении разворачивается в код целевой платформы. То есть это такой сам себе компилятор. Можно будет подключать библиотеки макросов, реализующих различные идиомы и таким образом собирать свой DSL.
источник

ED

Edmond Dantes in Compiler Development
Ясно
источник

ДК

Дмитрий К in Compiler Development
Dmitry Ponyatov
в чём проблема со скобочками?
для любого программирования или описания данных нужно и достаточно всего 4 вида скобочек - ( ) функции и их аппликация, [ ] списки, { } хэшмапа, ну и короткие сигилы для построения производных часто используемых (сет, кортеж, даты, url/email,...).
ну может еще вместо () выделить оператор : для конструкторов, чтобы чисто синтаксически выделить типа set:[1 2 3] или int:1234
Их слишком много в лиспах, поэтому в них сложно ориентироваться. И радуга не сильно спасает. При многострочном форматировании скобочки только мешают.
источник

ВМ

Виталий Медоваров... in Compiler Development
А как вы обходитесь без скобочек? идентацией?
источник

A

Alexey in Compiler Development
Виталий Медоваров
А как вы обходитесь без скобочек? идентацией?
Не обязательно индентацией, достаточно просто не писать на лиспах.
источник