added utility rules to eval a constant expression and also to eval constant subexpressions in an associative or commutative context