www.pudn.com > subpas.rar > parse.c


/**************************************************************************** 
*                     U N R E G I S T E R E D   C O P Y 
*  
* You are on day 60 of your 30 day trial period. 
*  
* This file was produced by an UNREGISTERED COPY of Parser Generator. It is 
* for evaluation purposes only. If you continue to use Parser Generator 30 
* days after installation then you are required to purchase a license. For 
* more information see the online help or go to the Bumble-Bee Software 
* homepage at: 
*  
* http://www.bumblebeesoftware.com 
*  
* This notice must remain present in the file. It cannot be removed. 
****************************************************************************/ 
 
/**************************************************************************** 
* parse.c 
* C source file generated from parse.y. 
*  
* Date: 08/29/05 
* Time: 23:35:14 
*  
* AYACC Version: 2.07 
****************************************************************************/ 
 
#include  
 
/* namespaces */ 
#if defined(__cplusplus) && defined(YYSTDCPPLIB) 
using namespace std; 
#endif 
#if defined(__cplusplus) && defined(YYNAMESPACE) 
using namespace yl; 
#endif 
 
#define YYFASTPARSER 
 
#line 6 ".\\parse.y" 
 
#define YYPARSER /* distinguishes Yacc output from other code files */ 
#include "globals.h" 
#include "util.h" 
#include "scan.h" 
#include "parse.h" 
 
static ArrayAttr * savedArray; 
static char * savedName; /* for use in assignments */ 
static char * savedProName; 
static char * savedMainName; 
static int savedLow; 
static int savedHigh; 
static int savedType; 
static int savedLineno; 
static TreeNode * savedTree; /* stores syntax tree for later return */ 
 
 
#line 59 "parse.c" 
/* repeated because of possible precompiled header */ 
#include  
 
/* namespaces */ 
#if defined(__cplusplus) && defined(YYSTDCPPLIB) 
using namespace std; 
#endif 
#if defined(__cplusplus) && defined(YYNAMESPACE) 
using namespace yl; 
#endif 
 
#define YYFASTPARSER 
 
#include ".\parse.h" 
 
#ifndef YYSTYPE 
#define YYSTYPE int 
#endif 
#ifndef YYSTACK_SIZE 
#define YYSTACK_SIZE 100 
#endif 
#ifndef YYSTACK_MAX 
#define YYSTACK_MAX 0 
#endif 
 
/* (state) stack */ 
#if (YYSTACK_SIZE) != 0 
static yystack_t YYNEAR yystack[(YYSTACK_SIZE)]; 
yystack_t YYFAR *YYNEAR YYDCDECL yysstackptr = yystack; 
yystack_t YYFAR *YYNEAR YYDCDECL yystackptr = yystack; 
#else 
yystack_t YYFAR *YYNEAR YYDCDECL yysstackptr = NULL; 
yystack_t YYFAR *YYNEAR YYDCDECL yystackptr = NULL; 
#endif 
 
/* attribute stack */ 
#if (YYSTACK_SIZE) != 0 
static YYSTYPE YYNEAR yyattributestack[(YYSTACK_SIZE)]; 
#ifdef YYPROTOTYPE 
void YYFAR *YYNEAR YYDCDECL yysattributestackptr = yyattributestack; 
void YYFAR *YYNEAR YYDCDECL yyattributestackptr = yyattributestack; 
#else 
char YYFAR *YYNEAR YYDCDECL yysattributestackptr = (char YYFAR *) yyattributestack; 
char YYFAR *YYNEAR YYDCDECL yyattributestackptr = (char YYFAR *) yyattributestack; 
#endif 
#else 
#ifdef YYPROTOTYPE 
void YYFAR *YYNEAR YYDCDECL yysattributestackptr = NULL; 
void YYFAR *YYNEAR YYDCDECL yyattributestackptr = NULL; 
#else 
char YYFAR *YYNEAR YYDCDECL yysattributestackptr = NULL; 
char YYFAR *YYNEAR YYDCDECL yyattributestackptr = NULL; 
#endif 
#endif 
 
int YYNEAR YYDCDECL yysstack_size = (YYSTACK_SIZE); 
int YYNEAR YYDCDECL yystack_size = (YYSTACK_SIZE); 
int YYNEAR YYDCDECL yystack_max = (YYSTACK_MAX); 
 
/* attributes */ 
YYSTYPE YYNEAR yyval; 
YYSTYPE YYNEAR yylval; 
#ifdef YYPROTOTYPE 
void YYFAR *YYNEAR YYDCDECL yyvalptr = &yyval; 
void YYFAR *YYNEAR YYDCDECL yylvalptr = &yylval; 
#else 
char YYFAR *YYNEAR YYDCDECL yyvalptr = (char *) &yyval; 
char YYFAR *YYNEAR YYDCDECL yylvalptr = (char *) &yylval; 
#endif 
 
size_t YYNEAR YYDCDECL yyattribute_size = sizeof(YYSTYPE); 
 
/* yyattribute */ 
#ifdef YYDEBUG 
#ifdef YYPROTOTYPE 
static YYSTYPE YYFAR *yyattribute1(int index) 
#else 
static YYSTYPE YYFAR *yyattribute1(index) 
int index; 
#endif 
{ 
	YYSTYPE YYFAR *p = &((YYSTYPE YYFAR *) yyattributestackptr)[yytop + index]; 
	return p; 
} 
#define yyattribute(index) (*yyattribute1(index)) 
#else 
#define yyattribute(index) (((YYSTYPE YYFAR *) yyattributestackptr)[yytop + (index)]) 
#endif 
 
#ifdef YYDEBUG 
#ifdef YYPROTOTYPE 
static void yyinitdebug(YYSTYPE YYFAR **p, int count) 
#else 
static void yyinitdebug(p, count) 
YYSTYPE YYFAR **p; 
int count; 
#endif 
{ 
	int i; 
	yyassert(p != NULL); 
	yyassert(count >= 1); 
 
	for (i = 0; i < count; i++) { 
		p[i] = &((YYSTYPE YYFAR *) yyattributestackptr)[yytop + i - (count - 1)]; 
	} 
} 
#endif 
 
#ifdef YYPROTOTYPE 
void YYCDECL yyparseraction(int action) 
#else 
void YYCDECL yyparseraction(action) 
int action; 
#endif 
{ 
	switch (action) { 
	case 0: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[3]; 
			yyinitdebug(yya, 3); 
#endif 
			{ 
#line 54 ".\\parse.y" 
savedMainName = copyString(tokenString); 
#line 185 "parse.c" 
			} 
		} 
		break; 
	case 1: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[11]; 
			yyinitdebug(yya, 11); 
#endif 
			{ 
#line 59 ".\\parse.y" 
 
              yyval.ptree = newProNode(MainP); 
              yyval.ptree->child[1] = yyattribute(8 - 10).ptree; 
              yyval.ptree->sibling = yyattribute(9 - 10).ptree; 
              yyval.ptree->child[2] = yyattribute(10 - 10).ptree; 
              yyval.ptree->name = savedMainName; 
              savedTree = yyval.ptree; 
             
#line 205 "parse.c" 
			} 
		} 
		break; 
	case 2: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 69 ".\\parse.y" 
 yyval.ptree = newExpNode(IdK); 
                       yyval.ptree->name = copyString(tokenString);     
                      
#line 220 "parse.c" 
			} 
		} 
		break; 
	case 3: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 73 ".\\parse.y" 
 TreeNode * t = yyattribute(1 - 3).ptree; 
						yyattribute(3 - 3).ptree = newExpNode(IdK); 
						yyattribute(3 - 3).ptree->name = savedName; 
		 
                        if (t != NULL){ 
                          while (t->sibling != NULL) 
                            t = t->sibling; 
                          t->sibling = yyattribute(3 - 3).ptree; 
                          yyval.ptree = yyattribute(1 - 3).ptree; } 
                        else yyval.ptree = yyattribute(3 - 3).ptree; 
                       
#line 243 "parse.c" 
			} 
		} 
		break; 
	case 4: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 85 ".\\parse.y" 
 savedName = copyString(tokenString); 
		  yyval.ptree=NULL; 
#line 257 "parse.c" 
			} 
		} 
		break; 
	case 5: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 88 ".\\parse.y" 
 yyval.ptree=yyattribute(2 - 3).ptree;  
#line 270 "parse.c" 
			} 
		} 
		break; 
	case 6: 
		{ 
#line 89 ".\\parse.y" 
yyval.ptree=NULL; 
#line 278 "parse.c" 
		} 
		break; 
	case 7: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[6]; 
			yyinitdebug(yya, 6); 
#endif 
			{ 
#line 92 ".\\parse.y" 
 TreeNode * t = yyattribute(1 - 5).ptree; 
                    if (t != NULL){ 
                      while (t->sibling != NULL) 
                        t = t->sibling; 
                      t->sibling = yyattribute(3 - 5).ptree; 
                      yyval.ptree = yyattribute(1 - 5).ptree; } 
                    else yyval.ptree = yyattribute(3 - 5).ptree; 
                    t = yyattribute(3 - 5).ptree; 
                    while(t != NULL){ 
                      t->type=yyattribute(5 - 5).dtype; 
                      if(yyattribute(5 - 5).dtype == Array) t->attr.arrayattr=savedArray; 
                      t=t->sibling; 
                    }                
                   
#line 303 "parse.c" 
			} 
		} 
		break; 
	case 8: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 107 ".\\parse.y" 
 TreeNode * t = yyattribute(1 - 3).ptree; 
                     while(t != NULL){ 
                        t->type=yyattribute(3 - 3).dtype; 
                        if(yyattribute(3 - 3).dtype == Array) t->attr.arrayattr=savedArray; 
                        t=t->sibling;  
                     } 
                     yyval.ptree = yyattribute(1 - 3).ptree; 
                   
#line 323 "parse.c" 
			} 
		} 
		break; 
	case 9: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 116 ".\\parse.y" 
yyval.dtype=yyattribute(1 - 1).dtype; 
#line 336 "parse.c" 
			} 
		} 
		break; 
	case 10: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 117 ".\\parse.y" 
savedLow=atoi(tokenString); 
#line 349 "parse.c" 
			} 
		} 
		break; 
	case 11: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[8]; 
			yyinitdebug(yya, 8); 
#endif 
			{ 
#line 118 ".\\parse.y" 
savedHigh=atoi(tokenString); 
#line 362 "parse.c" 
			} 
		} 
		break; 
	case 12: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[12]; 
			yyinitdebug(yya, 12); 
#endif 
			{ 
#line 120 ".\\parse.y" 
 
            yyval.dtype=Array; 
            savedArray = (ArrayAttr *)malloc(sizeof(ArrayAttr)); 
            savedArray->type = yyattribute(11 - 11).dtype; 
            savedArray->low = savedLow; 
            savedArray->high = savedHigh; 
            savedArray->count = savedHigh - savedLow + 1; 
          
#line 382 "parse.c" 
			} 
		} 
		break; 
	case 13: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 129 ".\\parse.y" 
yyval.dtype=Integer; 
#line 395 "parse.c" 
			} 
		} 
		break; 
	case 14: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 130 ".\\parse.y" 
yyval.dtype=Real; 
#line 408 "parse.c" 
			} 
		} 
		break; 
	case 15: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 131 ".\\parse.y" 
yyval.dtype=Boolean; 
#line 421 "parse.c" 
			} 
		} 
		break; 
	case 16: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 134 ".\\parse.y" 
TreeNode* t=yyattribute(1 - 3).ptree; 
                           if (t != NULL){ 
                              while (t->sibling != NULL) 
                                  t = t->sibling; 
                               t->sibling = yyattribute(2 - 3).ptree; 
                               yyval.ptree = yyattribute(1 - 3).ptree; } 
                              else yyval.ptree = yyattribute(2 - 3).ptree;                
                           
#line 441 "parse.c" 
			} 
		} 
		break; 
	case 17: 
		{ 
#line 142 ".\\parse.y" 
  yyval.ptree=NULL;   
#line 449 "parse.c" 
		} 
		break; 
	case 18: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 147 ".\\parse.y" 
 
                            yyval.ptree = newProNode(SubP); 
                            yyval.ptree->name = savedProName; 
                            yyval.ptree->type = savedType; 
                            yyval.ptree->child[0] = yyattribute(1 - 3).ptree; 
                            yyval.ptree->child[1] = yyattribute(2 - 3).ptree; 
                            yyval.ptree->child[2] = yyattribute(3 - 3).ptree;                         
                           
#line 468 "parse.c" 
			} 
		} 
		break; 
	case 19: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[3]; 
			yyinitdebug(yya, 3); 
#endif 
			{ 
#line 156 ".\\parse.y" 
savedProName=copyString(tokenString); 
#line 481 "parse.c" 
			} 
		} 
		break; 
	case 20: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[8]; 
			yyinitdebug(yya, 8); 
#endif 
			{ 
#line 158 ".\\parse.y" 
  yyval.ptree=yyattribute(4 - 7).ptree; 
                        savedType=yyattribute(6 - 7).dtype;                        
                       
#line 496 "parse.c" 
			} 
		} 
		break; 
	case 21: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[3]; 
			yyinitdebug(yya, 3); 
#endif 
			{ 
#line 161 ".\\parse.y" 
savedProName=copyString(tokenString); 
#line 509 "parse.c" 
			} 
		} 
		break; 
	case 22: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[6]; 
			yyinitdebug(yya, 6); 
#endif 
			{ 
#line 163 ".\\parse.y" 
   yyval.ptree=yyattribute(4 - 5).ptree; 
                        savedType=Void; 
                     
#line 524 "parse.c" 
			} 
		} 
		break; 
	case 23: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 167 ".\\parse.y" 
yyval.ptree = yyattribute(2 - 3).ptree;  
#line 537 "parse.c" 
			} 
		} 
		break; 
	case 24: 
		{ 
#line 168 ".\\parse.y" 
yyval.ptree = NULL; 
#line 545 "parse.c" 
		} 
		break; 
	case 25: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 171 ".\\parse.y" 
 TreeNode * t = yyattribute(1 - 3).ptree; 
                    while(t != NULL){ 
                      t->type=yyattribute(3 - 3).dtype; 
                      t->attr.paramkind=ByVal; 
                      t=t->sibling;  
                    } 
                    yyval.ptree=yyattribute(1 - 3).ptree; 
                   
#line 564 "parse.c" 
			} 
		} 
		break; 
	case 26: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[6]; 
			yyinitdebug(yya, 6); 
#endif 
			{ 
#line 180 ".\\parse.y" 
 TreeNode * t = yyattribute(1 - 5).ptree; 
                    if (t != NULL){ 
                      while (t->sibling != NULL) 
                        t = t->sibling; 
                      t->sibling = yyattribute(3 - 5).ptree; 
                      yyval.ptree = yyattribute(1 - 5).ptree; } 
                    else yyval.ptree = yyattribute(3 - 5).ptree; 
                    t = yyattribute(3 - 5).ptree; 
                    while(t != NULL){ 
                      t->type=yyattribute(5 - 5).dtype; 
                      t->attr.paramkind=ByVal; 
                      t=t->sibling; 
                    }                
                   
#line 590 "parse.c" 
			} 
		} 
		break; 
	case 27: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[5]; 
			yyinitdebug(yya, 5); 
#endif 
			{ 
#line 195 ".\\parse.y" 
 TreeNode * t = yyattribute(2 - 4).ptree; 
                    while(t != NULL){ 
                      t->type=yyattribute(4 - 4).dtype; 
                      t->attr.paramkind=ByRefer; 
                      t=t->sibling;  
                    } 
                    yyval.ptree=yyattribute(2 - 4).ptree; 
                   
#line 610 "parse.c" 
			} 
		} 
		break; 
	case 28: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[7]; 
			yyinitdebug(yya, 7); 
#endif 
			{ 
#line 204 ".\\parse.y" 
 TreeNode * t = yyattribute(1 - 6).ptree; 
                    if (t != NULL){ 
                      while (t->sibling != NULL) 
                        t = t->sibling; 
                      t->sibling = yyattribute(4 - 6).ptree; 
                      yyval.ptree = yyattribute(1 - 6).ptree; } 
                    else yyval.ptree = yyattribute(4 - 6).ptree; 
                    t = yyattribute(4 - 6).ptree; 
                    while(t != NULL){ 
                      t->type=yyattribute(6 - 6).dtype; 
                      t->attr.paramkind=ByRefer; 
                      t=t->sibling; 
                    }                
                   
#line 636 "parse.c" 
			} 
		} 
		break; 
	case 29: 
		{ 
#line 218 ".\\parse.y" 
yyval.ptree = NULL; 
#line 644 "parse.c" 
		} 
		break; 
	case 30: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 223 ".\\parse.y" 
yyval.ptree=yyattribute(2 - 3).ptree; 
#line 656 "parse.c" 
			} 
		} 
		break; 
	case 31: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[3]; 
			yyinitdebug(yya, 3); 
#endif 
			{ 
#line 225 ".\\parse.y" 
yyval.ptree=yyattribute(1 - 2).ptree; 
#line 669 "parse.c" 
			} 
		} 
		break; 
	case 32: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 226 ".\\parse.y" 
yyval.ptree=yyattribute(1 - 1).ptree; 
#line 682 "parse.c" 
			} 
		} 
		break; 
	case 33: 
		{ 
#line 227 ".\\parse.y" 
yyval.ptree=NULL; 
#line 690 "parse.c" 
		} 
		break; 
	case 34: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 229 ".\\parse.y" 
yyval.ptree=yyattribute(1 - 1).ptree; 
#line 702 "parse.c" 
			} 
		} 
		break; 
	case 35: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 231 ".\\parse.y" 
 TreeNode * t = yyattribute(1 - 3).ptree; 
                    if (t != NULL){ 
                      while (t->sibling != NULL) 
                        t = t->sibling; 
                      t->sibling = yyattribute(3 - 3).ptree; 
                      yyval.ptree = yyattribute(1 - 3).ptree; } 
                    else yyval.ptree = yyattribute(3 - 3).ptree; 
                   
#line 722 "parse.c" 
			} 
		} 
		break; 
	case 36: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[3]; 
			yyinitdebug(yya, 3); 
#endif 
			{ 
#line 240 ".\\parse.y" 
savedLineno = lineno; 
#line 735 "parse.c" 
			} 
		} 
		break; 
	case 37: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[5]; 
			yyinitdebug(yya, 5); 
#endif 
			{ 
#line 241 ".\\parse.y" 
yyval.ptree = newStmtNode(AssignK); 
               yyval.ptree->child[0]=yyattribute(1 - 4).ptree; 
               yyval.ptree->child[1]=yyattribute(4 - 4).ptree; 
               yyval.ptree->lineno = savedLineno; 
               
#line 752 "parse.c" 
			} 
		} 
		break; 
	case 38: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 247 ".\\parse.y" 
yyval.ptree = yyattribute(1 - 1).ptree; 
#line 765 "parse.c" 
			} 
		} 
		break; 
	case 39: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 248 ".\\parse.y" 
yyval.ptree = yyattribute(1 - 1).ptree; 
#line 778 "parse.c" 
			} 
		} 
		break; 
	case 40: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[7]; 
			yyinitdebug(yya, 7); 
#endif 
			{ 
#line 250 ".\\parse.y" 
yyval.ptree = newStmtNode(IfK); 
               yyval.ptree->child[0] = yyattribute(2 - 6).ptree; 
               yyval.ptree->child[1] = yyattribute(4 - 6).ptree; 
               yyval.ptree->child[2] = yyattribute(6 - 6).ptree; 
               
#line 795 "parse.c" 
			} 
		} 
		break; 
	case 41: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[5]; 
			yyinitdebug(yya, 5); 
#endif 
			{ 
#line 256 ".\\parse.y" 
yyval.ptree = newStmtNode(WhileK); 
               yyval.ptree->child[0]=yyattribute(2 - 4).ptree; 
               yyval.ptree->child[1]=yyattribute(4 - 4).ptree;  
               
#line 811 "parse.c" 
			} 
		} 
		break; 
	case 42: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 261 ".\\parse.y" 
yyval.ptree=newExpNode(IdK); 
               yyval.ptree->name=copyString(tokenString); 
               
#line 826 "parse.c" 
			} 
		} 
		break; 
	case 43: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 264 ".\\parse.y" 
savedName=copyString(tokenString); 
#line 839 "parse.c" 
			} 
		} 
		break; 
	case 44: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[6]; 
			yyinitdebug(yya, 6); 
#endif 
			{ 
#line 266 ".\\parse.y" 
yyval.ptree=newExpNode(IdK); 
              yyval.ptree->name=savedName; 
              yyval.ptree->type=Array; 
              yyval.ptree->child[0]=yyattribute(4 - 5).ptree; 
              
#line 856 "parse.c" 
			} 
		} 
		break; 
	case 45: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 272 ".\\parse.y" 
yyval.ptree = newStmtNode(CallK); 
                         yyval.ptree->name=copyString(tokenString); 
                         
#line 871 "parse.c" 
			} 
		} 
		break; 
	case 46: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 275 ".\\parse.y" 
pushName(copyString(tokenString)); 
#line 884 "parse.c" 
			} 
		} 
		break; 
	case 47: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[6]; 
			yyinitdebug(yya, 6); 
#endif 
			{ 
#line 277 ".\\parse.y" 
yyval.ptree = newStmtNode(CallK); 
                         yyval.ptree->name=popName(); 
                         yyval.ptree->child[0] = yyattribute(4 - 5).ptree; 
                         
#line 900 "parse.c" 
			} 
		} 
		break; 
	case 48: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 282 ".\\parse.y" 
yyval.ptree = yyattribute(1 - 1).ptree; 
#line 913 "parse.c" 
			} 
		} 
		break; 
	case 49: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 284 ".\\parse.y" 
 TreeNode * t = yyattribute(1 - 3).ptree; 
                    if (t != NULL){ 
                      while (t->sibling != NULL) 
                        t = t->sibling; 
                      t->sibling = yyattribute(3 - 3).ptree; 
                      yyval.ptree = yyattribute(1 - 3).ptree; } 
                    else yyval.ptree = yyattribute(3 - 3).ptree; 
                   
#line 933 "parse.c" 
			} 
		} 
		break; 
	case 50: 
		{ 
#line 292 ".\\parse.y" 
yyval.ptree=NULL; 
#line 941 "parse.c" 
		} 
		break; 
	case 51: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 294 ".\\parse.y" 
yyval.ptree = yyattribute(1 - 1).ptree; 
#line 953 "parse.c" 
			} 
		} 
		break; 
	case 52: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 296 ".\\parse.y" 
yyval.ptree=newExpNode(OpK); 
					yyval.ptree->child[0]=yyattribute(1 - 3).ptree; 
					yyval.ptree->child[1]=yyattribute(3 - 3).ptree; 
					yyval.ptree->attr.op=yyattribute(2 - 3).tt; 
				 
#line 970 "parse.c" 
			} 
		} 
		break; 
	case 53: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 302 ".\\parse.y" 
yyval.ptree=yyattribute(1 - 1).ptree; 
#line 983 "parse.c" 
			} 
		} 
		break; 
	case 54: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 304 ".\\parse.y" 
yyval.ptree=newExpNode(OpK); 
                     yyval.ptree->child[0]=yyattribute(1 - 3).ptree; 
                     yyval.ptree->child[1]=yyattribute(3 - 3).ptree; 
                     yyval.ptree->attr.op=yyattribute(2 - 3).tt; 
                     
#line 1000 "parse.c" 
			} 
		} 
		break; 
	case 55: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 310 ".\\parse.y" 
yyval.ptree=yyattribute(1 - 1).ptree; 
#line 1013 "parse.c" 
			} 
		} 
		break; 
	case 56: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[3]; 
			yyinitdebug(yya, 3); 
#endif 
			{ 
#line 312 ".\\parse.y" 
yyval.ptree=newExpNode(SignK); 
		 yyval.ptree->child[0]=yyattribute(2 - 2).ptree; 
		 yyval.ptree->attr.op=yyattribute(1 - 2).tt; 
		 
#line 1029 "parse.c" 
			} 
		} 
		break; 
	case 57: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 317 ".\\parse.y" 
yyval.ptree=newExpNode(OpK); 
         yyval.ptree->child[0]=yyattribute(1 - 3).ptree; 
         yyval.ptree->child[1]=yyattribute(3 - 3).ptree; 
         yyval.ptree->attr.op=yyattribute(2 - 3).tt; 
         
#line 1046 "parse.c" 
			} 
		} 
		break; 
	case 58: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 323 ".\\parse.y" 
yyval.ptree=newExpNode(IdK); 
             yyval.ptree->name=copyString(tokenString); 
             
#line 1061 "parse.c" 
			} 
		} 
		break; 
	case 59: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 326 ".\\parse.y" 
pushName(copyString(tokenString)); 
#line 1074 "parse.c" 
			} 
		} 
		break; 
	case 60: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[6]; 
			yyinitdebug(yya, 6); 
#endif 
			{ 
#line 328 ".\\parse.y" 
yyval.ptree=newStmtNode(CallK); 
             yyval.ptree->name=popName(); 
             yyval.ptree->child[0]=yyattribute(4 - 5).ptree;  
             
#line 1090 "parse.c" 
			} 
		} 
		break; 
	case 61: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 332 ".\\parse.y" 
pushName(copyString(tokenString)); 
#line 1103 "parse.c" 
			} 
		} 
		break; 
	case 62: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[6]; 
			yyinitdebug(yya, 6); 
#endif 
			{ 
#line 334 ".\\parse.y" 
yyval.ptree=newExpNode(IdK); 
             yyval.ptree->type = Array;  
             yyval.ptree->name=popName(); 
             yyval.ptree->child[0]=yyattribute(4 - 5).ptree;    
             
#line 1120 "parse.c" 
			} 
		} 
		break; 
	case 63: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 340 ".\\parse.y" 
yyval.ptree=newExpNode(NumK); 
           yyval.ptree->type = Integer; 
           yyval.ptree->attr.intval=atoi(tokenString); 
           
#line 1136 "parse.c" 
			} 
		} 
		break; 
	case 64: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 345 ".\\parse.y" 
yyval.ptree=newExpNode(RealNumK); 
           yyval.ptree->type = Real; 
           yyval.ptree->attr.realval=atof(tokenString); 
           
#line 1152 "parse.c" 
			} 
		} 
		break; 
	case 65: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 349 ".\\parse.y" 
yyval.ptree=newExpNode(BoolK); 
				   yyval.ptree->type = Boolean;	 
				   yyval.ptree->attr.intval=1; 
#line 1167 "parse.c" 
			} 
		} 
		break; 
	case 66: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 352 ".\\parse.y" 
yyval.ptree=newExpNode(BoolK); 
				   yyval.ptree->type = Boolean;	 
				   yyval.ptree->attr.intval=0; 
#line 1182 "parse.c" 
			} 
		} 
		break; 
	case 67: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[4]; 
			yyinitdebug(yya, 4); 
#endif 
			{ 
#line 355 ".\\parse.y" 
yyval.ptree=yyattribute(2 - 3).ptree; 
#line 1195 "parse.c" 
			} 
		} 
		break; 
	case 68: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[3]; 
			yyinitdebug(yya, 3); 
#endif 
			{ 
#line 357 ".\\parse.y" 
yyval.ptree=newExpNode(OpK); 
		  yyval.ptree->child[0]=yyattribute(2 - 2).ptree; 
		  yyval.ptree->attr.op=NOT; 
		  
#line 1211 "parse.c" 
			} 
		} 
		break; 
	case 69: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 362 ".\\parse.y" 
yyval.tt=EQ; 
#line 1224 "parse.c" 
			} 
		} 
		break; 
	case 70: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 363 ".\\parse.y" 
yyval.tt=NE; 
#line 1237 "parse.c" 
			} 
		} 
		break; 
	case 71: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 364 ".\\parse.y" 
yyval.tt=LT; 
#line 1250 "parse.c" 
			} 
		} 
		break; 
	case 72: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 365 ".\\parse.y" 
yyval.tt=LE; 
#line 1263 "parse.c" 
			} 
		} 
		break; 
	case 73: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 366 ".\\parse.y" 
yyval.tt=GT; 
#line 1276 "parse.c" 
			} 
		} 
		break; 
	case 74: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 367 ".\\parse.y" 
yyval.tt=GE; 
#line 1289 "parse.c" 
			} 
		} 
		break; 
	case 75: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 369 ".\\parse.y" 
yyval.tt=PLUS; 
#line 1302 "parse.c" 
			} 
		} 
		break; 
	case 76: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 370 ".\\parse.y" 
yyval.tt=MINUS; 
#line 1315 "parse.c" 
			} 
		} 
		break; 
	case 77: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 371 ".\\parse.y" 
yyval.tt=OR; 
#line 1328 "parse.c" 
			} 
		} 
		break; 
	case 78: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 373 ".\\parse.y" 
yyval.tt=TIMES; 
#line 1341 "parse.c" 
			} 
		} 
		break; 
	case 79: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 374 ".\\parse.y" 
yyval.tt=OVER; 
#line 1354 "parse.c" 
			} 
		} 
		break; 
	case 80: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 375 ".\\parse.y" 
yyval.tt=DIV; 
#line 1367 "parse.c" 
			} 
		} 
		break; 
	case 81: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 376 ".\\parse.y" 
yyval.tt=MOD; 
#line 1380 "parse.c" 
			} 
		} 
		break; 
	case 82: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 377 ".\\parse.y" 
yyval.tt=AND; 
#line 1393 "parse.c" 
			} 
		} 
		break; 
	case 83: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 379 ".\\parse.y" 
yyval.tt=PLUS; 
#line 1406 "parse.c" 
			} 
		} 
		break; 
	case 84: 
		{ 
#ifdef YYDEBUG 
			YYSTYPE YYFAR *yya[2]; 
			yyinitdebug(yya, 2); 
#endif 
			{ 
#line 380 ".\\parse.y" 
yyval.tt=MINUS; 
#line 1419 "parse.c" 
			} 
		} 
		break; 
	default: 
		yyassert(0); 
		break; 
	} 
} 
#ifdef YYDEBUG 
YYCONST yysymbol_t YYNEARFAR YYBASED_CODE YYDCDECL yysymbol[] = { 
	{ "$end", 0 }, 
	{ "error", 256 }, 
	{ "AND", 257 }, 
	{ "ARRAY", 258 }, 
	{ "BOOLEAN", 259 }, 
	{ "DO", 260 }, 
	{ "ELSE", 261 }, 
	{ "END", 262 }, 
	{ "MYFALSE", 263 }, 
	{ "FUNCTION", 264 }, 
	{ "IF", 265 }, 
	{ "INTEGER", 266 }, 
	{ "MYBEGIN", 267 }, 
	{ "NOT", 268 }, 
	{ "OF", 269 }, 
	{ "OR", 270 }, 
	{ "PROCEDURE", 271 }, 
	{ "PROGRAM", 272 }, 
	{ "REAL", 273 }, 
	{ "THEN", 274 }, 
	{ "MYTRUE", 275 }, 
	{ "VAR", 276 }, 
	{ "WHILE", 277 }, 
	{ "ID", 278 }, 
	{ "NUM", 279 }, 
	{ "REALNUM", 280 }, 
	{ "ASSIGNOP", 281 }, 
	{ "DOT", 282 }, 
	{ "SEMI", 283 }, 
	{ "COLON", 284 }, 
	{ "COMMA", 285 }, 
	{ "LSP", 286 }, 
	{ "RSP", 287 }, 
	{ "LP", 288 }, 
	{ "RP", 289 }, 
	{ "EQ", 290 }, 
	{ "NE", 291 }, 
	{ "LT", 292 }, 
	{ "LE", 293 }, 
	{ "GT", 294 }, 
	{ "GE", 295 }, 
	{ "PLUS", 296 }, 
	{ "MINUS", 297 }, 
	{ "TIMES", 298 }, 
	{ "OVER", 299 }, 
	{ "DIV", 300 }, 
	{ "MOD", 301 }, 
	{ NULL, 0 } 
}; 
 
YYCONST char *YYCONST YYNEARFAR YYBASED_CODE YYDCDECL yyrule[] = { 
	"$accept: program", 
	"$$1:", 
	"program: PROGRAM ID $$1 LP identifier_list RP SEMI declarations subprogram_declarations compound_statement", 
	"identifier_list: ID", 
	"identifier_list: identifier_list COMMA id", 
	"id: ID", 
	"declarations: VAR declaration SEMI", 
	"declarations:", 
	"declaration: declaration SEMI identifier_list COLON type", 
	"declaration: identifier_list COLON type", 
	"type: standard_type", 
	"$$2:", 
	"$$3:", 
	"type: ARRAY LSP NUM $$2 DOT DOT NUM $$3 RSP OF standard_type", 
	"standard_type: INTEGER", 
	"standard_type: REAL", 
	"standard_type: BOOLEAN", 
	"subprogram_declarations: subprogram_declarations subprogram_declaration SEMI", 
	"subprogram_declarations:", 
	"subprogram_declaration: subprogram_head declarations compound_statement", 
	"$$4:", 
	"subprogram_head: FUNCTION ID $$4 arguments COLON standard_type SEMI", 
	"$$5:", 
	"subprogram_head: PROCEDURE ID $$5 arguments SEMI", 
	"arguments: LP parameter_list RP", 
	"arguments:", 
	"parameter_list: identifier_list COLON type", 
	"parameter_list: parameter_list SEMI identifier_list COLON type", 
	"parameter_list: VAR identifier_list COLON type", 
	"parameter_list: parameter_list SEMI VAR identifier_list COLON type", 
	"parameter_list:", 
	"compound_statement: MYBEGIN optional_statements END", 
	"optional_statements: statement_list SEMI", 
	"optional_statements: statement_list", 
	"optional_statements:", 
	"statement_list: statement", 
	"statement_list: statement_list SEMI statement", 
	"$$6:", 
	"statement: variable ASSIGNOP $$6 expression", 
	"statement: procedure_statement", 
	"statement: compound_statement", 
	"statement: IF expression THEN statement ELSE statement", 
	"statement: WHILE expression DO statement", 
	"variable: ID", 
	"$$7:", 
	"variable: ID $$7 LSP expression RSP", 
	"procedure_statement: ID", 
	"$$8:", 
	"procedure_statement: ID $$8 LP expression_list RP", 
	"expression_list: expression", 
	"expression_list: expression_list COMMA expression", 
	"expression_list:", 
	"expression: simple_expression", 
	"expression: simple_expression relop simple_expression", 
	"simple_expression: term", 
	"simple_expression: simple_expression addop term", 
	"term: factor", 
	"term: sign factor", 
	"term: term mulop factor", 
	"factor: ID", 
	"$$9:", 
	"factor: ID $$9 LP expression_list RP", 
	"$$10:", 
	"factor: ID $$10 LSP expression RSP", 
	"factor: NUM", 
	"factor: REALNUM", 
	"factor: MYTRUE", 
	"factor: MYFALSE", 
	"factor: LP expression RP", 
	"factor: NOT factor", 
	"relop: EQ", 
	"relop: NE", 
	"relop: LT", 
	"relop: LE", 
	"relop: GT", 
	"relop: GE", 
	"addop: PLUS", 
	"addop: MINUS", 
	"addop: OR", 
	"mulop: TIMES", 
	"mulop: OVER", 
	"mulop: DIV", 
	"mulop: MOD", 
	"mulop: AND", 
	"sign: PLUS", 
	"sign: MINUS" 
}; 
#endif 
 
YYCONST yyreduction_t YYNEARFAR YYBASED_CODE YYDCDECL yyreduction[] = { 
	{ 0, 1, -1 }, 
	{ 2, 0, 0 }, 
	{ 1, 10, 1 }, 
	{ 3, 1, 2 }, 
	{ 3, 3, 3 }, 
	{ 4, 1, 4 }, 
	{ 5, 3, 5 }, 
	{ 5, 0, 6 }, 
	{ 6, 5, 7 }, 
	{ 6, 3, 8 }, 
	{ 7, 1, 9 }, 
	{ 8, 0, 10 }, 
	{ 9, 0, 11 }, 
	{ 7, 11, 12 }, 
	{ 10, 1, 13 }, 
	{ 10, 1, 14 }, 
	{ 10, 1, 15 }, 
	{ 11, 3, 16 }, 
	{ 11, 0, 17 }, 
	{ 12, 3, 18 }, 
	{ 14, 0, 19 }, 
	{ 13, 7, 20 }, 
	{ 15, 0, 21 }, 
	{ 13, 5, 22 }, 
	{ 16, 3, 23 }, 
	{ 16, 0, 24 }, 
	{ 17, 3, 25 }, 
	{ 17, 5, 26 }, 
	{ 17, 4, 27 }, 
	{ 17, 6, 28 }, 
	{ 17, 0, 29 }, 
	{ 18, 3, 30 }, 
	{ 19, 2, 31 }, 
	{ 19, 1, 32 }, 
	{ 19, 0, 33 }, 
	{ 20, 1, 34 }, 
	{ 20, 3, 35 }, 
	{ 22, 0, 36 }, 
	{ 21, 4, 37 }, 
	{ 21, 1, 38 }, 
	{ 21, 1, 39 }, 
	{ 21, 6, 40 }, 
	{ 21, 4, 41 }, 
	{ 23, 1, 42 }, 
	{ 24, 0, 43 }, 
	{ 23, 5, 44 }, 
	{ 25, 1, 45 }, 
	{ 26, 0, 46 }, 
	{ 25, 5, 47 }, 
	{ 27, 1, 48 }, 
	{ 27, 3, 49 }, 
	{ 27, 0, 50 }, 
	{ 28, 1, 51 }, 
	{ 28, 3, 52 }, 
	{ 29, 1, 53 }, 
	{ 29, 3, 54 }, 
	{ 30, 1, 55 }, 
	{ 30, 2, 56 }, 
	{ 30, 3, 57 }, 
	{ 31, 1, 58 }, 
	{ 32, 0, 59 }, 
	{ 31, 5, 60 }, 
	{ 33, 0, 61 }, 
	{ 31, 5, 62 }, 
	{ 31, 1, 63 }, 
	{ 31, 1, 64 }, 
	{ 31, 1, 65 }, 
	{ 31, 1, 66 }, 
	{ 31, 3, 67 }, 
	{ 31, 2, 68 }, 
	{ 34, 1, 69 }, 
	{ 34, 1, 70 }, 
	{ 34, 1, 71 }, 
	{ 34, 1, 72 }, 
	{ 34, 1, 73 }, 
	{ 34, 1, 74 }, 
	{ 35, 1, 75 }, 
	{ 35, 1, 76 }, 
	{ 35, 1, 77 }, 
	{ 36, 1, 78 }, 
	{ 36, 1, 79 }, 
	{ 36, 1, 80 }, 
	{ 36, 1, 81 }, 
	{ 36, 1, 82 }, 
	{ 37, 1, 83 }, 
	{ 37, 1, 84 } 
}; 
 
int YYNEAR YYDCDECL yytokenaction_size = 130; 
YYCONST yytokenaction_t YYNEARFAR YYBASED_CODE YYDCDECL yytokenaction[] = { 
	{ 132, YYAT_SHIFT, 49 }, 
	{ 113, YYAT_SHIFT, 80 }, 
	{ 73, YYAT_SHIFT, 105 }, 
	{ 17, YYAT_SHIFT, 20 }, 
	{ 73, YYAT_SHIFT, 6 }, 
	{ 132, YYAT_SHIFT, 50 }, 
	{ 109, YYAT_SHIFT, 49 }, 
	{ 67, YYAT_SHIFT, 34 }, 
	{ 114, YYAT_SHIFT, 91 }, 
	{ 67, YYAT_SHIFT, 21 }, 
	{ 17, YYAT_SHIFT, 22 }, 
	{ 109, YYAT_SHIFT, 50 }, 
	{ 132, YYAT_SHIFT, 51 }, 
	{ 146, YYAT_SHIFT, 149 }, 
	{ 146, YYAT_SHIFT, 8 }, 
	{ 132, YYAT_SHIFT, 52 }, 
	{ 132, YYAT_SHIFT, 53 }, 
	{ 132, YYAT_SHIFT, 54 }, 
	{ 109, YYAT_SHIFT, 51 }, 
	{ 67, YYAT_SHIFT, 35 }, 
	{ 67, YYAT_SHIFT, 36 }, 
	{ 109, YYAT_SHIFT, 52 }, 
	{ 109, YYAT_SHIFT, 53 }, 
	{ 109, YYAT_SHIFT, 54 }, 
	{ 151, YYAT_SHIFT, 153 }, 
	{ 132, YYAT_SHIFT, 55 }, 
	{ 107, YYAT_SHIFT, 125 }, 
	{ 113, YYAT_SHIFT, 87 }, 
	{ 113, YYAT_SHIFT, 88 }, 
	{ 149, YYAT_SHIFT, 26 }, 
	{ 100, YYAT_SHIFT, 49 }, 
	{ 109, YYAT_SHIFT, 55 }, 
	{ 107, YYAT_SHIFT, 126 }, 
	{ 132, YYAT_SHIFT, 56 }, 
	{ 132, YYAT_SHIFT, 57 }, 
	{ 100, YYAT_SHIFT, 50 }, 
	{ 60, YYAT_SHIFT, 91 }, 
	{ 96, YYAT_ERROR, 0 }, 
	{ 96, YYAT_ERROR, 0 }, 
	{ 109, YYAT_SHIFT, 56 }, 
	{ 109, YYAT_SHIFT, 57 }, 
	{ 21, YYAT_SHIFT, 34 }, 
	{ 100, YYAT_SHIFT, 51 }, 
	{ 21, YYAT_SHIFT, 21 }, 
	{ 130, YYAT_SHIFT, 34 }, 
	{ 100, YYAT_SHIFT, 52 }, 
	{ 100, YYAT_SHIFT, 53 }, 
	{ 100, YYAT_SHIFT, 54 }, 
	{ 59, YYAT_SHIFT, 80 }, 
	{ 114, YYAT_SHIFT, 92 }, 
	{ 114, YYAT_SHIFT, 93 }, 
	{ 114, YYAT_SHIFT, 94 }, 
	{ 114, YYAT_SHIFT, 95 }, 
	{ 21, YYAT_SHIFT, 35 }, 
	{ 21, YYAT_SHIFT, 36 }, 
	{ 100, YYAT_SHIFT, 55 }, 
	{ 130, YYAT_SHIFT, 35 }, 
	{ 130, YYAT_SHIFT, 36 }, 
	{ 128, YYAT_SHIFT, 132 }, 
	{ 52, YYAT_REDUCE, 62 }, 
	{ 36, YYAT_REDUCE, 43 }, 
	{ 52, YYAT_REDUCE, 60 }, 
	{ 128, YYAT_SHIFT, 140 }, 
	{ 100, YYAT_SHIFT, 56 }, 
	{ 100, YYAT_SHIFT, 57 }, 
	{ 36, YYAT_REDUCE, 44 }, 
	{ 148, YYAT_SHIFT, 151 }, 
	{ 36, YYAT_REDUCE, 47 }, 
	{ 59, YYAT_SHIFT, 81 }, 
	{ 59, YYAT_SHIFT, 82 }, 
	{ 59, YYAT_SHIFT, 83 }, 
	{ 59, YYAT_SHIFT, 84 }, 
	{ 59, YYAT_SHIFT, 85 }, 
	{ 59, YYAT_SHIFT, 86 }, 
	{ 59, YYAT_SHIFT, 87 }, 
	{ 59, YYAT_SHIFT, 88 }, 
	{ 153, YYAT_SHIFT, 27 }, 
	{ 60, YYAT_SHIFT, 92 }, 
	{ 60, YYAT_SHIFT, 93 }, 
	{ 60, YYAT_SHIFT, 94 }, 
	{ 60, YYAT_SHIFT, 95 }, 
	{ 7, YYAT_SHIFT, 8 }, 
	{ 138, YYAT_SHIFT, 147 }, 
	{ 153, YYAT_SHIFT, 28 }, 
	{ 137, YYAT_SHIFT, 6 }, 
	{ 7, YYAT_SHIFT, 9 }, 
	{ 134, YYAT_SHIFT, 144 }, 
	{ 129, YYAT_SHIFT, 141 }, 
	{ 127, YYAT_SHIFT, 139 }, 
	{ 125, YYAT_SHIFT, 137 }, 
	{ 153, YYAT_SHIFT, 29 }, 
	{ 123, YYAT_SHIFT, 135 }, 
	{ 122, YYAT_SHIFT, 134 }, 
	{ 118, YYAT_SHIFT, 133 }, 
	{ 117, YYAT_SHIFT, 131 }, 
	{ 112, YYAT_SHIFT, 130 }, 
	{ 106, YYAT_SHIFT, 124 }, 
	{ 104, YYAT_SHIFT, 122 }, 
	{ 103, YYAT_SHIFT, 121 }, 
	{ 78, YYAT_SHIFT, 111 }, 
	{ 77, YYAT_SHIFT, 110 }, 
	{ 76, YYAT_SHIFT, 109 }, 
	{ 74, YYAT_SHIFT, 108 }, 
	{ 69, YYAT_SHIFT, 73 }, 
	{ 65, YYAT_SHIFT, 100 }, 
	{ 64, YYAT_SHIFT, 99 }, 
	{ 63, YYAT_SHIFT, 98 }, 
	{ 58, YYAT_SHIFT, 79 }, 
	{ 48, YYAT_SHIFT, 73 }, 
	{ 46, YYAT_SHIFT, 71 }, 
	{ 45, YYAT_SHIFT, 21 }, 
	{ 41, YYAT_SHIFT, 68 }, 
	{ 39, YYAT_SHIFT, 67 }, 
	{ 38, YYAT_SHIFT, 66 }, 
	{ 32, YYAT_SHIFT, 47 }, 
	{ 26, YYAT_SHIFT, 46 }, 
	{ 24, YYAT_SHIFT, 13 }, 
	{ 23, YYAT_SHIFT, 44 }, 
	{ 22, YYAT_SHIFT, 43 }, 
	{ 20, YYAT_SHIFT, 33 }, 
	{ 19, YYAT_SHIFT, 6 }, 
	{ 16, YYAT_SHIFT, 19 }, 
	{ 15, YYAT_SHIFT, 18 }, 
	{ 12, YYAT_SHIFT, 13 }, 
	{ 9, YYAT_SHIFT, 12 }, 
	{ 8, YYAT_SHIFT, 10 }, 
	{ 4, YYAT_SHIFT, 5 }, 
	{ 2, YYAT_ACCEPT, 0 }, 
	{ 1, YYAT_SHIFT, 3 }, 
	{ 0, YYAT_SHIFT, 1 } 
}; 
 
YYCONST yystateaction_t YYNEARFAR YYBASED_CODE YYDCDECL yystateaction[] = { 
	{ -143, 1, YYAT_ERROR, 0 }, 
	{ -150, 1, YYAT_ERROR, 0 }, 
	{ 127, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 1 }, 
	{ -162, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_DEFAULT, 137 }, 
	{ 0, 0, YYAT_REDUCE, 3 }, 
	{ -204, 1, YYAT_ERROR, 0 }, 
	{ -153, 1, YYAT_ERROR, 0 }, 
	{ -159, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 5 }, 
	{ 0, 0, YYAT_REDUCE, 4 }, 
	{ -153, 1, YYAT_REDUCE, 7 }, 
	{ 0, 0, YYAT_DEFAULT, 137 }, 
	{ 0, 0, YYAT_REDUCE, 18 }, 
	{ -162, 1, YYAT_DEFAULT, 146 }, 
	{ -162, 1, YYAT_ERROR, 0 }, 
	{ -261, 1, YYAT_DEFAULT, 45 }, 
	{ 0, 0, YYAT_DEFAULT, 149 }, 
	{ -158, 1, YYAT_REDUCE, 6 }, 
	{ -159, 1, YYAT_ERROR, 0 }, 
	{ -224, 1, YYAT_REDUCE, 34 }, 
	{ -160, 1, YYAT_ERROR, 0 }, 
	{ -166, 1, YYAT_ERROR, 0 }, 
	{ -160, 1, YYAT_REDUCE, 7 }, 
	{ 0, 0, YYAT_REDUCE, 2 }, 
	{ -171, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 16 }, 
	{ 0, 0, YYAT_REDUCE, 14 }, 
	{ 0, 0, YYAT_REDUCE, 15 }, 
	{ 0, 0, YYAT_REDUCE, 9 }, 
	{ 0, 0, YYAT_REDUCE, 10 }, 
	{ -170, 1, YYAT_DEFAULT, 146 }, 
	{ 0, 0, YYAT_REDUCE, 20 }, 
	{ 0, 0, YYAT_DEFAULT, 132 }, 
	{ 0, 0, YYAT_DEFAULT, 132 }, 
	{ -221, 1, YYAT_REDUCE, 46 }, 
	{ 0, 0, YYAT_REDUCE, 40 }, 
	{ -149, 1, YYAT_ERROR, 0 }, 
	{ -171, 1, YYAT_REDUCE, 33 }, 
	{ 0, 0, YYAT_REDUCE, 35 }, 
	{ -170, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 39 }, 
	{ 0, 0, YYAT_REDUCE, 22 }, 
	{ 0, 0, YYAT_REDUCE, 17 }, 
	{ -157, 1, YYAT_ERROR, 0 }, 
	{ -170, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_DEFAULT, 149 }, 
	{ -180, 1, YYAT_REDUCE, 25 }, 
	{ 0, 0, YYAT_REDUCE, 67 }, 
	{ 0, 0, YYAT_DEFAULT, 96 }, 
	{ 0, 0, YYAT_REDUCE, 66 }, 
	{ -227, 1, YYAT_REDUCE, 59 }, 
	{ 0, 0, YYAT_REDUCE, 64 }, 
	{ 0, 0, YYAT_REDUCE, 65 }, 
	{ 0, 0, YYAT_DEFAULT, 132 }, 
	{ 0, 0, YYAT_REDUCE, 84 }, 
	{ 0, 0, YYAT_REDUCE, 85 }, 
	{ -167, 1, YYAT_ERROR, 0 }, 
	{ -222, 1, YYAT_REDUCE, 52 }, 
	{ -221, 1, YYAT_REDUCE, 54 }, 
	{ 0, 0, YYAT_REDUCE, 56 }, 
	{ 0, 0, YYAT_DEFAULT, 96 }, 
	{ -154, 1, YYAT_ERROR, 0 }, 
	{ -181, 1, YYAT_ERROR, 0 }, 
	{ -184, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 31 }, 
	{ -258, 1, YYAT_REDUCE, 32 }, 
	{ 0, 0, YYAT_REDUCE, 37 }, 
	{ -185, 1, YYAT_REDUCE, 25 }, 
	{ 0, 0, YYAT_REDUCE, 19 }, 
	{ 0, 0, YYAT_REDUCE, 11 }, 
	{ 0, 0, YYAT_REDUCE, 8 }, 
	{ -274, 1, YYAT_REDUCE, 30 }, 
	{ -182, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 69 }, 
	{ -187, 1, YYAT_ERROR, 0 }, 
	{ -186, 1, YYAT_ERROR, 0 }, 
	{ -190, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_DEFAULT, 130 }, 
	{ 0, 0, YYAT_REDUCE, 78 }, 
	{ 0, 0, YYAT_REDUCE, 70 }, 
	{ 0, 0, YYAT_REDUCE, 71 }, 
	{ 0, 0, YYAT_REDUCE, 72 }, 
	{ 0, 0, YYAT_REDUCE, 73 }, 
	{ 0, 0, YYAT_REDUCE, 74 }, 
	{ 0, 0, YYAT_REDUCE, 75 }, 
	{ 0, 0, YYAT_REDUCE, 76 }, 
	{ 0, 0, YYAT_REDUCE, 77 }, 
	{ 0, 0, YYAT_DEFAULT, 132 }, 
	{ 0, 0, YYAT_DEFAULT, 132 }, 
	{ 0, 0, YYAT_REDUCE, 83 }, 
	{ 0, 0, YYAT_REDUCE, 79 }, 
	{ 0, 0, YYAT_REDUCE, 80 }, 
	{ 0, 0, YYAT_REDUCE, 81 }, 
	{ 0, 0, YYAT_REDUCE, 82 }, 
	{ -259, 1, YYAT_DEFAULT, 132 }, 
	{ 0, 0, YYAT_REDUCE, 57 }, 
	{ 0, 0, YYAT_DEFAULT, 130 }, 
	{ 0, 0, YYAT_DEFAULT, 132 }, 
	{ -233, 1, YYAT_REDUCE, 51 }, 
	{ 0, 0, YYAT_REDUCE, 36 }, 
	{ 0, 0, YYAT_DEFAULT, 132 }, 
	{ -185, 1, YYAT_ERROR, 0 }, 
	{ -185, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_DEFAULT, 137 }, 
	{ -188, 1, YYAT_DEFAULT, 146 }, 
	{ -257, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_DEFAULT, 153 }, 
	{ -257, 1, YYAT_REDUCE, 51 }, 
	{ 0, 0, YYAT_DEFAULT, 132 }, 
	{ 0, 0, YYAT_REDUCE, 68 }, 
	{ -166, 1, YYAT_ERROR, 0 }, 
	{ -269, 1, YYAT_REDUCE, 53 }, 
	{ -249, 1, YYAT_REDUCE, 55 }, 
	{ 0, 0, YYAT_REDUCE, 58 }, 
	{ 0, 0, YYAT_REDUCE, 42 }, 
	{ -193, 1, YYAT_ERROR, 0 }, 
	{ -196, 1, YYAT_DEFAULT, 128 }, 
	{ 0, 0, YYAT_REDUCE, 49 }, 
	{ 0, 0, YYAT_REDUCE, 38 }, 
	{ 0, 0, YYAT_REDUCE, 23 }, 
	{ -190, 1, YYAT_ERROR, 0 }, 
	{ -193, 1, YYAT_DEFAULT, 146 }, 
	{ 0, 0, YYAT_DEFAULT, 149 }, 
	{ -187, 1, YYAT_DEFAULT, 137 }, 
	{ 0, 0, YYAT_REDUCE, 24 }, 
	{ -195, 1, YYAT_ERROR, 0 }, 
	{ -227, 1, YYAT_ERROR, 0 }, 
	{ -200, 1, YYAT_ERROR, 0 }, 
	{ -221, 1, YYAT_DEFAULT, 45 }, 
	{ 0, 0, YYAT_REDUCE, 45 }, 
	{ -263, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 48 }, 
	{ -193, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_DEFAULT, 149 }, 
	{ 0, 0, YYAT_REDUCE, 26 }, 
	{ -194, 1, YYAT_ERROR, 0 }, 
	{ -202, 1, YYAT_DEFAULT, 146 }, 
	{ 0, 0, YYAT_REDUCE, 21 }, 
	{ 0, 0, YYAT_REDUCE, 61 }, 
	{ 0, 0, YYAT_REDUCE, 63 }, 
	{ 0, 0, YYAT_REDUCE, 41 }, 
	{ 0, 0, YYAT_REDUCE, 50 }, 
	{ 0, 0, YYAT_REDUCE, 12 }, 
	{ 0, 0, YYAT_REDUCE, 28 }, 
	{ -271, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_DEFAULT, 149 }, 
	{ -221, 1, YYAT_ERROR, 0 }, 
	{ -229, 1, YYAT_DEFAULT, 153 }, 
	{ 0, 0, YYAT_REDUCE, 27 }, 
	{ -245, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 29 }, 
	{ -183, 1, YYAT_ERROR, 0 }, 
	{ 0, 0, YYAT_REDUCE, 13 } 
}; 
 
int YYNEAR YYDCDECL yynontermgoto_size = 73; 
 
YYCONST yynontermgoto_t YYNEARFAR YYBASED_CODE YYDCDECL yynontermgoto[] = { 
	{ 132, 143 }, 
	{ 132, 59 }, 
	{ 132, 60 }, 
	{ 132, 61 }, 
	{ 73, 106 }, 
	{ 130, 37 }, 
	{ 109, 128 }, 
	{ 109, 119 }, 
	{ 130, 142 }, 
	{ 132, 62 }, 
	{ 130, 41 }, 
	{ 153, 154 }, 
	{ 130, 42 }, 
	{ 17, 23 }, 
	{ 17, 24 }, 
	{ 21, 38 }, 
	{ 21, 39 }, 
	{ 21, 40 }, 
	{ 73, 107 }, 
	{ 17, 25 }, 
	{ 149, 152 }, 
	{ 13, 15 }, 
	{ 147, 150 }, 
	{ 149, 31 }, 
	{ 13, 16 }, 
	{ 36, 64 }, 
	{ 144, 148 }, 
	{ 36, 65 }, 
	{ 90, -1 }, 
	{ 90, 114 }, 
	{ 89, -1 }, 
	{ 89, 113 }, 
	{ 52, 76 }, 
	{ 52, 77 }, 
	{ 137, 146 }, 
	{ 135, 145 }, 
	{ 125, 138 }, 
	{ 124, 136 }, 
	{ 114, 96 }, 
	{ 113, 90 }, 
	{ 110, 129 }, 
	{ 108, 127 }, 
	{ 105, 123 }, 
	{ 102, 120 }, 
	{ 100, 118 }, 
	{ 99, 117 }, 
	{ 98, 116 }, 
	{ 96, 115 }, 
	{ 79, 112 }, 
	{ 71, 104 }, 
	{ 69, 103 }, 
	{ 68, 102 }, 
	{ 67, 101 }, 
	{ 62, 97 }, 
	{ 59, 89 }, 
	{ 55, 78 }, 
	{ 50, 75 }, 
	{ 48, 74 }, 
	{ 47, 72 }, 
	{ 45, 70 }, 
	{ 43, 69 }, 
	{ 35, 63 }, 
	{ 34, 58 }, 
	{ 33, 48 }, 
	{ 24, 45 }, 
	{ 19, 32 }, 
	{ 18, 30 }, 
	{ 14, 17 }, 
	{ 12, 14 }, 
	{ 8, 11 }, 
	{ 5, 7 }, 
	{ 3, 4 }, 
	{ 0, 2 } 
}; 
 
YYCONST yystategoto_t YYNEARFAR YYBASED_CODE YYDCDECL yystategoto[] = { 
	{ 71, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 69, -1 }, 
	{ 0, -1 }, 
	{ 67, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 65, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 63, -1 }, 
	{ 18, -1 }, 
	{ 56, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 1, -1 }, 
	{ 59, 149 }, 
	{ 62, -1 }, 
	{ 0, -1 }, 
	{ -4, 130 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 59, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 49, -1 }, 
	{ 34, 132 }, 
	{ 33, 132 }, 
	{ 1, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 45, -1 }, 
	{ 0, -1 }, 
	{ 41, -1 }, 
	{ 0, -1 }, 
	{ 51, 149 }, 
	{ 41, -1 }, 
	{ 0, -1 }, 
	{ 25, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 27, 132 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 20, 113 }, 
	{ 0, 114 }, 
	{ 0, -1 }, 
	{ 22, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 31, 130 }, 
	{ 29, -1 }, 
	{ 34, -1 }, 
	{ 0, -1 }, 
	{ 41, -1 }, 
	{ 0, -1 }, 
	{ 1, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 27, 130 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 2, 132 }, 
	{ -1, 89 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 16, -1 }, 
	{ 0, -1 }, 
	{ 25, 130 }, 
	{ 17, 132 }, 
	{ 17, 109 }, 
	{ 0, -1 }, 
	{ 15, 132 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 39, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 31, -1 }, 
	{ -21, 132 }, 
	{ 12, 132 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 4, -1 }, 
	{ 2, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 30, 149 }, 
	{ 33, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ -13, -1 }, 
	{ 0, -1 }, 
	{ -28, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 28, 149 }, 
	{ 0, -1 }, 
	{ 31, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 17, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 15, 149 }, 
	{ 0, -1 }, 
	{ 13, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 0, -1 }, 
	{ 1, -1 }, 
	{ 0, -1 } 
}; 
 
YYCONST yydestructor_t YYNEARFAR *YYNEAR YYDCDECL yydestructorptr = NULL; 
 
YYCONST yytokendest_t YYNEARFAR *YYNEAR YYDCDECL yytokendestptr = NULL; 
int YYNEAR YYDCDECL yytokendest_size = 0; 
 
YYCONST yytokendestbase_t YYNEARFAR *YYNEAR YYDCDECL yytokendestbaseptr = NULL; 
int YYNEAR YYDCDECL yytokendestbase_size = 0; 
#line 382 ".\\parse.y" 
 
 
void yyerror(const char * message) 
{ printf("error:(line %d) %s. (Current token:%s)\n",lineno,message,tokenString); 
  Error = TRUE; 
} 
 
/* yylex calls getToken to make Yacc/Bison output 
 * compatible with ealier versions of the TINY scanner 
 */ 
#ifdef YYPROTOTYPE 
int YYCDECL yygettoken(void) 
#else 
int YYCDECL yygettoken() 
#endif 
{ 
	return yylex(); 
} 
 
static TokenType yylex(void) 
{ return getToken(); } 
 
TreeNode * parse(void) 
{ yyparse(); 
  return savedTree; 
}