| /** \file |
| * This OBJC source file was generated by $ANTLR version 3.2 Aug 20, 2010 15:00:19 |
| * |
| * - From the grammar source file : /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g |
| * - On : 2010-08-20 15:03:14 |
| * - for the parser : TreeRewriteParserParser * |
| * Editing it, at least manually, is not wise. |
| * |
| * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. |
| * |
| * |
| */ |
| // [The "BSD licence"] |
| // Copyright (c) 2010 Alan Condit |
| // |
| // All rights reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions |
| // are met: |
| // 1. Redistributions of source code must retain the above copyright |
| // notice, this list of conditions and the following disclaimer. |
| // 2. Redistributions in binary form must reproduce the above copyright |
| // notice, this list of conditions and the following disclaimer in the |
| // documentation and/or other materials provided with the distribution. |
| // 3. The name of the author may not be used to endorse or promote products |
| // derived from this software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
| // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
| // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| // $ANTLR 3.2 Aug 20, 2010 15:00:19 /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g 2010-08-20 15:03:14 |
| |
| /* ----------------------------------------- |
| * Include the ANTLR3 generated header file. |
| */ |
| #import "TreeRewriteParser.h" |
| /* ----------------------------------------- */ |
| |
| |
| /* ============================================================================= */ |
| |
| /* ============================================================================= |
| * Start of recognizer |
| */ |
| |
| |
| |
| #pragma mark Bitsets |
| static ANTLRBitSet *FOLLOW_INT_in_rule26; |
| |
| const unsigned long long FOLLOW_INT_in_rule26_data[] = { 0x0000000000000010LL}; |
| |
| static ANTLRBitSet *FOLLOW_subrule_in_rule28; |
| |
| const unsigned long long FOLLOW_subrule_in_rule28_data[] = { 0x0000000000000002LL}; |
| |
| static ANTLRBitSet *FOLLOW_INT_in_subrule53; |
| |
| const unsigned long long FOLLOW_INT_in_subrule53_data[] = { 0x0000000000000002LL}; |
| |
| |
| |
| #pragma mark Dynamic Global Scopes |
| |
| #pragma mark Dynamic Rule Scopes |
| |
| #pragma mark Rule return scopes start |
| @implementation TreeRewriteParser_rule_return |
| @synthesize tree; |
| + (TreeRewriteParser_rule_return *)newTreeRewriteParser_rule_return |
| { |
| return [[[TreeRewriteParser_rule_return alloc] init] retain]; |
| } |
| |
| // returnScope.methods |
| - (ANTLRCommonTree *)getTree |
| { |
| return tree; |
| } |
| |
| - (void) setTree:(ANTLRCommonTree *)aTree |
| { |
| if (tree != aTree) { |
| if (tree != nil) [tree release]; |
| if (aTree != nil) [aTree retain]; |
| tree = aTree; |
| } |
| } |
| |
| - (void) dealloc |
| { |
| [self setTree:nil]; |
| [super dealloc]; |
| } |
| |
| |
| |
| |
| @end |
| |
| @implementation TreeRewriteParser_subrule_return |
| @synthesize tree; |
| + (TreeRewriteParser_subrule_return *)newTreeRewriteParser_subrule_return |
| { |
| return [[[TreeRewriteParser_subrule_return alloc] init] retain]; |
| } |
| |
| // returnScope.methods |
| - (ANTLRCommonTree *)getTree |
| { |
| return tree; |
| } |
| |
| - (void) setTree:(ANTLRCommonTree *)aTree |
| { |
| if (tree != aTree) { |
| if (tree != nil) [tree release]; |
| if (aTree != nil) [aTree retain]; |
| tree = aTree; |
| } |
| } |
| |
| - (void) dealloc |
| { |
| [self setTree:nil]; |
| [super dealloc]; |
| } |
| |
| |
| |
| |
| @end |
| |
| |
| |
| @implementation TreeRewriteParser // line 610 |
| |
| + (void) initialize |
| { |
| FOLLOW_INT_in_rule26 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_rule26_data Count:(NSUInteger)1] retain]; |
| FOLLOW_subrule_in_rule28 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_subrule_in_rule28_data Count:(NSUInteger)1] retain]; |
| FOLLOW_INT_in_subrule53 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_subrule53_data Count:(NSUInteger)1] retain]; |
| |
| [ANTLRBaseRecognizer setTokenNames:[[[NSArray alloc] initWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>", |
| @"INT", @"WS", nil] retain]]; |
| } |
| |
| + (TreeRewriteParser *)newTreeRewriteParser:(id<ANTLRTokenStream>)aStream |
| { |
| return [[TreeRewriteParser alloc] initWithTokenStream:aStream]; |
| |
| } |
| |
| - (id) initWithTokenStream:(id<ANTLRTokenStream>)aStream |
| { |
| if ((self = [super initWithTokenStream:aStream State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:2+1] retain]]) != nil) { |
| |
| |
| |
| // start of actions-actionScope-init |
| // start of init |
| // genericParser.init |
| [self setTreeAdaptor:[[ANTLRCommonTreeAdaptor newANTLRCommonTreeAdaptor] retain]]; |
| } |
| return self; |
| } |
| |
| - (void) dealloc |
| { |
| [self setTreeAdaptor:nil]; |
| |
| [super dealloc]; |
| } |
| // start actions.actionScope.methods |
| // start methods() |
| // genericParser.methods |
| // parserMethods |
| - (id<ANTLRTreeAdaptor>) getTreeAdaptor |
| { |
| return treeAdaptor; |
| } |
| |
| - (void) setTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor |
| { |
| if (aTreeAdaptor != treeAdaptor) { |
| treeAdaptor = aTreeAdaptor; |
| } |
| } |
| // start rules |
| /* |
| * $ANTLR start rule |
| * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:8:1: rule : INT subrule -> ^( subrule INT ) ; |
| */ |
| - (TreeRewriteParser_rule_return *) rule |
| { |
| // ruleScopeSetUp |
| |
| // ruleDeclarations |
| TreeRewriteParser_rule_return * retval = [TreeRewriteParser_rule_return newTreeRewriteParser_rule_return]; |
| [retval setStart:[input LT:1]]; |
| |
| ANTLRCommonTree *root_0 = nil; |
| |
| @try { |
| // ruleLabelDefs |
| id<ANTLRToken> INT1 = nil; |
| TreeRewriteParser_subrule_return * subrule2 = nil; |
| |
| |
| ANTLRCommonTree *INT1_tree=nil; |
| ANTLRRewriteRuleTokenStream *stream_INT = |
| [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor |
| description:@"token INT"] retain]; |
| ANTLRRewriteRuleSubtreeStream *stream_subrule = |
| [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor |
| description:@"rule subrule"] retain]; |
| // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:8:5: ( INT subrule -> ^( subrule INT ) ) // ruleBlockSingleAlt |
| // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:8:7: INT subrule // alt |
| { |
| INT1=(id<ANTLRToken>)[self match:input TokenType:INT Follow:FOLLOW_INT_in_rule26]; |
| [stream_INT addElement:INT1]; |
| /* element() */ |
| [self pushFollow:FOLLOW_subrule_in_rule28]; |
| subrule2 = [self subrule]; |
| [self popFollow]; |
| |
| |
| [stream_subrule addElement:[subrule2 getTree]]; /* element() */ |
| /* elements */ |
| |
| // AST REWRITE |
| // elements: INT, subrule |
| // token labels: |
| // rule labels: retval |
| // token list labels: |
| // rule list labels: |
| // wildcard labels: |
| [retval setTree:root_0]; |
| |
| retval.tree = root_0; |
| |
| ANTLRRewriteRuleSubtreeStream *stream_retval = |
| [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor |
| description:@"token retval" |
| element:retval!=nil?[retval getTree]:nil] retain]; |
| |
| root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| // 8:19: -> ^( subrule INT ) |
| { |
| // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:8:22: ^( subrule INT ) |
| { |
| ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:(id<ANTLRTree>)[stream_subrule nextNode] |
| old:root_1]; |
| |
| // TODO: args: |
| [treeAdaptor addChild:[stream_INT nextNode] toTree:root_1]; |
| |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| } |
| |
| } |
| |
| retval.tree = root_0; |
| |
| } |
| |
| // token+rule list labels |
| [retval setStop:[input LT:-1]]; |
| |
| [stream_INT release]; |
| [stream_subrule release]; |
| |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; |
| [treeAdaptor setTokenBoundaries:retval.tree From:retval.startToken To:retval.stopToken]; |
| |
| } |
| @catch (ANTLRRecognitionException *re) { |
| [self reportError:re]; |
| [self recover:input Exception:re]; |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re]; |
| |
| } @finally { |
| } |
| return retval; |
| } |
| /* $ANTLR end rule */ |
| /* |
| * $ANTLR start subrule |
| * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:11:1: subrule : INT ; |
| */ |
| - (TreeRewriteParser_subrule_return *) subrule |
| { |
| // ruleScopeSetUp |
| |
| // ruleDeclarations |
| TreeRewriteParser_subrule_return * retval = [TreeRewriteParser_subrule_return newTreeRewriteParser_subrule_return]; |
| [retval setStart:[input LT:1]]; |
| |
| ANTLRCommonTree *root_0 = nil; |
| |
| @try { |
| // ruleLabelDefs |
| id<ANTLRToken> INT3 = nil; |
| |
| ANTLRCommonTree *INT3_tree=nil; |
| |
| // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:12:5: ( INT ) // ruleBlockSingleAlt |
| // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:12:9: INT // alt |
| { |
| root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| INT3=(id<ANTLRToken>)[self match:input TokenType:INT Follow:FOLLOW_INT_in_subrule53]; |
| INT3_tree = (ANTLRCommonTree *)[[treeAdaptor createTree:INT3] retain]; |
| [treeAdaptor addChild:INT3_tree toTree:root_0]; |
| /* element() */ |
| /* elements */ |
| } |
| |
| // token+rule list labels |
| [retval setStop:[input LT:-1]]; |
| |
| |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; |
| [treeAdaptor setTokenBoundaries:retval.tree From:retval.startToken To:retval.stopToken]; |
| |
| } |
| @catch (ANTLRRecognitionException *re) { |
| [self reportError:re]; |
| [self recover:input Exception:re]; |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re]; |
| |
| } @finally { |
| } |
| return retval; |
| } |
| /* $ANTLR end subrule */ |
| |
| @end /* end of TreeRewriteParser implementation line 669 */ |
| |
| |
| /* End of code |
| * ============================================================================= |
| */ |