Ради интереса можешь посмотреть на шугалёвский runenv, который задумывался именно как чисто C++-ный вариант Дианы. Лежит он на зигзаге в ~peter/runenv Конечно, никакой библиотеки моделей для него нет, т.к. "Контур" успешно загнулся ещё до того, как runenv был доведён до продуктива.
Konstantin Savenkov wrote:
Привет, коллеги.
Вопрос, наверное, в первую очередь к Никите, но м.б. у остальных тоже возникнут здравые идеи.
Когда я думаю о том, как было бы грамотно организовать технически работу с ММ-языком, мне представляется нечто вроде билиотеки классов вида
class Process { public: Process(const string& name, const vector<InputBuffer>&, const vector<OutputBuffer>&); void receive(Message& m, InputBuffer& b); void send(const Message& m, OutputBuffer& b); et cetera(); }
и набор макросов, разворачивающих MM-style описание
process P() <input i, output o> { ...text... }
в
class P : public Process { void body() { ...text... } }
В мелких деталях я мог по ходу наврать, но идея, надеюсь, понятна. Вопрос: почему используется не подобный подход, а трансляция ММ->С ? М.б. приведённый мной подход пробовали, но нашли там подводные камни?
Если нет, то вопрос к Саше Герасёву: нужно ли твоему студенту делать н-ную версию транслятора ММ-С? Не лучше ли его занять вышеприведённым вариантом?
Спасибо за внимание, Костя.
Tech mailing list Tech@zigzag.lvk.cs.msu.su https://zigzag.lvk.cs.msu.su/cgi-bin/mailman/listinfo/tech