You might find this helpful.
Evaluate Expressions.
This is one of my favorite things I've ever written. It parses expressions and evaluates them. It's the basis for a mini language that got put on hold for some time.
In the
evaulate sub, right after
@$ops = grep { defined $_ } @$ops;
You basically have a parse tree.
For your example, you'd have
(foo*2) + (foo*3)
$ops = [
[
'foo',
'*',
'2'
],
'+',
[
'foo',
'*',
'3'
]
];
You could modify it there to optimize the tree the way you w ant.
-Lee
"To be civilized is to deny one's nature."