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 + -
显示快捷键?