blob: 100592af511c0d0c708fb80ab82dd7e4586af26a [file] [log] [blame]
/** \file
* This OBJC source file was generated by $ANTLR version 3.2 Aug 19, 2010 17:16:04
*
* - From the grammar source file : /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g
* - On : 2010-08-19 17:16:47
* - for the parser : SymbolTableParserParser *
* 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 19, 2010 17:16:04 /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g 2010-08-19 17:16:47
/* -----------------------------------------
* Include the ANTLR3 generated header file.
*/
#import "SymbolTableParser.h"
/* ----------------------------------------- */
/* ============================================================================= */
/* =============================================================================
* Start of recognizer
*/
#pragma mark Bitsets
static ANTLRBitSet *FOLLOW_globals_in_prog44;
const unsigned long long FOLLOW_globals_in_prog44_data[] = { 0x0000000000000082LL};
static ANTLRBitSet *FOLLOW_method_in_prog47;
const unsigned long long FOLLOW_method_in_prog47_data[] = { 0x0000000000000082LL};
static ANTLRBitSet *FOLLOW_decl_in_globals79;
const unsigned long long FOLLOW_decl_in_globals79_data[] = { 0x0000000000004002LL};
static ANTLRBitSet *FOLLOW_7_in_method110;
const unsigned long long FOLLOW_7_in_method110_data[] = { 0x0000000000000010LL};
static ANTLRBitSet *FOLLOW_ID_in_method112;
const unsigned long long FOLLOW_ID_in_method112_data[] = { 0x0000000000000100LL};
static ANTLRBitSet *FOLLOW_8_in_method114;
const unsigned long long FOLLOW_8_in_method114_data[] = { 0x0000000000000200LL};
static ANTLRBitSet *FOLLOW_9_in_method116;
const unsigned long long FOLLOW_9_in_method116_data[] = { 0x0000000000000400LL};
static ANTLRBitSet *FOLLOW_block_in_method118;
const unsigned long long FOLLOW_block_in_method118_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_10_in_block147;
const unsigned long long FOLLOW_10_in_block147_data[] = { 0x0000000000004C10LL};
static ANTLRBitSet *FOLLOW_decl_in_block150;
const unsigned long long FOLLOW_decl_in_block150_data[] = { 0x0000000000004C10LL};
static ANTLRBitSet *FOLLOW_stat_in_block155;
const unsigned long long FOLLOW_stat_in_block155_data[] = { 0x0000000000000C10LL};
static ANTLRBitSet *FOLLOW_11_in_block159;
const unsigned long long FOLLOW_11_in_block159_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_ID_in_stat183;
const unsigned long long FOLLOW_ID_in_stat183_data[] = { 0x0000000000001000LL};
static ANTLRBitSet *FOLLOW_12_in_stat185;
const unsigned long long FOLLOW_12_in_stat185_data[] = { 0x0000000000000020LL};
static ANTLRBitSet *FOLLOW_INT_in_stat187;
const unsigned long long FOLLOW_INT_in_stat187_data[] = { 0x0000000000002000LL};
static ANTLRBitSet *FOLLOW_13_in_stat189;
const unsigned long long FOLLOW_13_in_stat189_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_block_in_stat199;
const unsigned long long FOLLOW_block_in_stat199_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_14_in_decl213;
const unsigned long long FOLLOW_14_in_decl213_data[] = { 0x0000000000000010LL};
static ANTLRBitSet *FOLLOW_ID_in_decl215;
const unsigned long long FOLLOW_ID_in_decl215_data[] = { 0x0000000000002000LL};
static ANTLRBitSet *FOLLOW_13_in_decl217;
const unsigned long long FOLLOW_13_in_decl217_data[] = { 0x0000000000000002LL};
#pragma mark Dynamic Global Scopes
@implementation Symbols_Scope /* globalAttributeScopeImpl */
/* start of synthesize -- OBJC-Line 1750 */
@synthesize names;
+ (Symbols_Scope *)newSymbols_Scope
{
return [[[Symbols_Scope alloc] init] retain];
}
/* start of iterate get and set functions */
- (ANTLRHashMap *)getnames { return( names ); }
- (void)setnames:(ANTLRHashMap *)aVal { names = aVal; }
/* End of iterate get and set functions */
@end
#pragma mark Dynamic Rule Scopes
#pragma mark Rule return scopes start
@implementation SymbolTableParser // line 610
+ (void) initialize
{
FOLLOW_globals_in_prog44 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_globals_in_prog44_data Count:(NSUInteger)1] retain];
FOLLOW_method_in_prog47 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_method_in_prog47_data Count:(NSUInteger)1] retain];
FOLLOW_decl_in_globals79 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_decl_in_globals79_data Count:(NSUInteger)1] retain];
FOLLOW_7_in_method110 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_7_in_method110_data Count:(NSUInteger)1] retain];
FOLLOW_ID_in_method112 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_method112_data Count:(NSUInteger)1] retain];
FOLLOW_8_in_method114 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_8_in_method114_data Count:(NSUInteger)1] retain];
FOLLOW_9_in_method116 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_9_in_method116_data Count:(NSUInteger)1] retain];
FOLLOW_block_in_method118 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_method118_data Count:(NSUInteger)1] retain];
FOLLOW_10_in_block147 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_10_in_block147_data Count:(NSUInteger)1] retain];
FOLLOW_decl_in_block150 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_decl_in_block150_data Count:(NSUInteger)1] retain];
FOLLOW_stat_in_block155 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_stat_in_block155_data Count:(NSUInteger)1] retain];
FOLLOW_11_in_block159 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_11_in_block159_data Count:(NSUInteger)1] retain];
FOLLOW_ID_in_stat183 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_stat183_data Count:(NSUInteger)1] retain];
FOLLOW_12_in_stat185 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_12_in_stat185_data Count:(NSUInteger)1] retain];
FOLLOW_INT_in_stat187 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_INT_in_stat187_data Count:(NSUInteger)1] retain];
FOLLOW_13_in_stat189 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_13_in_stat189_data Count:(NSUInteger)1] retain];
FOLLOW_block_in_stat199 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_stat199_data Count:(NSUInteger)1] retain];
FOLLOW_14_in_decl213 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_14_in_decl213_data Count:(NSUInteger)1] retain];
FOLLOW_ID_in_decl215 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_ID_in_decl215_data Count:(NSUInteger)1] retain];
FOLLOW_13_in_decl217 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_13_in_decl217_data Count:(NSUInteger)1] retain];
[ANTLRBaseRecognizer setTokenNames:[[[NSArray alloc] initWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>",
@"ID", @"INT", @"WS", @"'method'", @"'('", @"')'", @"'{'", @"'}'", @"'='",
@"';'", @"'int'", nil] retain]];
}
+ (SymbolTableParser *)newSymbolTableParser:(id<ANTLRTokenStream>)aStream
{
return [[SymbolTableParser alloc] initWithTokenStream:aStream];
}
- (id) initWithTokenStream:(id<ANTLRTokenStream>)aStream
{
if ((self = [super initWithTokenStream:aStream State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:6+1] retain]]) != nil) {
(Symbols_Scope *)Symbols_scope = [Symbols_Scope newSymbols_Scope];
// start of actions-actionScope-init
level = 0;
// start of init
}
return self;
}
- (void) dealloc
{
[Symbols_scope release];
[super dealloc];
}
// start actions.actionScope.methods
// start methods()
// start rules
/*
* $ANTLR start prog
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:25:1: prog : globals ( method )* ;
*/
- (void) prog
{
// ruleScopeSetUp
@try {
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:25:5: ( globals ( method )* ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:25:9: globals ( method )* // alt
{
[self pushFollow:FOLLOW_globals_in_prog44];
[self globals];
[self popFollow];
/* element() */
do {
NSInteger alt1=2;
NSInteger LA1_0 = [input LA:1];
if ( (LA1_0==7) ) {
alt1=1;
}
switch (alt1) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:25:18: method // alt
{
[self pushFollow:FOLLOW_method_in_prog47];
[self method];
[self popFollow];
/* element() */
/* elements */
}
break;
default :
goto loop1;
}
} while (YES);
loop1: ;
/* element() */
/* elements */
}
// token+rule list labels
}
@catch (ANTLRRecognitionException *re) {
[self reportError:re];
[self recover:input Exception:re];
} @finally {
}
return ;
}
/* $ANTLR end prog */
/*
* $ANTLR start globals
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:28:1: globals : ( decl )* ;
*/
- (void) globals
{
// ruleScopeSetUp
gStack = [ANTLRSymbolStack newANTLRSymbolStackWithLen:30];
Symbols_scope = [[Symbols_Scope newSymbols_Scope] retain];
[gStack push:Symbols_scope];
level++;
/* scopeSetAttributeRef */
((Symbols_Scope *)[gStack peek]).names = [ANTLRHashMap newANTLRHashMapWithLen:101];
@try {
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:34:5: ( ( decl )* ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:34:9: ( decl )* // alt
{
do {
NSInteger alt2=2;
NSInteger LA2_0 = [input LA:1];
if ( (LA2_0==14) ) {
alt2=1;
}
switch (alt2) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:34:10: decl // alt
{
[self pushFollow:FOLLOW_decl_in_globals79];
[self decl];
[self popFollow];
/* element() */
/* elements */
}
break;
default :
goto loop2;
}
} while (YES);
loop2: ;
/* element() */
NSLog(@"globals: %@", /* scopeAttributeRef */
((Symbols_Scope *)[gStack peek]).names);
level--;
/* element() */
/* elements */
}
// token+rule list labels
}
@catch (ANTLRRecognitionException *re) {
[self reportError:re];
[self recover:input Exception:re];
} @finally {
[gStack pop];
}
return ;
}
/* $ANTLR end globals */
/*
* $ANTLR start method
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:41:1: method : 'method' ID '(' ')' block ;
*/
- (void) method
{
// ruleScopeSetUp
@try {
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:42:5: ( 'method' ID '(' ')' block ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:42:9: 'method' ID '(' ')' block // alt
{
[self match:input TokenType:7 Follow:FOLLOW_7_in_method110]; /* element() */
[self match:input TokenType:ID Follow:FOLLOW_ID_in_method112]; /* element() */
[self match:input TokenType:8 Follow:FOLLOW_8_in_method114]; /* element() */
[self match:input TokenType:9 Follow:FOLLOW_9_in_method116]; /* element() */
[self pushFollow:FOLLOW_block_in_method118];
[self block];
[self popFollow];
/* element() */
/* elements */
}
// token+rule list labels
}
@catch (ANTLRRecognitionException *re) {
[self reportError:re];
[self recover:input Exception:re];
} @finally {
}
return ;
}
/* $ANTLR end method */
/*
* $ANTLR start block
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:45:1: block : '{' ( decl )* ( stat )* '}' ;
*/
- (void) block
{
// ruleScopeSetUp
gStack = [ANTLRSymbolStack newANTLRSymbolStackWithLen:30];
Symbols_scope = [[Symbols_Scope newSymbols_Scope] retain];
[gStack push:Symbols_scope];
level++;
/* scopeSetAttributeRef */
((Symbols_Scope *)[gStack peek]).names = [ANTLRHashMap newANTLRHashMapWithLen:101];
@try {
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:51:5: ( '{' ( decl )* ( stat )* '}' ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:51:9: '{' ( decl )* ( stat )* '}' // alt
{
[self match:input TokenType:10 Follow:FOLLOW_10_in_block147]; /* element() */
do {
NSInteger alt3=2;
NSInteger LA3_0 = [input LA:1];
if ( (LA3_0==14) ) {
alt3=1;
}
switch (alt3) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:51:14: decl // alt
{
[self pushFollow:FOLLOW_decl_in_block150];
[self decl];
[self popFollow];
/* element() */
/* elements */
}
break;
default :
goto loop3;
}
} while (YES);
loop3: ;
/* element() */
do {
NSInteger alt4=2;
NSInteger LA4_0 = [input LA:1];
if ( (LA4_0==ID||LA4_0==10) ) {
alt4=1;
}
switch (alt4) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:51:22: stat // alt
{
[self pushFollow:FOLLOW_stat_in_block155];
[self stat];
[self popFollow];
/* element() */
/* elements */
}
break;
default :
goto loop4;
}
} while (YES);
loop4: ;
/* element() */
[self match:input TokenType:11 Follow:FOLLOW_11_in_block159]; /* element() */
NSLog(@"level %d symbols: %@", level, /* scopeAttributeRef */
((Symbols_Scope *)[gStack peek]).names);
level--;
/* element() */
/* elements */
}
// token+rule list labels
}
@catch (ANTLRRecognitionException *re) {
[self reportError:re];
[self recover:input Exception:re];
} @finally {
[gStack pop];
}
return ;
}
/* $ANTLR end block */
/*
* $ANTLR start stat
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:58:1: stat : ( ID '=' INT ';' | block );
*/
- (void) stat
{
// ruleScopeSetUp
@try {
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:58:5: ( ID '=' INT ';' | block ) //ruleblock
NSInteger alt5=2;
NSInteger LA5_0 = [input LA:1];
if ( (LA5_0==ID) ) {
alt5=1;
}
else if ( (LA5_0==10) ) {
alt5=2;
}
else {
ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newANTLRNoViableAltException:5 state:0 stream:input];
@throw nvae;
}
switch (alt5) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:58:9: ID '=' INT ';' // alt
{
[self match:input TokenType:ID Follow:FOLLOW_ID_in_stat183]; /* element() */
[self match:input TokenType:12 Follow:FOLLOW_12_in_stat185]; /* element() */
[self match:input TokenType:INT Follow:FOLLOW_INT_in_stat187]; /* element() */
[self match:input TokenType:13 Follow:FOLLOW_13_in_stat189]; /* element() */
/* elements */
}
break;
case 2 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:59:9: block // alt
{
[self pushFollow:FOLLOW_block_in_stat199];
[self block];
[self popFollow];
/* element() */
/* elements */
}
break;
}
// token+rule list labels
}
@catch (ANTLRRecognitionException *re) {
[self reportError:re];
[self recover:input Exception:re];
} @finally {
}
return ;
}
/* $ANTLR end stat */
/*
* $ANTLR start decl
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:62:1: decl : 'int' ID ';' ;
*/
- (void) decl
{
// ruleScopeSetUp
@try {
id<ANTLRToken> ID1 = nil;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:62:5: ( 'int' ID ';' ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/scopes/SymbolTable.g:62:9: 'int' ID ';' // alt
{
[self match:input TokenType:14 Follow:FOLLOW_14_in_decl213]; /* element() */
ID1=(id<ANTLRToken>)[self match:input TokenType:ID Follow:FOLLOW_ID_in_decl215]; /* element() */
[self match:input TokenType:13 Follow:FOLLOW_13_in_decl217]; /* element() */
[/* scopeAttributeRef */
((Symbols_Scope *)[gStack peek]).names addObject:ID1]; /* element() */
/* elements */
}
// token+rule list labels
}
@catch (ANTLRRecognitionException *re) {
[self reportError:re];
[self recover:input Exception:re];
} @finally {
}
return ;
}
/* $ANTLR end decl */
@end // end of SymbolTableParser implementation line 669
/* End of code
* =============================================================================
*/