blob: 386640a2feda73ae8c498228054a780c47439029 [file] [log] [blame]
/** \file
* This OBJC source file was generated by $ANTLR version 3.2 Aug 23, 2010 07:48:06
*
* - From the grammar source file : /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g
* - On : 2010-08-23 07:54:46
* - for the parser : SimpleCParserParser *
* Editing it, at least manually, is not wise.
*
* ObjC language generator and runtime by Alan Condit, acondit|hereisanat|ipns|dotgoeshere|com.
*
*
*/
// [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 23, 2010 07:48:06 /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g 2010-08-23 07:54:46
/* -----------------------------------------
* Include the ANTLR3 generated header file.
*/
#import "SimpleCParser.h"
/* ----------------------------------------- */
/* ============================================================================= */
/* =============================================================================
* Start of recognizer
*/
#pragma mark Cyclic DFA implementation start DFA2
@implementation DFA2
const static NSInteger dfa2_eot[13] =
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
const static NSInteger dfa2_eof[13] =
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
const static unichar dfa2_min[13] =
{10,10,21,10,0,10,21,23,0,0,10,10,23};
const static unichar dfa2_max[13] =
{13,10,22,24,0,10,25,24,0,0,13,10,24};
const static NSInteger dfa2_accept[13] =
{-1,-1,-1,-1,1,-1,-1,-1,3,2,-1,-1,-1};
const static NSInteger dfa2_special[13] =
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
const static NSInteger dfa2_transition[] = {};
const static NSInteger dfa2_transition0[] = {9, -1, -1, -1, 8};
const static NSInteger dfa2_transition1[] = {10, 6};
const static NSInteger dfa2_transition2[] = {5, 5, 5, 5, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 6};
const static NSInteger dfa2_transition3[] = {11, 11, 11, 11};
const static NSInteger dfa2_transition4[] = {4, 3};
const static NSInteger dfa2_transition5[] = {1, 1, 1, 1};
const static NSInteger dfa2_transition6[] = {7};
const static NSInteger dfa2_transition7[] = {12};
const static NSInteger dfa2_transition8[] = {2};
+ () newDFA2WithRecognizer:(ANTLRBaseRecognizer *)aRecognizer
{
return [[[DFA2 alloc] initWithRecognizer:aRecognizer] retain];
}
- (id) initWithRecognizer:(ANTLRBaseRecognizer *) theRecognizer
{
if ((self = [super initWithRecognizer:theRecognizer]) != nil) {
decisionNumber = 2;
eot = dfa2_eot;
eof = dfa2_eof;
min = dfa2_min;
max = dfa2_max;
accept = dfa2_accept;
special = dfa2_special;
if (!(transition = calloc(13, sizeof(void*)))) {
[self release];
return nil;
}
len = 13;
transition[0] = dfa2_transition5;
transition[1] = dfa2_transition8;
transition[2] = dfa2_transition4;
transition[3] = dfa2_transition2;
transition[4] = dfa2_transition;
transition[5] = dfa2_transition6;
transition[6] = dfa2_transition0;
transition[7] = dfa2_transition1;
transition[8] = dfa2_transition;
transition[9] = dfa2_transition;
transition[10] = dfa2_transition3;
transition[11] = dfa2_transition7;
transition[12] = dfa2_transition1;
}
return self;
}
- (void) dealloc
{
free(transition);
[super dealloc];
}
- (NSString *) description
{
return @"20:1: declaration : ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) );";
}
@end /* end DFA2 implementation */
#pragma mark Cyclic DFA implementation end DFA2
#pragma mark Bitsets
static ANTLRBitSet *FOLLOW_declaration_in_program85;
static const unsigned long long FOLLOW_declaration_in_program85_data[] = { 0x0000000000003C02LL};
static ANTLRBitSet *FOLLOW_variable_in_declaration105;
static const unsigned long long FOLLOW_variable_in_declaration105_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_functionHeader_in_declaration115;
static const unsigned long long FOLLOW_functionHeader_in_declaration115_data[] = { 0x0000000000200000LL};
static ANTLRBitSet *FOLLOW_21_in_declaration117;
static const unsigned long long FOLLOW_21_in_declaration117_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_functionHeader_in_declaration135;
static const unsigned long long FOLLOW_functionHeader_in_declaration135_data[] = { 0x0000000002000000LL};
static ANTLRBitSet *FOLLOW_block_in_declaration137;
static const unsigned long long FOLLOW_block_in_declaration137_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_type_in_variable166;
static const unsigned long long FOLLOW_type_in_variable166_data[] = { 0x0000000000000400LL};
static ANTLRBitSet *FOLLOW_declarator_in_variable168;
static const unsigned long long FOLLOW_declarator_in_variable168_data[] = { 0x0000000000200000LL};
static ANTLRBitSet *FOLLOW_21_in_variable170;
static const unsigned long long FOLLOW_21_in_variable170_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_K_ID_in_declarator199;
static const unsigned long long FOLLOW_K_ID_in_declarator199_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_type_in_functionHeader219;
static const unsigned long long FOLLOW_type_in_functionHeader219_data[] = { 0x0000000000000400LL};
static ANTLRBitSet *FOLLOW_K_ID_in_functionHeader221;
static const unsigned long long FOLLOW_K_ID_in_functionHeader221_data[] = { 0x0000000000400000LL};
static ANTLRBitSet *FOLLOW_22_in_functionHeader223;
static const unsigned long long FOLLOW_22_in_functionHeader223_data[] = { 0x0000000001003C00LL};
static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader227;
static const unsigned long long FOLLOW_formalParameter_in_functionHeader227_data[] = { 0x0000000001800000LL};
static ANTLRBitSet *FOLLOW_23_in_functionHeader231;
static const unsigned long long FOLLOW_23_in_functionHeader231_data[] = { 0x0000000000003C00LL};
static ANTLRBitSet *FOLLOW_formalParameter_in_functionHeader233;
static const unsigned long long FOLLOW_formalParameter_in_functionHeader233_data[] = { 0x0000000001800000LL};
static ANTLRBitSet *FOLLOW_24_in_functionHeader241;
static const unsigned long long FOLLOW_24_in_functionHeader241_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_type_in_formalParameter281;
static const unsigned long long FOLLOW_type_in_formalParameter281_data[] = { 0x0000000000000400LL};
static ANTLRBitSet *FOLLOW_declarator_in_formalParameter283;
static const unsigned long long FOLLOW_declarator_in_formalParameter283_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_set_in_type0;
static const unsigned long long FOLLOW_set_in_type0_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_25_in_block376;
static const unsigned long long FOLLOW_25_in_block376_data[] = { 0x0000000006607C00LL};
static ANTLRBitSet *FOLLOW_variable_in_block390;
static const unsigned long long FOLLOW_variable_in_block390_data[] = { 0x0000000006607C00LL};
static ANTLRBitSet *FOLLOW_stat_in_block405;
static const unsigned long long FOLLOW_stat_in_block405_data[] = { 0x0000000006604C00LL};
static ANTLRBitSet *FOLLOW_26_in_block416;
static const unsigned long long FOLLOW_26_in_block416_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_forStat_in_stat449;
static const unsigned long long FOLLOW_forStat_in_stat449_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_expr_in_stat457;
static const unsigned long long FOLLOW_expr_in_stat457_data[] = { 0x0000000000200000LL};
static ANTLRBitSet *FOLLOW_21_in_stat459;
static const unsigned long long FOLLOW_21_in_stat459_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_block_in_stat468;
static const unsigned long long FOLLOW_block_in_stat468_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_assignStat_in_stat476;
static const unsigned long long FOLLOW_assignStat_in_stat476_data[] = { 0x0000000000200000LL};
static ANTLRBitSet *FOLLOW_21_in_stat478;
static const unsigned long long FOLLOW_21_in_stat478_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_21_in_stat487;
static const unsigned long long FOLLOW_21_in_stat487_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_K_FOR_in_forStat507;
static const unsigned long long FOLLOW_K_FOR_in_forStat507_data[] = { 0x0000000000400000LL};
static ANTLRBitSet *FOLLOW_22_in_forStat509;
static const unsigned long long FOLLOW_22_in_forStat509_data[] = { 0x0000000000000400LL};
static ANTLRBitSet *FOLLOW_assignStat_in_forStat513;
static const unsigned long long FOLLOW_assignStat_in_forStat513_data[] = { 0x0000000000200000LL};
static ANTLRBitSet *FOLLOW_21_in_forStat515;
static const unsigned long long FOLLOW_21_in_forStat515_data[] = { 0x0000000000400C00LL};
static ANTLRBitSet *FOLLOW_expr_in_forStat517;
static const unsigned long long FOLLOW_expr_in_forStat517_data[] = { 0x0000000000200000LL};
static ANTLRBitSet *FOLLOW_21_in_forStat519;
static const unsigned long long FOLLOW_21_in_forStat519_data[] = { 0x0000000000000400LL};
static ANTLRBitSet *FOLLOW_assignStat_in_forStat523;
static const unsigned long long FOLLOW_assignStat_in_forStat523_data[] = { 0x0000000001000000LL};
static ANTLRBitSet *FOLLOW_24_in_forStat525;
static const unsigned long long FOLLOW_24_in_forStat525_data[] = { 0x0000000002000000LL};
static ANTLRBitSet *FOLLOW_block_in_forStat527;
static const unsigned long long FOLLOW_block_in_forStat527_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_K_ID_in_assignStat570;
static const unsigned long long FOLLOW_K_ID_in_assignStat570_data[] = { 0x0000000000008000LL};
static ANTLRBitSet *FOLLOW_K_EQ_in_assignStat572;
static const unsigned long long FOLLOW_K_EQ_in_assignStat572_data[] = { 0x0000000000400C00LL};
static ANTLRBitSet *FOLLOW_expr_in_assignStat574;
static const unsigned long long FOLLOW_expr_in_assignStat574_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_condExpr_in_expr598;
static const unsigned long long FOLLOW_condExpr_in_expr598_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_aexpr_in_condExpr617;
static const unsigned long long FOLLOW_aexpr_in_condExpr617_data[] = { 0x0000000000030002LL};
static ANTLRBitSet *FOLLOW_K_EQEQ_in_condExpr622;
static const unsigned long long FOLLOW_K_EQEQ_in_condExpr622_data[] = { 0x0000000000400C00LL};
static ANTLRBitSet *FOLLOW_K_LT_in_condExpr627;
static const unsigned long long FOLLOW_K_LT_in_condExpr627_data[] = { 0x0000000000400C00LL};
static ANTLRBitSet *FOLLOW_aexpr_in_condExpr631;
static const unsigned long long FOLLOW_aexpr_in_condExpr631_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_atom_in_aexpr653;
static const unsigned long long FOLLOW_atom_in_aexpr653_data[] = { 0x0000000000040002LL};
static ANTLRBitSet *FOLLOW_K_PLUS_in_aexpr657;
static const unsigned long long FOLLOW_K_PLUS_in_aexpr657_data[] = { 0x0000000000400C00LL};
static ANTLRBitSet *FOLLOW_atom_in_aexpr660;
static const unsigned long long FOLLOW_atom_in_aexpr660_data[] = { 0x0000000000040002LL};
static ANTLRBitSet *FOLLOW_K_ID_in_atom680;
static const unsigned long long FOLLOW_K_ID_in_atom680_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_K_INT_in_atom694;
static const unsigned long long FOLLOW_K_INT_in_atom694_data[] = { 0x0000000000000002LL};
static ANTLRBitSet *FOLLOW_22_in_atom708;
static const unsigned long long FOLLOW_22_in_atom708_data[] = { 0x0000000000400C00LL};
static ANTLRBitSet *FOLLOW_expr_in_atom710;
static const unsigned long long FOLLOW_expr_in_atom710_data[] = { 0x0000000001000000LL};
static ANTLRBitSet *FOLLOW_24_in_atom712;
static const unsigned long long FOLLOW_24_in_atom712_data[] = { 0x0000000000000002LL};
#pragma mark Dynamic Global Scopes
#pragma mark Dynamic Rule Scopes
#pragma mark Rule return scopes start
@implementation SimpleCParser_program_return
+ (SimpleCParser_program_return *)newSimpleCParser_program_return
{
return [[[SimpleCParser_program_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_declaration_return
+ (SimpleCParser_declaration_return *)newSimpleCParser_declaration_return
{
return [[[SimpleCParser_declaration_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_variable_return
+ (SimpleCParser_variable_return *)newSimpleCParser_variable_return
{
return [[[SimpleCParser_variable_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_declarator_return
+ (SimpleCParser_declarator_return *)newSimpleCParser_declarator_return
{
return [[[SimpleCParser_declarator_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_functionHeader_return
+ (SimpleCParser_functionHeader_return *)newSimpleCParser_functionHeader_return
{
return [[[SimpleCParser_functionHeader_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_formalParameter_return
+ (SimpleCParser_formalParameter_return *)newSimpleCParser_formalParameter_return
{
return [[[SimpleCParser_formalParameter_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_type_return
+ (SimpleCParser_type_return *)newSimpleCParser_type_return
{
return [[[SimpleCParser_type_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_block_return
+ (SimpleCParser_block_return *)newSimpleCParser_block_return
{
return [[[SimpleCParser_block_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_stat_return
+ (SimpleCParser_stat_return *)newSimpleCParser_stat_return
{
return [[[SimpleCParser_stat_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_forStat_return
+ (SimpleCParser_forStat_return *)newSimpleCParser_forStat_return
{
return [[[SimpleCParser_forStat_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_assignStat_return
+ (SimpleCParser_assignStat_return *)newSimpleCParser_assignStat_return
{
return [[[SimpleCParser_assignStat_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_expr_return
+ (SimpleCParser_expr_return *)newSimpleCParser_expr_return
{
return [[[SimpleCParser_expr_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_condExpr_return
+ (SimpleCParser_condExpr_return *)newSimpleCParser_condExpr_return
{
return [[[SimpleCParser_condExpr_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_aexpr_return
+ (SimpleCParser_aexpr_return *)newSimpleCParser_aexpr_return
{
return [[[SimpleCParser_aexpr_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser_atom_return
+ (SimpleCParser_atom_return *)newSimpleCParser_atom_return
{
return [[[SimpleCParser_atom_return alloc] init] retain];
}
/* 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 setTree:nil];
[super dealloc];
}
@end /* end of returnScope implementation */
@implementation SimpleCParser // line 610
+ (void) initialize
{
#pragma mark Bitsets
FOLLOW_declaration_in_program85 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declaration_in_program85_data Count:(NSUInteger)1] retain];
FOLLOW_variable_in_declaration105 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_variable_in_declaration105_data Count:(NSUInteger)1] retain];
FOLLOW_functionHeader_in_declaration115 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_functionHeader_in_declaration115_data Count:(NSUInteger)1] retain];
FOLLOW_21_in_declaration117 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_21_in_declaration117_data Count:(NSUInteger)1] retain];
FOLLOW_functionHeader_in_declaration135 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_functionHeader_in_declaration135_data Count:(NSUInteger)1] retain];
FOLLOW_block_in_declaration137 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_declaration137_data Count:(NSUInteger)1] retain];
FOLLOW_type_in_variable166 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_variable166_data Count:(NSUInteger)1] retain];
FOLLOW_declarator_in_variable168 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declarator_in_variable168_data Count:(NSUInteger)1] retain];
FOLLOW_21_in_variable170 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_21_in_variable170_data Count:(NSUInteger)1] retain];
FOLLOW_K_ID_in_declarator199 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_declarator199_data Count:(NSUInteger)1] retain];
FOLLOW_type_in_functionHeader219 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_functionHeader219_data Count:(NSUInteger)1] retain];
FOLLOW_K_ID_in_functionHeader221 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_functionHeader221_data Count:(NSUInteger)1] retain];
FOLLOW_22_in_functionHeader223 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_22_in_functionHeader223_data Count:(NSUInteger)1] retain];
FOLLOW_formalParameter_in_functionHeader227 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_formalParameter_in_functionHeader227_data Count:(NSUInteger)1] retain];
FOLLOW_23_in_functionHeader231 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_23_in_functionHeader231_data Count:(NSUInteger)1] retain];
FOLLOW_formalParameter_in_functionHeader233 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_formalParameter_in_functionHeader233_data Count:(NSUInteger)1] retain];
FOLLOW_24_in_functionHeader241 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_24_in_functionHeader241_data Count:(NSUInteger)1] retain];
FOLLOW_type_in_formalParameter281 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_type_in_formalParameter281_data Count:(NSUInteger)1] retain];
FOLLOW_declarator_in_formalParameter283 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_declarator_in_formalParameter283_data Count:(NSUInteger)1] retain];
FOLLOW_set_in_type0 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_set_in_type0_data Count:(NSUInteger)1] retain];
FOLLOW_25_in_block376 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_25_in_block376_data Count:(NSUInteger)1] retain];
FOLLOW_variable_in_block390 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_variable_in_block390_data Count:(NSUInteger)1] retain];
FOLLOW_stat_in_block405 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_stat_in_block405_data Count:(NSUInteger)1] retain];
FOLLOW_26_in_block416 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_26_in_block416_data Count:(NSUInteger)1] retain];
FOLLOW_forStat_in_stat449 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_forStat_in_stat449_data Count:(NSUInteger)1] retain];
FOLLOW_expr_in_stat457 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_stat457_data Count:(NSUInteger)1] retain];
FOLLOW_21_in_stat459 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_21_in_stat459_data Count:(NSUInteger)1] retain];
FOLLOW_block_in_stat468 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_stat468_data Count:(NSUInteger)1] retain];
FOLLOW_assignStat_in_stat476 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_stat476_data Count:(NSUInteger)1] retain];
FOLLOW_21_in_stat478 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_21_in_stat478_data Count:(NSUInteger)1] retain];
FOLLOW_21_in_stat487 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_21_in_stat487_data Count:(NSUInteger)1] retain];
FOLLOW_K_FOR_in_forStat507 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_FOR_in_forStat507_data Count:(NSUInteger)1] retain];
FOLLOW_22_in_forStat509 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_22_in_forStat509_data Count:(NSUInteger)1] retain];
FOLLOW_assignStat_in_forStat513 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_forStat513_data Count:(NSUInteger)1] retain];
FOLLOW_21_in_forStat515 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_21_in_forStat515_data Count:(NSUInteger)1] retain];
FOLLOW_expr_in_forStat517 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_forStat517_data Count:(NSUInteger)1] retain];
FOLLOW_21_in_forStat519 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_21_in_forStat519_data Count:(NSUInteger)1] retain];
FOLLOW_assignStat_in_forStat523 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_assignStat_in_forStat523_data Count:(NSUInteger)1] retain];
FOLLOW_24_in_forStat525 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_24_in_forStat525_data Count:(NSUInteger)1] retain];
FOLLOW_block_in_forStat527 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_block_in_forStat527_data Count:(NSUInteger)1] retain];
FOLLOW_K_ID_in_assignStat570 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_assignStat570_data Count:(NSUInteger)1] retain];
FOLLOW_K_EQ_in_assignStat572 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_EQ_in_assignStat572_data Count:(NSUInteger)1] retain];
FOLLOW_expr_in_assignStat574 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_assignStat574_data Count:(NSUInteger)1] retain];
FOLLOW_condExpr_in_expr598 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_condExpr_in_expr598_data Count:(NSUInteger)1] retain];
FOLLOW_aexpr_in_condExpr617 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_aexpr_in_condExpr617_data Count:(NSUInteger)1] retain];
FOLLOW_K_EQEQ_in_condExpr622 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_EQEQ_in_condExpr622_data Count:(NSUInteger)1] retain];
FOLLOW_K_LT_in_condExpr627 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_LT_in_condExpr627_data Count:(NSUInteger)1] retain];
FOLLOW_aexpr_in_condExpr631 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_aexpr_in_condExpr631_data Count:(NSUInteger)1] retain];
FOLLOW_atom_in_aexpr653 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_atom_in_aexpr653_data Count:(NSUInteger)1] retain];
FOLLOW_K_PLUS_in_aexpr657 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_PLUS_in_aexpr657_data Count:(NSUInteger)1] retain];
FOLLOW_atom_in_aexpr660 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_atom_in_aexpr660_data Count:(NSUInteger)1] retain];
FOLLOW_K_ID_in_atom680 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_ID_in_atom680_data Count:(NSUInteger)1] retain];
FOLLOW_K_INT_in_atom694 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_K_INT_in_atom694_data Count:(NSUInteger)1] retain];
FOLLOW_22_in_atom708 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_22_in_atom708_data Count:(NSUInteger)1] retain];
FOLLOW_expr_in_atom710 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_expr_in_atom710_data Count:(NSUInteger)1] retain];
FOLLOW_24_in_atom712 = [[ANTLRBitSet newANTLRBitSetWithBits:(const unsigned long long *)FOLLOW_24_in_atom712_data Count:(NSUInteger)1] retain];
[ANTLRBaseRecognizer setTokenNames:[[[NSArray alloc] initWithObjects:@"<invalid>", @"<EOR>", @"<DOWN>", @"<UP>",
@"VAR_DEF", @"ARG_DEF", @"FUNC_HDR", @"FUNC_DECL", @"FUNC_DEF", @"BLOCK",
@"K_ID", @"K_INT", @"K_CHAR", @"K_VOID", @"K_FOR", @"K_EQ", @"K_EQEQ",
@"K_LT", @"K_PLUS", @"K_INT_TYPE", @"WS", @"';'", @"'('", @"','", @"')'",
@"'{'", @"'}'", nil] retain]];
}
+ (SimpleCParser *)newSimpleCParser:(id<ANTLRTokenStream>)aStream
{
return [[SimpleCParser alloc] initWithTokenStream:aStream];
}
- (id) initWithTokenStream:(id<ANTLRTokenStream>)aStream
{
if ((self = [super initWithTokenStream:aStream State:[[ANTLRRecognizerSharedState newANTLRRecognizerSharedStateWithRuleLen:15+1] retain]]) != nil) {
dfa2 = [DFA2 newDFA2WithRecognizer:self];
/* start of actions-actionScope-init */
/* start of init */
/* AST genericParser.init */
[self setTreeAdaptor:[[ANTLRCommonTreeAdaptor newANTLRCommonTreeAdaptor] retain]];
}
return self;
}
- (void) dealloc
{
[dfa2 release];
/* AST genericParser.dealloc */
[self setTreeAdaptor:nil];
[super dealloc];
}
// start actions.actionScope.methods
// start methods()
/* AST genericParser.methods */
/* AST parserMethods */
- (id<ANTLRTreeAdaptor>) getTreeAdaptor
{
return treeAdaptor;
}
- (void) setTreeAdaptor:(id<ANTLRTreeAdaptor>)aTreeAdaptor
{
if (aTreeAdaptor != treeAdaptor) {
treeAdaptor = aTreeAdaptor;
}
}
// start rules
/*
* $ANTLR start program
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:16:1: program : ( declaration )+ ;
*/
- (SimpleCParser_program_return *) program
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_program_return * retval = [SimpleCParser_program_return newSimpleCParser_program_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
SimpleCParser_declaration_return * declaration1 = nil;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:17:5: ( ( declaration )+ ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:17:9: ( declaration )+ // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:17:9: ( declaration )+ // positiveClosureBlock
NSInteger cnt1=0;
do {
NSInteger alt1=2;
NSInteger LA1_0 = [input LA:1];
if ( ((LA1_0>=K_ID && LA1_0<=K_VOID)) ) {
alt1=1;
}
switch (alt1) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:17:9: declaration // alt
{
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_declaration_in_program85];
declaration1 = [self declaration];
[self popFollow];
[treeAdaptor addChild:[declaration1 getTree] toTree:root_0]; /* element() */
/* elements */
}
break;
default :
if ( cnt1 >= 1 )
goto loop1;
ANTLREarlyExitException *eee = [ANTLREarlyExitException exceptionWithStream:input decisionNumber:1];
@throw eee;
}
cnt1++;
} while (YES);
loop1: ;
/* element() */
/* elements */
}
/* 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.startToken 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.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end program */
/*
* $ANTLR start declaration
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:20:1: declaration : ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) );
*/
- (SimpleCParser_declaration_return *) declaration
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_declaration_return * retval = [SimpleCParser_declaration_return newSimpleCParser_declaration_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *char_literal4 = nil;
SimpleCParser_variable_return * variable2 = nil;
SimpleCParser_functionHeader_return * functionHeader3 = nil;
SimpleCParser_functionHeader_return * functionHeader5 = nil;
SimpleCParser_block_return * block6 = nil;
ANTLRCommonTree *char_literal4_tree=nil;
ANTLRRewriteRuleTokenStream *stream_21 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 21"] retain];
ANTLRRewriteRuleSubtreeStream *stream_functionHeader =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule functionHeader"] retain];
ANTLRRewriteRuleSubtreeStream *stream_block =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule block"] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:21:5: ( variable | functionHeader ';' -> ^( FUNC_DECL functionHeader ) | functionHeader block -> ^( FUNC_DEF functionHeader block ) ) //ruleblock
NSInteger alt2=3;
alt2 = [dfa2 predict:input];
switch (alt2) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:21:9: variable // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_variable_in_declaration105];
variable2 = [self variable];
[self popFollow];
[treeAdaptor addChild:[variable2 getTree] toTree:root_0]; /* element() */
/* elements */
}
break;
case 2 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:22:9: functionHeader ';' // alt
{
[self pushFollow:FOLLOW_functionHeader_in_declaration115];
functionHeader3 = [self functionHeader];
[self popFollow];
[stream_functionHeader addElement:[functionHeader3 getTree]]; /* element() */
char_literal4=(ANTLRCommonToken *)[self match:input TokenType:21 Follow:FOLLOW_21_in_declaration117];
[stream_21 addElement:char_literal4];
/* element() */
/* elements */
// AST REWRITE
// elements: functionHeader
// 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];
// 22:28: -> ^( FUNC_DECL functionHeader )
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:22:31: ^( FUNC_DECL functionHeader )
{
ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:[[treeAdaptor createTree:(NSInteger)FUNC_DECL Text:[[ANTLRBaseRecognizer getTokenNames] objectAtIndex:(NSUInteger)FUNC_DECL]] retain]
old:root_1];
[treeAdaptor addChild:[stream_functionHeader nextTree] toTree:root_1];
[treeAdaptor addChild:root_1 toTree:root_0];
}
}
retval.tree = root_0;
}
break;
case 3 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:23:9: functionHeader block // alt
{
[self pushFollow:FOLLOW_functionHeader_in_declaration135];
functionHeader5 = [self functionHeader];
[self popFollow];
[stream_functionHeader addElement:[functionHeader5 getTree]]; /* element() */
[self pushFollow:FOLLOW_block_in_declaration137];
block6 = [self block];
[self popFollow];
[stream_block addElement:[block6 getTree]]; /* element() */
/* elements */
// AST REWRITE
// elements: functionHeader, block
// 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];
// 23:30: -> ^( FUNC_DEF functionHeader block )
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:23:33: ^( FUNC_DEF functionHeader block )
{
ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:[[treeAdaptor createTree:(NSInteger)FUNC_DEF Text:[[ANTLRBaseRecognizer getTokenNames] objectAtIndex:(NSUInteger)FUNC_DEF]] retain]
old:root_1];
[treeAdaptor addChild:[stream_functionHeader nextTree] toTree:root_1];
[treeAdaptor addChild:[stream_block nextTree] toTree:root_1];
[treeAdaptor addChild:root_1 toTree:root_0];
}
}
retval.tree = root_0;
}
break;
}
/* ASTParser ruleCleanUp */
/* AST ruleCleanUp */
// token+rule list labels
[retval setStop:[input LT:-1]];
[stream_21 release];
[stream_functionHeader release];
[stream_block 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];
/* ASTParser rule.setErrorReturnValue */
retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end declaration */
/*
* $ANTLR start variable
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:26:1: variable : type declarator ';' -> ^( VAR_DEF type declarator ) ;
*/
- (SimpleCParser_variable_return *) variable
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_variable_return * retval = [SimpleCParser_variable_return newSimpleCParser_variable_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *char_literal9 = nil;
SimpleCParser_type_return * type7 = nil;
SimpleCParser_declarator_return * declarator8 = nil;
ANTLRCommonTree *char_literal9_tree=nil;
ANTLRRewriteRuleTokenStream *stream_21 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 21"] retain];
ANTLRRewriteRuleSubtreeStream *stream_declarator =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule declarator"] retain];
ANTLRRewriteRuleSubtreeStream *stream_type =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule type"] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:27:5: ( type declarator ';' -> ^( VAR_DEF type declarator ) ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:27:9: type declarator ';' // alt
{
[self pushFollow:FOLLOW_type_in_variable166];
type7 = [self type];
[self popFollow];
[stream_type addElement:[type7 getTree]]; /* element() */
[self pushFollow:FOLLOW_declarator_in_variable168];
declarator8 = [self declarator];
[self popFollow];
[stream_declarator addElement:[declarator8 getTree]]; /* element() */
char_literal9=(ANTLRCommonToken *)[self match:input TokenType:21 Follow:FOLLOW_21_in_variable170];
[stream_21 addElement:char_literal9];
/* element() */
/* elements */
// AST REWRITE
// elements: type, declarator
// 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];
// 27:29: -> ^( VAR_DEF type declarator )
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:27:32: ^( VAR_DEF type declarator )
{
ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:[[treeAdaptor createTree:(NSInteger)VAR_DEF Text:[[ANTLRBaseRecognizer getTokenNames] objectAtIndex:(NSUInteger)VAR_DEF]] retain]
old:root_1];
[treeAdaptor addChild:[stream_type nextTree] toTree:root_1];
[treeAdaptor addChild:[stream_declarator nextTree] 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_21 release];
[stream_declarator release];
[stream_type 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];
/* ASTParser rule.setErrorReturnValue */
retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end variable */
/*
* $ANTLR start declarator
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:30:1: declarator : K_ID ;
*/
- (SimpleCParser_declarator_return *) declarator
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_declarator_return * retval = [SimpleCParser_declarator_return newSimpleCParser_declarator_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *K_ID10 = nil;
ANTLRCommonTree *K_ID10_tree=nil;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:31:5: ( K_ID ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:31:9: K_ID // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser tokenRef */
K_ID10=(ANTLRCommonToken *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_declarator199];
K_ID10_tree = /* ASTParser createNodeFromToken */
(ANTLRCommonTree *)[[treeAdaptor createTree:K_ID10] retain];
[treeAdaptor addChild:K_ID10_tree toTree:root_0];
/* element() */
/* elements */
}
/* 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.startToken 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.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end declarator */
/*
* $ANTLR start functionHeader
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:34:1: functionHeader : type K_ID '(' ( formalParameter ( ',' formalParameter )* )? ')' -> ^( FUNC_HDR type K_ID ( formalParameter )+ ) ;
*/
- (SimpleCParser_functionHeader_return *) functionHeader
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_functionHeader_return * retval = [SimpleCParser_functionHeader_return newSimpleCParser_functionHeader_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *K_ID12 = nil;
ANTLRCommonToken *char_literal13 = nil;
ANTLRCommonToken *char_literal15 = nil;
ANTLRCommonToken *char_literal17 = nil;
SimpleCParser_type_return * type11 = nil;
SimpleCParser_formalParameter_return * formalParameter14 = nil;
SimpleCParser_formalParameter_return * formalParameter16 = nil;
ANTLRCommonTree *K_ID12_tree=nil;
ANTLRCommonTree *char_literal13_tree=nil;
ANTLRCommonTree *char_literal15_tree=nil;
ANTLRCommonTree *char_literal17_tree=nil;
ANTLRRewriteRuleTokenStream *stream_K_ID =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token K_ID"] retain];
ANTLRRewriteRuleTokenStream *stream_22 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 22"] retain];
ANTLRRewriteRuleTokenStream *stream_23 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 23"] retain];
ANTLRRewriteRuleTokenStream *stream_24 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 24"] retain];
ANTLRRewriteRuleSubtreeStream *stream_formalParameter =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule formalParameter"] retain];
ANTLRRewriteRuleSubtreeStream *stream_type =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule type"] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:35:5: ( type K_ID '(' ( formalParameter ( ',' formalParameter )* )? ')' -> ^( FUNC_HDR type K_ID ( formalParameter )+ ) ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:35:9: type K_ID '(' ( formalParameter ( ',' formalParameter )* )? ')' // alt
{
[self pushFollow:FOLLOW_type_in_functionHeader219];
type11 = [self type];
[self popFollow];
[stream_type addElement:[type11 getTree]]; /* element() */
K_ID12=(ANTLRCommonToken *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_functionHeader221];
[stream_K_ID addElement:K_ID12];
/* element() */
char_literal13=(ANTLRCommonToken *)[self match:input TokenType:22 Follow:FOLLOW_22_in_functionHeader223];
[stream_22 addElement:char_literal13];
/* element() */
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:35:23: ( formalParameter ( ',' formalParameter )* )? // block
NSInteger alt4=2;
NSInteger LA4_0 = [input LA:1];
if ( ((LA4_0>=K_ID && LA4_0<=K_VOID)) ) {
alt4=1;
}
switch (alt4) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:35:25: formalParameter ( ',' formalParameter )* // alt
{
[self pushFollow:FOLLOW_formalParameter_in_functionHeader227];
formalParameter14 = [self formalParameter];
[self popFollow];
[stream_formalParameter addElement:[formalParameter14 getTree]]; /* element() */
do {
NSInteger alt3=2;
NSInteger LA3_0 = [input LA:1];
if ( (LA3_0==23) ) {
alt3=1;
}
switch (alt3) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:35:43: ',' formalParameter // alt
{
char_literal15=(ANTLRCommonToken *)[self match:input TokenType:23 Follow:FOLLOW_23_in_functionHeader231];
[stream_23 addElement:char_literal15];
/* element() */
[self pushFollow:FOLLOW_formalParameter_in_functionHeader233];
formalParameter16 = [self formalParameter];
[self popFollow];
[stream_formalParameter addElement:[formalParameter16 getTree]]; /* element() */
/* elements */
}
break;
default :
goto loop3;
}
} while (YES);
loop3: ;
/* element() */
/* elements */
}
break;
}
/* element() */
char_literal17=(ANTLRCommonToken *)[self match:input TokenType:24 Follow:FOLLOW_24_in_functionHeader241];
[stream_24 addElement:char_literal17];
/* element() */
/* elements */
// AST REWRITE
// elements: K_ID, formalParameter, type
// 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];
// 36:9: -> ^( FUNC_HDR type K_ID ( formalParameter )+ )
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:36:12: ^( FUNC_HDR type K_ID ( formalParameter )+ )
{
ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:[[treeAdaptor createTree:(NSInteger)FUNC_HDR Text:[[ANTLRBaseRecognizer getTokenNames] objectAtIndex:(NSUInteger)FUNC_HDR]] retain]
old:root_1];
[treeAdaptor addChild:[stream_type nextTree] toTree:root_1];
// TODO: args:
[treeAdaptor addChild:[stream_K_ID nextNode] toTree:root_1];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:36:33: ( formalParameter )+
{
if ( !([stream_formalParameter hasNext]) ) {
@throw [NSException exceptionWithName:@"RewriteEarlyExitException" reason:nil userInfo:nil];
}
while ( [stream_formalParameter hasNext] ) {
[treeAdaptor addChild:[stream_formalParameter nextTree] toTree:root_1];
}
[stream_formalParameter reset];
}
[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_K_ID release];
[stream_22 release];
[stream_23 release];
[stream_24 release];
[stream_formalParameter release];
[stream_type 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];
/* ASTParser rule.setErrorReturnValue */
retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end functionHeader */
/*
* $ANTLR start formalParameter
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:39:1: formalParameter : type declarator -> ^( ARG_DEF type declarator ) ;
*/
- (SimpleCParser_formalParameter_return *) formalParameter
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_formalParameter_return * retval = [SimpleCParser_formalParameter_return newSimpleCParser_formalParameter_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
SimpleCParser_type_return * type18 = nil;
SimpleCParser_declarator_return * declarator19 = nil;
ANTLRRewriteRuleSubtreeStream *stream_declarator =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule declarator"] retain];
ANTLRRewriteRuleSubtreeStream *stream_type =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule type"] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:40:5: ( type declarator -> ^( ARG_DEF type declarator ) ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:40:9: type declarator // alt
{
[self pushFollow:FOLLOW_type_in_formalParameter281];
type18 = [self type];
[self popFollow];
[stream_type addElement:[type18 getTree]]; /* element() */
[self pushFollow:FOLLOW_declarator_in_formalParameter283];
declarator19 = [self declarator];
[self popFollow];
[stream_declarator addElement:[declarator19 getTree]]; /* element() */
/* elements */
// AST REWRITE
// elements: declarator, type
// 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];
// 40:25: -> ^( ARG_DEF type declarator )
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:40:28: ^( ARG_DEF type declarator )
{
ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:[[treeAdaptor createTree:(NSInteger)ARG_DEF Text:[[ANTLRBaseRecognizer getTokenNames] objectAtIndex:(NSUInteger)ARG_DEF]] retain]
old:root_1];
[treeAdaptor addChild:[stream_type nextTree] toTree:root_1];
[treeAdaptor addChild:[stream_declarator nextTree] 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_declarator release];
[stream_type 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];
/* ASTParser rule.setErrorReturnValue */
retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end formalParameter */
/*
* $ANTLR start type
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:43:1: type : ( K_INT | K_CHAR | K_VOID | K_ID );
*/
- (SimpleCParser_type_return *) type
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_type_return * retval = [SimpleCParser_type_return newSimpleCParser_type_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *set20 = nil;
ANTLRCommonTree *set20_tree=nil;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:44:5: ( K_INT | K_CHAR | K_VOID | K_ID ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g: // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser matchRuleBlockSet */
/* ASTParser matchSet */
set20 = (ANTLRCommonToken *)[input LT:1];
if ((([input LA:1] >= K_ID) && ([input LA:1] <= K_VOID))) {
[input consume];
[treeAdaptor addChild:/* ASTParser createNodeFromToken */
(ANTLRCommonTree *)[[treeAdaptor createTree:set20] retain] toTree:root_0 ];
[state setIsErrorRecovery:NO];
} else {
ANTLRMismatchedSetException *mse = [ANTLRMismatchedSetException exceptionWithSet:nil stream:input];
@throw mse;
}
/* element() */
/* elements */
}
/* 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.startToken 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.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end type */
/*
* $ANTLR start block
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:50:1: block : lc= '{' ( variable )* ( stat )* '}' -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) ;
*/
- (SimpleCParser_block_return *) block
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_block_return * retval = [SimpleCParser_block_return newSimpleCParser_block_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *lc = nil;
ANTLRCommonToken *char_literal23 = nil;
SimpleCParser_variable_return * variable21 = nil;
SimpleCParser_stat_return * stat22 = nil;
ANTLRCommonTree *lc_tree=nil;
ANTLRCommonTree *char_literal23_tree=nil;
ANTLRRewriteRuleTokenStream *stream_25 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 25"] retain];
ANTLRRewriteRuleTokenStream *stream_26 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 26"] retain];
ANTLRRewriteRuleSubtreeStream *stream_variable =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule variable"] retain];
ANTLRRewriteRuleSubtreeStream *stream_stat =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule stat"] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:51:5: (lc= '{' ( variable )* ( stat )* '}' -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* ) ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:51:9: lc= '{' ( variable )* ( stat )* '}' // alt
{
lc=(ANTLRCommonToken *)[self match:input TokenType:25 Follow:FOLLOW_25_in_block376];
[stream_25 addElement:lc];
/* element() */
do {
NSInteger alt5=2;
switch ([input LA:1]) {
case K_ID: ;
{
NSInteger LA5_2 = [input LA:2];
if ( (LA5_2==K_ID) ) {
alt5=1;
}
}
break;
case K_INT: ;
{
NSInteger LA5_3 = [input LA:2];
if ( (LA5_3==K_ID) ) {
alt5=1;
}
}
break;
case K_CHAR: ;
case K_VOID: ;
{
alt5=1;
}
break;
}
switch (alt5) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:52:13: variable // alt
{
[self pushFollow:FOLLOW_variable_in_block390];
variable21 = [self variable];
[self popFollow];
[stream_variable addElement:[variable21 getTree]]; /* element() */
/* elements */
}
break;
default :
goto loop5;
}
} while (YES);
loop5: ;
/* element() */
do {
NSInteger alt6=2;
NSInteger LA6_0 = [input LA:1];
if ( ((LA6_0>=K_ID && LA6_0<=K_INT)||LA6_0==K_FOR||(LA6_0>=21 && LA6_0<=22)||LA6_0==25) ) {
alt6=1;
}
switch (alt6) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:53:13: stat // alt
{
[self pushFollow:FOLLOW_stat_in_block405];
stat22 = [self stat];
[self popFollow];
[stream_stat addElement:[stat22 getTree]]; /* element() */
/* elements */
}
break;
default :
goto loop6;
}
} while (YES);
loop6: ;
/* element() */
char_literal23=(ANTLRCommonToken *)[self match:input TokenType:26 Follow:FOLLOW_26_in_block416];
[stream_26 addElement:char_literal23];
/* element() */
/* elements */
// AST REWRITE
// elements: stat, variable
// 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];
// 55:9: -> ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* )
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:55:12: ^( BLOCK[$lc,@\"BLOCK\"] ( variable )* ( stat )* )
{
ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:[[treeAdaptor createTree:(NSInteger)BLOCK Text:[[ANTLRBaseRecognizer getTokenNames] objectAtIndex:(NSUInteger)BLOCK]] retain]
old:root_1];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:55:34: ( variable )*
while ( [stream_variable hasNext] ) {
[treeAdaptor addChild:[stream_variable nextTree] toTree:root_1];
}
[stream_variable reset];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:55:44: ( stat )*
while ( [stream_stat hasNext] ) {
[treeAdaptor addChild:[stream_stat nextTree] toTree:root_1];
}
[stream_stat reset];
[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_25 release];
[stream_26 release];
[stream_variable release];
[stream_stat 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];
/* ASTParser rule.setErrorReturnValue */
retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end block */
/*
* $ANTLR start stat
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:58:1: stat : ( forStat | expr ';' | block | assignStat ';' | ';' );
*/
- (SimpleCParser_stat_return *) stat
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_stat_return * retval = [SimpleCParser_stat_return newSimpleCParser_stat_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *char_literal26 = nil;
ANTLRCommonToken *char_literal29 = nil;
ANTLRCommonToken *char_literal30 = nil;
SimpleCParser_forStat_return * forStat24 = nil;
SimpleCParser_expr_return * expr25 = nil;
SimpleCParser_block_return * block27 = nil;
SimpleCParser_assignStat_return * assignStat28 = nil;
ANTLRCommonTree *char_literal26_tree=nil;
ANTLRCommonTree *char_literal29_tree=nil;
ANTLRCommonTree *char_literal30_tree=nil;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:58:5: ( forStat | expr ';' | block | assignStat ';' | ';' ) //ruleblock
NSInteger alt7=5;
switch ([input LA:1]) {
case K_FOR: ;
{
alt7=1;
}
break;
case K_ID: ;
{
NSInteger LA7_2 = [input LA:2];
if ( (LA7_2==K_EQ) ) {
alt7=4;
}
else if ( ((LA7_2>=K_EQEQ && LA7_2<=K_PLUS)||LA7_2==21) ) {
alt7=2;
}
else {
ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newANTLRNoViableAltException:7 state:2 stream:input];
@throw nvae;
}
}
break;
case K_INT: ;
case 22: ;
{
alt7=2;
}
break;
case 25: ;
{
alt7=3;
}
break;
case 21: ;
{
alt7=5;
}
break;
default: ;
ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newANTLRNoViableAltException:7 state:0 stream:input];
@throw nvae;
}
switch (alt7) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:58:7: forStat // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_forStat_in_stat449];
forStat24 = [self forStat];
[self popFollow];
[treeAdaptor addChild:[forStat24 getTree] toTree:root_0]; /* element() */
/* elements */
}
break;
case 2 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:59:7: expr ';' // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_expr_in_stat457];
expr25 = [self expr];
[self popFollow];
[treeAdaptor addChild:[expr25 getTree] toTree:root_0]; /* element() */
char_literal26=(ANTLRCommonToken *)[self match:input TokenType:21 Follow:FOLLOW_21_in_stat459]; /* element() */
/* elements */
}
break;
case 3 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:60:7: block // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_block_in_stat468];
block27 = [self block];
[self popFollow];
[treeAdaptor addChild:[block27 getTree] toTree:root_0]; /* element() */
/* elements */
}
break;
case 4 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:61:7: assignStat ';' // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_assignStat_in_stat476];
assignStat28 = [self assignStat];
[self popFollow];
[treeAdaptor addChild:[assignStat28 getTree] toTree:root_0]; /* element() */
char_literal29=(ANTLRCommonToken *)[self match:input TokenType:21 Follow:FOLLOW_21_in_stat478]; /* element() */
/* elements */
}
break;
case 5 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:62:7: ';' // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
char_literal30=(ANTLRCommonToken *)[self match:input TokenType:21 Follow:FOLLOW_21_in_stat487]; /* element() */
/* elements */
}
break;
}
/* 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.startToken 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.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end stat */
/*
* $ANTLR start forStat
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:65:1: forStat : K_FOR '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( K_FOR $start expr $next block ) ;
*/
- (SimpleCParser_forStat_return *) forStat
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_forStat_return * retval = [SimpleCParser_forStat_return newSimpleCParser_forStat_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *K_FOR31 = nil;
ANTLRCommonToken *char_literal32 = nil;
ANTLRCommonToken *char_literal33 = nil;
ANTLRCommonToken *char_literal35 = nil;
ANTLRCommonToken *char_literal36 = nil;
SimpleCParser_assignStat_return * start = nil;
SimpleCParser_assignStat_return * next = nil;
SimpleCParser_expr_return * expr34 = nil;
SimpleCParser_block_return * block37 = nil;
ANTLRCommonTree *K_FOR31_tree=nil;
ANTLRCommonTree *char_literal32_tree=nil;
ANTLRCommonTree *char_literal33_tree=nil;
ANTLRCommonTree *char_literal35_tree=nil;
ANTLRCommonTree *char_literal36_tree=nil;
ANTLRRewriteRuleTokenStream *stream_21 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 21"] retain];
ANTLRRewriteRuleTokenStream *stream_22 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 22"] retain];
ANTLRRewriteRuleTokenStream *stream_24 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 24"] retain];
ANTLRRewriteRuleTokenStream *stream_K_FOR =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token K_FOR"] retain];
ANTLRRewriteRuleSubtreeStream *stream_assignStat =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule assignStat"] retain];
ANTLRRewriteRuleSubtreeStream *stream_block =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule block"] retain];
ANTLRRewriteRuleSubtreeStream *stream_expr =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule expr"] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:66:5: ( K_FOR '(' start= assignStat ';' expr ';' next= assignStat ')' block -> ^( K_FOR $start expr $next block ) ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:66:9: K_FOR '(' start= assignStat ';' expr ';' next= assignStat ')' block // alt
{
K_FOR31=(ANTLRCommonToken *)[self match:input TokenType:K_FOR Follow:FOLLOW_K_FOR_in_forStat507];
[stream_K_FOR addElement:K_FOR31];
/* element() */
char_literal32=(ANTLRCommonToken *)[self match:input TokenType:22 Follow:FOLLOW_22_in_forStat509];
[stream_22 addElement:char_literal32];
/* element() */
[self pushFollow:FOLLOW_assignStat_in_forStat513];
start = [self assignStat];
[self popFollow];
[stream_assignStat addElement:[start getTree]]; /* element() */
char_literal33=(ANTLRCommonToken *)[self match:input TokenType:21 Follow:FOLLOW_21_in_forStat515];
[stream_21 addElement:char_literal33];
/* element() */
[self pushFollow:FOLLOW_expr_in_forStat517];
expr34 = [self expr];
[self popFollow];
[stream_expr addElement:[expr34 getTree]]; /* element() */
char_literal35=(ANTLRCommonToken *)[self match:input TokenType:21 Follow:FOLLOW_21_in_forStat519];
[stream_21 addElement:char_literal35];
/* element() */
[self pushFollow:FOLLOW_assignStat_in_forStat523];
next = [self assignStat];
[self popFollow];
[stream_assignStat addElement:[next getTree]]; /* element() */
char_literal36=(ANTLRCommonToken *)[self match:input TokenType:24 Follow:FOLLOW_24_in_forStat525];
[stream_24 addElement:char_literal36];
/* element() */
[self pushFollow:FOLLOW_block_in_forStat527];
block37 = [self block];
[self popFollow];
[stream_block addElement:[block37 getTree]]; /* element() */
/* elements */
// AST REWRITE
// elements: K_FOR, expr, start, next, block
// token labels:
// rule labels: retval, start, next
// 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];
ANTLRRewriteRuleSubtreeStream *stream_start =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"token start"
element:start!=nil?[start getTree]:nil] retain];
ANTLRRewriteRuleSubtreeStream *stream_next =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"token next"
element:next!=nil?[next getTree]:nil] retain];
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
// 67:9: -> ^( K_FOR $start expr $next block )
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:67:12: ^( K_FOR $start expr $next block )
{
ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:[stream_K_FOR nextNode] old:root_1];
[treeAdaptor addChild:[stream_start nextTree] toTree:root_1];
[treeAdaptor addChild:[stream_expr nextTree] toTree:root_1];
[treeAdaptor addChild:[stream_next nextTree] toTree:root_1];
[treeAdaptor addChild:[stream_block nextTree] 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_21 release];
[stream_22 release];
[stream_24 release];
[stream_K_FOR release];
[stream_assignStat release];
[stream_block release];
[stream_expr 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];
/* ASTParser rule.setErrorReturnValue */
retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end forStat */
/*
* $ANTLR start assignStat
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:70:1: assignStat : K_ID K_EQ expr -> ^( K_EQ K_ID expr ) ;
*/
- (SimpleCParser_assignStat_return *) assignStat
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_assignStat_return * retval = [SimpleCParser_assignStat_return newSimpleCParser_assignStat_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *K_ID38 = nil;
ANTLRCommonToken *K_EQ39 = nil;
SimpleCParser_expr_return * expr40 = nil;
ANTLRCommonTree *K_ID38_tree=nil;
ANTLRCommonTree *K_EQ39_tree=nil;
ANTLRRewriteRuleTokenStream *stream_K_ID =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token K_ID"] retain];
ANTLRRewriteRuleTokenStream *stream_K_EQ =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token K_EQ"] retain];
ANTLRRewriteRuleSubtreeStream *stream_expr =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule expr"] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:71:5: ( K_ID K_EQ expr -> ^( K_EQ K_ID expr ) ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:71:9: K_ID K_EQ expr // alt
{
K_ID38=(ANTLRCommonToken *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_assignStat570];
[stream_K_ID addElement:K_ID38];
/* element() */
K_EQ39=(ANTLRCommonToken *)[self match:input TokenType:K_EQ Follow:FOLLOW_K_EQ_in_assignStat572];
[stream_K_EQ addElement:K_EQ39];
/* element() */
[self pushFollow:FOLLOW_expr_in_assignStat574];
expr40 = [self expr];
[self popFollow];
[stream_expr addElement:[expr40 getTree]]; /* element() */
/* elements */
// AST REWRITE
// elements: K_EQ, K_ID, expr
// 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];
// 71:24: -> ^( K_EQ K_ID expr )
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:71:27: ^( K_EQ K_ID expr )
{
ANTLRCommonTree *root_1 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
root_1 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:[stream_K_EQ nextNode] old:root_1];
// TODO: args:
[treeAdaptor addChild:[stream_K_ID nextNode] toTree:root_1];
[treeAdaptor addChild:[stream_expr nextTree] 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_K_ID release];
[stream_K_EQ release];
[stream_expr 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];
/* ASTParser rule.setErrorReturnValue */
retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end assignStat */
/*
* $ANTLR start expr
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:74:1: expr : condExpr ;
*/
- (SimpleCParser_expr_return *) expr
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_expr_return * retval = [SimpleCParser_expr_return newSimpleCParser_expr_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
SimpleCParser_condExpr_return * condExpr41 = nil;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:74:5: ( condExpr ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:74:9: condExpr // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_condExpr_in_expr598];
condExpr41 = [self condExpr];
[self popFollow];
[treeAdaptor addChild:[condExpr41 getTree] toTree:root_0]; /* element() */
/* elements */
}
/* 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.startToken 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.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end expr */
/*
* $ANTLR start condExpr
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:77:1: condExpr : aexpr ( ( K_EQEQ | K_LT ) aexpr )? ;
*/
- (SimpleCParser_condExpr_return *) condExpr
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_condExpr_return * retval = [SimpleCParser_condExpr_return newSimpleCParser_condExpr_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *K_EQEQ43 = nil;
ANTLRCommonToken *K_LT44 = nil;
SimpleCParser_aexpr_return * aexpr42 = nil;
SimpleCParser_aexpr_return * aexpr45 = nil;
ANTLRCommonTree *K_EQEQ43_tree=nil;
ANTLRCommonTree *K_LT44_tree=nil;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:78:5: ( aexpr ( ( K_EQEQ | K_LT ) aexpr )? ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:78:9: aexpr ( ( K_EQEQ | K_LT ) aexpr )? // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_aexpr_in_condExpr617];
aexpr42 = [self aexpr];
[self popFollow];
[treeAdaptor addChild:[aexpr42 getTree] toTree:root_0]; /* element() */
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:78:15: ( ( K_EQEQ | K_LT ) aexpr )? // block
NSInteger alt9=2;
NSInteger LA9_0 = [input LA:1];
if ( ((LA9_0>=K_EQEQ && LA9_0<=K_LT)) ) {
alt9=1;
}
switch (alt9) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:78:17: ( K_EQEQ | K_LT ) aexpr // alt
{
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:78:17: ( K_EQEQ | K_LT ) // block
NSInteger alt8=2;
NSInteger LA8_0 = [input LA:1];
if ( (LA8_0==K_EQEQ) ) {
alt8=1;
}
else if ( (LA8_0==K_LT) ) {
alt8=2;
}
else {
ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newANTLRNoViableAltException:8 state:0 stream:input];
@throw nvae;
}
switch (alt8) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:78:18: K_EQEQ // alt
{
K_EQEQ43=(ANTLRCommonToken *)[self match:input TokenType:K_EQEQ Follow:FOLLOW_K_EQEQ_in_condExpr622];
K_EQEQ43_tree = /* ASTParser createNodeFromToken */
(ANTLRCommonTree *)[[treeAdaptor createTree:K_EQEQ43] retain];
root_0 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:K_EQEQ43_tree old:root_0];
/* element() */
/* elements */
}
break;
case 2 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:78:28: K_LT // alt
{
K_LT44=(ANTLRCommonToken *)[self match:input TokenType:K_LT Follow:FOLLOW_K_LT_in_condExpr627];
K_LT44_tree = /* ASTParser createNodeFromToken */
(ANTLRCommonTree *)[[treeAdaptor createTree:K_LT44] retain];
root_0 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:K_LT44_tree old:root_0];
/* element() */
/* elements */
}
break;
}
/* element() */
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_aexpr_in_condExpr631];
aexpr45 = [self aexpr];
[self popFollow];
[treeAdaptor addChild:[aexpr45 getTree] toTree:root_0]; /* element() */
/* elements */
}
break;
}
/* element() */
/* elements */
}
/* 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.startToken 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.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end condExpr */
/*
* $ANTLR start aexpr
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:81:1: aexpr : atom ( K_PLUS atom )* ;
*/
- (SimpleCParser_aexpr_return *) aexpr
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_aexpr_return * retval = [SimpleCParser_aexpr_return newSimpleCParser_aexpr_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *K_PLUS47 = nil;
SimpleCParser_atom_return * atom46 = nil;
SimpleCParser_atom_return * atom48 = nil;
ANTLRCommonTree *K_PLUS47_tree=nil;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:82:5: ( atom ( K_PLUS atom )* ) // ruleBlockSingleAlt
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:82:9: atom ( K_PLUS atom )* // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_atom_in_aexpr653];
atom46 = [self atom];
[self popFollow];
[treeAdaptor addChild:[atom46 getTree] toTree:root_0]; /* element() */
do {
NSInteger alt10=2;
NSInteger LA10_0 = [input LA:1];
if ( (LA10_0==K_PLUS) ) {
alt10=1;
}
switch (alt10) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:82:16: K_PLUS atom // alt
{
K_PLUS47=(ANTLRCommonToken *)[self match:input TokenType:K_PLUS Follow:FOLLOW_K_PLUS_in_aexpr657];
K_PLUS47_tree = /* ASTParser createNodeFromToken */
(ANTLRCommonTree *)[[treeAdaptor createTree:K_PLUS47] retain];
root_0 = (ANTLRCommonTree *)[treeAdaptor becomeRoot:K_PLUS47_tree old:root_0];
/* element() */
/* ASTParser ruleRef */
[self pushFollow:FOLLOW_atom_in_aexpr660];
atom48 = [self atom];
[self popFollow];
[treeAdaptor addChild:[atom48 getTree] toTree:root_0]; /* element() */
/* elements */
}
break;
default :
goto loop10;
}
} while (YES);
loop10: ;
/* element() */
/* elements */
}
/* 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.startToken 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.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end aexpr */
/*
* $ANTLR start atom
* /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:85:1: atom : ( K_ID | K_INT | '(' expr ')' -> expr );
*/
- (SimpleCParser_atom_return *) atom
{
/* ruleScopeSetUp */
/* AST ruleDeclarations */
SimpleCParser_atom_return * retval = [SimpleCParser_atom_return newSimpleCParser_atom_return];
[retval setStart:[input LT:1]];
ANTLRCommonTree *root_0 = nil;
@try {
/* AST ruleLabelDefs */
ANTLRCommonToken *K_ID49 = nil;
ANTLRCommonToken *K_INT50 = nil;
ANTLRCommonToken *char_literal51 = nil;
ANTLRCommonToken *char_literal53 = nil;
SimpleCParser_expr_return * expr52 = nil;
ANTLRCommonTree *K_ID49_tree=nil;
ANTLRCommonTree *K_INT50_tree=nil;
ANTLRCommonTree *char_literal51_tree=nil;
ANTLRCommonTree *char_literal53_tree=nil;
ANTLRRewriteRuleTokenStream *stream_22 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 22"] retain];
ANTLRRewriteRuleTokenStream *stream_24 =
[[ANTLRRewriteRuleTokenStream newANTLRRewriteRuleTokenStream:treeAdaptor
description:@"token 24"] retain];
ANTLRRewriteRuleSubtreeStream *stream_expr =
[[ANTLRRewriteRuleSubtreeStream newANTLRRewriteRuleSubtreeStream:treeAdaptor
description:@"rule expr"] retain];
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:86:5: ( K_ID | K_INT | '(' expr ')' -> expr ) //ruleblock
NSInteger alt11=3;
switch ([input LA:1]) {
case K_ID: ;
{
alt11=1;
}
break;
case K_INT: ;
{
alt11=2;
}
break;
case 22: ;
{
alt11=3;
}
break;
default: ;
ANTLRNoViableAltException *nvae = [ANTLRNoViableAltException newANTLRNoViableAltException:11 state:0 stream:input];
@throw nvae;
}
switch (alt11) {
case 1 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:86:7: K_ID // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser tokenRef */
K_ID49=(ANTLRCommonToken *)[self match:input TokenType:K_ID Follow:FOLLOW_K_ID_in_atom680];
K_ID49_tree = /* ASTParser createNodeFromToken */
(ANTLRCommonTree *)[[treeAdaptor createTree:K_ID49] retain];
[treeAdaptor addChild:K_ID49_tree toTree:root_0];
/* element() */
/* elements */
}
break;
case 2 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:87:7: K_INT // alt
{
root_0 = (ANTLRCommonTree *)[[[treeAdaptor class] newEmptyTree] retain];
/* ASTParser tokenRef */
K_INT50=(ANTLRCommonToken *)[self match:input TokenType:K_INT Follow:FOLLOW_K_INT_in_atom694];
K_INT50_tree = /* ASTParser createNodeFromToken */
(ANTLRCommonTree *)[[treeAdaptor createTree:K_INT50] retain];
[treeAdaptor addChild:K_INT50_tree toTree:root_0];
/* element() */
/* elements */
}
break;
case 3 : ;
// /usr/local/ANTLR3-ObjC2.0-Runtime/Framework/examples/simplecTreeParser/SimpleC.g:88:7: '(' expr ')' // alt
{
char_literal51=(ANTLRCommonToken *)[self match:input TokenType:22 Follow:FOLLOW_22_in_atom708];
[stream_22 addElement:char_literal51];
/* element() */
[self pushFollow:FOLLOW_expr_in_atom710];
expr52 = [self expr];
[self popFollow];
[stream_expr addElement:[expr52 getTree]]; /* element() */
char_literal53=(ANTLRCommonToken *)[self match:input TokenType:24 Follow:FOLLOW_24_in_atom712];
[stream_24 addElement:char_literal53];
/* element() */
/* elements */
// AST REWRITE
// elements: expr
// 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];
// 88:20: -> expr
{
[treeAdaptor addChild:[stream_expr nextTree] toTree:root_0];
}
retval.tree = root_0;
}
break;
}
/* ASTParser ruleCleanUp */
/* AST ruleCleanUp */
// token+rule list labels
[retval setStop:[input LT:-1]];
[stream_22 release];
[stream_24 release];
[stream_expr 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];
/* ASTParser rule.setErrorReturnValue */
retval.tree = (ANTLRCommonTree *)[treeAdaptor errorNode:input From:retval.startToken To:[input LT:-1] Exception:re];
} @finally {
}
return retval;
}
/* $ANTLR end atom */
@end /* end of SimpleCParser implementation line 669 */
/* End of code
* =============================================================================
*/