Привет
Пытаюсь починить парсер нашего рабочего доморощенного язычка и внезапно понял что мозг атрофировался за годы роботы в кровавом энтерпрайсе.
Итак, задача — есть дерево в котором два типа нодов — листья со значениями и узлы с операциями. Пусть операций два типа — сложение и умножение.
Надо заполнить структуру данных, которая содержит группы операций умножения, разделенные группами сложения, это неоходимо для заполнения другой структуры данных, которая потом отправится на удаленный сервак.
Т.е. выражение, распаршеное в дерево:
(a+b)*(c+d)*e должно превратиться в такое a*c*e+a*d*e+b*c*e+b*d*e.
*
/ \
* e
/ \
+ +
/ \ / \
a b c d
в
+
___________|___________
/ \
+ +
___|___ ___|___
/ \ / \
(* (* ) (* ) (* )
/ \ / \ / \ / \
(* ) e (* ) e (* ) e (* ) e
/ \ / \ / \ / \
a c a d b c b d
Какие идеи?
Спасибо.