For parsing or for backward-referencing expressions when unparsing.
Used at compilation time to evaluate expressions to determine if they are constant valued.
Used at compilation time to evaluate expressions to determine if they are constant valued.
TODO: constant folding really should operate on sub-expressions of expressions so that part of an expression can be constant, not necessarily the whole thing.