simplecparser.m

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

M
1,944
字号
        [following removeLastObject];        [_list_declarator addObject:[_declarator8 tree]];        _char_literal9=(ANTLRToken *)[input LT:1];        [_char_literal9 retain];        [self match:input tokenType:21 follow:FOLLOW_21_in_variable170];         [_list_21 addObject:_char_literal9];        // AST REWRITE        int i_0 = 0;        [_retval setTree:root_0];        root_0 = (id)[treeAdaptor emptyTree];        // 27:29: -> ^( VAR_DEF type declarator )        {            // SimpleC.g:27:32: ^( VAR_DEF type declarator )            {            id root_1 = (id)[treeAdaptor emptyTree];            root_1 = (id)[treeAdaptor makeNode:[treeAdaptor newTreeWithTokenType:SimpleCParser_VAR_DEF text:[tokenNames objectAtIndex:SimpleCParser_VAR_DEF]] parentOf:root_1];            [treeAdaptor addChild:(id<ANTLRTree>)[_list_type objectAtIndex:i_0] toTree:root_1];            [treeAdaptor addChild:(id<ANTLRTree>)[_list_declarator 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		[_char_literal9 release];		// token+rule list labels		// rule labels		[_type7 release];		[_declarator8 release];		// rule refs in alts with rewrites		[_list_type release];		[_list_declarator release];		[_list_21 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 variable// $ANTLR start declarator// SimpleC.g:30:1: declarator : ID ;- (SimpleCParser_declarator_return *) declarator{    SimpleCParser_declarator_return * _retval = [[SimpleCParser_declarator_return alloc] init];     [_retval setStart:[input LT:1]];    id root_0 = nil;    // token labels    ANTLRToken * _ID10 = nil;    // token+rule list labels    // rule labels    // rule list labels    // rule refs in alts with rewrites    id _ID10_tree = nil;    @try {        // SimpleC.g:31:9: ( ID ) // ruleBlockSingleAlt        // SimpleC.g:31:9: ID // alt        {        root_0 = (id)[treeAdaptor emptyTree];        _ID10=(ANTLRToken *)[input LT:1];        [_ID10 retain];        [self match:input tokenType:SimpleCParser_ID follow:FOLLOW_SimpleCParser_ID_in_declarator199];         _ID10_tree = (id)[treeAdaptor newTreeWithToken:_ID10];        [treeAdaptor addChild:_ID10_tree toTree:root_0];        }    }	@catch (ANTLRRecognitionException *re) {		[self reportError:re];		[self recover:input exception:re];	}	@finally {		// token labels		[_ID10 release];		// token+rule list labels		// rule labels		// 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 declarator// $ANTLR start functionHeader// SimpleC.g:34:1: functionHeader : type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' -> ^( FUNC_HDR type ID ( formalParameter )+ ) ;- (SimpleCParser_functionHeader_return *) functionHeader{    SimpleCParser_functionHeader_return * _retval = [[SimpleCParser_functionHeader_return alloc] init];     [_retval setStart:[input LT:1]];    id root_0 = nil;    // token labels    ANTLRToken * _ID12 = nil;    ANTLRToken * _char_literal13 = nil;    ANTLRToken * _char_literal15 = nil;    ANTLRToken * _char_literal17 = nil;    // token+rule list labels    // rule labels    SimpleCParser_type_return * _type11 = nil;    SimpleCParser_formalParameter_return * _formalParameter14 = nil;    SimpleCParser_formalParameter_return * _formalParameter16 = nil;    // rule list labels    // rule refs in alts with rewrites    NSMutableArray *_list_formalParameter = [[NSMutableArray alloc] init];    NSMutableArray *_list_type = [[NSMutableArray alloc] init];    NSMutableArray *_list_24 = [[NSMutableArray alloc] init];    NSMutableArray *_list_SimpleCParser_ID = [[NSMutableArray alloc] init];    NSMutableArray *_list_22 = [[NSMutableArray alloc] init];    NSMutableArray *_list_23 = [[NSMutableArray alloc] init];    id _ID12_tree = nil;    id _char_literal13_tree = nil;    id _char_literal15_tree = nil;    id _char_literal17_tree = nil;    @try {        // SimpleC.g:35:9: ( type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' -> ^( FUNC_HDR type ID ( formalParameter )+ ) ) // ruleBlockSingleAlt        // SimpleC.g:35:9: type ID '(' ( formalParameter ( ',' formalParameter )* )? ')' // alt        {        [following addObject:FOLLOW_type_in_functionHeader219];        _type11 = [self type];        [following removeLastObject];        [_list_type addObject:[_type11 tree]];        _ID12=(ANTLRToken *)[input LT:1];        [_ID12 retain];        [self match:input tokenType:SimpleCParser_ID follow:FOLLOW_SimpleCParser_ID_in_functionHeader221];         [_list_SimpleCParser_ID addObject:_ID12];        _char_literal13=(ANTLRToken *)[input LT:1];        [_char_literal13 retain];        [self match:input tokenType:22 follow:FOLLOW_22_in_functionHeader223];         [_list_22 addObject:_char_literal13];        // SimpleC.g:35:21: ( formalParameter ( ',' formalParameter )* )? // block        int alt4=2;        {        	int LA4_0 = [input LA:1];        	if ( LA4_0==SimpleCParser_ID||(LA4_0>=SimpleCParser_INT_TYPE && LA4_0<=SimpleCParser_VOID) ) {        		alt4 = 1;        	}        }        switch (alt4) {        	case 1 :        	    // SimpleC.g:35:23: formalParameter ( ',' formalParameter )* // alt        	    {        	    [following addObject:FOLLOW_formalParameter_in_functionHeader227];        	    _formalParameter14 = [self formalParameter];        	    [following removeLastObject];        	    [_list_formalParameter addObject:[_formalParameter14 tree]];        	    do {        	        int alt3=2;        	        {        	        	int LA3_0 = [input LA:1];        	        	if ( LA3_0==23 ) {        	        		alt3 = 1;        	        	}        	        }        	        switch (alt3) {        	    	case 1 :        	    	    // SimpleC.g:35:41: ',' formalParameter // alt        	    	    {        	    	    _char_literal15=(ANTLRToken *)[input LT:1];        	    	    [_char_literal15 retain];        	    	    [self match:input tokenType:23 follow:FOLLOW_23_in_functionHeader231];         	    	    [_list_23 addObject:_char_literal15];        	    	    [following addObject:FOLLOW_formalParameter_in_functionHeader233];        	    	    _formalParameter16 = [self formalParameter];        	    	    [following removeLastObject];        	    	    [_list_formalParameter addObject:[_formalParameter16 tree]];        	    	    }        	    	    break;        	    	default :        	    	    goto loop3;        	        }        	    } while (YES); loop3: ;        	    }        	    break;        }        _char_literal17=(ANTLRToken *)[input LT:1];        [_char_literal17 retain];        [self match:input tokenType:24 follow:FOLLOW_24_in_functionHeader241];         [_list_24 addObject:_char_literal17];        // AST REWRITE        int i_0 = 0;        [_retval setTree:root_0];        root_0 = (id)[treeAdaptor emptyTree];        // 36:9: -> ^( FUNC_HDR type ID ( formalParameter )+ )        {            // SimpleC.g:36:12: ^( FUNC_HDR type ID ( formalParameter )+ )            {            id root_1 = (id)[treeAdaptor emptyTree];            root_1 = (id)[treeAdaptor makeNode:[treeAdaptor newTreeWithTokenType:SimpleCParser_FUNC_HDR text:[tokenNames objectAtIndex:SimpleCParser_FUNC_HDR]] parentOf:root_1];            [treeAdaptor addChild:(id<ANTLRTree>)[_list_type objectAtIndex:i_0] toTree:root_1];            [treeAdaptor addTokenAsChild:(ANTLRToken *)[_list_SimpleCParser_ID objectAtIndex:i_0] toTree:root_1];            // SimpleC.g:36:31: ( formalParameter )+            {            int n_1 = _list_formalParameter == nil ? 0 : [_list_formalParameter count];                         if ( n_1==0 ) @throw [NSException exceptionWithName:@"ANTLRTreeRewriteException" reason:@"Must have more than one element for (...)+ loops" userInfo:nil];            int i_1;            for (i_1=0; i_1<n_1; i_1++) {                [treeAdaptor addChild:(id<ANTLRTree>)[_list_formalParameter objectAtIndex:i_1] toTree:root_1];            }            }            [treeAdaptor addChild:root_1 toTree:root_0];            }        }        }    }	@catch (ANTLRRecognitionException *re) {		[self reportError:re];		[self recover:input exception:re];	}	@finally {		// token labels		[_ID12 release];		[_char_literal13 release];		[_char_literal15 release];		[_char_literal17 release];		// token+rule list labels		// rule labels		[_type11 release];		[_formalParameter14 release];		[_formalParameter16 release];		// rule refs in alts with rewrites		[_list_formalParameter release];		[_list_type release];		[_list_24 release];		[_list_SimpleCParser_ID release];		[_list_22 release];		[_list_23 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 functionHeader// $ANTLR start formalParameter// SimpleC.g:39:1: formalParameter : type declarator -> ^( ARG_DEF type declarator ) ;- (SimpleCParser_formalParameter_return *) formalParameter{    SimpleCParser_formalParameter_return * _retval = [[SimpleCParser_formalParameter_return alloc] init];     [_retval setStart:[input LT:1]];    id root_0 = nil;    // token labels    // token+rule list labels    // rule labels    SimpleCParser_type_return * _type18 = nil;    SimpleCParser_declarator_return * _declarator19 = nil;    // rule list labels    // rule refs in alts with rewrites    NSMutableArray *_list_type = [[NSMutableArray alloc] init];    NSMutableArray *_list_declarator = [[NSMutableArray alloc] init];    @try {        // SimpleC.g:40:9: ( type declarator -> ^( ARG_DEF type declarator ) ) // ruleBlockSingleAlt        // SimpleC.g:40:9: type declarator // alt        {        [following addObject:FOLLOW_type_in_formalParameter281];        _type18 = [self type];        [following removeLastObject];        [_list_type addObject:[_type18 tree]];        [following addObject:FOLLOW_declarator_in_formalParameter283];        _declarator19 = [self declarator];        [following removeLastObject];        [_list_declarator addObject:[_declarator19 tree]];        // AST REWRITE        int i_0 = 0;        [_retval setTree:root_0];        root_0 = (id)[treeAdaptor emptyTree];        // 40:25: -> ^( ARG_DEF type declarator )        {            // SimpleC.g:40:28: ^( ARG_DEF type declarator )            {            id root_1 = (id)[treeAdaptor emptyTree];            root_1 = (id)[treeAdaptor makeNode:[treeAdaptor newTreeWithTokenType:SimpleCParser_ARG_DEF text:[tokenNames objectAtIndex:SimpleCParser_ARG_DEF]] parentOf:root_1];            [treeAdaptor addChild:(id<ANTLRTree>)[_list_type objectAtIndex:i_0] toTree:root_1];            [treeAdaptor addChild:(id<ANTLRTree>)[_list_declarator 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		// token+rule list labels		// rule labels		[_type18 release];		[_declarator19 release];		// rule refs in alts with rewrites		[_list_type release];		[_list_declarator 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 formalParameter// $ANTLR start type// SimpleC.g:43:1: type : ('int'|'char'|'void'|ID);- (SimpleCParser_type_return *) type{

⌨️ 快捷键说明

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