blob: 6c49d09523bedb1955824e5045e83e1825e65965 [file] [log] [blame]
/** \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 */