Expr unary()throws Exception{
        Token tmp = look;
        switch(look.tag) {
          case '-'    :case '+'    :
          case Tag.TAN:case Tag.EXP:
          case Tag.SIN:case Tag.COS:
          case Tag.LOG:case Tag.LN :
          case Tag.SQR:
                move();
                return new Unary(tmp,unary());
          default:
                return factor();
        }
    }