---------- Forwarded Message ----------
Subject: Re: [LVK Tech] Вопрос про поддержку ММ-языка Date: Sunday 28 May 2006 19:32 From: Konstantin Savenkov savenkov@cs.msu.su To: Maksim Chistolinov mike@lvk.cs.msu.su
Макс, я не собираюсь нападать на Диану и mmt :-) Мне просто интересно, пытались ли делать чисто С++-решение и с какими трудностями при этом сталкивались.
Навскидку - я не знаю, как средствами чистого Си++ реализовать доступ к полям сообщения - с учётом того, что по синтаксису mm языка там используется операция ".", имена полей - свои для каждого типа сообщений, и одна и та же msg переменная может хранить сообщения любого типа.
Кроме того - определённые трудности могут быть с операторами select/accept.
А отвечая на всё - напоминаю два фактора:
- прошлые версии mmt были фактически препроцессором (без построения синтаксического дерева и т.п.). Это приводило к многочисленных техническим проблемам - конкретику я уже не помню, может Макс или Толя вспомнят - которые и были решены переходом к текущей схеме.
- разговор о том, нужен язык или Си++-библиотека, идёт уже лет так десять. Вывод, который сделал я, примерно такой - mm-язык любят "теоретики" (см. аргументы Макса в его письмах в этот thread), либо "менеджеры" (язык Дианы - trademark или как там это называется). А не любят те, кому приходится на нём реально программировать проекты.
- добавляется полезная информация, например, о номерах строк и номерах операторов в тексте;Куда? В качестве отладочной информации в объектный файл? Как-то там отладчик для ММ поживает? :-)
В Диане было такое средство - переход от события к строке текста модели. Это было реализовано путём составления таблицы операторов; в трассу записывался номер оператора, а mmt в т.ч. создавал таблицу операторов, в которой хранилось в т.ч. положение этого оператора в исходном тексте модели.
- Строится синтаксическре дерево, которое может быть очень полезно для решения задач анализа, трансляции, оптимизации и т.д.
Макс, я, например, для удобной работы с ММ-языком (для анализа и трансляции как раз) написал свой парсер на Whale. Потому что так удобнее, чем работать с выходом ANTLR (с ним я раньше работал). Написал причём недели за две.
Это относится к вопросу о том, как сделать "удобный в использовании" транслятор. Между прочим, эта задача поставлена студенту, которым руководит Саша Герасёв. Ты взаимодействовал с ними по этому поводу?