Как добавить родительские ссылки в выражения Boost.Proto?

Я хочу генерировать деревья выражений, которые имеют «обратные» ссылки от дочернего к родительскому. Есть ли способ настроить генератор Proto или домен так, чтобы класс оболочки выражения (используя proto::extends<>) содержит ссылку на родительское выражение?

Цель этого состоит в том, чтобы создать деревья выражений, которые кэшируют оцененные результаты, чтобы их можно было эффективно переоценивать. Моя стратегия состоит в том, чтобы обновить значения терминала, а затем пройтись по дереву, отмечая родительские узлы как «грязные», чтобы они были переоценены при оценке корневого выражения.

3

Решение

Техника, которую вы описываете, не может работать. Выражения строятся снизу вверх. Для выражения a + (b * c)родительский узел (+) не существует в то время, когда дочерний узел (b * c) построен. Ребенок не может сохранить указатель на объект, который еще не существует.

Вы должны будете постобработать выражения, чтобы установить родительские указатели, используя преобразование или контекст.

3

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


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