in src/com/amazon/ion/impl/IonTokenConstsX.java [524:693]
static public int keyword(CharSequence word, int start_word, int end_word)
{
int c = word.charAt(start_word);
int len = end_word - start_word; // +1 but we build that into the constants below
switch (c) {
case '$':
if (len > 1) {
for (int i = start_word + 1; i < end_word; i++) {
if (! isDigit(word.charAt(i))) return -1;
}
return KEYWORD_sid;
}
return -1;
case 'b':
if (len == 4) {
if (word.charAt(start_word+1) == 'o'
&& word.charAt(start_word+2) == 'o'
&& word.charAt(start_word+3) == 'l'
) {
return KEYWORD_BOOL;
}
if (word.charAt(start_word+1) == 'l'
&& word.charAt(start_word+2) == 'o'
&& word.charAt(start_word+3) == 'b'
) {
return KEYWORD_BLOB;
}
}
return -1;
case 'c':
if (len == 4) {
if (word.charAt(start_word+1) == 'l'
&& word.charAt(start_word+2) == 'o'
&& word.charAt(start_word+3) == 'b'
) {
return KEYWORD_CLOB;
}
}
return -1;
case 'd':
if (len == 7) {
if (word.charAt(start_word+1) == 'e'
&& word.charAt(start_word+2) == 'c'
&& word.charAt(start_word+3) == 'i'
&& word.charAt(start_word+4) == 'm'
&& word.charAt(start_word+5) == 'a'
&& word.charAt(start_word+6) == 'l'
) {
return KEYWORD_DECIMAL;
}
}
return -1;
case 'f':
if (len == 5) {
if (word.charAt(start_word+1) == 'a'
&& word.charAt(start_word+2) == 'l'
&& word.charAt(start_word+3) == 's'
&& word.charAt(start_word+4) == 'e'
) {
return KEYWORD_FALSE;
}
if (word.charAt(start_word+1) == 'l'
&& word.charAt(start_word+2) == 'o'
&& word.charAt(start_word+3) == 'a'
&& word.charAt(start_word+4) == 't'
) {
return KEYWORD_FLOAT;
}
}
return -1;
case 'i':
if (len == 3) {
if (word.charAt(start_word+1) == 'n') {
if (word.charAt(start_word+2) == 't') {
return KEYWORD_INT;
}
}
}
return -1;
case 'l':
if (len == 4) {
if (word.charAt(start_word+1) == 'i'
&& word.charAt(start_word+2) == 's'
&& word.charAt(start_word+3) == 't'
) {
return KEYWORD_LIST;
}
}
return -1;
case 'n':
if (len == 4) {
if (word.charAt(start_word+1) == 'u'
&& word.charAt(start_word+2) == 'l'
&& word.charAt(start_word+3) == 'l'
) {
return KEYWORD_NULL;
}
}
else if (len == 3) {
if (word.charAt(start_word+1) == 'a'
&& word.charAt(start_word+2) == 'n'
) {
return KEYWORD_NAN;
}
}
return -1;
case 's':
if (len == 4) {
if (word.charAt(start_word+1) == 'e'
&& word.charAt(start_word+2) == 'x'
&& word.charAt(start_word+3) == 'p'
) {
return KEYWORD_SEXP;
}
}
else if (len == 6) {
if (word.charAt(start_word+1) == 't'
&& word.charAt(start_word+2) == 'r'
) {
if (word.charAt(start_word+3) == 'i'
&& word.charAt(start_word+4) == 'n'
&& word.charAt(start_word+5) == 'g'
) {
return KEYWORD_STRING;
}
if (word.charAt(start_word+3) == 'u'
&& word.charAt(start_word+4) == 'c'
&& word.charAt(start_word+5) == 't'
) {
return KEYWORD_STRUCT;
}
return -1;
}
if (word.charAt(start_word+1) == 'y'
&& word.charAt(start_word+2) == 'm'
&& word.charAt(start_word+3) == 'b'
&& word.charAt(start_word+4) == 'o'
&& word.charAt(start_word+5) == 'l'
) {
return KEYWORD_SYMBOL;
}
}
return -1;
case 't':
if (len == 4) {
if (word.charAt(start_word+1) == 'r'
&& word.charAt(start_word+2) == 'u'
&& word.charAt(start_word+3) == 'e'
) {
return KEYWORD_TRUE;
}
}
else if (len == 9) {
if (word.charAt(start_word+1) == 'i'
&& word.charAt(start_word+2) == 'm'
&& word.charAt(start_word+3) == 'e'
&& word.charAt(start_word+4) == 's'
&& word.charAt(start_word+5) == 't'
&& word.charAt(start_word+6) == 'a'
&& word.charAt(start_word+7) == 'm'
&& word.charAt(start_word+8) == 'p'
) {
return KEYWORD_TIMESTAMP;
}
}
return -1;
default:
return -1;
}
}