Since the Vesta SDL is functional, assignments do not produce side-effects. Instead, they introduce a new name into the evaluation context whose value is that of the given expression.
Assign ::= Id [ TypeQual ] [ Op ] = Expr Op ::= AddOp | MulOp AddOp ::= + | ++ | - MulOp ::= *
|Id Op = Expr||desugars to||Id = Id Op Expr|
Eval( Id = Expr , C) = _bind1(id, Eval( Expr , C))