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