type id = string

datatype binop = Plus | Minus | Times | Div

datatype stm = CompoundStm of stm * stm
	     | AssignStm of id * exp
	     | PrintStm of exp list

     and exp = IdExp of id
	     | NumExp of int
	     | OpExp of exp * binop * exp
	     | EseqExp of stm * exp

val prog = 
    CompoundStm(AssignStm("a", OpExp(NumExp 5, Plus, NumExp 3)),
		CompoundStm(AssignStm("b",
				      EseqExp(PrintStm[IdExp"a", OpExp(IdExp"a", Minus, NumExp 1)],
					      OpExp(NumExp 10, Times, IdExp"a"))),
			    PrintStm[IdExp "b"]))