in src/com/amazon/ion/impl/IonReaderTextRawTokensX.java [495:587]
private final int skip_to_end(SavePoint sp) throws IOException
{
int c;
// FIXME lots of inconsistency here!
// Sometimes the token's first character is still on the stream,
// sometimes it's already been consumed.
switch (_token) {
case IonTokenConstsX.TOKEN_UNKNOWN_NUMERIC:
c = skip_over_number(sp);
break;
case IonTokenConstsX.TOKEN_INT:
c = skip_over_int(sp);
break;
case IonTokenConstsX.TOKEN_HEX:
c = skipOverRadix(sp, Radix.HEX);
break;
case IonTokenConstsX.TOKEN_BINARY:
c = skipOverRadix(sp, Radix.BINARY);
break;
case IonTokenConstsX.TOKEN_DECIMAL:
c = skip_over_decimal(sp);
break;
case IonTokenConstsX.TOKEN_FLOAT:
c = skip_over_float(sp);
break;
case IonTokenConstsX.TOKEN_TIMESTAMP:
c = skip_over_timestamp(sp);
break;
case IonTokenConstsX.TOKEN_SYMBOL_IDENTIFIER:
c = skip_over_symbol_identifier(sp);
break;
case IonTokenConstsX.TOKEN_SYMBOL_QUOTED:
// Initial single-quote has been consumed!
assert(!is_2_single_quotes_helper());
c = skip_single_quoted_string(sp);
break;
case IonTokenConstsX.TOKEN_SYMBOL_OPERATOR:
// Initial operator char has NOT been consumed
c = skip_over_symbol_operator(sp);
break;
case IonTokenConstsX.TOKEN_STRING_DOUBLE_QUOTE:
skip_double_quoted_string_helper(); // FIXME Why no sp here?
c = skip_over_whitespace();
break;
case IonTokenConstsX.TOKEN_STRING_TRIPLE_QUOTE:
skip_triple_quoted_string(sp);
c = skip_over_whitespace();
break;
case IonTokenConstsX.TOKEN_OPEN_DOUBLE_BRACE:
// works just like a pair of nested structs
// since "skip_over" doesn't care about formal
// syntax (like requiring field names);
skip_over_blob(sp);
c = read_char();
break;
case IonTokenConstsX.TOKEN_OPEN_BRACE:
assert( sp == null ); // you can't save point a scanned struct (right now anyway)
skip_over_struct();
c = read_char();
break;
case IonTokenConstsX.TOKEN_OPEN_PAREN:
skip_over_sexp(); // you can't save point a scanned sexp (right now anyway)
c = read_char();
break;
case IonTokenConstsX.TOKEN_OPEN_SQUARE:
skip_over_list(); // you can't save point a scanned list (right now anyway)
c = read_char();
break;
case IonTokenConstsX.TOKEN_DOT:
case IonTokenConstsX.TOKEN_COMMA:
case IonTokenConstsX.TOKEN_COLON:
case IonTokenConstsX.TOKEN_DOUBLE_COLON:
case IonTokenConstsX.TOKEN_CLOSE_PAREN:
case IonTokenConstsX.TOKEN_CLOSE_BRACE:
case IonTokenConstsX.TOKEN_CLOSE_SQUARE:
case IonTokenConstsX.TOKEN_CLOSE_DOUBLE_BRACE:
case IonTokenConstsX.TOKEN_ERROR:
case IonTokenConstsX.TOKEN_EOF:
default:
c = -1; // makes eclipse happy
error("token "+IonTokenConstsX.getTokenName(_token)+
" unexpectedly encounterd as \"unfinished\"");
break;
}
if (IonTokenConstsX.isWhitespace(c)) {
c = skip_over_whitespace();
}
_unfinished_token = false;
return c;
}