@Override
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException
        {
            TokenStream input = (TokenStream) _input;
            int _s = s;
            switch (s)
            {
                case 0:
                    
                    int index2_1 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_1);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 1:
                    
                    int index2_2 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_2);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 2:
                    
                    int index2_3 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_3);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 3:
                    
                    int index2_4 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_4);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 4:
                    
                    int index2_5 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_5);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 5:
                    
                    int index2_6 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_6);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 6:
                    
                    int index2_7 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_7);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 7:
                    
                    int index2_8 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_8);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 8:
                    
                    int index2_9 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_9);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 9:
                    
                    int index2_10 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_10);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 10:
                    
                    int index2_11 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred2_CPP())) {
                        s = 13;
                    }
                    
                    else if ((true)) {
                        s = 14;
                    }
                    
                    input.seek(index2_11);
                    if (s >= 0) {
                        return s;
                    }
                    break;
            }
            if (CPPParser.this.state.backtracking > 0) {
                CPPParser.this.state.failed = true;
                return -1;
            }
            NoViableAltException nvae = new NoViableAltException(this.getDescription(), 2, _s, input);
            this.error(nvae);
            throw nvae;
        }
    }
    
    static final String DFA12_eotS = "\16\uffff";
    static final String DFA12_eofS = "\16\uffff";
    static final String DFA12_minS = "\1\37\13\4\2\uffff";
    static final String DFA12_maxS = "\1\51\13\54\2\uffff";
    static final String DFA12_acceptS = "\14\uffff\1\1\1\2";
    static final String DFA12_specialS = "\16\uffff}>";
    static final String[] DFA12_transitionS = { "\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13",
            "\1\14\31\uffff\1\15\15\uffff\1\14", "\1\14\31\uffff\1\15\15\uffff\1\14",
            "\1\14\31\uffff\1\15\15\uffff\1\14", "\1\14\31\uffff\1\15\15\uffff\1\14",
            "\1\14\31\uffff\1\15\15\uffff\1\14", "\1\14\31\uffff\1\15\15\uffff\1\14",
            "\1\14\31\uffff\1\15\15\uffff\1\14", "\1\14\31\uffff\1\15\15\uffff\1\14",
            "\1\14\31\uffff\1\15\15\uffff\1\14", "\1\14\31\uffff\1\15\15\uffff\1\14",
            "\1\14\31\uffff\1\15\15\uffff\1\14", "", "" };
    
    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
    static final short[][] DFA12_transition;
    
    static {
        int numStates = DFA12_transitionS.length;
        DFA12_transition = new short[numStates][];
        for (int i = 0; i < numStates; i++) {
            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
        }
    }
    
    class DFA12
            extends DFA
    {
        
        public DFA12(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 12;
            this.eot = DFA12_eot;
            this.eof = DFA12_eof;
            this.min = DFA12_min;
            this.max = DFA12_max;
            this.accept = DFA12_accept;
            this.special = DFA12_special;
            this.transition = DFA12_transition;
        }
        
        @Override
        public String getDescription()
        {
            return "190:1: type : ( combinedType | pointerType );";
        }
    }
    
    static final String DFA18_eotS = "\53\uffff";
    static final String DFA18_eofS = "\1\47\52\uffff";
    static final String DFA18_minS = "\1\4\46\0\4\uffff";
    static final String DFA18_maxS = "\1\127\46\0\4\uffff";
    static final String DFA18_acceptS = "\47\uffff\1\2\2\uffff\1\1";
    static final String DFA18_specialS = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"
            + "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30"
            + "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45" + "\4\uffff}>";
    static final String[] DFA18_transitionS = {
            "\1\20\1\12\1\13\1\14\1\15\1\16\1\17\21\uffff\1\1\1\47\1\6\1"
                    + "\34\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\21\1"
                    + "\uffff\1\7\1\22\1\47\1\23\1\24\1\25\1\31\1\32\1\uffff\1\33\1"
                    + "\26\1\27\1\30\27\uffff\1\2\1\3\2\uffff\1\4\1\5\1\10\1\11", "\1\uffff", "\1\uffff", "\1\uffff",
            "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff",
            "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff",
            "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff",
            "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "", "", "",
            "" };
    
    static final short[] DFA18_eot = DFA.unpackEncodedString(DFA18_eotS);
    static final short[] DFA18_eof = DFA.unpackEncodedString(DFA18_eofS);
    static final char[] DFA18_min = DFA.unpackEncodedStringToUnsignedChars(DFA18_minS);
    static final char[] DFA18_max = DFA.unpackEncodedStringToUnsignedChars(DFA18_maxS);
    static final short[] DFA18_accept = DFA.unpackEncodedString(DFA18_acceptS);
    static final short[] DFA18_special = DFA.unpackEncodedString(DFA18_specialS);
    static final short[][] DFA18_transition;
    
    static {
        int numStates = DFA18_transitionS.length;
        DFA18_transition = new short[numStates][];
        for (int i = 0; i < numStates; i++) {
            DFA18_transition[i] = DFA.unpackEncodedString(DFA18_transitionS[i]);
        }
    }
    
    class DFA18
            extends DFA
    {
        
        public DFA18(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 18;
            this.eot = DFA18_eot;
            this.eof = DFA18_eof;
            this.min = DFA18_min;
            this.max = DFA18_max;
            this.accept = DFA18_accept;
            this.special = DFA18_special;
            this.transition = DFA18_transition;
        }
        
        @Override
        public String getDescription()
        {
            return "296:1: stmtList : ( stmt stmtList | );";
        }
        
        @Override
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException
        {
            TokenStream input = (TokenStream) _input;
            int _s = s;
            switch (s)
            {
                case 0:
                    
                    int index18_1 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_1);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 1:
                    
                    int index18_2 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_2);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 2:
                    
                    int index18_3 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_3);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 3:
                    
                    int index18_4 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_4);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 4:
                    
                    int index18_5 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_5);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 5:
                    
                    int index18_6 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_6);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 6:
                    
                    int index18_7 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_7);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 7:
                    
                    int index18_8 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_8);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 8:
                    
                    int index18_9 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_9);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 9:
                    
                    int index18_10 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_10);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 10:
                    
                    int index18_11 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_11);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 11:
                    
                    int index18_12 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_12);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 12:
                    
                    int index18_13 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_13);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 13:
                    
                    int index18_14 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_14);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 14:
                    
                    int index18_15 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_15);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 15:
                    
                    int index18_16 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_16);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 16:
                    
                    int index18_17 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_17);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 17:
                    
                    int index18_18 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_18);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 18:
                    
                    int index18_19 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_19);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 19:
                    
                    int index18_20 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_20);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 20:
                    
                    int index18_21 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_21);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 21:
                    
                    int index18_22 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_22);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 22:
                    
                    int index18_23 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_23);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 23:
                    
                    int index18_24 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_24);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 24:
                    
                    int index18_25 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_25);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 25:
                    
                    int index18_26 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_26);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 26:
                    
                    int index18_27 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_27);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 27:
                    
                    int index18_28 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_28);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 28:
                    
                    int index18_29 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_29);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 29:
                    
                    int index18_30 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_30);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 30:
                    
                    int index18_31 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_31);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 31:
                    
                    int index18_32 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_32);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 32:
                    
                    int index18_33 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_33);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 33:
                    
                    int index18_34 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_34);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 34:
                    
                    int index18_35 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_35);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 35:
                    
                    int index18_36 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_36);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 36:
                    
                    int index18_37 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_37);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 37:
                    
                    int index18_38 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred29_CPP())) {
                        s = 42;
                    }
                    
                    else if ((true)) {
                        s = 39;
                    }
                    
                    input.seek(index18_38);
                    if (s >= 0) {
                        return s;
                    }
                    break;
            }
            if (CPPParser.this.state.backtracking > 0) {
                CPPParser.this.state.failed = true;
                return -1;
            }
            NoViableAltException nvae = new NoViableAltException(this.getDescription(), 18, _s, input);
            this.error(nvae);
            throw nvae;
        }
    }
    
    static final String DFA21_eotS = "\36\uffff";
    static final String DFA21_eofS = "\36\uffff";
    static final String DFA21_minS = "\1\4\13\uffff\21\0\1\uffff";
    static final String DFA21_maxS = "\1\127\13\uffff\21\0\1\uffff";
    static final String DFA21_acceptS = "\1\uffff\1\1\33\uffff\1\2";
    static final String DFA21_specialS = "\14\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"
            + "\14\1\15\1\16\1\17\1\20\1\uffff}>";
    static final String[] DFA21_transitionS = {
            "\1\32\1\24\1\25\1\26\1\27\1\30\1\31\14\uffff\1\34\6\uffff\1"
                    + "\20\13\1\1\33\1\uffff\1\21\43\uffff\1\14\1\15\2\uffff\1\16\1" + "\17\1\22\1\23", "", "", "", "",
            "", "", "", "", "", "", "", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff",
            "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff",
            "\1\uffff", "\1\uffff", "" };
    
    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
    static final short[][] DFA21_transition;
    
    static {
        int numStates = DFA21_transitionS.length;
        DFA21_transition = new short[numStates][];
        for (int i = 0; i < numStates; i++) {
            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
        }
    }
    
    class DFA21
            extends DFA
    {
        
        public DFA21(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 21;
            this.eot = DFA21_eot;
            this.eof = DFA21_eof;
            this.min = DFA21_min;
            this.max = DFA21_max;
            this.accept = DFA21_accept;
            this.special = DFA21_special;
            this.transition = DFA21_transition;
        }
        
        @Override
        public String getDescription()
        {
            return "367:5: ( forInit )?";
        }
        
        @Override
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException
        {
            TokenStream input = (TokenStream) _input;
            int _s = s;
            switch (s)
            {
                case 0:
                    
                    int index21_12 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_12);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 1:
                    
                    int index21_13 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_13);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 2:
                    
                    int index21_14 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_14);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 3:
                    
                    int index21_15 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_15);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 4:
                    
                    int index21_16 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_16);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 5:
                    
                    int index21_17 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_17);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 6:
                    
                    int index21_18 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_18);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 7:
                    
                    int index21_19 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_19);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 8:
                    
                    int index21_20 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_20);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 9:
                    
                    int index21_21 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_21);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 10:
                    
                    int index21_22 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_22);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 11:
                    
                    int index21_23 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_23);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 12:
                    
                    int index21_24 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_24);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 13:
                    
                    int index21_25 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_25);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 14:
                    
                    int index21_26 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_26);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 15:
                    
                    int index21_27 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_27);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 16:
                    
                    int index21_28 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred43_CPP())) {
                        s = 1;
                    }
                    
                    else if ((true)) {
                        s = 29;
                    }
                    
                    input.seek(index21_28);
                    if (s >= 0) {
                        return s;
                    }
                    break;
            }
            if (CPPParser.this.state.backtracking > 0) {
                CPPParser.this.state.failed = true;
                return -1;
            }
            NoViableAltException nvae = new NoViableAltException(this.getDescription(), 21, _s, input);
            this.error(nvae);
            throw nvae;
        }
    }
    
    static final String DFA29_eotS = "\23\uffff";
    static final String DFA29_eofS = "\23\uffff";
    static final String DFA29_minS = "\1\4\20\0\2\uffff";
    static final String DFA29_maxS = "\1\127\20\0\2\uffff";
    static final String DFA29_acceptS = "\21\uffff\1\1\1\2";
    static final String DFA29_specialS = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"
            + "\14\1\15\1\16\1\17\2\uffff}>";
    static final String[] DFA29_transitionS = {
            "\1\17\1\11\1\12\1\13\1\14\1\15\1\16\23\uffff\1\5\13\uffff\1"
                    + "\20\1\uffff\1\6\43\uffff\1\1\1\2\2\uffff\1\3\1\4\1\7\1\10", "\1\uffff", "\1\uffff", "\1\uffff",
            "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff",
            "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", "", "" };
    
    static final short[] DFA29_eot = DFA.unpackEncodedString(DFA29_eotS);
    static final short[] DFA29_eof = DFA.unpackEncodedString(DFA29_eofS);
    static final char[] DFA29_min = DFA.unpackEncodedStringToUnsignedChars(DFA29_minS);
    static final char[] DFA29_max = DFA.unpackEncodedStringToUnsignedChars(DFA29_maxS);
    static final short[] DFA29_accept = DFA.unpackEncodedString(DFA29_acceptS);
    static final short[] DFA29_special = DFA.unpackEncodedString(DFA29_specialS);
    static final short[][] DFA29_transition;
    
    static {
        int numStates = DFA29_transitionS.length;
        DFA29_transition = new short[numStates][];
        for (int i = 0; i < numStates; i++) {
            DFA29_transition[i] = DFA.unpackEncodedString(DFA29_transitionS[i]);
        }
    }
    
    class DFA29
            extends DFA
    {
        
        public DFA29(BaseRecognizer recognizer)
        {
            this.recognizer = recognizer;
            this.decisionNumber = 29;
            this.eot = DFA29_eot;
            this.eof = DFA29_eof;
            this.min = DFA29_min;
            this.max = DFA29_max;
            this.accept = DFA29_accept;
            this.special = DFA29_special;
            this.transition = DFA29_transition;
        }
        
        @Override
        public String getDescription()
        {
            return "507:1: exprASSIGN : ( exprLOGICAL_OR (op= '=' | op= '+=' | op= '-=' | op= '*=' | op= '/=' | op= '%=' | op= '<<=' | op= '>>=' | op= '&=' | op= '^=' | op= '|=' ) exprASSIGN | exprTERNARY );";
        }
        
        @Override
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException
        {
            TokenStream input = (TokenStream) _input;
            int _s = s;
            switch (s)
            {
                case 0:
                    
                    int index29_1 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_1);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 1:
                    
                    int index29_2 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_2);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 2:
                    
                    int index29_3 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_3);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 3:
                    
                    int index29_4 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_4);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 4:
                    
                    int index29_5 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_5);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 5:
                    
                    int index29_6 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_6);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 6:
                    
                    int index29_7 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_7);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 7:
                    
                    int index29_8 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_8);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 8:
                    
                    int index29_9 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_9);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 9:
                    
                    int index29_10 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_10);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 10:
                    
                    int index29_11 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_11);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 11:
                    
                    int index29_12 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_12);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 12:
                    
                    int index29_13 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_13);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 13:
                    
                    int index29_14 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_14);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 14:
                    
                    int index29_15 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_15);
                    if (s >= 0) {
                        return s;
                    }
                    break;
                case 15:
                    
                    int index29_16 = input.index();
                    input.rewind();
                    s = -1;
                    if ((CPPParser.this.synpred61_CPP())) {
                        s = 17;
                    }
                    
                    else if ((true)) {
                        s = 18;
                    }
                    
                    input.seek(index29_16);
                    if (s >= 0) {
                        return s;
                    }
                    break;
            }
            if (CPPParser.this.state.backtracking > 0) {
                CPPParser.this.state.failed = true;
                return -1;
            }
            NoViableAltException nvae = new NoViableAltException(this.getDescription(), 29, _s, input);
            this.error(nvae);
            throw nvae;
        }
    }
    
    public static final BitSet FOLLOW_declarationList_in_program59 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_declaration_in_declarationList81 = new BitSet(new long[] { 0x000003FF80400000L });
    public static final BitSet FOLLOW_declarationList_in_declarationList95 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_varDecl_in_declaration121 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_directive_in_declaration127 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_funcDecl_in_declaration133 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_22_in_directive150 = new BitSet(new long[] { 0x0000000000000010L });
    public static final BitSet FOLLOW_IDENTIFIER_in_directive154 = new BitSet(new long[] { 0x00000000000007F0L });
    public static final BitSet FOLLOW_pp_token_in_directive156 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_IDENTIFIER_in_pp_token175 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_literal_in_pp_token183 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_type_in_varDecl199 = new BitSet(new long[] { 0x0000000000000010L });
    public static final BitSet FOLLOW_varList_in_varDecl207 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_varDecl209 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_var_in_varList228 = new BitSet(new long[] { 0x0000000001000000L });
    public static final BitSet FOLLOW_varListRest_in_varList236 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_24_in_varListRest263 = new BitSet(new long[] { 0x0000000000000010L });
    public static final BitSet FOLLOW_var_in_varListRest265 = new BitSet(new long[] { 0x0000000001000000L });
    public static final BitSet FOLLOW_varListRest_in_varListRest273 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_IDENTIFIER_in_var314 = new BitSet(new long[] { 0x000000000A000000L });
    public static final BitSet FOLLOW_arrayDecl_in_var321 = new BitSet(new long[] { 0x0000000008000002L });
    public static final BitSet FOLLOW_initializer_in_var335 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_25_in_arrayDecl365 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_arrayDecl367 = new BitSet(new long[] { 0x0000000004000000L });
    public static final BitSet FOLLOW_26_in_arrayDecl369 = new BitSet(new long[] { 0x0000000002000000L });
    public static final BitSet FOLLOW_25_in_arrayDecl379 = new BitSet(new long[] { 0x0000000004000000L });
    public static final BitSet FOLLOW_26_in_arrayDecl381 = new BitSet(new long[] { 0x0000000002000000L });
    public static final BitSet FOLLOW_arrayDecl_in_arrayDecl391 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_27_in_initializer425 = new BitSet(new long[] { 0x00001400500007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_varInit_in_initializer431 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_arrayInit_in_initializer437 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_arrayInitList_in_initializer443 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_28_in_arrayInitList466 = new BitSet(new long[] { 0x0000000010000000L });
    public static final BitSet FOLLOW_arrayInit_in_arrayInitList473 = new BitSet(new long[] { 0x0000000021000000L });
    public static final BitSet FOLLOW_arrayInitListEx_in_arrayInitList481 = new BitSet(
            new long[] { 0x0000000020000000L });
    public static final BitSet FOLLOW_29_in_arrayInitList489 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_24_in_arrayInitListEx514 = new BitSet(new long[] { 0x0000000010000000L });
    public static final BitSet FOLLOW_arrayInit_in_arrayInitListEx520 = new BitSet(new long[] { 0x0000000001000000L });
    public static final BitSet FOLLOW_arrayInitListEx_in_arrayInitListEx528 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_28_in_arrayInit561 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_varInit_in_arrayInit568 = new BitSet(new long[] { 0x0000000021000000L });
    public static final BitSet FOLLOW_arrayInitEx_in_arrayInit576 = new BitSet(new long[] { 0x0000000020000000L });
    public static final BitSet FOLLOW_29_in_arrayInit584 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_28_in_arrayInit596 = new BitSet(new long[] { 0x0000000020000000L });
    public static final BitSet FOLLOW_29_in_arrayInit598 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_24_in_arrayInitEx619 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_varInit_in_arrayInitEx626 = new BitSet(new long[] { 0x0000000001000000L });
    public static final BitSet FOLLOW_arrayInitEx_in_arrayInitEx634 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_expr_in_varInit667 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_combinedType_in_type690 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_pointerType_in_type696 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_combinedType_in_pointerType715 = new BitSet(new long[] { 0x0000000040000000L });
    public static final BitSet FOLLOW_pointerTypeRest_in_pointerType723 =
                                                                          new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_30_in_pointerTypeRest748 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_30_in_pointerTypeRest762 = new BitSet(new long[] { 0x0000000040000000L });
    public static final BitSet FOLLOW_pointerTypeRest_in_pointerTypeRest770 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_primitiveType_in_combinedType789 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_31_in_primitiveType813 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_32_in_primitiveType821 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_33_in_primitiveType829 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_34_in_primitiveType837 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_35_in_primitiveType845 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_36_in_primitiveType853 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_37_in_primitiveType861 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_38_in_primitiveType869 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_39_in_primitiveType877 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_40_in_primitiveType885 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_41_in_primitiveType893 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_type_in_funcDecl912 = new BitSet(new long[] { 0x0000000000000010L });
    public static final BitSet FOLLOW_IDENTIFIER_in_funcDecl922 = new BitSet(new long[] { 0x0000040000000000L });
    public static final BitSet FOLLOW_42_in_funcDecl929 = new BitSet(new long[] { 0x00000BFF80000000L });
    public static final BitSet FOLLOW_paraList_in_funcDecl936 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_funcDecl944 = new BitSet(new long[] { 0x0000000010000000L });
    public static final BitSet FOLLOW_blockStmt_in_funcDecl951 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_para_in_paraList978 = new BitSet(new long[] { 0x0000000001000000L });
    public static final BitSet FOLLOW_paraListRest_in_paraList986 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_type_in_para1019 = new BitSet(new long[] { 0x0000100000000010L });
    public static final BitSet FOLLOW_44_in_para1030 = new BitSet(new long[] { 0x0000000000000010L });
    public static final BitSet FOLLOW_IDENTIFIER_in_para1040 = new BitSet(new long[] { 0x0000000002000000L });
    public static final BitSet FOLLOW_arrayDecl_in_para1043 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_24_in_paraListRest1070 = new BitSet(new long[] { 0x000003FF80000000L });
    public static final BitSet FOLLOW_para_in_paraListRest1072 = new BitSet(new long[] { 0x0000000001000000L });
    public static final BitSet FOLLOW_paraListRest_in_paraListRest1080 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_28_in_blockStmt1113 = new BitSet(new long[] { 0x01EFB7FFF00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmtList_in_blockStmt1119 = new BitSet(new long[] { 0x0000000020000000L });
    public static final BitSet FOLLOW_29_in_blockStmt1127 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_stmt_in_stmtList1152 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmtList_in_stmtList1160 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_blockStmt_in_stmt1189 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprStmt_in_stmt1197 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_ifStmt_in_stmt1203 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_forStmt_in_stmt1210 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_whileStmt_in_stmt1217 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_doStmt_in_stmt1224 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_breakStmt_in_stmt1231 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_continueStmt_in_stmt1238 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_returnStmt_in_stmt1245 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_switchStmt_in_stmt1251 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_caseStmt_in_stmt1257 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_defaultStmt_in_stmt1263 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_declarationStmt_in_stmt1269 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_varDecl_in_declarationStmt1290 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_expr_in_exprStmt1317 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_exprStmt1325 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_45_in_ifStmt1350 = new BitSet(new long[] { 0x0000040000000000L });
    public static final BitSet FOLLOW_42_in_ifStmt1357 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_ifStmt1364 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_ifStmt1372 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmt_in_ifStmt1379 = new BitSet(new long[] { 0x0000400000000002L });
    public static final BitSet FOLLOW_46_in_ifStmt1400 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmt_in_ifStmt1407 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_47_in_forStmt1441 = new BitSet(new long[] { 0x0000040000000000L });
    public static final BitSet FOLLOW_42_in_forStmt1443 = new BitSet(new long[] { 0x000017FFC08007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_forInit_in_forStmt1450 = new BitSet(new long[] { 0x00001400408007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_forStmt1459 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_forStmt1468 = new BitSet(new long[] { 0x00001C00400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprList_in_forStmt1475 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_forStmt1484 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmt_in_forStmt1491 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_varDecl_in_forInit1518 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprList_in_forInit1526 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_forInit1528 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_23_in_forInit1536 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_48_in_whileStmt1553 = new BitSet(new long[] { 0x0000040000000000L });
    public static final BitSet FOLLOW_42_in_whileStmt1560 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_whileStmt1567 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_whileStmt1575 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmt_in_whileStmt1582 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_49_in_doStmt1609 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmt_in_doStmt1616 = new BitSet(new long[] { 0x0001000000000000L });
    public static final BitSet FOLLOW_48_in_doStmt1624 = new BitSet(new long[] { 0x0000040000000000L });
    public static final BitSet FOLLOW_42_in_doStmt1631 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_doStmt1638 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_doStmt1646 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_doStmt1653 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_50_in_switchStmt1678 = new BitSet(new long[] { 0x0000040000000000L });
    public static final BitSet FOLLOW_42_in_switchStmt1684 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_switchStmt1690 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_switchStmt1698 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmt_in_switchStmt1704 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_51_in_caseStmt1731 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_caseStmt1737 = new BitSet(new long[] { 0x0010000000000000L });
    public static final BitSet FOLLOW_52_in_caseStmt1745 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmtList_in_caseStmt1751 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_53_in_defaultStmt1778 = new BitSet(new long[] { 0x0010000000000000L });
    public static final BitSet FOLLOW_52_in_defaultStmt1784 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmtList_in_defaultStmt1790 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_54_in_breakStmt1820 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_breakStmt1822 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_55_in_continueStmt1845 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_continueStmt1847 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_56_in_returnStmt1872 = new BitSet(new long[] { 0x00001400408007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_returnStmt1880 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_returnStmt1891 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_IDENTIFIER_in_callStmt1918 = new BitSet(new long[] { 0x0000040000000000L });
    public static final BitSet FOLLOW_42_in_callStmt1925 = new BitSet(new long[] { 0x00001C00400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprList_in_callStmt1932 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_callStmt1940 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_callStmt1947 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_expr_in_exprList1972 = new BitSet(new long[] { 0x0000000001000000L });
    public static final BitSet FOLLOW_exprListRest_in_exprList1981 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_24_in_exprListRest2014 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_exprListRest2021 = new BitSet(new long[] { 0x0000000001000000L });
    public static final BitSet FOLLOW_exprListRest_in_exprListRest2030 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprASSIGN_in_expr2059 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprLOGICAL_OR_in_exprASSIGN2078 = new BitSet(new long[] { 0xFE00000008000000L,
            0x0000000000000007L });
    public static final BitSet FOLLOW_27_in_exprASSIGN2090 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_57_in_exprASSIGN2104 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_58_in_exprASSIGN2117 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_59_in_exprASSIGN2130 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_60_in_exprASSIGN2143 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_61_in_exprASSIGN2156 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_62_in_exprASSIGN2169 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_63_in_exprASSIGN2181 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_64_in_exprASSIGN2193 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_65_in_exprASSIGN2206 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_66_in_exprASSIGN2219 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprASSIGN_in_exprASSIGN2234 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprTERNARY_in_exprASSIGN2248 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprLOGICAL_OR_in_exprTERNARY2263 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000000008L });
    public static final BitSet FOLLOW_exprTERNARYEx_in_exprTERNARY2271 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_67_in_exprTERNARYEx2296 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprASSIGN_in_exprTERNARYEx2303 = new BitSet(new long[] { 0x0010000000000000L });
    public static final BitSet FOLLOW_52_in_exprTERNARYEx2311 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprASSIGN_in_exprTERNARYEx2318 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprLOGICAL_AND_in_exprLOGICAL_OR2343 = new BitSet(new long[] {
            0x0000000000000000L, 0x0000000000000010L });
    public static final BitSet FOLLOW_exprLOGICAL_OREx_in_exprLOGICAL_OR2351 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_68_in_exprLOGICAL_OREx2378 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprLOGICAL_AND_in_exprLOGICAL_OREx2385 = new BitSet(new long[] {
            0x0000000000000000L, 0x0000000000000010L });
    public static final BitSet FOLLOW_exprLOGICAL_OREx_in_exprLOGICAL_OREx2399 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprBITWISE_OR_in_exprLOGICAL_AND2420 = new BitSet(new long[] {
            0x0000000000000000L, 0x0000000000000020L });
    public static final BitSet FOLLOW_exprLOGICAL_ANDEx_in_exprLOGICAL_AND2428 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_69_in_exprLOGICAL_ANDEx2455 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprBITWISE_OR_in_exprLOGICAL_ANDEx2462 = new BitSet(new long[] {
            0x0000000000000000L, 0x0000000000000020L });
    public static final BitSet FOLLOW_exprLOGICAL_ANDEx_in_exprLOGICAL_ANDEx2476 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprBITWISE_XOR_in_exprBITWISE_OR2497 = new BitSet(new long[] {
            0x0000000000000000L, 0x0000000000000040L });
    public static final BitSet FOLLOW_exprBITWISE_OREx_in_exprBITWISE_OR2505 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_70_in_exprBITWISE_OREx2532 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprBITWISE_XOR_in_exprBITWISE_OREx2539 = new BitSet(new long[] {
            0x0000000000000000L, 0x0000000000000040L });
    public static final BitSet FOLLOW_exprBITWISE_OREx_in_exprBITWISE_OREx2553 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprBITWISE_AND_in_exprBITWISE_XOR2574 = new BitSet(new long[] {
            0x0000000000000000L, 0x0000000000000080L });
    public static final BitSet FOLLOW_exprBITWISE_XOREx_in_exprBITWISE_XOR2582 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_71_in_exprBITWISE_XOREx2609 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprBITWISE_AND_in_exprBITWISE_XOREx2616 = new BitSet(new long[] {
            0x0000000000000000L, 0x0000000000000080L });
    public static final BitSet FOLLOW_exprBITWISE_XOREx_in_exprBITWISE_XOREx2630 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprEQUALITY_in_exprBITWISE_AND2651 = new BitSet(
            new long[] { 0x0000100000000000L });
    public static final BitSet FOLLOW_exprBITWISE_ANDEx_in_exprBITWISE_AND2659 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_44_in_exprBITWISE_ANDEx2686 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprEQUALITY_in_exprBITWISE_ANDEx2693 = new BitSet(
            new long[] { 0x0000100000000000L });
    public static final BitSet FOLLOW_exprBITWISE_ANDEx_in_exprBITWISE_ANDEx2707 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprRELATION_in_exprEQUALITY2728 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000000300L });
    public static final BitSet FOLLOW_exprEQUALITYEx_in_exprEQUALITY2736 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_72_in_exprEQUALITYEx2765 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_73_in_exprEQUALITYEx2778 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprRELATION_in_exprEQUALITYEx2790 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000000300L });
    public static final BitSet FOLLOW_exprEQUALITYEx_in_exprEQUALITYEx2804 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprSHIFT_in_exprRELATION2825 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000003C00L });
    public static final BitSet FOLLOW_exprRELATIONEx_in_exprRELATION2833 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_74_in_exprRELATIONEx2862 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_75_in_exprRELATIONEx2876 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_76_in_exprRELATIONEx2889 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_77_in_exprRELATIONEx2903 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprSHIFT_in_exprRELATIONEx2919 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000003C00L });
    public static final BitSet FOLLOW_exprRELATIONEx_in_exprRELATIONEx2933 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprADD_in_exprSHIFT2954 = new BitSet(new long[] { 0x0000000000000000L,
            0x000000000000C000L });
    public static final BitSet FOLLOW_exprSHIFTEx_in_exprSHIFT2962 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_78_in_exprSHIFTEx2991 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_79_in_exprSHIFTEx3003 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprADD_in_exprSHIFTEx3018 = new BitSet(new long[] { 0x0000000000000000L,
            0x000000000000C000L });
    public static final BitSet FOLLOW_exprSHIFTEx_in_exprSHIFTEx3032 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprMUL_in_exprADD3053 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000030000L });
    public static final BitSet FOLLOW_exprADDEx_in_exprADD3061 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_80_in_exprADDEx3090 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_81_in_exprADDEx3104 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprMUL_in_exprADDEx3121 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000030000L });
    public static final BitSet FOLLOW_exprADDEx_in_exprADDEx3135 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprUNARY_in_exprMUL3154 = new BitSet(new long[] { 0x0000000040000000L,
            0x00000000000C0000L });
    public static final BitSet FOLLOW_exprMULEx_in_exprMUL3162 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_30_in_exprMULEx3189 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_82_in_exprMULEx3203 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_83_in_exprMULEx3217 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprUNARY_in_exprMULEx3234 = new BitSet(new long[] { 0x0000000040000000L,
            0x00000000000C0000L });
    public static final BitSet FOLLOW_exprMULEx_in_exprMULEx3248 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_80_in_exprUNARY3277 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_81_in_exprUNARY3291 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_84_in_exprUNARY3305 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_85_in_exprUNARY3318 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_30_in_exprUNARY3331 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_44_in_exprUNARY3345 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_86_in_exprUNARY3359 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_87_in_exprUNARY3373 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprUNARY_in_exprUNARY3389 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprPostfix_in_exprUNARY3404 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprPrimary_in_exprPostfix3419 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000300000L });
    public static final BitSet FOLLOW_exprPostfixEx_in_exprPostfix3427 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_84_in_exprPostfixEx3456 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000300000L });
    public static final BitSet FOLLOW_85_in_exprPostfixEx3469 = new BitSet(new long[] { 0x0000000000000000L,
            0x0000000000300000L });
    public static final BitSet FOLLOW_exprPostfixEx_in_exprPostfixEx3491 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_literal_in_exprPrimary3512 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_IDENTIFIER_in_exprPrimary3521 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_42_in_exprPrimary3529 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_exprPrimary3531 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_exprPrimary3533 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_callExpr_in_exprPrimary3540 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_arrayElement_in_exprPrimary3547 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_IDENTIFIER_in_callExpr3568 = new BitSet(new long[] { 0x0000040000000000L });
    public static final BitSet FOLLOW_42_in_callExpr3575 = new BitSet(new long[] { 0x00001C00400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_exprList_in_callExpr3582 = new BitSet(new long[] { 0x0000080000000000L });
    public static final BitSet FOLLOW_43_in_callExpr3591 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_IDENTIFIER_in_arrayElement3618 = new BitSet(new long[] { 0x0000000002000000L });
    public static final BitSet FOLLOW_25_in_arrayElement3625 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_arrayElement3632 = new BitSet(new long[] { 0x0000000004000000L });
    public static final BitSet FOLLOW_26_in_arrayElement3640 = new BitSet(new long[] { 0x0000000002000000L });
    public static final BitSet FOLLOW_index_in_arrayElement3647 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_25_in_index3674 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_expr_in_index3681 = new BitSet(new long[] { 0x0000000004000000L });
    public static final BitSet FOLLOW_26_in_index3689 = new BitSet(new long[] { 0x0000000002000000L });
    public static final BitSet FOLLOW_index_in_index3696 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_CHARACTER_LITERAL_in_literal3727 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_STRING_LITERAL_in_literal3737 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_HEX_LITERAL_in_literal3747 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_DECIMAL_LITERAL_in_literal3757 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_OCTAL_LITERAL_in_literal3767 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_FLOATING_POINT_LITERAL_in_literal3777 = new BitSet(
            new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_varDecl_in_synpred2_CPP121 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_stmt_in_synpred29_CPP1152 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmtList_in_synpred29_CPP1160 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_46_in_synpred42_CPP1400 = new BitSet(new long[] { 0x01EFB7FFD00007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_stmt_in_synpred42_CPP1407 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_forInit_in_synpred43_CPP1450 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprList_in_synpred45_CPP1475 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprList_in_synpred47_CPP1526 = new BitSet(new long[] { 0x0000000000800000L });
    public static final BitSet FOLLOW_23_in_synpred47_CPP1528 = new BitSet(new long[] { 0x0000000000000002L });
    public static final BitSet FOLLOW_exprLOGICAL_OR_in_synpred61_CPP2078 = new BitSet(new long[] {
            0xFE00000008000000L, 0x0000000000000007L });
    public static final BitSet FOLLOW_27_in_synpred61_CPP2090 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_57_in_synpred61_CPP2104 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_58_in_synpred61_CPP2117 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_59_in_synpred61_CPP2130 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_60_in_synpred61_CPP2143 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_61_in_synpred61_CPP2156 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L });
    public static final BitSet FOLLOW_62_in_synpred61_CPP2169 = new BitSet(new long[] { 0x00001400400007F0L,
            0x0000000000F30000L }