Recursive traversal of the AST
E.g. for a simple addition expression
ExpTy transExp( Absyn.OpExp e ) {
   switch (e.oper) {
     case Absyn.OpExp.PLUS:
       checkInt( transExp( e.left),
           e.left.pos);
       checkInt( transExp( e.right),
           e.right.pos);
       return new ExpTy( null, INT );
   }
}