<
Evaluating a Stmt or sequence of Stmts produces a binding. Note that the binding resulting from the evaluation of a sequence of Stmts is simply the overlay (operator `+') of the bindings resulting from evaluating each Stmt in the sequence, and does not include the context C.
Eval( { } , C) = emptybinding
Eval( { Stmt_1; Stmt_2 ...; Stmt_n } , C) =
{
val b0 = Eval( Stmt_1 , C);
val b1 = Eval( { Stmt_2; ...; Stmt_n }, operator+(C, b0));
return operator+(b0, b1);
}
These rules apply to constructs in the ``extended'' language. There are three possibilities for a Stmt: Assign, Iterate, and FuncDef. They are covered in the next three sections.