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