Здравствуйте, System Goose, Вы писали: SG>Сопоставлять с образцом собственно дерево бывает полезно в кодогенераторах, SG>но мне кажется, что там так легко не отделаться и придется свой SG>алгоритм писать (во многих кодогенераторах ищется оптимальное SG>покрытие дерева паттернами, соответственно приходится нечто вроде SG>динамического программирования использовать, иначе перебор будет SG>неприемлемо долгим).
А можно с этого места поподробнее?
Что значит покрытие дерева паттернами и где возникает перебор?
Ведь у нас все данные уже распаршены и находятся в некотором дереве, что нам из него мешает писать прямо выходной код?
Или может мы говорим о разных видах входных данных?
Для пирмера сузим задачу до следующей: входной язык — паскаль, выходной — С.
Как должна действовать схема транслятора?
предположим во входном языке нет синтаксических ошибок. В варианте без использования парсера дерева я получил пачку классов, которые описывают Типы юзерских данных, описание глобальных переменных их инициализация если есть. Попути я ругал пользователя, за то что он некорректно объявил некоторые куски. В принципе этой информации вполне достаточно, что бы тем же визитором выписать код на С. (процедуры и функции меня пока не волнуют)
Что я смогу выиграть, если в эту схему я включу парсер дерева?