public final ProtoParser.ignore_block_return ignore_block() throws RecognitionException {
        ProtoParser.ignore_block_return retval = new ProtoParser.ignore_block_return();
        retval.start = input.LT(1);

        Object root_0 = null;

        Token LEFTCURLY166=null;
        Token RIGHTCURLY168=null;
        ProtoParser.ignore_block_body_return ignore_block_body167 = null;


        Object LEFTCURLY166_tree=null;
        Object RIGHTCURLY168_tree=null;

        try {
            // com/dyuproject/protostuff/parser/ProtoParser.g:642:5: ( LEFTCURLY ( ignore_block_body )* RIGHTCURLY )
            // com/dyuproject/protostuff/parser/ProtoParser.g:642:9: LEFTCURLY ( ignore_block_body )* RIGHTCURLY
            {
            root_0 = (Object)adaptor.nil();

            LEFTCURLY166=(Token)match(input,LEFTCURLY,FOLLOW_LEFTCURLY_in_ignore_block2623); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            LEFTCURLY166_tree = (Object)adaptor.create(LEFTCURLY166);
            adaptor.addChild(root_0, LEFTCURLY166_tree);
            }
            // com/dyuproject/protostuff/parser/ProtoParser.g:642:19: ( ignore_block_body )*
            loop38:
            do {
                int alt38=2;
                switch ( input.LA(1) ) {
                case ASSIGN:
                case AT:
                case LEFTCURLY:
                case LEFTPAREN:
                case RIGHTPAREN:
                case LEFTSQUARE:
                case RIGHTSQUARE:
                case SEMICOLON:
                case COMMA:
                case PLUS:
                case MINUS:
                case TO:
                case TRUE:
                case FALSE:
                case PKG:
                case SYNTAX:
                case IMPORT:
                case OPTION:
                case MESSAGE:
                case SERVICE:
                case ENUM:
                case REQUIRED:
                case OPTIONAL:
                case REPEATED:
                case EXTENSIONS:
                case EXTEND:
                case GROUP:
                case RPC:
                case RETURNS:
                case INT32:
                case INT64:
                case UINT32:
                case UINT64:
                case SINT32:
                case SINT64:
                case FIXED32:
                case FIXED64:
                case SFIXED32:
                case SFIXED64:
                case FLOAT:
                case DOUBLE:
                case BOOL:
                case STRING:
                case BYTES:
                case DEFAULT:
                case MAX:
                case VOID:
                case ID:
                case FULL_ID:
                case NUMINT:
                case EXP:
                case NUMFLOAT:
                case NUMDOUBLE:
                case HEX_DIGIT:
                case HEX:
                case OCTAL:
                case COMMENT:
                case WS:
                case ESC_SEQ:
                case STRING_LITERAL:
                case UNICODE_ESC:
                case OCTAL_ESC:
                    {
                    alt38=1;
                    }
                    break;

                }

                switch (alt38) {
            	case 1 :
            	    // com/dyuproject/protostuff/parser/ProtoParser.g:642:19: ignore_block_body
            	    {
            	    pushFollow(FOLLOW_ignore_block_body_in_ignore_block2625);
            	    ignore_block_body167=ignore_block_body();

            	    state._fsp--;
            	    if (state.failed) return retval;
            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, ignore_block_body167.getTree());

            	    }
            	    break;

            	default :
            	    break loop38;
                }
            } while (true);

            RIGHTCURLY168=(Token)match(input,RIGHTCURLY,FOLLOW_RIGHTCURLY_in_ignore_block2628); if (state.failed) return retval;
            if ( state.backtracking==0 ) {
            RIGHTCURLY168_tree = (Object)adaptor.create(RIGHTCURLY168);
            adaptor.addChild(root_0, RIGHTCURLY168_tree);
            }

            }

            retval.stop = input.LT(-1);

            if ( state.backtracking==0 ) {

            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }
        finally {
        }
        return retval;
    }
public final ProtoParser . ignore_block_return ignore_block ( ) throws RecognitionException { ProtoParser . ignore_block_return retval = new ProtoParser . ignore_block_return ( ) ; retval . start = input . LT ( 1 ) ; Object root_0 = null ; Token LEFTCURLY166 = null ; Token RIGHTCURLY168 = null ; ProtoParser . ignore_block_body_return ignore_block_body167 = null ; Object LEFTCURLY166_tree = null ; Object RIGHTCURLY168_tree = null ; try { { root_0 = ( Object ) adaptor . nil ( ) ; LEFTCURLY166 = ( Token ) match ( input , LEFTCURLY , FOLLOW_LEFTCURLY_in_ignore_block2623 ) ; if ( state . failed ) return retval ; if ( state . backtracking == 0 ) { LEFTCURLY166_tree = ( Object ) adaptor . create ( LEFTCURLY166 ) ; adaptor . addChild ( root_0 , LEFTCURLY166_tree ) ; } loop38 : do { int alt38 = 2 ; switch ( input . LA ( 1 ) ) { case ASSIGN : case AT : case LEFTCURLY : case LEFTPAREN : case RIGHTPAREN : case LEFTSQUARE : case RIGHTSQUARE : case SEMICOLON : case COMMA : case PLUS : case MINUS : case TO : case TRUE : case FALSE : case PKG : case SYNTAX : case IMPORT : case OPTION : case MESSAGE : case SERVICE : case ENUM : case REQUIRED : case OPTIONAL : case REPEATED : case EXTENSIONS : case EXTEND : case GROUP : case RPC : case RETURNS : case INT32 : case INT64 : case UINT32 : case UINT64 : case SINT32 : case SINT64 : case FIXED32 : case FIXED64 : case SFIXED32 : case SFIXED64 : case FLOAT : case DOUBLE : case BOOL : case STRING : case BYTES : case DEFAULT : case MAX : case VOID : case ID : case FULL_ID : case NUMINT : case EXP : case NUMFLOAT : case NUMDOUBLE : case HEX_DIGIT : case HEX : case OCTAL : case COMMENT : case WS : case ESC_SEQ : case STRING_LITERAL : case UNICODE_ESC : case OCTAL_ESC : { alt38 = 1 ; } break ; } switch ( alt38 ) { case 1 : { pushFollow ( FOLLOW_ignore_block_body_in_ignore_block2625 ) ; ignore_block_body167 = ignore_block_body ( ) ; state . _fsp -- ; if ( state . failed ) return retval ; if ( state . backtracking == 0 ) adaptor . addChild ( root_0 , ignore_block_body167 . getTree ( ) ) ; } break ; default : break loop38 ; } } while ( true ) ; RIGHTCURLY168 = ( Token ) match ( input , RIGHTCURLY , FOLLOW_RIGHTCURLY_in_ignore_block2628 ) ; if ( state . failed ) return retval ; if ( state . backtracking == 0 ) { RIGHTCURLY168_tree = ( Object ) adaptor . create ( RIGHTCURLY168 ) ; adaptor . addChild ( root_0 , RIGHTCURLY168_tree ) ; } } retval . stop = input . LT ( - 1 ) ; if ( state . backtracking == 0 ) { retval . tree = ( Object ) adaptor . rulePostProcessing ( root_0 ) ; adaptor . setTokenBoundaries ( retval . tree , retval . start , retval . stop ) ; } } catch ( RecognitionException re ) { reportError ( re ) ; recover ( input , re ) ; retval . tree = ( Object ) adaptor . errorNode ( input , retval . start , input . LT ( - 1 ) , re ) ; } finally { } return retval ; }
com/dyuproject/protostuff/parser/ProtoParser.g:641:1: ignore_block : LEFTCURLY ( ignore_block_body )* RIGHTCURLY ;