Size: a a a

2020 September 14

KP

Kirill Pimenov in Distributed
источник

KP

Kirill Pimenov in Distributed
источник

KP

Kirill Pimenov in Distributed
(Если мне не пристало собственные проекты шиллить — с радостью приму #модераторское от коллег по цеху и всё потру; обычно я так не делаю, но тут вроде совсем к слову пришлось)
источник

KP

Kirill Pimenov in Distributed
Был ещё Каталассос (https://polkadot.network/katallassos-moves-towards-a-polkadot-parachain/) в прошлом году — на интересном стыке Дефая и как раз-таки юридических контрактов.
Но чего-то я не слышал от команды ничего давненько; наверное они несколько опередили своё время.
источник

SB

Sergey Bychkow in Distributed
staying at home nickname 🔪 NaN
однушка в хорошем районе москвы...
Да ладно, кто вам квартиру за фантики токены продаст?
источник

@

@mr_tron in Distributed
А можно немного оффтопа?
У меня довольно примитвный, но Тьюринг полный DSL.
К нему существует интерпретатор на си, который мне не нравится и вообще тесно связан с вин32 гуйней.
Хочу сделать кастомный интерпретатор на чем-нибудь более человеческом.
Как вообще правильно к такому заходить?
Я так понимаю сперва надо парсер, который мне распарсит этот DSL в ast. А потом рисовать типа виртуальной машины.
Есть какие-нибудь фреймворки, упрощающие жизнь? Ну например для парсера чтоб можно было описать спецсимволы и правила их экранирования, ключевые слова и он бы сам распарсил?
источник

SV

Sergey Vasilyev in Distributed
Я когда-то на Джаве https://www.antlr.org использовал. Давно было, не знаю насколько сейчас актуально
источник

KP

Kirill Pimenov in Distributed
@mr_tron
А можно немного оффтопа?
У меня довольно примитвный, но Тьюринг полный DSL.
К нему существует интерпретатор на си, который мне не нравится и вообще тесно связан с вин32 гуйней.
Хочу сделать кастомный интерпретатор на чем-нибудь более человеческом.
Как вообще правильно к такому заходить?
Я так понимаю сперва надо парсер, который мне распарсит этот DSL в ast. А потом рисовать типа виртуальной машины.
Есть какие-нибудь фреймворки, упрощающие жизнь? Ну например для парсера чтоб можно было описать спецсимволы и правила их экранирования, ключевые слова и он бы сам распарсил?
В смысле, ты не хочешь по классике flex/bison/yacc использовать?
источник

KP

Kirill Pimenov in Distributed
Или тебе именно фреймворк для ВМ или кодогенерации нужен?
источник

KP

Kirill Pimenov in Distributed
ВМ — тысячи их, все неудобные.
источник

KP

Kirill Pimenov in Distributed
Для кодогенерации такой фреймворк LLVM называется
источник

KP

Kirill Pimenov in Distributed
Ну то есть тебе самому придётся преобразователь из твего AST и LLVM IR написать, но дальше "оно само"
источник

KP

Kirill Pimenov in Distributed
Ну или посмотри, может тебе проще вебассембли генерить на выходе?
источник

KP

Kirill Pimenov in Distributed
Вебассембли реально довольно простой в качестве целевого ассемблера, можно по идее руками написать (наверняка фреймворки тоже есть)
источник

KP

Kirill Pimenov in Distributed
А дальше либо запускать в райнтайме (хоть в node/deno, хоть в  wasmi)
источник

KP

Kirill Pimenov in Distributed
Либо компилировать через какой-нибудь cranelift или прости господи lightbeam
источник

@

@mr_tron in Distributed
Kirill Pimenov
В смысле, ты не хочешь по классике flex/bison/yacc использовать?
Да я вообще дикий. Интересуюсь в том числе как это делать по классике
источник

KP

Kirill Pimenov in Distributed
Ну, совсем по классике надо SICP прочитать =)
https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html
источник

KP

Kirill Pimenov in Distributed
Короче, сначала у тебя есть лексер, который разберёт входной текст на лексемы (типа вот это вот слово — ключевик, вот это — строка, вот тут у нас точка с запятой значит завершение выражение и переход к следующему)
источник
2020 September 15

KP

Kirill Pimenov in Distributed
Потом у тебя есть парсер, который построит из перечня лексем как раз-таки дерево AST — структуру данных, которая собственно описывает, что там имел в виду программист (типа вот тут у нас замыкание с такими-то параметрами захваченными, тут у нас вызов функции, а тут — ключевик для вызова какого-нибудь билтина, не выразимого в самом языке)
источник