1 /** \file 2 * This OBJC source file was generated by $ANTLR version 3.2 Aug 20, 2010 15:00:19 3 * 4 * - From the grammar source file : /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g 5 * - On : 2010-08-20 15:03:14 6 * - for the parser : TreeRewriteParserParser * 7 * Editing it, at least manually, is not wise. 8 * 9 * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. 10 * 11 * 12 */ 13 // [The "BSD licence"] 14 // Copyright (c) 2010 Alan Condit 15 // 16 // All rights reserved. 17 // 18 // Redistribution and use in source and binary forms, with or without 19 // modification, are permitted provided that the following conditions 20 // are met: 21 // 1. Redistributions of source code must retain the above copyright 22 // notice, this list of conditions and the following disclaimer. 23 // 2. Redistributions in binary form must reproduce the above copyright 24 // notice, this list of conditions and the following disclaimer in the 25 // documentation and/or other materials provided with the distribution. 26 // 3. The name of the author may not be used to endorse or promote products 27 // derived from this software without specific prior written permission. 28 // 29 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 30 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 31 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 32 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 33 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 34 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 35 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 36 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 37 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 38 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 39 40 // $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 41 42 /* ----------------------------------------- 43 * Include the ANTLR3 generated header file. 44 */ 45 #import "TreeRewriteParser.h" 46 /* ----------------------------------------- */ 47 48 49 /* ============================================================================= */ 50 51 /* ============================================================================= 52 * Start of recognizer 53 */ 54 55 56 57 #pragma mark Bitsets 58 static ANTLRBitSet *FOLLOW_INT_in_rule26; 59 60 const unsigned long long FOLLOW_INT_in_rule26_data[] = { 0x0000000000000010LL}; 61 62 static ANTLRBitSet *FOLLOW_subrule_in_rule28; 63 64 const unsigned long long FOLLOW_subrule_in_rule28_data[] = { 0x0000000000000002LL}; 65 66 static ANTLRBitSet *FOLLOW_INT_in_subrule53; 67 68 const unsigned long long FOLLOW_INT_in_subrule53_data[] = { 0x0000000000000002LL}; 69 70 71 72 #pragma mark Dynamic Global Scopes 73 74 #pragma mark Dynamic Rule Scopes 75 76 #pragma mark Rule return scopes start 77 @implementation TreeRewriteParser_rule_return 78 @synthesize tree; 79 + (TreeRewriteParser_rule_return *)newTreeRewriteParser_rule_return 80 { 81 return [[[TreeRewriteParser_rule_return alloc] init] retain]; 82 } 83 84 // returnScope.methods 85 - (ANTLRCommonTree *)getTree 86 { 87 return tree; 88 } 89 90 - (void) setTree:(ANTLRCommonTree *)aTree 91 { 92 if (tree != aTree) { 93 if (tree != nil) [tree release]; 94 if (aTree != nil) [aTree retain]; 95 tree = aTree; 96 } 97 } 98 99 - (void) dealloc 100 { 101 [self setTree:nil]; 102 [super dealloc]; 103 } 104 105 106 107 108 @end 109 110 @implementation TreeRewriteParser_subrule_return 111 @synthesize tree; 112 + (TreeRewriteParser_subrule_return *)newTreeRewriteParser_subrule_return 113 { 114 return [[[TreeRewriteParser_subrule_return alloc] init] retain]; 115 } 116 117 // returnScope.methods 118 - (ANTLRCommonTree *)getTree 119 { 120 return tree; 121 } 122 123 - (void) setTree:(ANTLRCommonTree *)aTree 124 { 125 if (tree != aTree) { 126 if (tree != nil) [tree release]; 127 if (aTree != nil) [aTree retain]; 128 tree = aTree; 129 } 130 } 131 132 - (void) dealloc 133 { 134 [self setTree:nil]; 135 [super dealloc]; 136 } 137 138 139 140 141 @end 142 143 144 145 @implementation TreeRewriteParser // line 610 146 147 + (void) initialize 148 { 149 FOLLOW_INT_in_rule26 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_rule26_data Count:(NSUInteger)1] retain]; 150 FOLLOW_subrule_in_rule28 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_subrule_in_rule28_data Count:(NSUInteger)1] retain]; 151 FOLLOW_INT_in_subrule53 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_subrule53_data Count:(NSUInteger)1] retain]; 152 153 [ANTLRBaseRecognizer setTokenNames:[[[NSArray alloc] initWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>", 154 @"INT", @"WS", nil] retain]]; 155 } 156 157 + (TreeRewriteParser *)newTreeRewriteParser:(id<ANTLRTokenStream>)aStream 158 { 159 return [[TreeRewriteParser alloc] initWithTokenStream:aStream]; 160 161 } 162 163 - (id) initWithTokenStream:(id<ANTLRTokenStream>)aStream 164 { 165 if ((self = [super initWithTokenStream:aStream State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:2+1] retain]]) != nil) { 166 167 168 169 // start of actions-actionScope-init 170 // start of init 171 // genericParser.init 172 [self setTreeAdaptor:[[ANTLRCommonTreeAdaptor newANTLRCommonTreeAdaptor] retain]]; 173 } 174 return self; 175 } 176 177 - (void) dealloc 178 { 179 [self setTreeAdaptor:nil]; 180 181 [super dealloc]; 182 } 183 // start actions.actionScope.methods 184 // start methods() 185 // genericParser.methods 186 // parserMethods 187 - (id<ANTLRTreeAdaptor>) getTreeAdaptor 188 { 189 return treeAdaptor; 190 } 191 192 - (void) setTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor 193 { 194 if (aTreeAdaptor != treeAdaptor) { 195 treeAdaptor = aTreeAdaptor; 196 } 197 } 198 // start rules 199 /* 200 * $ANTLR start rule 201 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:8:1: rule : INT subrule -> ^( subrule INT ) ; 202 */ 203 - (TreeRewriteParser_rule_return *) rule 204 { 205 // ruleScopeSetUp 206 207 // ruleDeclarations 208 TreeRewriteParser_rule_return * retval = [TreeRewriteParser_rule_return newTreeRewriteParser_rule_return]; 209 [retval setStart:[input LT:1]]; 210 211 ANTLRCommonTree *root_0 = nil; 212 213 @try { 214 // ruleLabelDefs 215 id<ANTLRToken> INT1 = nil; 216 TreeRewriteParser_subrule_return * subrule2 = nil; 217 218 219 ANTLRCommonTree *INT1_tree=nil; 220 ANTLRRewriteRuleTokenStream *stream_INT = 221 [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor 222 description:@"token INT"] retain]; 223 ANTLRRewriteRuleSubtreeStream *stream_subrule = 224 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 225 description:@"rule subrule"] retain]; 226 // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:8:5: ( INT subrule -> ^( subrule INT ) ) // ruleBlockSingleAlt 227 // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:8:7: INT subrule // alt 228 { 229 INT1=(id<ANTLRToken>)[self match:input TokenType:INT Follow:FOLLOW_INT_in_rule26]; 230 [stream_INT addElement:INT1]; 231 /* element() */ 232 [self pushFollow:FOLLOW_subrule_in_rule28]; 233 subrule2 = [self subrule]; 234 [self popFollow]; 235 236 237 [stream_subrule addElement:[subrule2 getTree]]; /* element() */ 238 /* elements */ 239 240 // AST REWRITE 241 // elements: INT, subrule 242 // token labels: 243 // rule labels: retval 244 // token list labels: 245 // rule list labels: 246 // wildcard labels: 247 [retval setTree:root_0]; 248 249 retval.tree = root_0; 250 251 ANTLRRewriteRuleSubtreeStream *stream_retval = 252 [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor 253 description:@"token retval" 254 element:retval!=nil?[retval getTree]:nil] retain]; 255 256 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 257 258 // 8:19: -> ^( subrule INT ) 259 { 260 // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:8:22: ^( subrule INT ) 261 { 262 ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 263 root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:(id<ANTLRTree>)[stream_subrule nextNode] 264 old:root_1]; 265 266 // TODO: args: 267 [treeAdaptor addChild:[stream_INT nextNode] toTree:root_1]; 268 269 [treeAdaptor addChild:root_1 toTree:root_0]; 270 } 271 272 } 273 274 retval.tree = root_0; 275 276 } 277 278 // token+rule list labels 279 [retval setStop:[input LT:-1]]; 280 281 [stream_INT release]; 282 [stream_subrule release]; 283 284 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 285 [treeAdaptor setTokenBoundaries:retval.tree From:retval.startToken To:retval.stopToken]; 286 287 } 288 @catch (ANTLRRecognitionException *re) { 289 [self reportError:re]; 290 [self recover:input Exception:re]; 291 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re]; 292 293 } @finally { 294 } 295 return retval; 296 } 297 /* $ANTLR end rule */ 298 /* 299 * $ANTLR start subrule 300 * /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:11:1: subrule : INT ; 301 */ 302 - (TreeRewriteParser_subrule_return *) subrule 303 { 304 // ruleScopeSetUp 305 306 // ruleDeclarations 307 TreeRewriteParser_subrule_return * retval = [TreeRewriteParser_subrule_return newTreeRewriteParser_subrule_return]; 308 [retval setStart:[input LT:1]]; 309 310 ANTLRCommonTree *root_0 = nil; 311 312 @try { 313 // ruleLabelDefs 314 id<ANTLRToken> INT3 = nil; 315 316 ANTLRCommonTree *INT3_tree=nil; 317 318 // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:12:5: ( INT ) // ruleBlockSingleAlt 319 // /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/treerewrite/TreeRewrite.g:12:9: INT // alt 320 { 321 root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; 322 323 INT3=(id<ANTLRToken>)[self match:input TokenType:INT Follow:FOLLOW_INT_in_subrule53]; 324 INT3_tree = (ANTLRCommonTree *)[[treeAdaptor createTree:INT3] retain]; 325 [treeAdaptor addChild:INT3_tree toTree:root_0]; 326 /* element() */ 327 /* elements */ 328 } 329 330 // token+rule list labels 331 [retval setStop:[input LT:-1]]; 332 333 334 retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; 335 [treeAdaptor setTokenBoundaries:retval.tree From:retval.startToken To:retval.stopToken]; 336 337 } 338 @catch (ANTLRRecognitionException *re) { 339 [self reportError:re]; 340 [self recover:input Exception:re]; 341 retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re]; 342 343 } @finally { 344 } 345 return retval; 346 } 347 /* $ANTLR end subrule */ 348 349 @end /* end of TreeRewriteParser implementation line 669 */ 350 351 352 /* End of code 353 * ============================================================================= 354 */ 355