| /** \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/Simplifier.g |
| * - On : 2012-02-16 18:11:30 |
| * - for the tree parser : SimplifierTreeParser |
| * |
| * 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/Simplifier.g 2012-02-16 18:11:30 |
| |
| |
| /* ----------------------------------------- |
| * Include the ANTLR3 generated header file. |
| */ |
| #import "Simplifier.h" |
| /* ----------------------------------------- */ |
| |
| |
| /* ============================================================================= */ |
| /* ============================================================================= |
| * Start of recognizer |
| */ |
| |
| #pragma mark Bitsets |
| static ANTLRBitSet *FOLLOW_8_in_poly52; |
| static const unsigned long long FOLLOW_8_in_poly52_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly56; |
| static const unsigned long long FOLLOW_INT_in_poly56_data[] = { 0x0000000000000020LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly60; |
| static const unsigned long long FOLLOW_INT_in_poly60_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_8_in_poly73; |
| static const unsigned long long FOLLOW_8_in_poly73_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_8_in_poly76; |
| static const unsigned long long FOLLOW_8_in_poly76_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly80; |
| static const unsigned long long FOLLOW_INT_in_poly80_data[] = { 0x0000000000000370LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_poly84; |
| static const unsigned long long FOLLOW_poly_in_poly84_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly89; |
| static const unsigned long long FOLLOW_INT_in_poly89_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_8_in_poly117; |
| static const unsigned long long FOLLOW_8_in_poly117_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_8_in_poly120; |
| static const unsigned long long FOLLOW_8_in_poly120_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_poly124; |
| static const unsigned long long FOLLOW_poly_in_poly124_data[] = { 0x0000000000000020LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly128; |
| static const unsigned long long FOLLOW_INT_in_poly128_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly133; |
| static const unsigned long long FOLLOW_INT_in_poly133_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_8_in_poly161; |
| static const unsigned long long FOLLOW_8_in_poly161_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_poly165; |
| static const unsigned long long FOLLOW_poly_in_poly165_data[] = { 0x0000000000000370LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_poly169; |
| static const unsigned long long FOLLOW_poly_in_poly169_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_MULT_in_poly216; |
| static const unsigned long long FOLLOW_MULT_in_poly216_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly218; |
| static const unsigned long long FOLLOW_INT_in_poly218_data[] = { 0x0000000000000370LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_poly220; |
| static const unsigned long long FOLLOW_poly_in_poly220_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_9_in_poly251; |
| static const unsigned long long FOLLOW_9_in_poly251_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_ID_in_poly253; |
| static const unsigned long long FOLLOW_ID_in_poly253_data[] = { 0x0000000000000020LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly257; |
| static const unsigned long long FOLLOW_INT_in_poly257_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_poly302; |
| static const unsigned long long FOLLOW_INT_in_poly302_data[] = { 0x0000000000000002LL}; |
| static ANTLRBitSet *FOLLOW_ID_in_poly307; |
| static const unsigned long long FOLLOW_ID_in_poly307_data[] = { 0x0000000000000002LL}; |
| static ANTLRBitSet *FOLLOW_8_in_synpred1_Simplifier52; |
| static const unsigned long long FOLLOW_8_in_synpred1_Simplifier52_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_synpred1_Simplifier56; |
| static const unsigned long long FOLLOW_INT_in_synpred1_Simplifier56_data[] = { 0x0000000000000020LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_synpred1_Simplifier60; |
| static const unsigned long long FOLLOW_INT_in_synpred1_Simplifier60_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_8_in_synpred2_Simplifier73; |
| static const unsigned long long FOLLOW_8_in_synpred2_Simplifier73_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_8_in_synpred2_Simplifier76; |
| static const unsigned long long FOLLOW_8_in_synpred2_Simplifier76_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_synpred2_Simplifier80; |
| static const unsigned long long FOLLOW_INT_in_synpred2_Simplifier80_data[] = { 0x0000000000000370LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_synpred2_Simplifier84; |
| static const unsigned long long FOLLOW_poly_in_synpred2_Simplifier84_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_synpred2_Simplifier89; |
| static const unsigned long long FOLLOW_INT_in_synpred2_Simplifier89_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_8_in_synpred3_Simplifier117; |
| static const unsigned long long FOLLOW_8_in_synpred3_Simplifier117_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_8_in_synpred3_Simplifier120; |
| static const unsigned long long FOLLOW_8_in_synpred3_Simplifier120_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_synpred3_Simplifier124; |
| static const unsigned long long FOLLOW_poly_in_synpred3_Simplifier124_data[] = { 0x0000000000000020LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_synpred3_Simplifier128; |
| static const unsigned long long FOLLOW_INT_in_synpred3_Simplifier128_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_INT_in_synpred3_Simplifier133; |
| static const unsigned long long FOLLOW_INT_in_synpred3_Simplifier133_data[] = { 0x0000000000000008LL}; |
| static ANTLRBitSet *FOLLOW_8_in_synpred4_Simplifier161; |
| static const unsigned long long FOLLOW_8_in_synpred4_Simplifier161_data[] = { 0x0000000000000004LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_synpred4_Simplifier165; |
| static const unsigned long long FOLLOW_poly_in_synpred4_Simplifier165_data[] = { 0x0000000000000370LL}; |
| static ANTLRBitSet *FOLLOW_poly_in_synpred4_Simplifier169; |
| static const unsigned long long FOLLOW_poly_in_synpred4_Simplifier169_data[] = { 0x0000000000000008LL}; |
| |
| |
| #pragma mark Dynamic Global globalAttributeScopeImplementation |
| |
| #pragma mark Dynamic Rule Scopes ruleAttributeScopeImplementation |
| |
| #pragma mark Rule Return Scopes returnScopeImplementation |
| @implementation Simplifier_poly_return /* returnScopeImplementation */ |
| /* AST returnScope.synthesize */ |
| @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ |
| + (Simplifier_poly_return *)newSimplifier_poly_return |
| { |
| return [[[Simplifier_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 Simplifier_synpred1_Simplifier_return /* returnScopeImplementation */ |
| /* AST returnScope.synthesize */ |
| @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ |
| + (Simplifier_synpred1_Simplifier_return *)newSimplifier_synpred1_Simplifier_return |
| { |
| return [[[Simplifier_synpred1_Simplifier_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 Simplifier_synpred2_Simplifier_return /* returnScopeImplementation */ |
| /* AST returnScope.synthesize */ |
| @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ |
| + (Simplifier_synpred2_Simplifier_return *)newSimplifier_synpred2_Simplifier_return |
| { |
| return [[[Simplifier_synpred2_Simplifier_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 Simplifier_synpred3_Simplifier_return /* returnScopeImplementation */ |
| /* AST returnScope.synthesize */ |
| @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ |
| + (Simplifier_synpred3_Simplifier_return *)newSimplifier_synpred3_Simplifier_return |
| { |
| return [[[Simplifier_synpred3_Simplifier_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 Simplifier_synpred4_Simplifier_return /* returnScopeImplementation */ |
| /* AST returnScope.synthesize */ |
| @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ |
| + (Simplifier_synpred4_Simplifier_return *)newSimplifier_synpred4_Simplifier_return |
| { |
| return [[[Simplifier_synpred4_Simplifier_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 Simplifier // 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_8_in_poly52 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_poly52_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly56 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly56_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly60 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly60_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_poly73 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_poly73_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_poly76 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_poly76_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly80 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly80_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_poly84 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_poly84_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly89 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly89_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_poly117 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_poly117_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_poly120 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_poly120_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_poly124 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_poly124_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly128 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly128_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly133 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly133_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_poly161 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_poly161_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_poly165 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_poly165_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_poly169 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_poly169_data Count:(NSUInteger)1] retain]; |
| FOLLOW_MULT_in_poly216 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_MULT_in_poly216_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly218 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly218_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_poly220 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_poly220_data Count:(NSUInteger)1] retain]; |
| FOLLOW_9_in_poly251 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_9_in_poly251_data Count:(NSUInteger)1] retain]; |
| FOLLOW_ID_in_poly253 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_poly253_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly257 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly257_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_poly302 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_poly302_data Count:(NSUInteger)1] retain]; |
| FOLLOW_ID_in_poly307 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_poly307_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_synpred1_Simplifier52 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_synpred1_Simplifier52_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_synpred1_Simplifier56 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_synpred1_Simplifier56_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_synpred1_Simplifier60 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_synpred1_Simplifier60_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_synpred2_Simplifier73 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_synpred2_Simplifier73_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_synpred2_Simplifier76 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_synpred2_Simplifier76_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_synpred2_Simplifier80 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_synpred2_Simplifier80_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_synpred2_Simplifier84 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_synpred2_Simplifier84_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_synpred2_Simplifier89 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_synpred2_Simplifier89_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_synpred3_Simplifier117 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_synpred3_Simplifier117_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_synpred3_Simplifier120 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_synpred3_Simplifier120_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_synpred3_Simplifier124 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_synpred3_Simplifier124_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_synpred3_Simplifier128 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_synpred3_Simplifier128_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_synpred3_Simplifier133 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_synpred3_Simplifier133_data Count:(NSUInteger)1] retain]; |
| FOLLOW_8_in_synpred4_Simplifier161 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_synpred4_Simplifier161_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_synpred4_Simplifier165 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_synpred4_Simplifier165_data Count:(NSUInteger)1] retain]; |
| FOLLOW_poly_in_synpred4_Simplifier169 = [[ANTLRBitSet newBitSetWithBits:(const unsigned long long *)FOLLOW_poly_in_synpred4_Simplifier169_data Count:(NSUInteger)1] retain]; |
| |
| [BaseRecognizer setTokenNames:[[AMutableArray arrayWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>", |
| @"ID", @"INT", @"MULT", @"WS", @"'+'", @"'^'", nil] retain]]; |
| [BaseRecognizer setGrammarFileName:@"/Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g"]; |
| SEL synpred2_SimplifierSelector = @selector(synpred2_Simplifier_fragment); |
| SEL synpred1_SimplifierSelector = @selector(synpred1_Simplifier_fragment); |
| SEL synpred4_SimplifierSelector = @selector(synpred4_Simplifier_fragment); |
| SEL synpred3_SimplifierSelector = @selector(synpred3_Simplifier_fragment); |
| |
| } |
| |
| + (Simplifier *)newSimplifier:(id<TreeNodeStream>)aStream |
| { |
| return [[Simplifier alloc] initWithStream:aStream]; |
| } |
| |
| - (id) initWithStream:(id<TreeNodeStream>)aStream |
| { |
| self = [super initWithStream:aStream State:[[RecognizerSharedState newRecognizerSharedStateWithRuleLen:8+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<TreeAdaptor>) getTreeAdaptor |
| { |
| return treeAdaptor; |
| } |
| |
| - (void) setTreeAdaptor:(id<TreeAdaptor>)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/Simplifier.g:16:1: poly : ( ^( '+' a= INT b= INT ) -> INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] | ^( '+' ^( '+' a= INT p= poly ) b= INT ) -> ^( '+' $p INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] ) | ^( '+' ^( '+' p= poly a= INT ) b= INT ) -> ^( '+' $p INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] ) | ^( '+' p= poly q= poly ) -> { [[$p.tree toStringTree] isEqualToString:@\"0\"] }? $q -> { [[$q.tree toStringTree] isEqualToString:@\"0\"] }? $p -> ^( '+' $p $q) | ^( MULT INT poly ) -> {$INT.int==1}? poly -> ^( MULT INT poly ) | ^( '^' ID e= INT ) -> {$e.int==1}? ID -> {$e.int==0}? INT[@\"1\"] -> ^( '^' ID INT ) | INT | ID ); |
| */ |
| - (Simplifier_poly_return *) poly |
| { |
| /* ruleScopeSetUp */ |
| |
| /* ASTTreeParser ruleDeclarations */ |
| /* AST ruleDeclarations */ |
| /* ruleDeclarations */ |
| Simplifier_poly_return * retval = [Simplifier_poly_return newSimplifier_poly_return]; |
| [retval setStart:[input LT:1]]; |
| |
| |
| CommonTree *root_0 = nil; |
| |
| CommonTree *_first_0 = nil; |
| CommonTree *_last = nil; |
| |
| @try { |
| /* AST ruleLabelDefs */ |
| /* ruleLabelDefs entry */ |
| CommonTree *a = nil; |
| CommonTree *b = nil; |
| CommonTree *e = nil; |
| CommonTree *char_literal1 = nil; |
| CommonTree *char_literal2 = nil; |
| CommonTree *char_literal3 = nil; |
| CommonTree *char_literal4 = nil; |
| CommonTree *char_literal5 = nil; |
| CommonTree *char_literal6 = nil; |
| CommonTree *MULT7 = nil; |
| CommonTree *INT8 = nil; |
| CommonTree *char_literal10 = nil; |
| CommonTree *ID11 = nil; |
| CommonTree *INT12 = nil; |
| CommonTree *ID13 = nil;Simplifier_poly_return * p = nil ; |
| |
| Simplifier_poly_return * q = nil ; |
| |
| Simplifier_poly_return * poly9 = nil ; |
| |
| |
| CommonTree *a_tree=nil; |
| CommonTree *b_tree=nil; |
| CommonTree *e_tree=nil; |
| CommonTree *char_literal1_tree=nil; |
| CommonTree *char_literal2_tree=nil; |
| CommonTree *char_literal3_tree=nil; |
| CommonTree *char_literal4_tree=nil; |
| CommonTree *char_literal5_tree=nil; |
| CommonTree *char_literal6_tree=nil; |
| CommonTree *MULT7_tree=nil; |
| CommonTree *INT8_tree=nil; |
| CommonTree *char_literal10_tree=nil; |
| CommonTree *ID11_tree=nil; |
| CommonTree *INT12_tree=nil; |
| CommonTree *ID13_tree=nil; |
| RewriteRuleTokenStream *stream_INT = |
| [[RewriteRuleNodeStream newRewriteRuleNodeStream:treeAdaptor |
| description:@"token INT"] retain]; |
| RewriteRuleTokenStream *stream_MULT = |
| [[RewriteRuleNodeStream newRewriteRuleNodeStream:treeAdaptor |
| description:@"token MULT"] retain]; |
| RewriteRuleTokenStream *stream_ID = |
| [[RewriteRuleNodeStream newRewriteRuleNodeStream:treeAdaptor |
| description:@"token ID"] retain]; |
| RewriteRuleTokenStream *stream_9 = |
| [[RewriteRuleNodeStream newRewriteRuleNodeStream:treeAdaptor |
| description:@"token 9"] retain]; |
| RewriteRuleTokenStream *stream_8 = |
| [[RewriteRuleNodeStream newRewriteRuleNodeStream:treeAdaptor |
| description:@"token 8"] retain]; |
| RewriteRuleSubtreeStream *stream_poly = |
| [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor |
| description:@"rule poly"] retain]; |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:16:5: ( ^( '+' a= INT b= INT ) -> INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] | ^( '+' ^( '+' a= INT p= poly ) b= INT ) -> ^( '+' $p INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] ) | ^( '+' ^( '+' p= poly a= INT ) b= INT ) -> ^( '+' $p INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] ) | ^( '+' p= poly q= poly ) -> { [[$p.tree toStringTree] isEqualToString:@\"0\"] }? $q -> { [[$q.tree toStringTree] isEqualToString:@\"0\"] }? $p -> ^( '+' $p $q) | ^( MULT INT poly ) -> {$INT.int==1}? poly -> ^( MULT INT poly ) | ^( '^' ID e= INT ) -> {$e.int==1}? ID -> {$e.int==0}? INT[@\"1\"] -> ^( '^' ID INT ) | INT | ID ) //ruleblock |
| NSInteger alt1=8; |
| unichar charLA1 = [input LA:1]; |
| switch (charLA1) { |
| case 8: ; |
| { |
| NSInteger LA1_1 = [input LA:2]; |
| |
| if ( ([self evaluateSyntacticPredicate:@selector(synpred1_Simplifier_fragment)]) ) { |
| alt1=1; |
| } |
| else if ( ([self evaluateSyntacticPredicate:@selector(synpred2_Simplifier_fragment)]) ) { |
| alt1=2; |
| } |
| else if ( ([self evaluateSyntacticPredicate:@selector(synpred3_Simplifier_fragment)]) ) { |
| alt1=3; |
| } |
| else if ( ([self evaluateSyntacticPredicate:@selector(synpred4_Simplifier_fragment)]) ) { |
| alt1=4; |
| } |
| else { |
| if ( state.backtracking > 0 ) { state.failed = YES; return retval; } |
| |
| NoViableAltException *nvae = [NoViableAltException newException:1 state:1 stream:input]; |
| nvae.c = LA1_1; |
| @throw nvae; |
| |
| } |
| } |
| break; |
| case MULT: ; |
| { |
| alt1=5; |
| } |
| break; |
| case 9: ; |
| { |
| alt1=6; |
| } |
| break; |
| case INT: ; |
| { |
| alt1=7; |
| } |
| break; |
| case ID: ; |
| { |
| alt1=8; |
| } |
| break; |
| |
| default: ; |
| if ( state.backtracking > 0 ) { state.failed = YES; return retval; } |
| |
| NoViableAltException *nvae = [NoViableAltException newException:1 state:0 stream:input]; |
| nvae.c = charLA1; |
| @throw nvae; |
| |
| } |
| |
| switch (alt1) { |
| case 1 : ; |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:16:7: ^( '+' a= INT b= INT ) // alt |
| { |
| |
| /* ASTTreeParser tree */ |
| _last = (CommonTree *)[input LT:1]; |
| { |
| CommonTree *_save_last_1 = _last; |
| CommonTree *_first_1 = nil; |
| CommonTree *root_1 = [[[treeAdaptor class] newEmptyTree] retain]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| char_literal1=(CommonTree *)[self match:input TokenType:8 Follow:FOLLOW_8_in_poly52]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_8 addElement:char_literal1]; |
| |
| |
| [self match:input TokenType:TokenTypeDOWN Follow:nil]; if ( state.failed ) return retval; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| a=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly56]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_INT addElement:a]; |
| |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| b=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly60]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_INT addElement:b]; |
| |
| |
| [self match:input TokenType:TokenTypeUP Follow:nil]; if ( state.failed ) return retval; |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| _last = _save_last_1; |
| } |
| |
| |
| // AST REWRITE |
| // elements: INT |
| // token labels: |
| // rule labels: retval |
| // token list labels: |
| // rule list labels: |
| // wildcard labels: |
| if ( state.backtracking == 0 ) { |
| |
| 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]; |
| |
| // 16:26: -> INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] |
| { |
| [treeAdaptor addChild: |
| [[treeAdaptor createTree:INT FromToken:[NSString stringWithFormat:@"%d", ((a!=nil?[a.text integerValue]:0)+(b!=nil?[b.text integerValue]:0))] Text:@"INT"] retain] |
| toTree:root_0]; |
| |
| } |
| |
| |
| retval.tree = root_0; |
| |
| } |
| |
| } |
| break; |
| case 2 : ; |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:18:4: ^( '+' ^( '+' a= INT p= poly ) b= INT ) // alt |
| { |
| |
| /* ASTTreeParser tree */ |
| _last = (CommonTree *)[input LT:1]; |
| { |
| CommonTree *_save_last_1 = _last; |
| CommonTree *_first_1 = nil; |
| CommonTree *root_1 = [[[treeAdaptor class] newEmptyTree] retain]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| char_literal2=(CommonTree *)[self match:input TokenType:8 Follow:FOLLOW_8_in_poly73]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_8 addElement:char_literal2]; |
| |
| |
| [self match:input TokenType:TokenTypeDOWN Follow:nil]; if ( state.failed ) return retval; |
| |
| /* ASTTreeParser tree */ |
| _last = (CommonTree *)[input LT:1]; |
| { |
| CommonTree *_save_last_2 = _last; |
| CommonTree *_first_2 = nil; |
| CommonTree *root_2 = [[[treeAdaptor class] newEmptyTree] retain]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| char_literal3=(CommonTree *)[self match:input TokenType:8 Follow:FOLLOW_8_in_poly76]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_8 addElement:char_literal3]; |
| |
| |
| [self match:input TokenType:TokenTypeDOWN Follow:nil]; if ( state.failed ) return retval; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| a=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly80]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_INT addElement:a]; |
| |
| |
| /* ASTTreeParser ruleRefTrack */ |
| _last = (CommonTree *)[input LT:1]; |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_poly84]; |
| p = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return retval; |
| |
| if ( state.backtracking == 0 ) |
| [stream_poly addElement:[p getTree]]; |
| |
| [self match:input TokenType:TokenTypeUP Follow:nil]; if ( state.failed ) return retval; |
| [treeAdaptor addChild:root_2 toTree:root_1]; |
| _last = _save_last_2; |
| } |
| |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| b=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly89]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_INT addElement:b]; |
| |
| |
| [self match:input TokenType:TokenTypeUP Follow:nil]; if ( state.failed ) return retval; |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| _last = _save_last_1; |
| } |
| |
| |
| // AST REWRITE |
| // elements: INT, p, 8 |
| // token labels: |
| // rule labels: retval, p |
| // token list labels: |
| // rule list labels: |
| // wildcard labels: |
| if ( state.backtracking == 0 ) { |
| |
| retval.tree = root_0; |
| |
| RewriteRuleSubtreeStream *stream_retval = |
| [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor |
| description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; |
| RewriteRuleSubtreeStream *stream_p = |
| [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor |
| description:@"token p" element:p!=nil?[p getTree]:nil] retain]; |
| |
| root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| // 19:8: -> ^( '+' $p INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] ) |
| { |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:19:11: ^( '+' $p INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] ) |
| { |
| CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| root_1 = (CommonTree *)[treeAdaptor becomeRoot:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_8 nextNode] |
| old:root_1]; |
| |
| [treeAdaptor addChild:[stream_p nextTree] toTree:root_1]; |
| |
| [treeAdaptor addChild: |
| [[treeAdaptor createTree:INT FromToken:[NSString stringWithFormat:@"%d", ((a!=nil?[a.text integerValue]:0)+(b!=nil?[b.text integerValue]:0))] Text:@"INT"] retain] |
| 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/Simplifier.g:21:4: ^( '+' ^( '+' p= poly a= INT ) b= INT ) // alt |
| { |
| |
| /* ASTTreeParser tree */ |
| _last = (CommonTree *)[input LT:1]; |
| { |
| CommonTree *_save_last_1 = _last; |
| CommonTree *_first_1 = nil; |
| CommonTree *root_1 = [[[treeAdaptor class] newEmptyTree] retain]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| char_literal4=(CommonTree *)[self match:input TokenType:8 Follow:FOLLOW_8_in_poly117]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_8 addElement:char_literal4]; |
| |
| |
| [self match:input TokenType:TokenTypeDOWN Follow:nil]; if ( state.failed ) return retval; |
| |
| /* ASTTreeParser tree */ |
| _last = (CommonTree *)[input LT:1]; |
| { |
| CommonTree *_save_last_2 = _last; |
| CommonTree *_first_2 = nil; |
| CommonTree *root_2 = [[[treeAdaptor class] newEmptyTree] retain]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| char_literal5=(CommonTree *)[self match:input TokenType:8 Follow:FOLLOW_8_in_poly120]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_8 addElement:char_literal5]; |
| |
| |
| [self match:input TokenType:TokenTypeDOWN Follow:nil]; if ( state.failed ) return retval; |
| |
| /* ASTTreeParser ruleRefTrack */ |
| _last = (CommonTree *)[input LT:1]; |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_poly124]; |
| p = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return retval; |
| |
| if ( state.backtracking == 0 ) |
| [stream_poly addElement:[p getTree]]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| a=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly128]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_INT addElement:a]; |
| |
| |
| [self match:input TokenType:TokenTypeUP Follow:nil]; if ( state.failed ) return retval; |
| [treeAdaptor addChild:root_2 toTree:root_1]; |
| _last = _save_last_2; |
| } |
| |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| b=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly133]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_INT addElement:b]; |
| |
| |
| [self match:input TokenType:TokenTypeUP Follow:nil]; if ( state.failed ) return retval; |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| _last = _save_last_1; |
| } |
| |
| |
| // AST REWRITE |
| // elements: INT, 8, p |
| // token labels: |
| // rule labels: retval, p |
| // token list labels: |
| // rule list labels: |
| // wildcard labels: |
| if ( state.backtracking == 0 ) { |
| |
| retval.tree = root_0; |
| |
| RewriteRuleSubtreeStream *stream_retval = |
| [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor |
| description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; |
| RewriteRuleSubtreeStream *stream_p = |
| [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor |
| description:@"token p" element:p!=nil?[p getTree]:nil] retain]; |
| |
| root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| // 22:8: -> ^( '+' $p INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] ) |
| { |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:22:11: ^( '+' $p INT[[NSString stringWithFormat:@\"\\%d\", ($a.int+$b.int)]] ) |
| { |
| CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| root_1 = (CommonTree *)[treeAdaptor becomeRoot:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_8 nextNode] |
| old:root_1]; |
| |
| [treeAdaptor addChild:[stream_p nextTree] toTree:root_1]; |
| |
| [treeAdaptor addChild: |
| [[treeAdaptor createTree:INT FromToken:[NSString stringWithFormat:@"%d", ((a!=nil?[a.text integerValue]:0)+(b!=nil?[b.text integerValue]:0))] Text:@"INT"] retain] |
| toTree:root_1]; |
| |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| } |
| |
| } |
| |
| |
| retval.tree = root_0; |
| |
| } |
| |
| } |
| break; |
| case 4 : ; |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:24:4: ^( '+' p= poly q= poly ) // alt |
| { |
| |
| /* ASTTreeParser tree */ |
| _last = (CommonTree *)[input LT:1]; |
| { |
| CommonTree *_save_last_1 = _last; |
| CommonTree *_first_1 = nil; |
| CommonTree *root_1 = [[[treeAdaptor class] newEmptyTree] retain]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| char_literal6=(CommonTree *)[self match:input TokenType:8 Follow:FOLLOW_8_in_poly161]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_8 addElement:char_literal6]; |
| |
| |
| [self match:input TokenType:TokenTypeDOWN Follow:nil]; if ( state.failed ) return retval; |
| |
| /* ASTTreeParser ruleRefTrack */ |
| _last = (CommonTree *)[input LT:1]; |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_poly165]; |
| p = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return retval; |
| |
| if ( state.backtracking == 0 ) |
| [stream_poly addElement:[p getTree]]; |
| |
| /* ASTTreeParser ruleRefTrack */ |
| _last = (CommonTree *)[input LT:1]; |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_poly169]; |
| q = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return retval; |
| |
| if ( state.backtracking == 0 ) |
| [stream_poly addElement:[q getTree]]; |
| |
| [self match:input TokenType:TokenTypeUP Follow:nil]; if ( state.failed ) return retval; |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| _last = _save_last_1; |
| } |
| |
| |
| // AST REWRITE |
| // elements: 8, p, q, p, q |
| // token labels: |
| // rule labels: retval, q, p |
| // token list labels: |
| // rule list labels: |
| // wildcard labels: |
| if ( state.backtracking == 0 ) { |
| |
| retval.tree = root_0; |
| |
| RewriteRuleSubtreeStream *stream_retval = |
| [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor |
| description:@"token retval" element:retval!=nil?[retval getTree]:nil] retain]; |
| RewriteRuleSubtreeStream *stream_q = |
| [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor |
| description:@"token q" element:q!=nil?[q getTree]:nil] retain]; |
| RewriteRuleSubtreeStream *stream_p = |
| [[RewriteRuleSubtreeStream newRewriteRuleSubtreeStream:treeAdaptor |
| description:@"token p" element:p!=nil?[p getTree]:nil] retain]; |
| |
| root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| // 24:24: -> { [[$p.tree toStringTree] isEqualToString:@\"0\"] }? $q |
| if ( [[(p!=nil?((CommonTree *)p.tree):nil) toStringTree] isEqualToString:@"0"] ) { |
| [treeAdaptor addChild:[stream_q nextTree] toTree:root_0]; |
| |
| } |
| |
| else // 25:8: -> { [[$q.tree toStringTree] isEqualToString:@\"0\"] }? $p |
| if ( [[(q!=nil?((CommonTree *)q.tree):nil) toStringTree] isEqualToString:@"0"] ) { |
| [treeAdaptor addChild:[stream_p nextTree] toTree:root_0]; |
| |
| } |
| |
| else // 26:8: -> ^( '+' $p $q) |
| { |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:26:11: ^( '+' $p $q) |
| { |
| CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| root_1 = (CommonTree *)[treeAdaptor becomeRoot:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_8 nextNode] |
| old:root_1]; |
| |
| [treeAdaptor addChild:[stream_p nextTree] toTree:root_1]; |
| |
| [treeAdaptor addChild:[stream_q nextTree] toTree:root_1]; |
| |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| } |
| |
| } |
| |
| |
| retval.tree = root_0; |
| |
| } |
| |
| } |
| break; |
| case 5 : ; |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:28:4: ^( MULT INT poly ) // alt |
| { |
| |
| /* ASTTreeParser tree */ |
| _last = (CommonTree *)[input LT:1]; |
| { |
| CommonTree *_save_last_1 = _last; |
| CommonTree *_first_1 = nil; |
| CommonTree *root_1 = [[[treeAdaptor class] newEmptyTree] retain]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| MULT7=(CommonTree *)[self match:input TokenType:MULT Follow:FOLLOW_MULT_in_poly216]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_MULT addElement:MULT7]; |
| |
| |
| [self match:input TokenType:TokenTypeDOWN Follow:nil]; if ( state.failed ) return retval; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| INT8=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly218]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_INT addElement:INT8]; |
| |
| |
| /* ASTTreeParser ruleRefTrack */ |
| _last = (CommonTree *)[input LT:1]; |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_poly220]; |
| poly9 = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return retval; |
| |
| if ( state.backtracking == 0 ) |
| [stream_poly addElement:[poly9 getTree]]; |
| |
| [self match:input TokenType:TokenTypeUP Follow:nil]; if ( state.failed ) return retval; |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| _last = _save_last_1; |
| } |
| |
| |
| // AST REWRITE |
| // elements: INT, poly, poly, MULT |
| // token labels: |
| // rule labels: retval |
| // token list labels: |
| // rule list labels: |
| // wildcard labels: |
| if ( state.backtracking == 0 ) { |
| |
| 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]; |
| |
| // 28:21: -> {$INT.int==1}? poly |
| if ((INT8!=nil?[INT8.text integerValue]:0)==1) { |
| [treeAdaptor addChild:[stream_poly nextTree] toTree:root_0]; |
| |
| } |
| |
| else // 29:8: -> ^( MULT INT poly ) |
| { |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:29:11: ^( MULT INT poly ) |
| { |
| CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| root_1 = (CommonTree *)[treeAdaptor becomeRoot:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_MULT nextNode] |
| old:root_1]; |
| |
| // TODO: args: |
| [treeAdaptor addChild:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_INT nextNode] |
| toTree:root_1]; |
| |
| [treeAdaptor addChild:[stream_poly nextTree] toTree:root_1]; |
| |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| } |
| |
| } |
| |
| |
| retval.tree = root_0; |
| |
| } |
| |
| } |
| break; |
| case 6 : ; |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:31:4: ^( '^' ID e= INT ) // alt |
| { |
| |
| /* ASTTreeParser tree */ |
| _last = (CommonTree *)[input LT:1]; |
| { |
| CommonTree *_save_last_1 = _last; |
| CommonTree *_first_1 = nil; |
| CommonTree *root_1 = [[[treeAdaptor class] newEmptyTree] retain]; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| char_literal10=(CommonTree *)[self match:input TokenType:9 Follow:FOLLOW_9_in_poly251]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_9 addElement:char_literal10]; |
| |
| |
| [self match:input TokenType:TokenTypeDOWN Follow:nil]; if ( state.failed ) return retval; |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| ID11=(CommonTree *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_poly253]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_ID addElement:ID11]; |
| |
| |
| /* ASTTreeParser tokenRefBang */ |
| _last = (CommonTree *)[input LT:1]; |
| e=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly257]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) [stream_INT addElement:e]; |
| |
| |
| [self match:input TokenType:TokenTypeUP Follow:nil]; if ( state.failed ) return retval; |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| _last = _save_last_1; |
| } |
| |
| |
| // AST REWRITE |
| // elements: INT, ID, INT, 9, ID |
| // token labels: |
| // rule labels: retval |
| // token list labels: |
| // rule list labels: |
| // wildcard labels: |
| if ( state.backtracking == 0 ) { |
| |
| 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]; |
| |
| // 31:21: -> {$e.int==1}? ID |
| if ((e!=nil?[e.text integerValue]:0)==1) { |
| // TODO: args: |
| [treeAdaptor addChild:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_ID nextNode] |
| toTree:root_0]; |
| |
| } |
| |
| else // 32:8: -> {$e.int==0}? INT[@\"1\"] |
| if ((e!=nil?[e.text integerValue]:0)==0) { |
| [treeAdaptor addChild: |
| [[treeAdaptor createTree:INT FromToken:@"1" Text:@"INT"] retain] |
| toTree:root_0]; |
| |
| } |
| |
| else // 33:8: -> ^( '^' ID INT ) |
| { |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:33:11: ^( '^' ID INT ) |
| { |
| CommonTree *root_1 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| root_1 = (CommonTree *)[treeAdaptor becomeRoot:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_9 nextNode] |
| old:root_1]; |
| |
| // TODO: args: |
| [treeAdaptor addChild:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_ID nextNode] |
| toTree:root_1]; |
| |
| // TODO: args: |
| [treeAdaptor addChild:/* ASTTreeParser createRewriteNodeFromElement */ |
| [stream_INT nextNode] |
| toTree:root_1]; |
| |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| } |
| |
| } |
| |
| |
| retval.tree = root_0; |
| |
| } |
| |
| } |
| break; |
| case 7 : ; |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:35:4: INT // alt |
| { |
| root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| |
| |
| /* ASTTreeParser tokenRef */ |
| _last = (CommonTree *)[input LT:1]; |
| INT12=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_poly302]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) { |
| INT12_tree = (CommonTree *)[treeAdaptor dupNode:INT12]; |
| |
| |
| [treeAdaptor addChild:INT12_tree toTree:root_0]; |
| } |
| |
| |
| /* ASTTreeParser noRewrite */ |
| if ( state.backtracking == 0 ) { |
| } |
| } |
| break; |
| case 8 : ; |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:36:4: ID // alt |
| { |
| root_0 = (CommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| |
| |
| /* ASTTreeParser tokenRef */ |
| _last = (CommonTree *)[input LT:1]; |
| ID13=(CommonTree *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_poly307]; if ( state.failed ) return retval; |
| if ( state.backtracking == 0 ) { |
| ID13_tree = (CommonTree *)[treeAdaptor dupNode:ID13]; |
| |
| |
| [treeAdaptor addChild:ID13_tree toTree:root_0]; |
| } |
| |
| |
| /* ASTTreeParser noRewrite */ |
| if ( state.backtracking == 0 ) { |
| } |
| } |
| break; |
| |
| } |
| /* ASTTreeParser ruleCleanUp */ |
| /* AST ruleCleanUp */ |
| /* token+rule list labels */ |
| |
| [stream_INT release]; |
| [stream_MULT release]; |
| [stream_ID release]; |
| [stream_9 release]; |
| [stream_8 release]; |
| [stream_poly release]; |
| |
| if ( state.backtracking == 0 ) { |
| |
| retval.tree = (CommonTree *)[treeAdaptor rulePostProcessing:root_0]; |
| } |
| |
| } |
| @catch (RecognitionException *re) { |
| [self reportError:re]; |
| [self recover:input Exception:re]; |
| } |
| |
| @finally { |
| /* ruleScopeCleanUp */ |
| |
| } |
| return retval; |
| } |
| /* $ANTLR end poly */ |
| // $ANTLR start synpred1_Simplifier_fragment |
| - (void) synpred1_Simplifier_fragment |
| { |
| /* ruleLabelDefs entry */ |
| CommonTree *a = nil; |
| CommonTree *b = nil; |
| |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:16:7: ( ^( '+' a= INT b= INT ) ) // ruleBlockSingleAlt |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:16:7: ^( '+' a= INT b= INT ) // alt |
| { |
| |
| |
| [self match:input TokenType:8 Follow:FOLLOW_8_in_synpred1_Simplifier52]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:DOWN Follow:nil]; if ( state.failed ) return ; |
| |
| a=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_synpred1_Simplifier56]; if ( state.failed ) return ; |
| |
| b=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_synpred1_Simplifier60]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:UP Follow:nil]; if ( state.failed ) return ; |
| |
| |
| } |
| |
| } // $ANTLR end synpred1_Simplifier_fragment |
| // $ANTLR start synpred2_Simplifier_fragment |
| - (void) synpred2_Simplifier_fragment |
| { |
| /* ruleLabelDefs entry */ |
| CommonTree *a = nil; |
| CommonTree *b = nil;Simplifier_poly_return * p = nil ; |
| |
| |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:18:4: ( ^( '+' ^( '+' a= INT p= poly ) b= INT ) ) // ruleBlockSingleAlt |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:18:4: ^( '+' ^( '+' a= INT p= poly ) b= INT ) // alt |
| { |
| |
| |
| [self match:input TokenType:8 Follow:FOLLOW_8_in_synpred2_Simplifier73]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:DOWN Follow:nil]; if ( state.failed ) return ; |
| |
| |
| [self match:input TokenType:8 Follow:FOLLOW_8_in_synpred2_Simplifier76]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:DOWN Follow:nil]; if ( state.failed ) return ; |
| |
| a=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_synpred2_Simplifier80]; if ( state.failed ) return ; |
| |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_synpred2_Simplifier84]; |
| p = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return ; |
| |
| |
| [self match:input TokenType:UP Follow:nil]; if ( state.failed ) return ; |
| |
| |
| b=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_synpred2_Simplifier89]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:UP Follow:nil]; if ( state.failed ) return ; |
| |
| |
| } |
| |
| } // $ANTLR end synpred2_Simplifier_fragment |
| // $ANTLR start synpred3_Simplifier_fragment |
| - (void) synpred3_Simplifier_fragment |
| { |
| /* ruleLabelDefs entry */ |
| CommonTree *a = nil; |
| CommonTree *b = nil;Simplifier_poly_return * p = nil ; |
| |
| |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:21:4: ( ^( '+' ^( '+' p= poly a= INT ) b= INT ) ) // ruleBlockSingleAlt |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:21:4: ^( '+' ^( '+' p= poly a= INT ) b= INT ) // alt |
| { |
| |
| |
| [self match:input TokenType:8 Follow:FOLLOW_8_in_synpred3_Simplifier117]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:DOWN Follow:nil]; if ( state.failed ) return ; |
| |
| |
| [self match:input TokenType:8 Follow:FOLLOW_8_in_synpred3_Simplifier120]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:DOWN Follow:nil]; if ( state.failed ) return ; |
| |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_synpred3_Simplifier124]; |
| p = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return ; |
| |
| |
| a=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_synpred3_Simplifier128]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:UP Follow:nil]; if ( state.failed ) return ; |
| |
| |
| b=(CommonTree *)[self match:input TokenType:INT Follow:FOLLOW_INT_in_synpred3_Simplifier133]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:UP Follow:nil]; if ( state.failed ) return ; |
| |
| |
| } |
| |
| } // $ANTLR end synpred3_Simplifier_fragment |
| // $ANTLR start synpred4_Simplifier_fragment |
| - (void) synpred4_Simplifier_fragment |
| { |
| /* ruleLabelDefs entry */ |
| Simplifier_poly_return * p = nil ; |
| |
| Simplifier_poly_return * q = nil ; |
| |
| |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:24:4: ( ^( '+' p= poly q= poly ) ) // ruleBlockSingleAlt |
| // /Users/acondit/source/antlr/code/antlr3/runtime/ObjC/Framework/examples/polydiff/Simplifier.g:24:4: ^( '+' p= poly q= poly ) // alt |
| { |
| |
| |
| [self match:input TokenType:8 Follow:FOLLOW_8_in_synpred4_Simplifier161]; if ( state.failed ) return ; |
| |
| [self match:input TokenType:DOWN Follow:nil]; if ( state.failed ) return ; |
| |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_synpred4_Simplifier165]; |
| p = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return ; |
| |
| |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_poly_in_synpred4_Simplifier169]; |
| q = [self poly]; |
| |
| [self popFollow]; |
| if ( state.failed ) return ; |
| |
| |
| [self match:input TokenType:UP Follow:nil]; if ( state.failed ) return ; |
| |
| |
| } |
| |
| } // $ANTLR end synpred4_Simplifier_fragment |
| /* ObjC end rules */ |
| |
| @end /* end of Simplifier implementation line 692 */ |