/** \file * This OBJC source file was generated by $ANTLR version 3.4 * * - From the grammar source file : /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g * - On : 2012-02-16 18:10:10 * - for the parser : PolyParserParser * * Editing it, at least manually, is not wise. * * ObjC language generator and runtime by Alan Condit, acondit|hereisanat|ipns|dotgoeshere|com. * * */ // $ANTLR 3.4 /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g 2012-02-16 18:10:10 /* ----------------------------------------- * Include the ANTLR3 generated header file. */ #import "PolyParser.h" /* ----------------------------------------- */ /* ============================================================================= */ /* ============================================================================= * Start of recognizer */ #pragma mark Bitsets static ANTLRBitSet *FOLLOW_term_in_poly43; static const unsigned long long FOLLOW_term_in_poly43_data[] = { 0x0000000000000102LL}; static ANTLRBitSet *FOLLOW_8_in_poly46; static const unsigned long long FOLLOW_8_in_poly46_data[] = { 0x0000000000000030LL}; static ANTLRBitSet *FOLLOW_term_in_poly49; static const unsigned long long FOLLOW_term_in_poly49_data[] = { 0x0000000000000102LL}; static ANTLRBitSet *FOLLOW_INT_in_term63; static const unsigned long long FOLLOW_INT_in_term63_data[] = { 0x0000000000000010LL}; static ANTLRBitSet *FOLLOW_ID_in_term65; static const unsigned long long FOLLOW_ID_in_term65_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_INT_in_term85; static const unsigned long long FOLLOW_INT_in_term85_data[] = { 0x0000000000000010LL}; static ANTLRBitSet *FOLLOW_exp_in_term87; static const unsigned long long FOLLOW_exp_in_term87_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_exp_in_term106; static const unsigned long long FOLLOW_exp_in_term106_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_INT_in_term114; static const unsigned long long FOLLOW_INT_in_term114_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_ID_in_term119; static const unsigned long long FOLLOW_ID_in_term119_data[] = { 0x0000000000000002LL}; static ANTLRBitSet *FOLLOW_ID_in_exp132; static const unsigned long long FOLLOW_ID_in_exp132_data[] = { 0x0000000000000200LL}; static ANTLRBitSet *FOLLOW_9_in_exp134; static const unsigned long long FOLLOW_9_in_exp134_data[] = { 0x0000000000000020LL}; static ANTLRBitSet *FOLLOW_INT_in_exp137; static const unsigned long long FOLLOW_INT_in_exp137_data[] = { 0x0000000000000002LL}; #pragma mark Dynamic Global globalAttributeScopeImplementation #pragma mark Dynamic Rule Scopes ruleAttributeScopeImplementation #pragma mark Rule Return Scopes returnScopeImplementation @implementation PolyParser_poly_return /* returnScopeImplementation */ /* AST returnScope.synthesize */ @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ + (PolyParser_poly_return *)newPolyParser_poly_return { return [[[PolyParser_poly_return alloc] init] retain]; } - (id) init { self = [super init]; return self; } /* AST returnScope.methods */ - (CommonTree *)getTree { return tree; } - (void) setTree:(CommonTree *)aTree { if (tree != aTree) { if (tree != nil) [tree release]; if (aTree != nil) [aTree retain]; tree = aTree; } } - (void) dealloc { self.tree = nil; [super dealloc]; } @end /* end of returnScope implementation */ @implementation PolyParser_term_return /* returnScopeImplementation */ /* AST returnScope.synthesize */ @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ + (PolyParser_term_return *)newPolyParser_term_return { return [[[PolyParser_term_return alloc] init] retain]; } - (id) init { self = [super init]; return self; } /* AST returnScope.methods */ - (CommonTree *)getTree { return tree; } - (void) setTree:(CommonTree *)aTree { if (tree != aTree) { if (tree != nil) [tree release]; if (aTree != nil) [aTree retain]; tree = aTree; } } - (void) dealloc { self.tree = nil; [super dealloc]; } @end /* end of returnScope implementation */ @implementation PolyParser_exp_return /* returnScopeImplementation */ /* AST returnScope.synthesize */ @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ + (PolyParser_exp_return *)newPolyParser_exp_return { return [[[PolyParser_exp_return alloc] init] retain]; } - (id) init { self = [super init]; return self; } /* AST returnScope.methods */ - (CommonTree *)getTree { return tree; } - (void) setTree:(CommonTree *)aTree { if (tree != aTree) { if (tree != nil) [tree release]; if (aTree != nil) [aTree retain]; tree = aTree; } } - (void) dealloc { self.tree = nil; [super dealloc]; } @end /* end of returnScope implementation */ @implementation PolyParser // line 637 /* ObjC start of ruleAttributeScope */ #pragma mark Dynamic Rule Scopes ruleAttributeScope /* ObjC end of ruleAttributeScope */ #pragma mark global Attribute Scopes globalAttributeScope /* ObjC start globalAttributeScope */ /* ObjC end globalAttributeScope */ /* ObjC start actions.(actionScope).synthesize */ /* ObjC start synthesize() */ /* AST genericParser.synthesize */ /* AST parserProperties */ @synthesize treeAdaptor; + (void) initialize { #pragma mark Bitsets FOLLOW_term_in_poly43 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_term_in_poly43_data Count:(NSUInteger)1] retain]; FOLLOW_8_in_poly46 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_poly46_data Count:(NSUInteger)1] retain]; FOLLOW_term_in_poly49 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_term_in_poly49_data Count:(NSUInteger)1] retain]; FOLLOW_INT_in_term63 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_term63_data Count:(NSUInteger)1] retain]; FOLLOW_ID_in_term65 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_term65_data Count:(NSUInteger)1] retain]; FOLLOW_INT_in_term85 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_term85_data Count:(NSUInteger)1] retain]; FOLLOW_exp_in_term87 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_exp_in_term87_data Count:(NSUInteger)1] retain]; FOLLOW_exp_in_term106 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_exp_in_term106_data Count:(NSUInteger)1] retain]; FOLLOW_INT_in_term114 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_term114_data Count:(NSUInteger)1] retain]; FOLLOW_ID_in_term119 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_term119_data Count:(NSUInteger)1] retain]; FOLLOW_ID_in_exp132 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_exp132_data Count:(NSUInteger)1] retain]; FOLLOW_9_in_exp134 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_9_in_exp134_data Count:(NSUInteger)1] retain]; FOLLOW_INT_in_exp137 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_exp137_data Count:(NSUInteger)1] retain]; [BaseRecognizer setTokenNames:[[AMutableArray arrayWithObjects:@"", @"", @"", @"", @"ID", @"INT", @"MULT", @"WS", @"'+'", @"'^'", nil] retain]]; [BaseRecognizer setGrammarFileName:@"/Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g"]; } + (PolyParser *)newPolyParser:(id)aStream { return [[PolyParser alloc] initWithTokenStream:aStream]; } - (id) initWithTokenStream:(id)aStream { self = [super initWithTokenStream:aStream State:[[RecognizerSharedState newRecognizerSharedStateWithRuleLen:3+1] retain]]; if ( self != nil ) { /* start of actions-actionScope-init */ /* start of init */ /* AST genericParser.init */ [self setTreeAdaptor:[[CommonTreeAdaptor newTreeAdaptor] retain]]; } return self; } - (void) dealloc { /* AST genericParser.dealloc */ [self setTreeAdaptor:nil]; [super dealloc]; } /* ObjC start actions.(actionScope).methods */ /* ObjC end actions.(actionScope).methods */ /* ObjC start methods() */ /* AST genericParser.methods */ /* AST parserMethods */ - (id) getTreeAdaptor { return treeAdaptor; } - (void) setTreeAdaptor:(id)aTreeAdaptor { if (aTreeAdaptor != treeAdaptor) { treeAdaptor = aTreeAdaptor; } } /* ObjC end methods() */ /* ObjC start rules */ /* * $ANTLR start poly * /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:8:1: poly : term ( '+' ^ term )* ; */ - (PolyParser_poly_return *) poly { /* ruleScopeSetUp */ /* AST ruleDeclarations */ /* ruleDeclarations */ PolyParser_poly_return * retval = [PolyParser_poly_return newPolyParser_poly_return]; [retval setStart:[input LT:1]]; CommonTree *root_0 = nil; @try { /* AST ruleLabelDefs */ /* ruleLabelDefs entry */ CommonToken *char_literal2 = nil;PolyParser_term_return * term1 = nil ; PolyParser_term_return * term3 = nil ; CommonTree *char_literal2_tree=nil; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:8:5: ( term ( '+' ^ term )* ) // ruleBlockSingleAlt // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:8:7: term ( '+' ^ term )* // alt { root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; /* ASTParser ruleRef */ /* ruleRef */ [self pushFollow:FOLLOW_term_in_poly43]; term1 = [self term]; [self popFollow]; [treeAdaptor addChild:[term1 getTree] toTree:root_0]; do { NSInteger alt1=2; NSInteger LA1_0 = [input LA:1]; if ( (LA1_0==8) ) { alt1=1; } switch (alt1) { case 1 : ; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:8:13: '+' ^ term // alt { char_literal2=(CommonToken *)[self match:input TokenType:8 Follow:FOLLOW_8_in_poly46]; char_literal2_tree = /* ASTParser createNodeFromToken */ (CommonTree *)[[treeAdaptor create:char_literal2] retain] ; root_0 = (CommonTree *)[treeAdaptor becomeRoot:char_literal2_tree old:root_0]; /* ASTParser ruleRef */ /* ruleRef */ [self pushFollow:FOLLOW_term_in_poly49]; term3 = [self term]; [self popFollow]; [treeAdaptor addChild:[term3 getTree] toTree:root_0]; } break; default : goto loop1; } } while (YES); loop1: ; } /* ASTParser ruleCleanUp */ /* AST ruleCleanUp */ /* token+rule list labels */ [retval setStop:[input LT:-1]]; retval.tree = (CommonTree *)[treeAdaptor rulePostProcessing:root_0]; [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; } @catch (RecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; /* ASTParser rule.setErrorReturnValue */ retval.tree = (CommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; } @finally { /* ruleScopeCleanUp */ } return retval; } /* $ANTLR end poly */ /* * $ANTLR start term * /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:11:1: term : ( INT ID -> ^( MULT[@\"*\"] INT ID ) | INT exp -> ^( MULT[@\"*\"] INT exp ) | exp | INT | ID ); */ - (PolyParser_term_return *) term { /* ruleScopeSetUp */ /* AST ruleDeclarations */ /* ruleDeclarations */ PolyParser_term_return * retval = [PolyParser_term_return newPolyParser_term_return]; [retval setStart:[input LT:1]]; CommonTree *root_0 = nil; @try { /* AST ruleLabelDefs */ /* ruleLabelDefs entry */ CommonToken *INT4 = nil; CommonToken *ID5 = nil; CommonToken *INT6 = nil; CommonToken *INT9 = nil; CommonToken *ID10 = nil;PolyParser_exp_return * exp7 = nil ; PolyParser_exp_return * exp8 = nil ; CommonTree *INT4_tree=nil; CommonTree *ID5_tree=nil; CommonTree *INT6_tree=nil; CommonTree *INT9_tree=nil; CommonTree *ID10_tree=nil; RewriteRuleTokenStream *stream_INT = [[RewriteRuleTokenStream newRewriteRuleTokenStream:treeAdaptor description:@"token INT"] retain]; RewriteRuleTokenStream *stream_ID = [[RewriteRuleTokenStream newRewriteRuleTokenStream:treeAdaptor description:@"token ID"] retain]; RewriteRuleSubtreeStream *stream_exp = [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor description:@"rule exp"] retain]; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:11:5: ( INT ID -> ^( MULT[@\"*\"] INT ID ) | INT exp -> ^( MULT[@\"*\"] INT exp ) | exp | INT | ID ) //ruleblock NSInteger alt2=5; NSInteger LA2_0 = [input LA:1]; if ( (LA2_0==INT) ) { NSInteger LA2_1 = [input LA:2]; if ( (LA2_1==ID) ) { NSInteger LA2_3 = [input LA:3]; if ( (LA2_3==9) ) { alt2=2; } else if ( (LA2_3==EOF||LA2_3==8) ) { alt2=1; } else { NoViableAltException *nvae = [NoViableAltException newException:2 state:3 stream:input]; nvae.c = LA2_3; @throw nvae; } } else if ( (LA2_1==EOF||LA2_1==8) ) { alt2=4; } else { NoViableAltException *nvae = [NoViableAltException newException:2 state:1 stream:input]; nvae.c = LA2_1; @throw nvae; } } else if ( (LA2_0==ID) ) { NSInteger LA2_2 = [input LA:2]; if ( (LA2_2==9) ) { alt2=3; } else if ( (LA2_2==EOF||LA2_2==8) ) { alt2=5; } else { NoViableAltException *nvae = [NoViableAltException newException:2 state:2 stream:input]; nvae.c = LA2_2; @throw nvae; } } else { NoViableAltException *nvae = [NoViableAltException newException:2 state:0 stream:input]; nvae.c = LA2_0; @throw nvae; } switch (alt2) { case 1 : ; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:11:7: INT ID // alt { INT4=(CommonToken *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_term63]; [stream_INT addElement:INT4]; ID5=(CommonToken *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_term65]; [stream_ID addElement:ID5]; // AST REWRITE // elements: ID, INT // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream *stream_retval = [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; // 11:15: -> ^( MULT[@\"*\"] INT ID ) { // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:11:18: ^( MULT[@\"*\"] INT ID ) { CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; root_1 = (CommonTree *)[treeAdaptor becomeRoot: [[treeAdaptor createTree:MULT FromToken:@"*" Text:@"MULT"] retain] old:root_1]; // TODO: args: [treeAdaptor addChild: [stream_INT nextNode] toTree:root_1]; // TODO: args: [treeAdaptor addChild: [stream_ID nextNode] toTree:root_1]; [treeAdaptor addChild:root_1 toTree:root_0]; } } retval.tree = root_0; } break; case 2 : ; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:12:7: INT exp // alt { INT6=(CommonToken *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_term85]; [stream_INT addElement:INT6]; /* ruleRef */ [self pushFollow:FOLLOW_exp_in_term87]; exp7 = [self exp]; [self popFollow]; [stream_exp addElement:[exp7 getTree]]; // AST REWRITE // elements: exp, INT // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream *stream_retval = [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; // 12:15: -> ^( MULT[@\"*\"] INT exp ) { // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:12:18: ^( MULT[@\"*\"] INT exp ) { CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; root_1 = (CommonTree *)[treeAdaptor becomeRoot: [[treeAdaptor createTree:MULT FromToken:@"*" Text:@"MULT"] retain] old:root_1]; // TODO: args: [treeAdaptor addChild: [stream_INT nextNode] toTree:root_1]; [treeAdaptor addChild:[stream_exp nextTree] toTree:root_1]; [treeAdaptor addChild:root_1 toTree:root_0]; } } retval.tree = root_0; } break; case 3 : ; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:13:7: exp // alt { root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; /* ASTParser ruleRef */ /* ruleRef */ [self pushFollow:FOLLOW_exp_in_term106]; exp8 = [self exp]; [self popFollow]; [treeAdaptor addChild:[exp8 getTree] toTree:root_0]; } break; case 4 : ; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:14:7: INT // alt { root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; /* ASTParser tokenRef */ INT9=(CommonToken *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_term114]; INT9_tree = /* ASTParser createNodeFromToken */ (CommonTree *)[[treeAdaptor create:INT9] retain] ; [treeAdaptor addChild:INT9_tree toTree:root_0]; } break; case 5 : ; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:15:4: ID // alt { root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; /* ASTParser tokenRef */ ID10=(CommonToken *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_term119]; ID10_tree = /* ASTParser createNodeFromToken */ (CommonTree *)[[treeAdaptor create:ID10] retain] ; [treeAdaptor addChild:ID10_tree toTree:root_0]; } break; } /* ASTParser ruleCleanUp */ /* AST ruleCleanUp */ /* token+rule list labels */ [retval setStop:[input LT:-1]]; [stream_INT release]; [stream_ID release]; [stream_exp release]; retval.tree = (CommonTree *)[treeAdaptor rulePostProcessing:root_0]; [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; } @catch (RecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; /* ASTParser rule.setErrorReturnValue */ retval.tree = (CommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; } @finally { /* ruleScopeCleanUp */ } return retval; } /* $ANTLR end term */ /* * $ANTLR start exp * /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:18:1: exp : ID '^' ^ INT ; */ - (PolyParser_exp_return *) exp { /* ruleScopeSetUp */ /* AST ruleDeclarations */ /* ruleDeclarations */ PolyParser_exp_return * retval = [PolyParser_exp_return newPolyParser_exp_return]; [retval setStart:[input LT:1]]; CommonTree *root_0 = nil; @try { /* AST ruleLabelDefs */ /* ruleLabelDefs entry */ CommonToken *ID11 = nil; CommonToken *char_literal12 = nil; CommonToken *INT13 = nil; CommonTree *ID11_tree=nil; CommonTree *char_literal12_tree=nil; CommonTree *INT13_tree=nil; // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:18:5: ( ID '^' ^ INT ) // ruleBlockSingleAlt // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Poly.g:18:7: ID '^' ^ INT // alt { root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; /* ASTParser tokenRef */ ID11=(CommonToken *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_exp132]; ID11_tree = /* ASTParser createNodeFromToken */ (CommonTree *)[[treeAdaptor create:ID11] retain] ; [treeAdaptor addChild:ID11_tree toTree:root_0]; char_literal12=(CommonToken *)[self match:input TokenType:9 Follow:FOLLOW_9_in_exp134]; char_literal12_tree = /* ASTParser createNodeFromToken */ (CommonTree *)[[treeAdaptor create:char_literal12] retain] ; root_0 = (CommonTree *)[treeAdaptor becomeRoot:char_literal12_tree old:root_0]; /* ASTParser tokenRef */ INT13=(CommonToken *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_exp137]; INT13_tree = /* ASTParser createNodeFromToken */ (CommonTree *)[[treeAdaptor create:INT13] retain] ; [treeAdaptor addChild:INT13_tree toTree:root_0]; } /* ASTParser ruleCleanUp */ /* AST ruleCleanUp */ /* token+rule list labels */ [retval setStop:[input LT:-1]]; retval.tree = (CommonTree *)[treeAdaptor rulePostProcessing:root_0]; [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; } @catch (RecognitionException *re) { [self reportError:re]; [self recover:input Exception:re]; /* ASTParser rule.setErrorReturnValue */ retval.tree = (CommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; } @finally { /* ruleScopeCleanUp */ } return retval; } /* $ANTLR end exp */ /* ObjC end rules */ @end /* end of PolyParser implementation line 692 */