Привет
Пытаюсь починить парсер нашего рабочего доморощенного язычка и внезапно понял что мозг атрофировался за годы роботы в кровавом энтерпрайсе.
Итак, задача — есть дерево в котором два типа нодов — листья со значениями и узлы с операциями. Пусть операций два типа — сложение и умножение.
Надо заполнить структуру данных, которая содержит группы операций умножения, разделенные группами сложения, это неоходимо для заполнения другой структуры данных, которая потом отправится на удаленный сервак.
Т.е. выражение, распаршеное в дерево:
(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
Какие идеи?
Спасибо.
Здравствуйте, kov_serg, Вы писали:
_>Здравствуйте, Flem1234, Вы писали:
F>>Т.е. выражение, распаршеное в дерево:
F>>(a+b)*(c+d)*e должно превратиться в такое a*c*e+a*d*e+b*c*e+b*d*e.
_>То есть вы хотите просто раскрыть скобки? И в чем проблема?
По сути да.
И в чем проблема?
Проблема была в моей тупости. Нашел багу, просто переписал код на чистовую, в прошлой версии видимо где-то забыл сделать рекурсивный вызов.