public Yytoken yylex()

in tooling/camel-util-json/src/main/java/org/apache/camel/util/json/Yylex.java [451:661]


    public Yytoken yylex() throws java.io.IOException, DeserializationException {
        int zzInput;
        int zzAction;

        // cached fields:
        int zzCurrentPosL;
        int zzMarkedPosL;
        int zzEndReadL = zzEndRead;
        char[] zzBufferL = zzBuffer;
        char[] zzCMapL = ZZ_CMAP;

        int[] zzTransL = ZZ_TRANS;
        int[] zzRowMapL = ZZ_ROWMAP;
        int[] zzAttrL = ZZ_ATTRIBUTE;

        while (true) {
            zzMarkedPosL = zzMarkedPos;

            yychar += zzMarkedPosL - zzStartRead;

            zzAction = -1;

            zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;

            zzState = ZZ_LEXSTATE[zzLexicalState];

            zzForAction: {
                while (true) {

                    if (zzCurrentPosL < zzEndReadL) {
                        zzInput = zzBufferL[zzCurrentPosL++];
                    } else if (zzAtEOF) {
                        zzInput = YYEOF;
                        break zzForAction;
                    } else {
                        // store back cached positions
                        zzCurrentPos = zzCurrentPosL;
                        zzMarkedPos = zzMarkedPosL;
                        boolean eof = zzRefill();
                        // get translated positions and possibly new buffer
                        zzCurrentPosL = zzCurrentPos;
                        zzMarkedPosL = zzMarkedPos;
                        zzBufferL = zzBuffer;
                        zzEndReadL = zzEndRead;
                        if (eof) {
                            zzInput = YYEOF;
                            break zzForAction;
                        } else {
                            zzInput = zzBufferL[zzCurrentPosL++];
                        }
                    }
                    int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];
                    if (zzNext == -1) {
                        break zzForAction;
                    }
                    zzState = zzNext;

                    int zzAttributes = zzAttrL[zzState];
                    if ((zzAttributes & 1) == 1) {
                        zzAction = zzState;
                        zzMarkedPosL = zzCurrentPosL;
                        if ((zzAttributes & 8) == 8)
                            break zzForAction;
                    }

                }
            }

            // store back cached position
            zzMarkedPos = zzMarkedPosL;

            switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
                case 4: {
                    sb = null;
                    sb = new StringBuilder();
                    yybegin(STRING_BEGIN);
                }
                case 24:
                    break;
                case 11: {
                    sb.append(yytext());
                }
                case 25:
                    break;
                case 5: {
                    return new Yytoken(Yytoken.Types.LEFT_BRACE, null);
                }
                case 26:
                    break;
                case 16: {
                    sb.append('\b');
                }
                case 27:
                    break;
                case 23: {
                    try {
                        int ch = Integer.parseInt(yytext().substring(2), 16);
                        sb.append((char) ch);
                    } catch (Exception e) {
                        /*
                         * The lexer is broken if it can build a 4 byte character
                         * code and fail to append the character.
                         */
                        throw new DeserializationException(yychar, DeserializationException.Problems.UNEXPECTED_EXCEPTION, e);
                    }
                }
                case 28:
                    break;
                case 22: {
                    Boolean val = Boolean.valueOf(yytext());
                    return new Yytoken(Yytoken.Types.DATUM, val);
                }
                case 29:
                    break;
                case 12: {
                    sb.append('\\');
                }
                case 30:
                    break;
                case 10: {
                    return new Yytoken(Yytoken.Types.COLON, null);
                }
                case 31:
                    break;
                case 9: {
                    return new Yytoken(Yytoken.Types.COMMA, null);
                }
                case 32:
                    break;
                case 21: {
                    return new Yytoken(Yytoken.Types.DATUM, null);
                }
                case 33:
                    break;
                case 19: {
                    sb.append('\r');
                }
                case 34:
                    break;
                case 15: {
                    sb.append('/');
                }
                case 35:
                    break;
                case 2: {
                    java.math.BigDecimal val = new java.math.BigDecimal(yytext());
                    return new Yytoken(Yytoken.Types.DATUM, val);
                }
                case 36:
                    break;
                case 14: {
                    sb.append('"');
                }
                case 37:
                    break;
                case 8: {
                    return new Yytoken(Yytoken.Types.RIGHT_SQUARE, null);
                }
                case 38:
                    break;
                case 17: {
                    sb.append('\f');
                }
                case 39:
                    break;
                case 1: {
                    throw new DeserializationException(
                            yychar, DeserializationException.Problems.UNEXPECTED_CHARACTER, Character.valueOf(yycharat(0)));
                }
                case 40:
                    break;
                case 6: {
                    return new Yytoken(Yytoken.Types.RIGHT_BRACE, null);
                }
                case 41:
                    break;
                case 20: {
                    sb.append('\t');
                }
                case 42:
                    break;
                case 7: {
                    return new Yytoken(Yytoken.Types.LEFT_SQUARE, null);
                }
                case 43:
                    break;
                case 18: {
                    sb.append('\n');
                }
                case 44:
                    break;
                case 13: {
                    yybegin(YYINITIAL);
                    return new Yytoken(Yytoken.Types.DATUM, sb.toString());
                }
                case 45:
                    break;
                case 3: {
                }
                case 46:
                    break;
                default:
                    if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
                        zzAtEOF = true;
                        return null;
                    } else {
                        zzScanError(ZZ_NO_MATCH);
                    }
            }
        }
    }