> But I found that my (a|b|c) construct (equivalent to C's a?b:c)> generates code like an If statement.>> So I can fix this 'problem' by turning 'a and b' into (a and b|1|0), and> 'a or b' into (a or b|1|0), either manually or letting the compile do it> as you seem to be attempting to.

Interesting idea .... Hmmmm... Room to think. Thank you.

>> It's possible that you can try something similar, if you also have an> equivalent a?b:c operator that already has short-circuit evaluation.

And here I was, going to make the trinary operator work via the
shortcutting operators ;) Chicken-and-egg.

To get it, I think I'm going to have to come up with a different equation
parser, and split the calculations into 'sub-expressions'. Not that I'm
ever going to add optimization, but it would also 'common-subexpression'
elimination, as well as folding constants.