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))