WITH ref
SELECT
FROM
e: REF max expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF min expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF add expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF sub expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF mul expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF div expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF eq expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF neq expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF grt expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF les expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF geq expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF leq expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF and expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF or expressionNode => [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF power expressionNode=> [e.leftOp, e.rightOp] ← NilBinary[e.leftOp, e.rightOp];
e: REF int expressionNode => e.unaryOp ← NilExpressionPtr[e.unaryOp];
e: REF abs expressionNode => e.unaryOp ← NilExpressionPtr[e.unaryOp];
e: REF exp expressionNode => e.unaryOp ← NilExpressionPtr[e.unaryOp];
e: REF log expressionNode => e.unaryOp ← NilExpressionPtr[e.unaryOp];
e: REF sqrt expressionNode => e.unaryOp ← NilExpressionPtr[e.unaryOp];
e: REF neg expressionNode => e.unaryOp ← NilExpressionPtr[e.unaryOp];
e: REF not expressionNode => e.unaryOp ← NilExpressionPtr[e.unaryOp];
e: REF load expressionNode => [e.var, e.expr] ← NilNameAndExpr[e.var, e.expr];
e: REF store expressionNode=> [e.var, e.expr] ← NilNameAndExpr[e.var, e.expr];
ENDCASE; -- num, or an error.