Какие дополнительные структуры данных должны быть организованы, чтобы получить первую производную от абстрактного исходного дерева (для строкового математического выражения)? Допустим, у нас есть дерево для строкового выражения, которое было построено с использованием boost::spirit
, Т.е. каждый узел имеет соответствующий BOOST_FUSION_ADAPT_STRUCT
/BOOST_FUSION_ADAPT_TPL_STRUCT
определение. Итак, как хранить дополнительные произведенные данные struct
-с каждому узлу первичной АСТ и как они должны быть построены?
Я думаю, что они должны быть построены через std::reference_wrapper< T const & >
или же boost::optional< T const & >
в поля (типа T
) оригинала struct
с одинаковым расположением. И они должны формировать массивы / векторы / запросы для каждого узла исходного дерева (где индекс равен n
-я производная соответствующего узла исходного дерева). Каждый обход дерева с «дериватом-посетителем» должен push_back
s следующее выражение для каждого массива для каждого узла. Чтобы установить соответствие исходных узлов массивам их производных, мы можем сделать их помеченными.
Задача ещё не решена.
Других решений пока нет …