История изменений
Исправление
gh0stwizard,
(текущая версия)
:
BNF не описывает что DSL должен делать в соответствующих конструкциях, или я что-то пропустил?
Да, не описывает. Добавим еще одно предложение: DSL-движок должен получится таким, что я могу задавать синтаксис и называть конструкции как хочу и иметь возможность делать привязки к заданным конструкциям, описывать их на том же ЯП, на котором пишется движок DSL. Или коротко: DSL-движок для программиста.
Так лучше? Или всеравно непонятно7 Тут, как бы и думать не надо. Просят написать движок, а не законченную реализацию DSL. Оконченный DSL может написать вообще другой человек, но используя готовый движок.
При этом, я не стал расписывать UI-составляющую, ибо для движка она также не играет роли. К движку можно прикрутить UI, но это будет конструктор DSL. Также являясь законченным продуктом.
В этом задании спека есть и она достаточно полная. Потому что, не будь BNF так хорошо описан, не было никаких реализаций DSL-движков, коих написано предостаточно.
Задача программиста состоит в том, чтобы взять спеку на BNF и прикрутить ее к своему ЯП. Все. Что тут не понятно? Как прикрутить? Это не задача спеки, извините. Программист должен допереть до этого сам, и это его задача. Довольно тривиальная на самом деле.
Более того, эту задачу ставят в иностранных ВУЗах, не знаю на каком курсе. И она довольно широко известна и повсеместно используется.
Update: техническая реализация будет сильно зависеть от ЯП, ибо в некоторых ЯП невозможно нормально делать привязки к функциям или задавать переменные. Либо можно, но сложно. В других ЯП все это будет возможно проще делать. Увы, это не проблема спеки, BNF в частности. Это технические ограничения, которые накладываются в любом проекте. Если ограничения не совпадают с главным ТЗ (ТЗ, а не спекой), то спека корректируется, либо программист ищет другие обходные пути.
Исходная версия
gh0stwizard,
:
BNF не описывает что DSL должен делать в соответствующих конструкциях, или я что-то пропустил?
Да, не описывает. Добавим еще одно предложение: DSL-движок должен получится таким, что я могу задавать синтаксис и называть конструкции как хочу и иметь возможность делать привязки к заданным конструкциям, описывать их на том же ЯП, на котором пишется движок DSL. Или коротко: DSL-движок для программиста.
Так лучше? Или всеравно непонятно7 Тут, как бы и думать не надо. Просят написать движок, а не законченную реализацию DSL. Оконченный DSL может написать вообще другой человек, но используя готовый движок.
При этом, я не стал расписывать UI-составляющую, ибо для движка она также не играет роли. К движку можно прикрутить UI, но это будет конструктор DSL. Также являясь законченным продуктом.
В этом задании спека есть и она достаточно полная. Потому что, не будь BNF так хорошо описан, не было никаких реализаций DSL-движков, коих написано предостаточно.
Задача программиста состоит в том, чтобы взять спеку на BNF и прикрутить ее к своему ЯП. Все. Что тут не понятно? Как прикрутить? Это не задача спеки, извините. Программист должен допереть до этого сам, и это его задача. Довольно тривиальная на самом деле.
Более того, эту задачу ставят в иностранных ВУЗах, не знаю на каком курсе. И она довольно широко известна и повсеместно используется.