---------- 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 :-) Мне просто интересно, пытались ли делать чисто С++-решение и с какими трудностями при этом сталкивались. Если угодно, меня интересует использования макросов для обратной совместимости С++ библиотеки моделирования (например, той, которая разработана в рамках нашего проекта) с ММ.
Однако обсуждением деталей ты меня, надо сказать, заинтересовал...
Собственно, что делает mmt:
- Отображение ММ на C++, при этом:
- скрываются всякие "нагромождения" С++ (то, что Анатолий называл "ритуальными плясками") и детали интерфейсов библиотеки моделирования;
Для этого существуют средства языка С++. Абстракция + инкапсуляция, и никаких плясок с бубном.
- добавляется полезная информация, например, о номерах строк и номерах операторов в тексте;
Куда? В качестве отладочной информации в объектный файл? Как-то там отладчик для ММ поживает? :-)
- Выпоняется _полный_ синтаксический и семантический анализ операторов ММ, что сделать "на макросах" достаточно затруднительно. (не вполне удачный опыт - язык описания моделей СММ КБО).
Макс, если ты объявляешь метод receive(), то его анализ выполняется g++, при этом никакие макросы не нужны.
- Диагностика формируется в терминах ММ-языка. Не соглашусь, что она плоха. Если кто-то заметил там ошибки в сообщениях - пишите bug report-ы, это легко пофиксеть. Решать задачу "фильтрации" и "русификации" диагностики g++
(неудачный опыт - см. тот же СММ)
- это криво и очень громоздко.
?? Если я сейчас -- первый, кто их заметил, то у меня нет слов. Впрочем, орфография ни на что не влияет, это я так, к слову пришлось :-)
- Строится синтаксическре дерево, которое может быть очень полезно для решения задач анализа, трансляции, оптимизации и т.д.
Макс, я, например, для удобной работы с ММ-языком (для анализа и трансляции как раз) написал свой парсер на Whale. Потому что так удобнее, чем работать с выходом ANTLR (с ним я раньше работал). Написал причём недели за две.
- На исходное множество возможностей С (С++) накладывается ряд ограничений, что еще никому не было вредно.
Э... не могу не прокомментировать. Это например то, что переменные должны быть объявлены на начале блока?
Я голосую за Язык + Транслятор.
Да не вопрос :-) Ещё раз повторюсь -- меня интересует _возможность_ "чистой" реализации MM-like языка (скорее из соображений совместимости) и потенциальные проблемы.
Это примерно как знаешь есть такая типичная история, когда админу говорят "ставь окна", а он ставит линух с кросс-офисом, и никто ничего не замечает. Это, конечно, байка, а вот с языком моделирования, сдаётся мне, такое вполне возможно :-)
Костя.
-------------------------------------------------------