public Object nextMeta() throws JSONException {
  char c;
  char q;
  do {
    c=next();
  }
 while (Character.isWhitespace(c));
switch (c) {
case 0:
    throw syntaxError("Misshaped meta tag");
case '<':
  return XML.LT;
case '>':
return XML.GT;
case '/':
return XML.SLASH;
case '=':
return XML.EQ;
case '!':
return XML.BANG;
case '?':
return XML.QUEST;
case '"':
case '\'':
q=c;
for (; ; ) {
c=next();
if (c == 0) {
throw syntaxError("Unterminated string");
}
if (c == q) {
return Boolean.TRUE;
}
}
default :
for (; ; ) {
c=next();
if (Character.isWhitespace(c)) {
return Boolean.TRUE;
}
switch (c) {
case 0:
case '<':
case '>':
case '/':
case '=':
case '!':
case '?':
case '"':
case '\'':
back();
return Boolean.TRUE;
}
}
}
}

public Object nextMeta ( ) throws JSONException { char c ; char q ; do { c = next ( ) ; } while ( Character . isWhitespace ( c ) ) ; switch ( c ) { case 0 : throw syntaxError ( "Misshaped meta tag" ) ; case '<' : return XML . LT ; case '>' : return XML . GT ; case '/' : return XML . SLASH ; case '=' : return XML . EQ ; case '!' : return XML . BANG ; case '?' : return XML . QUEST ; case '"' : case '\'' : q = c ; for ( ; ; ) { c = next ( ) ; if ( c == 0 ) { throw syntaxError ( "Unterminated string" ) ; } if ( c == q ) { return Boolean . TRUE ; } } default : for ( ; ; ) { c = next ( ) ; if ( Character . isWhitespace ( c ) ) { return Boolean . TRUE ; } switch ( c ) { case 0 : case '<' : case '>' : case '/' : case '=' : case '!' : case '?' : case '"' : case '\'' : back ( ) ; return Boolean . TRUE ; } } } }
returns the next xml meta token . this is used for skipping over < ! . . . > and < ? . . . ? > structures .
