simplecparser.m

来自「antlr最新版本V3源代码」· M 代码 · 共 1,944 行 · 第 1/5 页

M
1,944
字号
		// rule labels		[_forStat24 release];		[_expr25 release];		[_block27 release];		[_assignStat28 release];		// rule refs in alts with rewrites		[_retval setStop:[input LT:-1]];		    [_retval setTree:(id)[treeAdaptor postProcessTree:root_0]];		    [treeAdaptor setBoundariesForTree:[_retval tree] fromToken:[_retval start] toToken:[_retval stop]];	}	return _retval;}// $ANTLR end stat// $ANTLR start forStat// SimpleC.g:65:1: forStat : 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( 'for' $start expr $next block ) ;- (SimpleCParser_forStat_return *) forStat{    SimpleCParser_forStat_return * _retval = [[SimpleCParser_forStat_return alloc] init];     [_retval setStart:[input LT:1]];    id root_0 = nil;    // token labels    ANTLRToken * _string_literal31 = nil;    ANTLRToken * _char_literal32 = nil;    ANTLRToken * _char_literal33 = nil;    ANTLRToken * _char_literal35 = nil;    ANTLRToken * _char_literal36 = nil;    // token+rule list labels    // rule labels    SimpleCParser_assignStat_return * _start = nil;    SimpleCParser_assignStat_return * _next = nil;    SimpleCParser_expr_return * _expr34 = nil;    SimpleCParser_block_return * _block37 = nil;    // rule list labels    // rule refs in alts with rewrites    NSMutableArray *_list_expr = [[NSMutableArray alloc] init];    NSMutableArray *_list_assignStat = [[NSMutableArray alloc] init];    NSMutableArray *_list_block = [[NSMutableArray alloc] init];    NSMutableArray *_list_21 = [[NSMutableArray alloc] init];    NSMutableArray *_list_24 = [[NSMutableArray alloc] init];    NSMutableArray *_list_SimpleCParser_FOR = [[NSMutableArray alloc] init];    NSMutableArray *_list_22 = [[NSMutableArray alloc] init];    id _string_literal31_tree = nil;    id _char_literal32_tree = nil;    id _char_literal33_tree = nil;    id _char_literal35_tree = nil;    id _char_literal36_tree = nil;    @try {        // SimpleC.g:66:9: ( 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( 'for' $start expr $next block ) ) // ruleBlockSingleAlt        // SimpleC.g:66:9: 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block // alt        {        _string_literal31=(ANTLRToken *)[input LT:1];        [_string_literal31 retain];        [self match:input tokenType:SimpleCParser_FOR follow:FOLLOW_SimpleCParser_FOR_in_forStat507];         [_list_SimpleCParser_FOR addObject:_string_literal31];        _char_literal32=(ANTLRToken *)[input LT:1];        [_char_literal32 retain];        [self match:input tokenType:22 follow:FOLLOW_22_in_forStat509];         [_list_22 addObject:_char_literal32];        [following addObject:FOLLOW_assignStat_in_forStat513];        _start = [self assignStat];        [following removeLastObject];        [_list_assignStat addObject:[_start tree]];        _char_literal33=(ANTLRToken *)[input LT:1];        [_char_literal33 retain];        [self match:input tokenType:21 follow:FOLLOW_21_in_forStat515];         [_list_21 addObject:_char_literal33];        [following addObject:FOLLOW_expr_in_forStat517];        _expr34 = [self expr];        [following removeLastObject];        [_list_expr addObject:[_expr34 tree]];        _char_literal35=(ANTLRToken *)[input LT:1];        [_char_literal35 retain];        [self match:input tokenType:21 follow:FOLLOW_21_in_forStat519];         [_list_21 addObject:_char_literal35];        [following addObject:FOLLOW_assignStat_in_forStat523];        _next = [self assignStat];        [following removeLastObject];        [_list_assignStat addObject:[_next tree]];        _char_literal36=(ANTLRToken *)[input LT:1];        [_char_literal36 retain];        [self match:input tokenType:24 follow:FOLLOW_24_in_forStat525];         [_list_24 addObject:_char_literal36];        [following addObject:FOLLOW_block_in_forStat527];        _block37 = [self block];        [following removeLastObject];        [_list_block addObject:[_block37 tree]];        // AST REWRITE        int i_0 = 0;        [_retval setTree:root_0];        root_0 = (id)[treeAdaptor emptyTree];        // 67:9: -> ^( 'for' $start expr $next block )        {            // SimpleC.g:67:12: ^( 'for' $start expr $next block )            {            id root_1 = (id)[treeAdaptor emptyTree];            root_1 = (id)[treeAdaptor makeToken:(ANTLRToken *)[_list_SimpleCParser_FOR objectAtIndex:i_0] parentOf:root_1];            [treeAdaptor addChild:[_start tree] toTree:root_1];            [treeAdaptor addChild:(id<ANTLRTree>)[_list_expr objectAtIndex:i_0] toTree:root_1];            [treeAdaptor addChild:[_next tree] toTree:root_1];            [treeAdaptor addChild:(id<ANTLRTree>)[_list_block objectAtIndex:i_0] toTree:root_1];            [treeAdaptor addChild:root_1 toTree:root_0];            }        }        }    }	@catch (ANTLRRecognitionException *re) {		[self reportError:re];		[self recover:input exception:re];	}	@finally {		// token labels		[_string_literal31 release];		[_char_literal32 release];		[_char_literal33 release];		[_char_literal35 release];		[_char_literal36 release];		// token+rule list labels		// rule labels		[_start release];		[_next release];		[_expr34 release];		[_block37 release];		// rule refs in alts with rewrites		[_list_expr release];		[_list_assignStat release];		[_list_block release];		[_list_21 release];		[_list_24 release];		[_list_SimpleCParser_FOR release];		[_list_22 release];		[_retval setStop:[input LT:-1]];		    [_retval setTree:(id)[treeAdaptor postProcessTree:root_0]];		    [treeAdaptor setBoundariesForTree:[_retval tree] fromToken:[_retval start] toToken:[_retval stop]];	}	return _retval;}// $ANTLR end forStat// $ANTLR start assignStat// SimpleC.g:70:1: assignStat : ID EQ expr -> ^( EQ ID expr ) ;- (SimpleCParser_assignStat_return *) assignStat{    SimpleCParser_assignStat_return * _retval = [[SimpleCParser_assignStat_return alloc] init];     [_retval setStart:[input LT:1]];    id root_0 = nil;    // token labels    ANTLRToken * _ID38 = nil;    ANTLRToken * _EQ39 = nil;    // token+rule list labels    // rule labels    SimpleCParser_expr_return * _expr40 = nil;    // rule list labels    // rule refs in alts with rewrites    NSMutableArray *_list_expr = [[NSMutableArray alloc] init];    NSMutableArray *_list_SimpleCParser_EQ = [[NSMutableArray alloc] init];    NSMutableArray *_list_SimpleCParser_ID = [[NSMutableArray alloc] init];    id _ID38_tree = nil;    id _EQ39_tree = nil;    @try {        // SimpleC.g:71:9: ( ID EQ expr -> ^( EQ ID expr ) ) // ruleBlockSingleAlt        // SimpleC.g:71:9: ID EQ expr // alt        {        _ID38=(ANTLRToken *)[input LT:1];        [_ID38 retain];        [self match:input tokenType:SimpleCParser_ID follow:FOLLOW_SimpleCParser_ID_in_assignStat570];         [_list_SimpleCParser_ID addObject:_ID38];        _EQ39=(ANTLRToken *)[input LT:1];        [_EQ39 retain];        [self match:input tokenType:SimpleCParser_EQ follow:FOLLOW_SimpleCParser_EQ_in_assignStat572];         [_list_SimpleCParser_EQ addObject:_EQ39];        [following addObject:FOLLOW_expr_in_assignStat574];        _expr40 = [self expr];        [following removeLastObject];        [_list_expr addObject:[_expr40 tree]];        // AST REWRITE        int i_0 = 0;        [_retval setTree:root_0];        root_0 = (id)[treeAdaptor emptyTree];        // 71:20: -> ^( EQ ID expr )        {            // SimpleC.g:71:23: ^( EQ ID expr )            {            id root_1 = (id)[treeAdaptor emptyTree];            root_1 = (id)[treeAdaptor makeToken:(ANTLRToken *)[_list_SimpleCParser_EQ objectAtIndex:i_0] parentOf:root_1];            [treeAdaptor addTokenAsChild:(ANTLRToken *)[_list_SimpleCParser_ID objectAtIndex:i_0] toTree:root_1];            [treeAdaptor addChild:(id<ANTLRTree>)[_list_expr objectAtIndex:i_0] toTree:root_1];            [treeAdaptor addChild:root_1 toTree:root_0];            }        }        }    }	@catch (ANTLRRecognitionException *re) {		[self reportError:re];		[self recover:input exception:re];	}	@finally {		// token labels		[_ID38 release];		[_EQ39 release];		// token+rule list labels		// rule labels		[_expr40 release];		// rule refs in alts with rewrites		[_list_expr release];		[_list_SimpleCParser_EQ release];		[_list_SimpleCParser_ID release];		[_retval setStop:[input LT:-1]];		    [_retval setTree:(id)[treeAdaptor postProcessTree:root_0]];		    [treeAdaptor setBoundariesForTree:[_retval tree] fromToken:[_retval start] toToken:[_retval stop]];	}	return _retval;}// $ANTLR end assignStat// $ANTLR start expr// SimpleC.g:74:1: expr : condExpr ;- (SimpleCParser_expr_return *) expr{    SimpleCParser_expr_return * _retval = [[SimpleCParser_expr_return alloc] init];     [_retval setStart:[input LT:1]];    id root_0 = nil;    // token labels    // token+rule list labels    // rule labels    SimpleCParser_condExpr_return * _condExpr41 = nil;    // rule list labels    // rule refs in alts with rewrites    @try {        // SimpleC.g:74:9: ( condExpr ) // ruleBlockSingleAlt        // SimpleC.g:74:9: condExpr // alt        {        root_0 = (id)[treeAdaptor emptyTree];        [following addObject:FOLLOW_condExpr_in_expr598];        _condExpr41 = [self condExpr];        [following removeLastObject];        [treeAdaptor addChild:[_condExpr41 tree] toTree:root_0];        }    }	@catch (ANTLRRecognitionException *re) {		[self reportError:re];		[self recover:input exception:re];	}	@finally {		// token labels		// token+rule list labels		// rule labels		[_condExpr41 release];		// rule refs in alts with rewrites		[_retval setStop:[input LT:-1]];		    [_retval setTree:(id)[treeAdaptor postProcessTree:root_0]];		    [treeAdaptor setBoundariesForTree:[_retval tree] fromToken:[_retval start] toToken:[_retval stop]];	}	return _retval;}// $ANTLR end expr// $ANTLR start condExpr// SimpleC.g:77:1: condExpr : aexpr ( ( '=='^ | '<'^ ) aexpr )? ;- (SimpleCParser_condExpr_return *) condExpr{    SimpleCParser_condExpr_return * _retval = [[SimpleCParser_condExpr_return alloc] init];     [_retval setStart:[input LT:1]];    id root_0 = nil;    // token labels    ANTLRToken * _string_literal43 = nil;    ANTLRToken * _char_literal44 = nil;    // token+rule list labels    // rule labels    SimpleCParser_aexpr_return * _aexpr42 = nil;    SimpleCParser_aexpr_return * _aexpr45 = nil;    // rule list labels    // rule refs in alts with rewrites    id _string_literal43_tree = nil;    id _char_literal44_tree = nil;    @try {        // SimpleC.g:78:9: ( aexpr ( ( '=='^ | '<'^ ) aexpr )? ) // ruleBlockSingleAlt        // SimpleC.g:78:9: aexpr ( ( '=='^ | '<'^ ) aexpr )? // alt        {        root_0 = (id)[treeAdaptor emptyTree];        [following addObject:FOLLOW_aexpr_in_condExpr617];        _aexpr42 = [self aexpr];        [following removeLastObject];        [treeAdaptor addChild:[_aexpr42 tree] toTree:root_0];        // SimpleC.g:78:15: ( ( '=='^ | '<'^ ) aexpr )? // block        int alt9=2;        {        	int LA9_0 = [input LA:1];        	if ( (LA9_0>=SimpleCParser_EQEQ && LA9_0<=SimpleCParser_LT) ) {        		alt9 = 1;        	}        }        switch (alt9) {        	case 1 :        	    // SimpleC.g:78:17: ( '=='^ | '<'^ ) aexpr // alt        	    {        	    // SimpleC.g:78:17: ( '=='^ | '<'^ ) // block        	    int alt8=2;        	    {        	    	int LA8_0 = [input LA:1];        	    	if ( LA8_0==SimpleCParser_EQEQ ) {        	    		alt8 = 1;        	    	}        	    	else if ( LA8_0==SimpleCParser_LT ) {        	    		alt8 = 2;        	    	}        	    else {        	        ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException exceptionWithDecision:8 state:0 stream:input];        	    	@throw nvae;        	    	}        	    }        	    switch (alt8) {        	    	case 1 :        	    	    // SimpleC.g:78:18: '=='^ // alt        	    	    {        	    	    _string_literal43=(ANTLRToken *)[input LT:1];        	    	    [_string_literal43 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?