# Constant expression code parsing

This unit parses the same AST as [comp/oberon/expr], that is, the ones from
[comp/oberon/ast] but never compiles anything.

## API

?noopexpr ( ast -- ?halop f )
  If "ast" is a noop expression, yield its result with f=1, otherwise, f=0 and
  "halop" is absent.

  A noop expression is an expression that doesn't generate any code. A constant
  expression is always a noop, but other expressions are. For example, a
  straight "ident" is a noop even though it's not a constant.

  In other words, a "noop" expression is an expression that would return a
  "halop" other than the W register.

?cexpr ( ast -- ?n f )
  Tries to solve "ast" without compiling anything. If possible, yield f=1 and
  "n" is the result

cexpr# ( ast -- n )
  Expect "ast" to be a constant expression and aborts with error if not.

