final public CreateTableCommand.AttributeDescriptor AttrDecl() throws ParseException {
        String name;
        Attribute.Type type;
        int length = -1;
        Exp constraint = null;
    name = Identifier();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case KW_INT:
      jj_consume_token(KW_INT);
                                     type = Attribute.Type.INT;
      break;
    case KW_CHAR:
      jj_consume_token(KW_CHAR);
      jj_consume_token(52);
      jj_consume_token(INT_LITERAL);
                                                          length=Integer.parseInt(token.image);
      jj_consume_token(53);
                          type = Attribute.Type.CHAR;
      break;
    case KW_DECIMAL:
      jj_consume_token(KW_DECIMAL);
                                         type = Attribute.Type.DECIMAL;
      break;
    default:
      jj_la1[9] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case KW_CHECK:
      jj_consume_token(KW_CHECK);
      jj_consume_token(52);
      constraint = Expression();
      jj_consume_token(53);
      break;
    default:
      jj_la1[10] = jj_gen;
      ;
    }
          {if (true) return new CreateTableCommand.AttributeDescriptor(name, type, length, constraint);}
    throw new Error("Missing return statement in function");
  }