Привет, коллеги.
Вопрос, наверное, в первую очередь к Никите, но м.б. у остальных тоже возникнут здравые идеи.
Когда я думаю о том, как было бы грамотно организовать технически работу с ММ-языком, мне представляется нечто вроде билиотеки классов вида
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... } }
В мелких деталях я мог по ходу наврать, но идея, надеюсь, понятна. Вопрос: почему используется не подобный подход, а трансляция ММ->С ? М.б. приведённый мной подход пробовали, но нашли там подводные камни?
Если нет, то вопрос к Саше Герасёву: нужно ли твоему студенту делать н-ную версию транслятора ММ-С? Не лучше ли его занять вышеприведённым вариантом?
Спасибо за внимание, Костя.