| /** \file |
| * This OBJC source file was generated by $ANTLR version ${project.version} ${buildNumber} |
| * |
| * - From the grammar source file : Lang.g |
| * - On : 2011-05-06 17:38:52 |
| * - for the parser : LangParserParser |
| * |
| * Editing it, at least manually, is not wise. |
| * |
| * ObjC language generator and runtime by Alan Condit, acondit|hereisanat|ipns|dotgoeshere|com. |
| * |
| * |
| */ |
| // $ANTLR ${project.version} ${buildNumber} Lang.g 2011-05-06 17:38:52 |
| |
| |
| /* ----------------------------------------- |
| * Include the ANTLR3 generated header file. |
| */ |
| #import "LangParser.h" |
| /* ----------------------------------------- */ |
| |
| |
| /* ============================================================================= */ |
| /* ============================================================================= |
| * Start of recognizer |
| */ |
| |
| #pragma mark Bitsets |
| static ANTLRBitSet *FOLLOW_decl_in_start41; |
| static const unsigned long long FOLLOW_decl_in_start41_data[] = { 0x0000000000000002LL}; |
| static ANTLRBitSet *FOLLOW_type_in_decl50; |
| static const unsigned long long FOLLOW_type_in_decl50_data[] = { 0x0000000000000040LL}; |
| static ANTLRBitSet *FOLLOW_ID_in_decl52; |
| static const unsigned long long FOLLOW_ID_in_decl52_data[] = { 0x0000000000000400LL}; |
| static ANTLRBitSet *FOLLOW_10_in_decl54; |
| static const unsigned long long FOLLOW_10_in_decl54_data[] = { 0x0000000000000002LL}; |
| |
| |
| #pragma mark Dynamic Global Scopes |
| |
| #pragma mark Dynamic Rule Scopes |
| |
| #pragma mark Rule Return Scopes start |
| @implementation LangParser_start_return /* returnScope */ |
| /* AST returnScope.synthesize */ |
| @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ |
| + (LangParser_start_return *)newLangParser_start_return |
| { |
| return [[[LangParser_start_return alloc] init] retain]; |
| } |
| |
| - (id) init |
| { |
| self = [super init]; |
| return self; |
| } |
| |
| /* AST 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.tree = nil; |
| [super dealloc]; |
| } |
| |
| |
| |
| @end /* end of returnScope implementation */ |
| |
| |
| @implementation LangParser_decl_return /* returnScope */ |
| /* AST returnScope.synthesize */ |
| @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ |
| + (LangParser_decl_return *)newLangParser_decl_return |
| { |
| return [[[LangParser_decl_return alloc] init] retain]; |
| } |
| |
| - (id) init |
| { |
| self = [super init]; |
| return self; |
| } |
| |
| /* AST 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.tree = nil; |
| [super dealloc]; |
| } |
| |
| |
| |
| @end /* end of returnScope implementation */ |
| |
| |
| @implementation LangParser_type_return /* returnScope */ |
| /* AST returnScope.synthesize */ |
| @synthesize tree; /* start of synthesize -- OBJC-Line 1837 */ |
| + (LangParser_type_return *)newLangParser_type_return |
| { |
| return [[[LangParser_type_return alloc] init] retain]; |
| } |
| |
| - (id) init |
| { |
| self = [super init]; |
| return self; |
| } |
| |
| /* AST 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.tree = nil; |
| [super dealloc]; |
| } |
| |
| |
| |
| @end /* end of returnScope implementation */ |
| |
| |
| //#pragma mark Rule return scopes start |
| // |
| |
| #pragma mark Rule return scopes start |
| |
| @implementation LangParser // line 637 |
| |
| /* ObjC start of ruleAttributeScope */ |
| #pragma mark Dynamic Rule Scopes |
| /* ObjC end of ruleAttributeScope */ |
| #pragma mark global Attribute Scopes |
| /* ObjC start globalAttributeScope */ |
| /* ObjC end globalAttributeScope */ |
| /* ObjC start actions.(actionScope).synthesize */ |
| /* ObjC end actions.(actionScope).synthesize */ |
| /* ObjC start synthesize() */ |
| /* AST genericParser.synthesize */ |
| /* AST parserProperties */ |
| @synthesize treeAdaptor; |
| /* ObjC end synthesize() */ |
| |
| + (void) initialize |
| { |
| #pragma mark Bitsets |
| FOLLOW_decl_in_start41 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_decl_in_start41_data Count:(NSUInteger)1] retain]; |
| FOLLOW_type_in_decl50 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_decl50_data Count:(NSUInteger)1] retain]; |
| FOLLOW_ID_in_decl52 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_decl52_data Count:(NSUInteger)1] retain]; |
| FOLLOW_10_in_decl54 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_10_in_decl54_data Count:(NSUInteger)1] retain]; |
| |
| [ANTLRBaseRecognizer setTokenNames:[[AMutableArray arrayWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>", |
| @"DECL", @"FLOATTYPE", @"ID", @"INT", @"INTTYPE", @"WS", @"';'", nil] retain]]; |
| [ANTLRBaseRecognizer setGrammarFileName:@"Lang.g"]; |
| } |
| |
| + (LangParser *)newLangParser:(id<ANTLRTokenStream>)aStream |
| { |
| return [[LangParser alloc] initWithTokenStream:aStream]; |
| |
| |
| } |
| |
| - (id) initWithTokenStream:(id<ANTLRTokenStream>)aStream |
| { |
| self = [super initWithTokenStream:aStream State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:3+1] retain]]; |
| if ( self != nil ) { |
| |
| |
| /* start of actions-actionScope-init */ |
| /* start of init */ |
| /* AST genericParser.init */ |
| [self setTreeAdaptor:[[ANTLRCommonTreeAdaptor newTreeAdaptor] retain]]; |
| } |
| return self; |
| } |
| |
| - (void) dealloc |
| { |
| /* AST genericParser.dealloc */ |
| [self setTreeAdaptor:nil]; |
| |
| [super dealloc]; |
| } |
| |
| /* ObjC start members */ |
| /* ObjC end members */ |
| /* ObjC start actions.(actionScope).methods */ |
| /* ObjC end actions.(actionScope).methods */ |
| /* ObjC start methods() */ |
| /* AST genericParser.methods */ |
| /* AST parserMethods */ |
| - (id<ANTLRTreeAdaptor>) getTreeAdaptor |
| { |
| return treeAdaptor; |
| } |
| |
| - (void) setTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor |
| { |
| if (aTreeAdaptor != treeAdaptor) { |
| treeAdaptor = aTreeAdaptor; |
| } |
| } |
| /* ObjC end methods() */ |
| /* ObjC start rules */ |
| /* |
| * $ANTLR start start |
| * Lang.g:10:1: start : decl ; |
| */ |
| - (LangParser_start_return *) start |
| { |
| /* my ruleScopeSetUp */ |
| /* Terence's stuff */ |
| |
| /* AST ruleDeclarations */ |
| LangParser_start_return * retval = [LangParser_start_return newLangParser_start_return]; |
| [retval setStart:[input LT:1]]; |
| |
| |
| ANTLRCommonTree *root_0 = nil; |
| |
| @try { |
| /* AST ruleLabelDefs */ |
| LangParser_decl_return * decl1 = nil ; |
| |
| |
| |
| // Lang.g:10:7: ( decl ) // ruleBlockSingleAlt |
| // Lang.g:10:9: decl // alt |
| { |
| root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| |
| /* ASTParser ruleRef */ |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_decl_in_start41]; |
| decl1 = [self decl]; |
| |
| [self popFollow]; |
| |
| |
| [treeAdaptor addChild:[decl1 getTree] toTree:root_0]; |
| |
| } |
| |
| /* ASTParser ruleCleanUp */ |
| /* AST ruleCleanUp */ |
| // token+rule list labels |
| [retval setStop:[input LT:-1]]; |
| |
| |
| |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; |
| [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; |
| |
| } |
| @catch (ANTLRRecognitionException *re) { |
| [self reportError:re]; |
| [self recover:input Exception:re]; |
| /* ASTParser rule.setErrorReturnValue */ |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; |
| |
| } |
| |
| @finally { |
| /* Terence's stuff */ |
| |
| } |
| return retval; |
| } |
| /* $ANTLR end start */ |
| |
| /* |
| * $ANTLR start decl |
| * Lang.g:12:1: decl : type ID ';' -> ^( DECL type ID ) ; |
| */ |
| - (LangParser_decl_return *) decl |
| { |
| /* my ruleScopeSetUp */ |
| /* Terence's stuff */ |
| |
| /* AST ruleDeclarations */ |
| LangParser_decl_return * retval = [LangParser_decl_return newLangParser_decl_return]; |
| [retval setStart:[input LT:1]]; |
| |
| |
| ANTLRCommonTree *root_0 = nil; |
| |
| @try { |
| /* AST ruleLabelDefs */ |
| ANTLRCommonToken *ID3 = nil; |
| ANTLRCommonToken *char_literal4 = nil; |
| LangParser_type_return * type2 = nil ; |
| |
| |
| ANTLRCommonTree *ID3_tree=nil; |
| ANTLRCommonTree *char_literal4_tree=nil; |
| ANTLRRewriteRuleTokenStream *stream_10 = |
| [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor |
| description:@"token 10"] retain]; |
| ANTLRRewriteRuleTokenStream *stream_ID = |
| [[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor |
| description:@"token ID"] retain]; |
| ANTLRRewriteRuleSubtreeStream *stream_type = |
| [[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor |
| description:@"rule type"] retain]; |
| // Lang.g:12:6: ( type ID ';' -> ^( DECL type ID ) ) // ruleBlockSingleAlt |
| // Lang.g:12:8: type ID ';' // alt |
| { |
| /* ruleRef */ |
| [self pushFollow:FOLLOW_type_in_decl50]; |
| type2 = [self type]; |
| |
| [self popFollow]; |
| |
| |
| [stream_type addElement:[type2 getTree]]; |
| |
| ID3=(ANTLRCommonToken *)[self match:input TokenType:ID Follow:FOLLOW_ID_in_decl52]; |
| [stream_ID addElement:ID3]; |
| |
| |
| char_literal4=(ANTLRCommonToken *)[self match:input TokenType:10 Follow:FOLLOW_10_in_decl54]; |
| [stream_10 addElement:char_literal4]; |
| |
| |
| // AST REWRITE |
| // elements: ID, type |
| // token labels: |
| // rule labels: retval |
| // token list labels: |
| // rule list labels: |
| // wildcard labels: |
| 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]; |
| |
| // 12:20: -> ^( DECL type ID ) |
| { |
| // Lang.g:12:23: ^( DECL type ID ) |
| { |
| ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot: |
| [treeAdaptor createTree:DECL Text:@"DECL"] |
| old:root_1]; |
| |
| [treeAdaptor addChild:[stream_type nextTree] toTree:root_1]; |
| |
| // TODO: args: |
| [treeAdaptor addChild: |
| [stream_ID nextNode] |
| toTree:root_1]; |
| |
| [treeAdaptor addChild:root_1 toTree:root_0]; |
| } |
| |
| } |
| |
| |
| retval.tree = root_0; |
| |
| |
| } |
| |
| /* ASTParser ruleCleanUp */ |
| /* AST ruleCleanUp */ |
| // token+rule list labels |
| [retval setStop:[input LT:-1]]; |
| |
| |
| [stream_10 release]; |
| [stream_ID release]; |
| [stream_type release]; |
| |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; |
| [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; |
| |
| } |
| @catch (ANTLRRecognitionException *re) { |
| [self reportError:re]; |
| [self recover:input Exception:re]; |
| /* ASTParser rule.setErrorReturnValue */ |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; |
| |
| } |
| |
| @finally { |
| /* Terence's stuff */ |
| |
| } |
| return retval; |
| } |
| /* $ANTLR end decl */ |
| |
| /* |
| * $ANTLR start type |
| * Lang.g:14:1: type : ( INTTYPE | FLOATTYPE ); |
| */ |
| - (LangParser_type_return *) type |
| { |
| /* my ruleScopeSetUp */ |
| /* Terence's stuff */ |
| |
| /* AST ruleDeclarations */ |
| LangParser_type_return * retval = [LangParser_type_return newLangParser_type_return]; |
| [retval setStart:[input LT:1]]; |
| |
| |
| ANTLRCommonTree *root_0 = nil; |
| |
| @try { |
| /* AST ruleLabelDefs */ |
| ANTLRCommonToken *set5 = nil; |
| |
| ANTLRCommonTree *set5_tree=nil; |
| |
| // Lang.g:14:6: ( INTTYPE | FLOATTYPE ) // ruleBlockSingleAlt |
| // Lang.g: // alt |
| { |
| root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain]; |
| |
| |
| /* ASTParser matchRuleBlockSet */ |
| /* ASTParser matchSet */ |
| set5 = (ANTLRCommonToken *)[input LT:1]; /* matchSet */ |
| |
| if ([input LA:1] == FLOATTYPE||[input LA:1] == INTTYPE) { |
| [input consume]; |
| [treeAdaptor addChild:/* ASTParser createNodeFromToken */ |
| (ANTLRCommonTree *)[[treeAdaptor create:set5] retain] |
| toTree:root_0 ]; |
| [state setIsErrorRecovery:NO]; |
| } else { |
| ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException newException:nil stream:input]; |
| @throw mse; |
| } |
| |
| |
| } |
| |
| /* ASTParser ruleCleanUp */ |
| /* AST ruleCleanUp */ |
| // token+rule list labels |
| [retval setStop:[input LT:-1]]; |
| |
| |
| |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor rulePostProcessing:root_0]; |
| [treeAdaptor setTokenBoundaries:retval.tree From:retval.start To:retval.stopToken]; |
| |
| } |
| @catch (ANTLRRecognitionException *re) { |
| [self reportError:re]; |
| [self recover:input Exception:re]; |
| /* ASTParser rule.setErrorReturnValue */ |
| retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.start To:[input LT:-1] Exception:re]; |
| |
| } |
| |
| @finally { |
| /* Terence's stuff */ |
| |
| } |
| return retval; |
| } |
| /* $ANTLR end type */ |
| /* ObjC end rules */ |
| |
| @end /* end of LangParser implementation line 692 */ |