Здравствуйте, D. Mon, Вы писали:
DM>Я не понимаю, почему ты сравниваешь ANTLR с каким-то препроцессором, когда его надо сравнивать с многочисленными аналогами на окамле, намного более мощными, чем LL(1).
DM>Разумно. Собственно, окамл не я советовал, я лишь твои ремарки уточнить хотел.
Ремарки и были в ответ на идею использовать ОКамл. Он конечно тоже подойдет в принципе, но не больше чем Питон, который и так есть.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: инструментарий для разработки DSL
От:
Аноним
Дата:
24.10.13 10:03
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали:
AVK>Господа, на чем сейчас модно разрабатывать ДСЛи? Беглое ознакомление с предметом вывело на реинкарнацию Stratego: Spoofax, но есть большие сомнения в зрелости технологии. Спасибо.
Racket
Nanopass (chez scheme)
Re[3]: инструментарий для разработки DSL
От:
Аноним
Дата:
24.10.13 10:37
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали:
AVK>F# и Немерл отпадают из-за их заточенности под винду. Похоже, остается выбирать между окамлом и скалой.
AVK>Соответственно, хочется получить AST соответствующее таким определениям и по ним генерировать код на целевых языках.
У тебя простейший язык, мало чем сложнее арифметических операций.
Я бы предложил не заморачиваться с мега-инструментами, а взять нечто вроде парсер комбинаторов на джаваскрипте навроде https://npmjs.org/package/packrattle
Вообще таких либ пол-гитхаба и я свою никак не выложу туда
Когда станет ясно, какой именно будет конечный язык, вот тогда можно будет легко перейти на более мощный инструмент.
Здравствуйте, Anton V. Kolotaev, Вы писали:
AVK>Господа, на чем сейчас модно разрабатывать ДСЛи? Беглое ознакомление с предметом вывело на реинкарнацию Stratego: Spoofax, но есть большие сомнения в зрелости технологии. Спасибо.
Немного ковырял сей продукт, но в академических целях.
В принципе, технология, как наследник stratego развивается давно и документация есть, но в виде spoofax — с документацией похуже. Некоторые вещи приходиться выискивать в статьях, диссертациях, связанных с проектом (например, box-формализм для pretty-printing.
Вот тут переделка Entity language для генерации моделей и админ-классов для джанги https://bitbucket.org/ib_soft/entity-model
Сам подход к обработке AST мне понравился. И генерирование pretty-printers по грамматике тоже хорошо)
Вот еще есть Scala-библиотека, использующая такой же подход: http://code.google.com/p/kiama/
Вроде развивается.
VD>Вообще-то это и на Питоне можно было поянуть. Синтаксис довольно простой.
Синтаксис-то простой, а вот кодогенерация будет сложной, а в питоне даже паттерн-матчинга нет.
AVK>>DSL должен работать на основных платформах: вин, мак и линуксы. Будет очень здорово, если удастся сынтегрировать получившийся язык с какой-нибудь ide.
VD>А зачем DSL работать на этих платформах? Его должны писать пользователи? Если код на ДСЛ пишут программисты, то пользователю можно отдавать скомпилированный вариант.
Имеется в виду, что транслятор из DSL в целевой язык должен работать на всех этих платформах.
AVK>>Если рассматривать выбор полноценный или встроенный DSL, то на первых порах хотелось бы по максимуму обойтись средствами, встроенными в какой-нибудь язык. Я до последнего времени обходился питоном, но его динамическая типизация, странности в объектной модели и неприспособленность к задачам трансформации древовидных структур данных заставляют меня искать что-то другое.
VD>Ну, при некотором умении приспособить можно что угодно к чему угодно. Питон довольно гибок чтобы его приспособить к трасформации кода. Собственно задача у тебя довольно понятная: VD>1. Распознаем ДСЛ и преобразовываем его в некое подобие АСТ (это может быть и иерархия питоновских объектов созданная путем прогона встроенного ДСЛ-я (реинтрепретация кода). VD>2. Трасформация АСТ в модель. Тут рулит ФП. mup-ов и прочей фигни в Питоне выше крыши.
Вот возможностей питона здесь как раз и не хватает.
AVK>>F# и Немерл отпадают из-за их заточенности под винду. Похоже, остается выбирать между окамлом и скалой.
VD>Вот это для тебя точно не решение. Точнее худшее решение. Траху много, толку мало. ОКамл обладает только примитивный препроцессором и ФП. Это где угодно есть. У Скалы нет даже препроцессора. Она просто не заточена на генерацию С++ и Питона.
Я сейчас начал разработку на скале -- вроде бы вполне удобно. В принципе, когда в языке есть интерполяция строк, то шаблонный движок отпадает за ненадобностью.
Зачем нужен препроцессор, если я делаю внешний DSL?
VD>Так что опиши что за задачу решают скрипты?
Идея в том, чтобы предоставить удобный инструмент для тех, кто исследует микроструктуру рынка: типа что будет если изменить величину тика на рынке или поддержать непосредственно на бирже еще один тип ордеров.
VD>Кстати, что такое "EWMA"? И в чем суть этого код? Это описание зависимостей?
EWMA — скользящее среднее. Это по большому счету описание завимостей между блоками в симуляторе. Вот здесь я пытался объяснить, как устроена архитектура симулятора.
Здравствуйте, Аноним, Вы писали:
AVK>>F# и Немерл отпадают из-за их заточенности под винду. Похоже, остается выбирать между окамлом и скалой.
А>F# прекрасно себя чувствует под Mono.
Общим мнением является то, что моно -- очень сырая платформа и там часто что-нибудь ломается. Вот немерл, например, на моно вроде бы уже не поддерживается. Разве не так?
Здравствуйте, Anton V. Kolotaev, Вы писали:
AVK>Синтаксис-то простой, а вот кодогенерация будет сложной, а в питоне даже паттерн-матчинга нет.
Даже? :) Я качественный ПМ для произвольного языка вообще нигде не видел. Обычно или для одного языка, или странный и кривой.
Для генерации кода можно использовать хороший шаблонный движок вроде Стрингтемплейта. А разбор вручную или МП-средствами Питона.
AVK>Я сейчас начал разработку на скале -- вроде бы вполне удобно. В принципе, когда в языке есть интерполяция строк, то шаблонный движок отпадает за ненадобностью.
Тебе виднее, но на мойз взгляд проще было бы взять готовый шаблонный движок. С теми же отступами не пришлось бы бороться.
AVK>Зачем нужен препроцессор, если я делаю внешний DSL?
Потенциально, можно просто поменять синтаксис как тебе нужно и пользоваться компилятором.
AVK>Идея в том, чтобы предоставить удобный инструмент для тех, кто исследует микроструктуру рынка: типа что будет если изменить величину тика на рынке или поддержать непосредственно на бирже еще один тип ордеров.
А ты уверен, что торгаши справятся с написанием программ? И почему тогда просто не позволить писать их на том же Питоне?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: инструментарий для разработки DSL
От:
Аноним
Дата:
31.10.13 22:58
Оценка:
Здравствуйте, Anton V. Kolotaev, Вы писали: А>>F# прекрасно себя чувствует под Mono.
AVK>Общим мнением является то,
Не надо выдавать мнение пионеров из села Гадюкино за "общее". Mono — стабильная платформа, применяется в ентерпрайзе во все щели.
AVK> что моно -- очень сырая платформа и там часто что-нибудь ломается.
Пример хотя бы один можно привести, чтоб совместимость поломали?
AVK> Вот немерл, например, на моно вроде бы уже не поддерживается. Разве не так?