⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplecparser.m

📁 ANTLR(ANother Tool for Language Recognition)它是这样的一种工具
💻 M
📖 第 1 页 / 共 5 页
字号:
        		break;        	case 25:        		alt7 = 3;        		break;        	case 21:        		alt7 = 5;        		break;        default:         {            ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException exceptionWithDecision:7 state:0 stream:input];        	@throw nvae;        	}}        switch (alt7) {        	case 1 :        	    // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:58:7: forStat // alt        	    {        	    root_0 = (id)[adaptor emptyTree];        	    [following addObject:FOLLOW_forStat_in_stat449];        	    _forStat24 = [self forStat];        	    [following removeLastObject];        	    [adaptor addChild:[_forStat24 tree] toTree:root_0];        	    }        	    break;        	case 2 :        	    // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:59:7: expr ';'! // alt        	    {        	    root_0 = (id)[adaptor emptyTree];        	    [following addObject:FOLLOW_expr_in_stat457];        	    _expr25 = [self expr];        	    [following removeLastObject];        	    [adaptor addChild:[_expr25 tree] toTree:root_0];        	    _char_literal26=(ANTLRToken *)[input LT:1];        	    [_char_literal26 retain];        	    [self match:input tokenType:21 follow:FOLLOW_21_in_stat459];         	    }        	    break;        	case 3 :        	    // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:60:7: block // alt        	    {        	    root_0 = (id)[adaptor emptyTree];        	    [following addObject:FOLLOW_block_in_stat468];        	    _block27 = [self block];        	    [following removeLastObject];        	    [adaptor addChild:[_block27 tree] toTree:root_0];        	    }        	    break;        	case 4 :        	    // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:61:7: assignStat ';'! // alt        	    {        	    root_0 = (id)[adaptor emptyTree];        	    [following addObject:FOLLOW_assignStat_in_stat476];        	    _assignStat28 = [self assignStat];        	    [following removeLastObject];        	    [adaptor addChild:[_assignStat28 tree] toTree:root_0];        	    _char_literal29=(ANTLRToken *)[input LT:1];        	    [_char_literal29 retain];        	    [self match:input tokenType:21 follow:FOLLOW_21_in_stat478];         	    }        	    break;        	case 5 :        	    // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:62:7: ';'! // alt        	    {        	    root_0 = (id)[adaptor emptyTree];        	    _char_literal30=(ANTLRToken *)[input LT:1];        	    [_char_literal30 retain];        	    [self match:input tokenType:21 follow:FOLLOW_21_in_stat487];         	    }        	    break;        }    }	@catch (ANTLRRecognitionException *re) {		[self reportError:re];		[self recover:input exception:re];	}	@finally {		// token labels		[_char_literal26 release];		[_char_literal29 release];		[_char_literal30 release];		// token+rule list labels		// rule labels		[_forStat24 release];		[_expr25 release];		[_block27 release];		[_assignStat28 release];		// rule refs in alts with rewrites		[_retval setStop:[input LT:-1]];		    [_retval setTree:(id)[adaptor postProcessTree:root_0]];		    [adaptor setBoundariesForTree:[_retval tree] fromToken:[_retval start] toToken:[_retval stop]];	}	return _retval;}// $ANTLR end stat// $ANTLR start forStat// /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/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;    ANTLRToken * _string_literal31 = nil;    ANTLRToken * _char_literal32 = nil;    ANTLRToken * _char_literal33 = nil;    ANTLRToken * _char_literal35 = nil;    ANTLRToken * _char_literal36 = nil;    SimpleCParser_assignStat_return * _start = nil;    SimpleCParser_assignStat_return * _next = nil;    SimpleCParser_expr_return * _expr34 = nil;    SimpleCParser_block_return * _block37 = nil;    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 {        // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:66:9: ( 'for' '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( 'for' $start expr $next block ) ) // ruleBlockSingleAlt        // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/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)[adaptor emptyTree];        // 67:9: -> ^( 'for' $start expr $next block )        {            // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:67:12: ^( 'for' $start expr $next block )            {            id root_1 = (id)[adaptor emptyTree];            root_1 = (id)[adaptor makeToken:(ANTLRToken *)[_list_SimpleCParser_FOR objectAtIndex:i_0] parentOf:root_1];            [adaptor addChild:[_start tree] toTree:root_1];            [adaptor addChild:(id<ANTLRTree>)[_list_expr objectAtIndex:i_0] toTree:root_1];            [adaptor addChild:[_next tree] toTree:root_1];            [adaptor addChild:(id<ANTLRTree>)[_list_block objectAtIndex:i_0] toTree:root_1];            [adaptor 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)[adaptor postProcessTree:root_0]];		    [adaptor setBoundariesForTree:[_retval tree] fromToken:[_retval start] toToken:[_retval stop]];	}	return _retval;}// $ANTLR end forStat// $ANTLR start assignStat// /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/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;    ANTLRToken * _ID38 = nil;    ANTLRToken * _EQ39 = nil;    SimpleCParser_expr_return * _expr40 = nil;    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 {        // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:71:9: ( ID EQ expr -> ^( EQ ID expr ) ) // ruleBlockSingleAlt        // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/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)[adaptor emptyTree];        // 71:20: -> ^( EQ ID expr )        {            // /Users/kroepke/Projects/antlr3/code/antlr/main/lib/ObjC/Framework/examples/simplecTreeParser/SimpleC.g:71:23: ^( EQ ID expr )            {            id root_1 = (id)[adaptor emptyTree];            root_1 = (id)[adaptor makeToken:(ANTLRToken *)[_list_SimpleCParser_EQ objectAtIndex:i_0] parentOf:root_1];            [adaptor addTokenAsChild:(ANTLRToken *)[_list_SimpleCParser_ID objectAtIndex:i_0] toTree:root_1];            [adaptor addChild:(id<ANTLRTree>)[_list_expr objectAtIndex:i_0] toTree:root_1];            [adaptor 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)[adaptor postProcessTree:root_0]];		    [adaptor setBoundariesForTree:[_retval tree

⌨️ 快捷键说明

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