АСЦ: предпочитаете наследование или варианты?

В объектно-ориентированных языках довольно часто реализуются AST (деревья абстрактного синтаксиса) с использованием простых иерархий (шаблон Composite) и их обход через посетителей.

В функциональных языках программирования правильный подход — использование вариантов / типов сумм, а затем сопоставление с образцом.

C ++ имеет как наследование, так и Boost.Variants. Я написал несколько иерархий AST с использованием наследования, но я хотел бы получить отзывы от людей, которые использовали бы вариантный подход. Я хотел бы знать, какой из них является «лучшим» с точки зрения производительности (время и пространство), но также и с точки зрения ремонтопригодности (простота создания деревьев и их обхода).

Меня особенно интересует опыт реализации согласования хешей (хранения одной копии каждого общего поддерева), возможно, с Boost.Flyweight.

Спасибо!

8

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector