// Lex Class Methods # define UU(x) x # define NLSTATE yyprevious=YYNEWLINE # define BEGIN yybgin = yysvec + 1 + # define INITIAL 0 # define YYLERR yysvec # define YYSTATE (yyestate-yysvec-1) # define YYOPTIM 1 # define YYLMAX BUFSIZ #ifdef ESKIT # define output(c) *yyout << c #else # define output(c) putc(c,yyout) #endif #ifdef ESKIT # define input() (((yytchar=yysptr>yysbuf?UU(*--yysptr):yyin->fgetc())==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) #else # define input() (((yytchar=yysptr>yysbuf?UU(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) #endif # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} # define yymore() (yymorfg=1) #ifdef ESKIT # define ECHO Cout << yytext #else # define ECHO fprintf(yyout, "%s",yytext) #endif # define REJECT { nstr = yyreject(); goto yyfussy;} int yyleng; extern char yytext[]; int yymorfg; extern char *yysptr, yysbuf[]; int yytchar; extern int yylineno; struct yysvf { struct yywork *yystoff; struct yysvf *yyother; int *yystops;}; struct yysvf *yyestate; extern struct yysvf yysvec[], *yybgin; # define YYNEWLINE 10 CLASS_NAME :: yylex(){ int nstr; extern int yyprevious; #ifdef ESKIT while((nstr = this->yylook()) >= 0) #else while((nstr = yylook()) >= 0) #endif yyfussy: switch(nstr){ case 0: if(yywrap()) INT_RETURN(0); break; case 1: {LEX_PRT;INT_RETURN(ENTITY);} break; case 2: {LEX_PRT; INT_RETURN(ARCHITECTURE);} break; case 3: {LEX_PRT;INT_RETURN(OF);} break; case 4: {LEX_PRT;INT_RETURN(IS);} break; case 5: {LEX_PRT;INT_RETURN(IF);} break; case 6: {LEX_PRT;INT_RETURN(THEN);} break; case 7: {LEX_PRT;INT_RETURN(WHEN);} break; case 8: {LEX_PRT;INT_RETURN(CASE);} break; case 9: {LEX_PRT;INT_RETURN(ELSE);} break; case 10: {LEX_PRT;INT_RETURN(ELSIF);} break; case 11: {LEX_PRT;INT_RETURN(LOOP);} break; case 12: {LEX_PRT;INT_RETURN(WHILE);} break; case 13: {LEX_PRT;INT_RETURN(WAIT);} break; case 14: {LEX_PRT;INT_RETURN(UNTIL);} break; case 15: {LEX_PRT;INT_RETURN(ON);} break; case 16: {LEX_PRT;INT_RETURN(FOR);} break; case 17: {LEX_PRT;INT_RETURN(TO);} break; case 18: {LEX_PRT;INT_RETURN(DOWNTO);} break; case 19: {LEX_PRT;INT_RETURN(FINISH);} break; case 20: {LEX_PRT;INT_RETURN(BEG);} break; case 21: {LEX_PRT;INT_RETURN(PORT);} break; case 22: {LEX_PRT;INT_RETURN(ARRAY);} break; case 23: {LEX_PRT;INT_RETURN(IN);} break; case 24: {LEX_PRT;INT_RETURN(OUT);} break; case 25: {LEX_PRT;INT_RETURN(INOUT);} break; case 26: {LEX_PRT;INT_RETURN(TRANSPORT);} break; case 27: {LEX_PRT;INT_RETURN(PROCEDURE);} break; case 28: {LEX_PRT;INT_RETURN(AFTER);} break; case 29: {LEX_PRT;INT_RETURN(BIT);} break; case 30: {LEX_PRT;INT_RETURN(BIT_VECTOR);} break; case 31: {LEX_PRT;INT_RETURN(INTEGER);} break; case 32: {LEX_PRT;INT_RETURN(LIBRARY);} break; case 33: {LEX_PRT;INT_RETURN(AND);} break; case 34: {LEX_PRT;INT_RETURN(OR);} break; case 35: {LEX_PRT;INT_RETURN(NOT);} break; case 36: {LEX_PRT;INT_RETURN(XOR);} break; case 37: {LEX_PRT;INT_RETURN(SIGNAL);} break; case 38: {LEX_PRT;INT_RETURN(VARIABLE);} break; case 39: {LEX_PRT;INT_RETURN(PROCESS);} break; case 40: {LEX_PRT;INT_RETURN(BLCK);} break; case 41: {LEX_PRT;INT_RETURN(ALIAS);} break; case 42: {LEX_PRT;INT_RETURN(PACKAGE);} break; case 43: {LEX_PRT;INT_RETURN(USE);} break; case 44: {LEX_PRT;INT_RETURN(TYPE);} break; case 45: {LEX_PRT;INT_RETURN(SUBTYPE);} break; case 46: {LEX_PRT;INT_RETURN(STABLE);} break; case 47: {LEX_PRT;INT_RETURN(QUIET);} break; case 48: {LEX_PRT;INT_RETURN(RSHIFT);} break; case 49: {LEX_PRT;INT_RETURN(RSHIFT);} break; case 50: {LEX_PRT;INT_RETURN(RSHIFT);} break; case 51: {LEX_PRT;INT_RETURN(RSHIFT);} break; case 52: {LEX_PRT;INT_RETURN(OTHERS);} break; case 53: LEX_PRT; break; case 54: LEX_PRT; break; case 55: {LEX_PRT;INT_RETURN(OPENBR);} break; case 56: {LEX_PRT;INT_RETURN(CLOSEBR);} break; case 57: {LEX_PRT;INT_RETURN(SEMI);} break; case 58: {LEX_PRT;INT_RETURN(COLON);} break; case 59: {LEX_PRT;INT_RETURN(COMMA);} break; case 60: {LEX_PRT;INT_RETURN(PIPE);} break; case 61: {LEX_PRT;INT_RETURN(LT);} break; case 62: {LEX_PRT;INT_RETURN(GT);} break; case 63: {LEX_PRT;INT_RETURN(EQ);} break; case 64: {LEX_PRT;INT_RETURN(PLUS);} break; case 65: {LEX_PRT;INT_RETURN(MINUS);} break; case 66: {LEX_PRT;INT_RETURN(MULT);} break; case 67: {LEX_PRT;INT_RETURN(DIV);} break; case 68: {LEX_PRT;INT_RETURN(QUOTE);} break; case 69: {LEX_PRT;INT_RETURN(QUOTE);} break; case 70: {LEX_PRT;INT_RETURN(CONCAT);} break; case 71: {LEX_PRT;INT_RETURN(HEX);} break; case 72: {LEX_PRT;INT_RETURN(BIN);} break; case 73: {LEX_PRT;INT_RETURN(OCT);} break; case 74: { yylval.name = (char *) new char[strlen(yytext)+1]; strcpy(yylval.name,yytext); LEX_PRT; INT_RETURN(Const); } break; case 75: { if(this->check_for_function_name(yytext)){ LEX_PRT; INT_RETURN(FUNCTION); } symbol_table_rec *STR_ptr=this->get_STR_ptr(yytext); if (STR_ptr && STR_ptr->flags.is_subprogram==1){ module_rec *MR_ptr=global_MR_ptr; for(;MR_ptr != NULL;MR_ptr=MR_ptr->next_mr_ptr) if (STR_ptr == MR_ptr->str_ptr) break; yylval.MR_ptr=MR_ptr; LEX_PRT; INT_RETURN(PROC_CALL); } yylval.name = (char *) new char[strlen(yytext)+1]; strcpy(yylval.name,yytext); LEX_PRT; INT_RETURN(Identifier); } break; case 76: LEX_PRT; break; case -1: break; default: #ifdef ESKIT {*yyout << "bad switch yylook "; *yyout << nstr; *yyout <<"\n";} #else fprintf(yyout,"bad switch yylook %d",nstr); #endif } INT_RETURN(0); } /* end of yylex */ int yyvstop[] = { 0, 76, 0, 69, 0, 70, 0, 68, 0, 55, 0, 56, 0, 66, 0, 64, 0, 59, 0, 65, 0, 67, 0, 74, 0, 58, 0, 57, 0, 61, 0, 63, 0, 62, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 60, 0, 53, 0, 75, 0, 75, 0, 75, 0, 75, 0, 72, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 5, 75, 0, 23, 75, 0, 4, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 73, 0, 3, 75, 0, 15, 75, 0, 34, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 17, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 71, 0, 75, 0, 75, 0, 71, 72, 73, 0, 75, 0, 75, 0, 33, 75, 0, 75, 0, 75, 0, 75, 0, 29, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 19, 75, 0, 75, 0, 16, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 35, 75, 0, 75, 0, 24, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 43, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 36, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 8, 75, 0, 75, 0, 9, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 11, 75, 0, 75, 0, 75, 0, 21, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 6, 75, 0, 75, 0, 44, 75, 0, 75, 0, 75, 0, 13, 75, 0, 7, 75, 0, 75, 0, 75, 0, 28, 75, 0, 41, 75, 0, 75, 0, 22, 75, 0, 20, 75, 0, 75, 0, 40, 75, 0, 75, 0, 10, 75, 0, 75, 0, 25, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 47, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 14, 75, 0, 75, 0, 12, 75, 0, 75, 0, 75, 0, 75, 0, 18, 75, 0, 1, 75, 0, 75, 0, 75, 0, 75, 0, 52, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 37, 75, 0, 75, 0, 75, 0, 46, 75, 0, 75, 0, 75, 0, 75, 0, 54, 75, 0, 75, 0, 75, 0, 31, 75, 0, 75, 0, 32, 75, 0, 42, 75, 0, 75, 0, 39, 75, 0, 75, 0, 75, 0, 75, 0, 45, 75, 0, 75, 0, 75, 0, 54, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 26, 75, 0, 26, 0, 38, 75, 0, 75, 0, 75, 0, 75, 0, 27, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 30, 75, 0, 51, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 50, 75, 0, 75, 0, 75, 0, 2, 75, 0, 75, 0, 75, 0, 75, 0, 75, 0, 49, 75, 0, 75, 0, 48, 75, 0, 0}; # define YYTYPE int struct yywork { YYTYPE verify, advance; } yycrank[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,3, 1,3, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,3, 0,0, 1,4, 0,0, 0,0, 0,0, 1,5, 1,6, 1,7, 1,8, 1,9, 1,10, 1,11, 1,12, 12,42, 1,13, 1,14, 1,14, 1,14, 1,14, 1,14, 1,14, 1,14, 1,14, 1,14, 1,14, 1,15, 1,16, 1,17, 1,18, 1,19, 41,89, 0,0, 1,20, 1,21, 1,22, 1,23, 1,24, 1,25, 1,26, 1,26, 1,27, 1,26, 1,26, 1,28, 1,26, 1,29, 1,30, 1,31, 1,32, 1,33, 1,34, 1,35, 1,36, 1,37, 1,38, 1,39, 1,26, 1,26, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,40, 1,21, 1,22, 1,23, 1,24, 1,25, 1,26, 1,26, 1,27, 1,26, 1,26, 1,28, 1,26, 1,29, 1,30, 1,31, 1,32, 1,33, 1,34, 1,35, 1,36, 1,37, 1,38, 1,39, 1,26, 1,26, 40,88, 1,41, 14,14, 14,14, 14,14, 14,14, 14,14, 14,14, 14,14, 14,14, 14,14, 14,14, 160,193, 193,216, 216,232, 232,243, 0,0, 0,0, 0,0, 14,14, 14,14, 14,14, 14,14, 14,14, 14,14, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 160,193, 193,216, 216,232, 232,243, 0,0, 14,14, 0,0, 14,14, 14,14, 14,14, 14,14, 14,14, 14,14, 20,26, 0,0, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 20,26, 20,26, 20,26, 20,26, 20,26, 20,43, 20,26, 20,26, 20,26, 20,26, 20,26, 20,44, 20,26, 20,45, 20,26, 20,26, 20,26, 20,46, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 21,47, 0,0, 0,0, 0,0, 20,26, 0,0, 20,26, 20,26, 20,26, 20,26, 20,26, 20,43, 20,26, 20,26, 20,26, 20,26, 20,26, 20,44, 20,26, 20,45, 20,26, 20,26, 20,26, 20,46, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 20,26, 22,51, 0,0, 0,0, 21,48, 21,26, 22,26, 0,0, 21,49, 0,0, 0,0, 21,50, 22,26, 21,26, 22,26, 23,26, 0,0, 21,26, 22,26, 0,0, 24,26, 23,26, 0,0, 23,26, 23,52, 0,0, 24,53, 23,26, 24,54, 0,0, 0,0, 0,0, 24,26, 22,51, 0,0, 0,0, 21,48, 21,26, 22,26, 0,0, 21,49, 0,0, 0,0, 21,50, 22,26, 21,26, 22,26, 23,26, 0,0, 21,26, 22,26, 0,0, 24,26, 23,26, 0,0, 23,26, 23,52, 25,26, 24,53, 23,26, 24,54, 0,0, 26,26, 25,26, 24,26, 25,26, 25,55, 27,56, 26,26, 25,26, 26,26, 0,0, 0,0, 27,26, 26,26, 27,57, 0,0, 28,59, 28,26, 27,26, 27,58, 28,60, 0,0, 0,0, 28,26, 0,0, 28,26, 28,61, 0,0, 25,26, 28,26, 0,0, 30,63, 0,0, 26,26, 25,26, 0,0, 25,26, 25,55, 27,56, 26,26, 25,26, 26,26, 0,0, 0,0, 27,26, 26,26, 27,57, 0,0, 28,59, 28,26, 27,26, 27,58, 28,60, 0,0, 29,26, 28,26, 0,0, 28,26, 28,61, 0,0, 29,26, 28,26, 29,26, 29,62, 0,0, 0,0, 29,26, 30,64, 33,26, 0,0, 0,0, 33,73, 0,0, 30,26, 33,26, 30,65, 33,26, 0,0, 0,0, 30,66, 33,26, 30,67, 30,68, 0,0, 0,0, 0,0, 29,26, 0,0, 0,0, 0,0, 0,0, 0,0, 29,26, 0,0, 29,26, 29,62, 0,0, 0,0, 29,26, 30,64, 33,26, 0,0, 0,0, 33,73, 31,69, 30,26, 33,26, 30,65, 33,26, 31,26, 0,0, 30,66, 33,26, 30,67, 30,68, 31,26, 32,26, 31,26, 31,70, 0,0, 0,0, 31,71, 32,26, 0,0, 32,26, 0,0, 0,0, 0,0, 32,26, 0,0, 0,0, 32,72, 0,0, 0,0, 0,0, 0,0, 31,69, 0,0, 0,0, 0,0, 0,0, 31,26, 0,0, 0,0, 0,0, 0,0, 0,0, 31,26, 32,26, 31,26, 31,70, 0,0, 0,0, 31,71, 32,26, 0,0, 32,26, 0,0, 34,26, 0,0, 32,26, 34,74, 0,0, 32,72, 34,26, 0,0, 34,26, 0,0, 0,0, 35,26, 34,26, 35,77, 34,75, 34,76, 36,26, 35,26, 0,0, 35,26, 35,78, 0,0, 36,26, 35,79, 36,81, 0,0, 0,0, 0,0, 36,26, 36,82, 35,80, 0,0, 34,26, 0,0, 0,0, 34,74, 0,0, 0,0, 34,26, 0,0, 34,26, 0,0, 0,0, 35,26, 34,26, 35,77, 34,75, 34,76, 36,26, 35,26, 0,0, 35,26, 35,78, 37,83, 36,26, 35,79, 36,81, 0,0, 37,26, 0,0, 36,26, 36,82, 35,80, 0,0, 37,26, 0,0, 37,26, 38,84, 0,0, 39,86, 37,26, 0,0, 38,26, 0,0, 38,85, 0,0, 0,0, 0,0, 38,26, 0,0, 38,26, 0,0, 0,0, 0,0, 38,26, 37,83, 42,42, 0,0, 0,0, 0,0, 37,26, 0,0, 0,0, 0,0, 42,42, 42,0, 37,26, 0,0, 37,26, 38,84, 0,0, 0,0, 37,26, 0,0, 38,26, 39,26, 38,85, 0,0, 0,0, 0,0, 38,26, 39,26, 38,26, 39,26, 39,87, 0,0, 38,26, 39,26, 0,0, 42,42, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 42,42, 0,0, 42,42, 0,0, 0,0, 0,0, 39,26, 0,0, 0,0, 0,0, 0,0, 0,0, 39,26, 0,0, 39,26, 39,87, 0,0, 0,0, 39,26, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 0,0, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 42,42, 43,26, 42,42, 0,0, 0,0, 0,0, 42,42, 43,26, 44,26, 43,26, 0,0, 44,91, 0,0, 43,26, 44,26, 43,90, 44,26, 45,92, 0,0, 45,26, 44,26, 46,93, 0,0, 0,0, 46,26, 45,26, 0,0, 45,26, 0,0, 0,0, 46,26, 45,26, 46,26, 43,26, 0,0, 42,42, 46,94, 0,0, 0,0, 43,26, 44,26, 43,26, 0,0, 44,91, 0,0, 43,26, 44,26, 43,90, 44,26, 45,92, 0,0, 45,26, 44,26, 46,93, 0,0, 0,0, 46,26, 45,26, 0,0, 45,26, 0,0, 0,0, 46,26, 45,26, 46,26, 48,26, 48,95, 0,0, 46,94, 0,0, 49,26, 48,26, 0,0, 48,26, 0,0, 0,0, 49,26, 48,26, 49,26, 50,26, 0,0, 0,0, 49,26, 0,0, 49,96, 50,26, 0,0, 50,26, 50,97, 0,0, 0,0, 50,26, 0,0, 0,0, 0,0, 0,0, 0,0, 48,26, 48,95, 0,0, 0,0, 0,0, 49,26, 48,26, 0,0, 48,26, 0,0, 0,0, 49,26, 48,26, 49,26, 50,26, 0,0, 0,0, 49,26, 0,0, 49,96, 50,26, 51,26, 50,26, 50,97, 52,26, 0,0, 50,26, 51,26, 0,0, 51,26, 52,26, 53,26, 52,26, 51,26, 51,98, 0,0, 52,26, 53,26, 54,101, 53,26, 54,26, 52,99, 0,0, 53,26, 53,100, 0,0, 54,26, 0,0, 54,26, 0,0, 0,0, 0,0, 54,26, 51,26, 54,102, 0,0, 52,26, 0,0, 0,0, 51,26, 0,0, 51,26, 52,26, 53,26, 52,26, 51,26, 51,98, 0,0, 52,26, 53,26, 54,101, 53,26, 54,26, 52,99, 0,0, 53,26, 53,100, 55,26, 54,26, 0,0, 54,26, 0,0, 56,26, 55,26, 54,26, 55,26, 54,102, 57,26, 56,26, 55,103, 56,26, 0,0, 58,26, 57,26, 56,26, 57,26, 57,104, 0,0, 58,26, 57,26, 58,26, 57,105, 0,0, 0,0, 58,26, 0,0, 0,0, 0,0, 0,0, 55,26, 0,0, 0,0, 0,0, 0,0, 56,26, 55,26, 0,0, 55,26, 0,0, 57,26, 56,26, 55,103, 56,26, 0,0, 58,26, 57,26, 56,26, 57,26, 57,104, 59,106, 58,26, 57,26, 58,26, 57,105, 60,107, 59,26, 58,26, 59,26, 60,26, 61,26, 0,0, 59,26, 0,0, 0,0, 60,26, 61,26, 60,26, 61,26, 61,108, 0,0, 60,26, 61,26, 64,26, 0,0, 0,0, 0,0, 0,0, 0,0, 64,26, 0,0, 64,26, 59,106, 0,0, 0,0, 64,26, 0,0, 60,107, 59,26, 0,0, 59,26, 60,26, 61,26, 0,0, 59,26, 0,0, 0,0, 60,26, 61,26, 60,26, 61,26, 61,108, 62,26, 60,26, 61,26, 64,26, 0,0, 0,0, 62,26, 0,0, 62,26, 64,26, 65,26, 64,26, 62,26, 66,26, 62,109, 64,26, 65,26, 0,0, 65,26, 66,26, 0,0, 66,26, 65,26, 0,0, 0,0, 66,26, 0,0, 67,26, 0,0, 67,110, 0,0, 0,0, 62,26, 67,26, 0,0, 67,26, 0,0, 0,0, 62,26, 67,26, 62,26, 0,0, 65,26, 0,0, 62,26, 66,26, 62,109, 0,0, 65,26, 0,0, 65,26, 66,26, 68,26, 66,26, 65,26, 0,0, 0,0, 66,26, 68,26, 67,26, 68,26, 67,110, 0,0, 0,0, 68,26, 67,26, 68,111, 67,26, 70,26, 0,0, 69,112, 67,26, 0,0, 69,26, 70,26, 0,0, 70,26, 0,0, 0,0, 69,26, 70,113, 69,26, 0,0, 0,0, 68,26, 69,26, 0,0, 0,0, 0,0, 0,0, 68,26, 0,0, 68,26, 0,0, 0,0, 71,26, 68,26, 0,0, 68,111, 0,0, 70,26, 71,26, 69,112, 71,26, 71,114, 69,26, 70,26, 71,26, 70,26, 0,0, 0,0, 69,26, 70,113, 69,26, 0,0, 0,0, 72,26, 69,26, 0,0, 72,115, 0,0, 0,0, 72,26, 0,0, 72,26, 0,0, 0,0, 71,26, 72,26, 0,0, 0,0, 0,0, 0,0, 71,26, 0,0, 71,26, 71,114, 73,26, 73,116, 71,26, 0,0, 0,0, 0,0, 73,26, 0,0, 73,26, 0,0, 0,0, 72,26, 73,26, 0,0, 72,115, 0,0, 0,0, 72,26, 0,0, 72,26, 0,0, 0,0, 0,0, 72,26, 0,0, 0,0, 0,0, 0,0, 0,0, 74,26, 74,117, 0,0, 73,26, 73,116, 75,118, 74,26, 0,0, 74,26, 73,26, 75,26, 73,26, 74,26, 76,119, 0,0, 73,26, 75,26, 76,26, 75,26, 0,0, 0,0, 0,0, 75,26, 76,26, 0,0, 76,26, 0,0, 0,0, 0,0, 76,26, 0,0, 0,0, 74,26, 74,117, 77,120, 77,26, 0,0, 75,118, 74,26, 0,0, 74,26, 77,26, 75,26, 77,26, 74,26, 76,119, 0,0, 77,26, 75,26, 76,26, 75,26, 0,0, 78,26, 0,0, 75,26, 76,26, 0,0, 76,26, 78,26, 0,0, 78,26, 76,26, 0,0, 79,121, 78,26, 0,0, 77,120, 77,26, 79,26, 0,0, 0,0, 0,0, 0,0, 77,26, 79,26, 77,26, 79,26, 80,26, 0,0, 77,26, 79,26, 0,0, 0,0, 80,26, 78,26, 80,26, 0,0, 80,122, 0,0, 80,26, 78,26, 81,26, 78,26, 0,0, 0,0, 79,121, 78,26, 81,26, 0,0, 81,26, 79,26, 0,0, 0,0, 81,26, 0,0, 81,123, 79,26, 0,0, 79,26, 80,26, 0,0, 0,0, 79,26, 82,124, 82,26, 80,26, 0,0, 80,26, 0,0, 80,122, 82,26, 80,26, 82,26, 81,26, 83,26, 0,0, 82,26, 0,0, 0,0, 81,26, 83,26, 81,26, 83,26, 0,0, 0,0, 81,26, 83,125, 81,123, 0,0, 0,0, 0,0, 84,26, 0,0, 0,0, 84,126, 82,124, 82,26, 84,26, 0,0, 84,26, 0,0, 87,26, 82,26, 84,26, 82,26, 0,0, 83,26, 87,26, 82,26, 87,26, 0,0, 0,0, 83,26, 87,129, 83,26, 85,127, 85,26, 0,0, 83,125, 85,128, 0,0, 0,0, 85,26, 84,26, 85,26, 0,0, 84,126, 0,0, 85,26, 84,26, 88,26, 84,26, 0,0, 87,26, 0,0, 84,26, 88,26, 0,0, 88,26, 87,26, 0,0, 87,26, 88,26, 0,0, 0,0, 87,129, 0,0, 85,127, 85,26, 0,0, 0,0, 85,128, 90,131, 90,26, 85,26, 0,0, 85,26, 0,0, 0,0, 90,26, 85,26, 90,26, 88,26, 0,0, 0,0, 90,26, 91,132, 0,0, 88,26, 0,0, 88,26, 91,26, 0,0, 0,0, 88,26, 88,130, 0,0, 91,26, 0,0, 91,26, 92,26, 0,0, 0,0, 91,26, 90,131, 90,26, 92,26, 0,0, 92,26, 0,0, 0,0, 90,26, 92,26, 90,26, 93,26, 0,0, 93,133, 90,26, 91,132, 0,0, 93,26, 0,0, 93,26, 91,26, 0,0, 0,0, 93,26, 0,0, 94,134, 91,26, 0,0, 91,26, 92,26, 94,26, 0,0, 91,26, 0,0, 0,0, 92,26, 94,26, 92,26, 94,26, 0,0, 0,0, 92,26, 94,26, 93,26, 95,26, 93,133, 0,0, 95,135, 0,0, 93,26, 95,26, 93,26, 95,26, 96,26, 0,0, 93,26, 95,26, 94,134, 0,0, 96,26, 97,137, 96,26, 94,26, 97,26, 0,0, 96,26, 0,0, 0,0, 94,26, 97,26, 94,26, 97,26, 0,0, 0,0, 94,26, 97,26, 95,26, 0,0, 96,136, 95,135, 0,0, 0,0, 95,26, 0,0, 95,26, 96,26, 0,0, 0,0, 95,26, 98,138, 98,26, 96,26, 97,137, 96,26, 0,0, 97,26, 98,26, 96,26, 98,26, 0,0, 99,26, 97,26, 98,26, 97,26, 0,0, 0,0, 99,26, 97,26, 99,139, 0,0, 100,140, 100,26, 99,26, 0,0, 100,141, 0,0, 0,0, 100,26, 0,0, 100,26, 0,0, 98,138, 98,26, 100,26, 0,0, 101,26, 0,0, 0,0, 98,26, 0,0, 98,26, 101,26, 99,26, 101,26, 98,26, 0,0, 0,0, 101,26, 99,26, 0,0, 99,139, 0,0, 100,140, 100,26, 99,26, 0,0, 100,141, 0,0, 0,0, 100,26, 102,26, 100,26, 0,0, 102,142, 0,0, 100,26, 102,26, 101,26, 102,26, 0,0, 103,26, 0,0, 102,26, 101,26, 0,0, 101,26, 103,26, 0,0, 103,26, 101,26, 0,0, 104,26, 103,26, 0,0, 0,0, 0,0, 0,0, 104,26, 0,0, 104,26, 105,144, 105,26, 102,26, 104,26, 0,0, 102,142, 104,143, 105,26, 102,26, 105,26, 102,26, 0,0, 103,26, 105,26, 102,26, 0,0, 0,0, 0,0, 103,26, 0,0, 103,26, 0,0, 106,26, 104,26, 103,26, 0,0, 0,0, 0,0, 106,26, 104,26, 106,26, 104,26, 105,144, 105,26, 106,26, 104,26, 106,145, 0,0, 104,143, 105,26, 107,26, 105,26, 0,0, 108,26, 0,0, 105,26, 107,26, 0,0, 107,26, 108,26, 0,0, 108,26, 107,146, 108,147, 106,26, 108,26, 0,0, 109,26, 0,0, 0,0, 106,26, 0,0, 106,26, 109,26, 0,0, 109,26, 106,26, 0,0, 106,145, 109,26, 0,0, 0,0, 107,26, 0,0, 0,0, 108,26, 0,0, 0,0, 107,26, 0,0, 107,26, 108,26, 111,26, 108,26, 107,146, 108,147, 0,0, 108,26, 111,26, 109,26, 111,26, 110,148, 110,26, 0,0, 111,26, 109,26, 0,0, 109,26, 110,26, 0,0, 110,26, 109,26, 0,0, 112,26, 110,26, 0,0, 0,0, 0,0, 112,149, 112,26, 0,0, 112,26, 0,0, 113,26, 111,26, 112,26, 0,0, 0,0, 0,0, 113,26, 111,26, 113,26, 111,26, 110,148, 110,26, 113,26, 111,26, 113,150, 0,0, 0,0, 110,26, 0,0, 110,26, 0,0, 0,0, 112,26, 110,26, 0,0, 0,0, 114,151, 112,149, 112,26, 114,26, 112,26, 0,0, 113,26, 0,0, 112,26, 114,26, 0,0, 114,26, 113,26, 0,0, 113,26, 114,26, 115,152, 115,26, 113,26, 0,0, 113,150, 0,0, 116,26, 115,26, 116,153, 115,26, 0,0, 0,0, 116,26, 115,26, 116,26, 0,0, 114,151, 0,0, 116,26, 114,26, 0,0, 0,0, 117,26, 0,0, 0,0, 114,26, 0,0, 114,26, 117,26, 0,0, 117,154, 114,26, 115,152, 115,26, 117,26, 0,0, 0,0, 0,0, 116,26, 115,26, 116,153, 115,26, 0,0, 0,0, 116,26, 115,26, 116,26, 117,155, 0,0, 118,156, 116,26, 0,0, 0,0, 118,26, 117,26, 0,0, 0,0, 0,0, 0,0, 118,26, 117,26, 118,26, 117,154, 119,26, 120,26, 118,26, 117,26, 0,0, 0,0, 119,26, 120,26, 119,26, 120,158, 0,0, 0,0, 119,26, 120,26, 119,157, 0,0, 0,0, 0,0, 118,156, 0,0, 0,0, 0,0, 118,26, 0,0, 0,0, 0,0, 0,0, 0,0, 118,26, 0,0, 118,26, 0,0, 119,26, 120,26, 118,26, 0,0, 0,0, 0,0, 119,26, 120,26, 119,26, 120,158, 121,26, 0,0, 119,26, 120,26, 119,157, 0,0, 121,26, 0,0, 121,159, 122,161, 122,26, 123,26, 121,26, 121,159, 123,162, 0,0, 122,26, 123,26, 122,26, 123,26, 0,0, 121,160, 122,26, 123,26, 0,0, 124,26, 0,0, 0,0, 0,0, 0,0, 0,0, 124,26, 121,26, 124,26, 0,0, 0,0, 0,0, 124,26, 121,26, 0,0, 121,159, 122,161, 122,26, 123,26, 121,26, 121,159, 123,162, 0,0, 122,26, 123,26, 122,26, 123,26, 0,0, 0,0, 122,26, 123,26, 125,26, 124,26, 0,0, 125,163, 0,0, 0,0, 125,26, 124,26, 125,26, 124,26, 126,26, 127,26, 125,26, 124,26, 0,0, 0,0, 126,26, 127,26, 126,26, 127,165, 0,0, 128,26, 126,26, 127,26, 126,164, 0,0, 0,0, 128,166, 0,0, 128,26, 0,0, 0,0, 125,26, 128,26, 0,0, 125,163, 0,0, 0,0, 125,26, 0,0, 125,26, 0,0, 126,26, 127,26, 125,26, 0,0, 0,0, 0,0, 126,26, 127,26, 126,26, 127,165, 129,26, 128,26, 126,26, 127,26, 126,164, 0,0, 129,26, 128,166, 129,26, 128,26, 130,26, 131,26, 129,26, 128,26, 0,0, 0,0, 130,26, 131,26, 130,26, 131,26, 0,0, 132,26, 130,26, 131,168, 0,0, 0,0, 0,0, 132,26, 0,0, 132,26, 0,0, 0,0, 129,26, 132,26, 132,169, 0,0, 0,0, 0,0, 129,26, 0,0, 129,26, 130,167, 130,26, 131,26, 129,26, 0,0, 0,0, 0,0, 130,26, 131,26, 130,26, 131,26, 0,0, 132,26, 130,26, 131,168, 0,0, 0,0, 0,0, 132,26, 0,0, 132,26, 0,0, 134,26, 133,26, 132,26, 132,169, 133,170, 0,0, 134,26, 133,26, 134,26, 133,26, 135,26, 0,0, 134,26, 133,26, 0,0, 136,26, 135,26, 0,0, 135,172, 134,171, 0,0, 136,26, 135,26, 136,26, 0,0, 0,0, 0,0, 136,26, 0,0, 0,0, 0,0, 136,173, 134,26, 133,26, 0,0, 0,0, 133,170, 0,0, 134,26, 133,26, 134,26, 133,26, 135,26, 0,0, 134,26, 133,26, 0,0, 136,26, 135,26, 0,0, 135,172, 134,171, 137,26, 136,26, 135,26, 136,26, 0,0, 137,174, 137,26, 136,26, 137,26, 138,26, 139,26, 136,173, 137,26, 0,0, 0,0, 138,26, 139,26, 138,26, 139,26, 140,26, 0,0, 138,26, 139,26, 0,0, 139,175, 140,26, 0,0, 140,26, 0,0, 0,0, 0,0, 140,26, 137,26, 0,0, 0,0, 0,0, 0,0, 137,174, 137,26, 0,0, 137,26, 138,26, 139,26, 0,0, 137,26, 0,0, 0,0, 138,26, 139,26, 138,26, 139,26, 140,26, 141,176, 138,26, 139,26, 0,0, 139,175, 140,26, 141,26, 140,26, 141,26, 142,26, 143,26, 140,26, 141,26, 0,0, 0,0, 142,26, 143,26, 142,26, 143,26, 144,26, 144,179, 142,26, 143,26, 142,177, 143,178, 144,26, 0,0, 144,26, 0,0, 0,0, 0,0, 144,26, 141,176, 0,0, 0,0, 0,0, 0,0, 0,0, 141,26, 0,0, 141,26, 142,26, 143,26, 0,0, 141,26, 0,0, 0,0, 142,26, 143,26, 142,26, 143,26, 144,26, 144,179, 142,26, 143,26, 142,177, 143,178, 144,26, 145,26, 144,26, 146,181, 0,0, 0,0, 144,26, 145,26, 146,26, 145,26, 0,0, 147,26, 0,0, 145,26, 146,26, 0,0, 146,26, 147,26, 0,0, 147,26, 146,26, 0,0, 148,26, 147,26, 0,0, 0,0, 145,180, 0,0, 148,26, 0,0, 148,26, 0,0, 0,0, 145,26, 148,182, 146,181, 0,0, 0,0, 0,0, 145,26, 146,26, 145,26, 0,0, 147,26, 0,0, 145,26, 146,26, 0,0, 146,26, 147,26, 0,0, 147,26, 146,26, 0,0, 148,26, 147,26, 149,183, 0,0, 0,0, 0,0, 148,26, 149,26, 148,26, 0,0, 150,26, 0,0, 148,182, 149,26, 0,0, 149,26, 150,26, 0,0, 150,26, 149,26, 151,184, 151,26, 150,26, 0,0, 152,26, 0,0, 0,0, 151,26, 0,0, 151,26, 152,26, 0,0, 152,26, 151,26, 149,183, 0,0, 152,26, 0,0, 152,185, 149,26, 0,0, 0,0, 150,26, 0,0, 0,0, 149,26, 0,0, 149,26, 150,26, 0,0, 150,26, 149,26, 151,184, 151,26, 150,26, 0,0, 152,26, 0,0, 0,0, 151,26, 0,0, 151,26, 152,26, 153,26, 152,26, 151,26, 0,0, 154,187, 152,26, 153,26, 152,185, 153,26, 154,26, 155,26, 0,0, 153,26, 0,0, 153,186, 154,26, 155,188, 154,26, 155,26, 156,26, 0,0, 154,26, 155,189, 0,0, 0,0, 156,190, 0,0, 156,26, 0,0, 0,0, 0,0, 156,26, 153,26, 0,0, 0,0, 0,0, 154,187, 0,0, 153,26, 0,0, 153,26, 154,26, 155,26, 0,0, 153,26, 0,0, 153,186, 154,26, 155,188, 154,26, 155,26, 156,26, 157,26, 154,26, 155,189, 0,0, 0,0, 156,190, 157,26, 156,26, 157,26, 158,26, 159,26, 156,26, 157,26, 0,0, 0,0, 158,26, 159,26, 158,26, 159,26, 157,191, 159,192, 158,26, 159,26, 161,26, 0,0, 0,0, 0,0, 0,0, 0,0, 161,26, 0,0, 161,26, 157,26, 0,0, 0,0, 161,26, 0,0, 0,0, 157,26, 0,0, 157,26, 158,26, 159,26, 0,0, 157,26, 0,0, 0,0, 158,26, 159,26, 158,26, 159,26, 157,191, 159,192, 158,26, 159,26, 161,26, 162,26, 0,0, 0,0, 0,0, 163,195, 161,26, 162,194, 161,26, 162,26, 163,26, 164,26, 161,26, 162,26, 0,0, 0,0, 163,26, 164,26, 163,26, 164,26, 165,26, 0,0, 163,26, 164,26, 0,0, 0,0, 165,26, 0,0, 165,26, 0,0, 0,0, 0,0, 165,26, 162,26, 0,0, 0,0, 0,0, 163,195, 0,0, 162,194, 0,0, 162,26, 163,26, 164,26, 0,0, 162,26, 0,0, 0,0, 163,26, 164,26, 163,26, 164,26, 165,26, 0,0, 163,26, 164,26, 166,196, 166,26, 165,26, 0,0, 165,26, 0,0, 167,26, 166,26, 165,26, 166,26, 0,0, 168,26, 167,26, 166,26, 167,26, 0,0, 169,26, 168,26, 167,26, 168,26, 0,0, 0,0, 169,26, 168,26, 169,26, 0,0, 0,0, 0,0, 169,26, 0,0, 0,0, 0,0, 166,196, 166,26, 0,0, 0,0, 0,0, 0,0, 167,26, 166,26, 0,0, 166,26, 0,0, 168,26, 167,26, 166,26, 167,26, 0,0, 169,26, 168,26, 167,197, 168,26, 0,0, 170,26, 169,26, 168,26, 169,26, 0,0, 171,26, 170,26, 169,26, 170,26, 0,0, 172,26, 171,26, 170,26, 171,26, 170,198, 0,0, 172,26, 171,26, 172,26, 0,0, 173,199, 173,26, 172,26, 0,0, 0,0, 0,0, 0,0, 173,26, 0,0, 173,26, 0,0, 0,0, 170,26, 173,26, 0,0, 0,0, 0,0, 171,26, 170,26, 0,0, 170,26, 0,0, 172,26, 171,26, 170,26, 171,26, 170,198, 0,0, 172,26, 171,26, 172,26, 0,0, 173,199, 173,26, 172,26, 0,0, 174,26, 0,0, 0,0, 173,26, 0,0, 173,26, 174,26, 175,26, 174,26, 173,26, 0,0, 0,0, 174,26, 175,26, 176,26, 175,26, 175,200, 177,26, 0,0, 175,26, 176,26, 0,0, 176,26, 177,26, 0,0, 177,26, 176,26, 0,0, 0,0, 177,26, 0,0, 0,0, 174,26, 0,0, 0,0, 0,0, 177,201, 0,0, 174,26, 175,26, 174,26, 0,0, 0,0, 0,0, 174,26, 175,26, 176,26, 175,26, 175,200, 177,26, 0,0, 175,26, 176,26, 0,0, 176,26, 177,26, 0,0, 177,26, 176,26, 178,26, 0,0, 177,26, 0,0, 179,202, 179,26, 178,26, 0,0, 178,26, 177,201, 180,26, 179,26, 178,26, 179,26, 0,0, 0,0, 180,26, 179,26, 180,26, 181,26, 0,0, 0,0, 180,26, 180,203, 0,0, 181,26, 0,0, 181,26, 0,0, 0,0, 0,0, 181,204, 178,26, 0,0, 0,0, 0,0, 179,202, 179,26, 178,26, 0,0, 178,26, 0,0, 180,26, 179,26, 178,26, 179,26, 0,0, 0,0, 180,26, 179,26, 180,26, 181,26, 182,26, 0,0, 180,26, 180,203, 0,0, 181,26, 182,26, 181,26, 182,26, 183,26, 183,206, 181,204, 182,26, 182,205, 184,207, 183,26, 184,26, 183,26, 0,0, 185,26, 0,0, 183,26, 184,26, 0,0, 184,26, 185,26, 0,0, 185,26, 184,26, 184,208, 0,0, 185,26, 182,26, 0,0, 0,0, 0,0, 0,0, 0,0, 182,26, 0,0, 182,26, 183,26, 183,206, 0,0, 182,26, 182,205, 184,207, 183,26, 184,26, 183,26, 0,0, 185,26, 0,0, 183,26, 184,26, 0,0, 184,26, 185,26, 186,26, 185,26, 184,26, 184,208, 0,0, 185,26, 186,26, 187,26, 186,26, 188,211, 188,26, 0,0, 186,26, 187,210, 0,0, 187,26, 188,26, 0,0, 188,26, 187,26, 0,0, 189,26, 188,26, 0,0, 189,212, 186,209, 0,0, 189,26, 0,0, 189,26, 0,0, 0,0, 186,26, 189,26, 0,0, 0,0, 0,0, 0,0, 186,26, 187,26, 186,26, 188,211, 188,26, 0,0, 186,26, 187,210, 0,0, 187,26, 188,26, 0,0, 188,26, 187,26, 0,0, 189,26, 188,26, 0,0, 189,212, 190,213, 190,26, 189,26, 0,0, 189,26, 0,0, 191,26, 190,26, 189,26, 190,26, 0,0, 192,26, 191,26, 190,26, 191,26, 0,0, 191,214, 192,26, 191,26, 192,26, 192,215, 0,0, 194,26, 192,26, 0,0, 0,0, 0,0, 0,0, 194,26, 0,0, 194,26, 0,0, 190,213, 190,26, 194,26, 0,0, 0,0, 0,0, 191,26, 190,26, 0,0, 190,26, 0,0, 192,26, 191,26, 190,26, 191,26, 0,0, 191,214, 192,26, 191,26, 192,26, 192,215, 195,217, 194,26, 192,26, 0,0, 195,26, 0,0, 0,0, 194,26, 0,0, 194,26, 195,26, 196,26, 195,26, 194,26, 197,26, 0,0, 195,26, 196,26, 0,0, 196,26, 197,26, 0,0, 197,26, 196,26, 198,219, 198,26, 197,26, 0,0, 0,0, 0,0, 0,0, 198,26, 195,217, 198,26, 0,0, 0,0, 195,26, 198,26, 0,0, 0,0, 0,0, 0,0, 195,26, 196,26, 195,26, 0,0, 197,26, 0,0, 195,26, 196,26, 0,0, 196,26, 197,26, 0,0, 197,26, 196,26, 198,219, 198,26, 197,26, 199,220, 197,218, 0,0, 199,26, 198,26, 0,0, 198,26, 0,0, 200,26, 199,26, 198,26, 199,26, 0,0, 201,26, 200,26, 199,26, 200,26, 0,0, 202,26, 201,26, 200,26, 201,26, 0,0, 0,0, 202,26, 201,26, 202,26, 0,0, 0,0, 0,0, 202,221, 0,0, 199,220, 0,0, 0,0, 199,26, 0,0, 0,0, 0,0, 0,0, 200,26, 199,26, 0,0, 199,26, 0,0, 201,26, 200,26, 199,26, 200,26, 0,0, 202,26, 201,26, 200,26, 201,26, 0,0, 0,0, 202,26, 201,26, 202,26, 203,26, 204,26, 203,222, 202,221, 0,0, 0,0, 203,26, 204,26, 203,26, 204,26, 205,26, 0,0, 203,26, 204,26, 206,224, 206,26, 205,26, 0,0, 205,26, 0,0, 204,223, 206,26, 205,26, 206,26, 0,0, 0,0, 0,0, 206,26, 0,0, 0,0, 0,0, 0,0, 203,26, 204,26, 203,222, 0,0, 0,0, 0,0, 203,26, 204,26, 203,26, 204,26, 205,26, 0,0, 203,26, 204,26, 206,224, 206,26, 205,26, 0,0, 205,26, 0,0, 204,223, 206,26, 205,26, 206,26, 207,26, 208,26, 0,0, 206,26, 0,0, 0,0, 207,26, 208,26, 207,26, 208,26, 209,26, 0,0, 207,26, 208,26, 208,226, 207,225, 209,26, 0,0, 209,26, 210,26, 0,0, 0,0, 209,26, 209,227, 0,0, 210,26, 0,0, 210,26, 0,0, 0,0, 0,0, 210,26, 207,26, 208,26, 0,0, 0,0, 0,0, 0,0, 207,26, 208,26, 207,26, 208,26, 209,26, 0,0, 207,26, 208,26, 208,226, 207,225, 209,26, 0,0, 209,26, 210,26, 211,228, 0,0, 209,26, 209,227, 0,0, 210,26, 211,26, 210,26, 211,26, 212,26, 212,229, 210,26, 211,26, 0,0, 213,26, 212,26, 0,0, 212,26, 214,230, 214,26, 213,26, 212,26, 213,26, 0,0, 0,0, 214,26, 213,26, 214,26, 0,0, 0,0, 0,0, 214,26, 211,228, 0,0, 0,0, 0,0, 0,0, 0,0, 211,26, 0,0, 211,26, 212,26, 212,229, 0,0, 211,26, 0,0, 213,26, 212,26, 0,0, 212,26, 214,230, 214,26, 213,26, 212,26, 213,26, 0,0, 215,26, 214,26, 213,26, 214,26, 0,0, 217,26, 215,26, 214,26, 215,26, 0,0, 0,0, 217,233, 215,231, 217,26, 218,234, 0,0, 0,0, 217,26, 221,26, 0,0, 0,0, 0,0, 218,234, 218,0, 221,26, 0,0, 221,26, 0,0, 0,0, 0,0, 221,26, 0,0, 215,26, 0,0, 0,0, 0,0, 0,0, 217,26, 215,26, 0,0, 215,26, 0,0, 0,0, 217,233, 215,231, 217,26, 0,0, 218,234, 0,0, 217,26, 221,26, 0,0, 0,0, 0,0, 0,0, 0,0, 221,26, 0,0, 221,26, 218,218, 0,0, 218,218, 221,26, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 0,0, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 218,218, 219,235, 218,234, 0,0, 219,26, 220,26, 218,218, 0,0, 0,0, 0,0, 219,26, 220,26, 219,26, 220,26, 223,26, 222,26, 219,26, 220,26, 222,237, 220,236, 223,26, 222,26, 223,26, 222,26, 0,0, 0,0, 223,26, 222,26, 0,0, 0,0, 0,0, 0,0, 0,0, 219,235, 0,0, 218,234, 219,26, 220,26, 0,0, 0,0, 0,0, 0,0, 219,26, 220,26, 219,26, 220,26, 223,26, 222,26, 219,26, 220,26, 222,237, 220,236, 223,26, 222,26, 223,26, 222,26, 224,26, 225,26, 223,26, 222,26, 0,0, 0,0, 224,26, 225,26, 224,26, 225,26, 226,26, 0,0, 224,26, 225,238, 0,0, 227,26, 226,26, 227,239, 226,26, 0,0, 0,0, 227,26, 226,26, 227,26, 0,0, 0,0, 0,0, 227,26, 0,0, 0,0, 0,0, 0,0, 224,26, 225,26, 0,0, 0,0, 0,0, 0,0, 224,26, 225,26, 224,26, 225,26, 226,26, 0,0, 224,26, 225,238, 0,0, 227,26, 226,26, 227,239, 226,26, 0,0, 228,26, 227,26, 226,26, 227,26, 0,0, 0,0, 228,26, 227,26, 228,26, 229,26, 230,26, 229,241, 228,26, 0,0, 228,240, 229,26, 230,26, 229,26, 230,26, 231,26, 0,0, 229,26, 230,26, 0,0, 0,0, 231,26, 0,0, 231,26, 0,0, 0,0, 0,0, 231,26, 228,26, 231,242, 0,0, 0,0, 0,0, 0,0, 228,26, 0,0, 228,26, 229,26, 230,26, 229,241, 228,26, 0,0, 228,240, 229,26, 230,26, 229,26, 230,26, 231,26, 0,0, 229,26, 230,26, 233,244, 233,26, 231,26, 0,0, 231,26, 0,0, 234,0, 233,26, 231,26, 233,26, 231,242, 235,26, 0,0, 233,26, 237,247, 0,0, 0,0, 235,26, 0,0, 235,26, 237,26, 0,0, 237,26, 235,26, 0,0, 235,245, 237,26, 0,0, 0,0, 0,0, 0,0, 0,0, 233,244, 233,26, 0,0, 0,0, 0,0, 0,0, 0,0, 233,26, 0,0, 233,26, 234,234, 235,26, 234,234, 233,26, 237,247, 0,0, 0,0, 235,26, 0,0, 235,26, 237,26, 0,0, 237,26, 235,26, 0,0, 235,245, 237,26, 0,0, 0,0, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 0,0, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 234,234, 236,26, 0,0, 0,0, 0,0, 0,0, 234,234, 236,26, 0,0, 236,26, 236,246, 238,248, 238,26, 236,26, 0,0, 0,0, 0,0, 0,0, 238,26, 239,26, 238,26, 0,0, 239,249, 0,0, 238,26, 239,26, 0,0, 239,26, 240,26, 0,0, 0,0, 239,26, 0,0, 236,26, 240,26, 0,0, 240,26, 0,0, 0,0, 236,26, 240,26, 236,26, 236,246, 238,248, 238,26, 236,26, 0,0, 0,0, 0,0, 0,0, 238,26, 239,26, 238,26, 240,250, 239,249, 0,0, 238,26, 239,26, 0,0, 239,26, 240,26, 241,26, 0,0, 239,26, 0,0, 0,0, 240,26, 241,26, 240,26, 241,26, 242,26, 244,26, 240,26, 241,26, 0,0, 241,251, 242,26, 244,26, 242,26, 244,26, 245,26, 0,0, 242,26, 244,26, 0,0, 0,0, 245,26, 0,0, 245,26, 0,0, 0,0, 0,0, 245,26, 241,26, 0,0, 245,252, 0,0, 0,0, 0,0, 241,26, 0,0, 241,26, 242,26, 244,26, 0,0, 241,26, 0,0, 241,251, 242,26, 244,26, 242,26, 244,26, 245,26, 246,26, 242,26, 244,26, 0,0, 0,0, 245,26, 246,26, 245,26, 246,26, 247,26, 248,26, 245,26, 246,253, 0,0, 245,252, 247,26, 248,26, 247,26, 248,26, 249,255, 0,0, 247,26, 248,26, 247,254, 0,0, 249,26, 0,0, 249,26, 0,0, 0,0, 0,0, 249,26, 246,26, 0,0, 0,0, 0,0, 0,0, 0,0, 246,26, 0,0, 246,26, 247,26, 248,26, 0,0, 246,253, 0,0, 0,0, 247,26, 248,26, 247,26, 248,26, 249,255, 250,26, 247,26, 248,26, 247,254, 0,0, 249,26, 250,26, 249,26, 250,26, 251,26, 252,26, 249,26, 250,26, 250,256, 0,0, 251,26, 252,26, 251,26, 252,26, 253,26, 0,0, 251,26, 252,258, 0,0, 0,0, 253,26, 0,0, 253,26, 0,0, 0,0, 0,0, 253,26, 250,26, 0,0, 251,257, 0,0, 0,0, 0,0, 250,26, 0,0, 250,26, 251,26, 252,26, 0,0, 250,26, 250,256, 0,0, 251,26, 252,26, 251,26, 252,26, 253,26, 254,26, 251,26, 252,258, 0,0, 0,0, 253,26, 254,26, 253,26, 254,26, 255,26, 0,0, 253,26, 254,26, 0,0, 256,26, 255,26, 256,260, 255,26, 0,0, 0,0, 256,26, 255,26, 256,26, 255,259, 0,0, 0,0, 256,26, 0,0, 0,0, 0,0, 0,0, 0,0, 254,26, 0,0, 0,0, 0,0, 0,0, 0,0, 254,26, 0,0, 254,26, 255,26, 0,0, 0,0, 254,26, 0,0, 256,26, 255,26, 256,260, 255,26, 0,0, 257,26, 256,26, 255,26, 256,26, 255,259, 0,0, 257,26, 256,26, 257,26, 258,262, 258,26, 259,26, 257,26, 257,261, 0,0, 0,0, 258,26, 259,26, 258,26, 259,26, 0,0, 260,26, 258,26, 259,26, 260,263, 0,0, 0,0, 260,26, 0,0, 260,26, 0,0, 0,0, 257,26, 260,26, 0,0, 0,0, 0,0, 0,0, 257,26, 0,0, 257,26, 258,262, 258,26, 259,26, 257,26, 257,261, 0,0, 0,0, 258,26, 259,26, 258,26, 259,26, 0,0, 260,26, 258,26, 259,26, 260,263, 0,0, 261,26, 260,26, 261,264, 260,26, 0,0, 262,26, 261,26, 260,26, 261,26, 0,0, 263,265, 262,26, 261,26, 262,26, 0,0, 0,0, 263,26, 262,26, 263,26, 0,0, 0,0, 264,26, 263,26, 0,0, 264,266, 0,0, 0,0, 264,26, 0,0, 264,26, 0,0, 0,0, 261,26, 264,26, 261,264, 0,0, 0,0, 262,26, 261,26, 0,0, 261,26, 0,0, 263,265, 262,26, 261,26, 262,26, 0,0, 0,0, 263,26, 262,26, 263,26, 0,0, 265,26, 264,26, 263,26, 0,0, 264,266, 0,0, 265,26, 264,26, 265,26, 264,26, 266,268, 267,26, 265,26, 264,26, 265,267, 0,0, 266,26, 267,26, 266,26, 267,26, 0,0, 268,26, 266,26, 267,26, 0,0, 0,0, 0,0, 268,26, 0,0, 268,26, 0,0, 0,0, 265,26, 268,26, 0,0, 268,269, 0,0, 0,0, 265,26, 0,0, 265,26, 0,0, 266,268, 267,26, 265,26, 0,0, 265,267, 0,0, 266,26, 267,26, 266,26, 267,26, 269,26, 268,26, 266,26, 267,26, 0,0, 0,0, 269,26, 268,26, 269,26, 268,26, 0,0, 0,0, 269,26, 268,26, 0,0, 268,269, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 269,26, 0,0, 0,0, 0,0, 0,0, 0,0, 269,26, 0,0, 269,26, 0,0, 0,0, 0,0, 269,26, 0,0, 0,0, 0,0}; struct yysvf yysvec[] = { 0, 0, 0, yycrank+1, 0, 0, yycrank+0, yysvec+1, 0, yycrank+0, 0, yyvstop+1, yycrank+0, 0, yyvstop+3, yycrank+0, 0, yyvstop+5, yycrank+0, 0, yyvstop+7, yycrank+0, 0, yyvstop+9, yycrank+0, 0, yyvstop+11, yycrank+0, 0, yyvstop+13, yycrank+0, 0, yyvstop+15, yycrank+0, 0, yyvstop+17, yycrank+2, 0, yyvstop+19, yycrank+0, 0, yyvstop+21, yycrank+78, 0, yyvstop+23, yycrank+0, 0, yyvstop+25, yycrank+0, 0, yyvstop+27, yycrank+0, 0, yyvstop+29, yycrank+0, 0, yyvstop+31, yycrank+0, 0, yyvstop+33, yycrank+135, 0, yyvstop+35, yycrank+192, yysvec+20, yyvstop+37, yycrank+193, yysvec+20, yyvstop+39, yycrank+202, yysvec+20, yyvstop+41, yycrank+207, yysvec+20, yyvstop+43, yycrank+244, yysvec+20, yyvstop+45, yycrank+249, yysvec+20, yyvstop+47, yycrank+254, yysvec+20, yyvstop+49, yycrank+265, yysvec+20, yyvstop+51, yycrank+302, yysvec+20, yyvstop+53, yycrank+315, yysvec+20, yyvstop+55, yycrank+357, yysvec+20, yyvstop+57, yycrank+364, yysvec+20, yyvstop+59, yycrank+316, yysvec+20, yyvstop+61, yycrank+406, yysvec+20, yyvstop+63, yycrank+417, yysvec+20, yyvstop+65, yycrank+422, yysvec+20, yyvstop+67, yycrank+464, yysvec+20, yyvstop+69, yycrank+478, yysvec+20, yyvstop+71, yycrank+511, yysvec+20, yyvstop+73, yycrank+9, yysvec+20, yyvstop+75, yycrank+30, 0, yyvstop+77, yycrank+-561, 0, yyvstop+79, yycrank+581, yysvec+20, yyvstop+81, yycrank+588, yysvec+20, yyvstop+83, yycrank+599, yysvec+20, yyvstop+85, yycrank+604, yysvec+20, yyvstop+87, yycrank+0, 0, yyvstop+89, yycrank+645, yysvec+20, yyvstop+91, yycrank+650, yysvec+20, yyvstop+93, yycrank+659, yysvec+20, yyvstop+95, yycrank+698, yysvec+20, yyvstop+97, yycrank+701, yysvec+20, yyvstop+99, yycrank+708, yysvec+20, yyvstop+101, yycrank+717, yysvec+20, yyvstop+103, yycrank+754, yysvec+20, yyvstop+105, yycrank+759, yysvec+20, yyvstop+107, yycrank+764, yysvec+20, yyvstop+110, yycrank+769, yysvec+20, yyvstop+113, yycrank+806, yysvec+20, yyvstop+116, yycrank+815, yysvec+20, yyvstop+118, yycrank+816, yysvec+20, yyvstop+120, yycrank+858, yysvec+20, yyvstop+122, yycrank+0, 0, yyvstop+124, yycrank+829, yysvec+20, yyvstop+126, yycrank+868, yysvec+20, yyvstop+129, yycrank+871, yysvec+20, yyvstop+132, yycrank+885, yysvec+20, yyvstop+135, yycrank+910, yysvec+20, yyvstop+137, yycrank+931, yysvec+20, yyvstop+139, yycrank+926, yysvec+20, yyvstop+141, yycrank+953, yysvec+20, yyvstop+143, yycrank+974, yysvec+20, yyvstop+145, yycrank+995, yysvec+20, yyvstop+147, yycrank+1024, yysvec+20, yyvstop+149, yycrank+1034, yysvec+20, yyvstop+151, yycrank+1041, yysvec+20, yyvstop+153, yycrank+1059, yysvec+20, yyvstop+155, yycrank+1076, yysvec+20, yyvstop+157, yycrank+1092, yysvec+20, yyvstop+160, yycrank+1101, yysvec+20, yyvstop+162, yycrank+1115, yysvec+20, yyvstop+164, yycrank+1138, yysvec+20, yyvstop+166, yycrank+1148, yysvec+20, yyvstop+168, yycrank+1165, yysvec+20, yyvstop+170, yycrank+1190, yysvec+20, yyvstop+172, yycrank+0, 0, yyvstop+174, yycrank+1175, yysvec+20, yyvstop+176, yycrank+1204, yysvec+20, yyvstop+178, yycrank+0, 0, yyvstop+180, yycrank+1227, yysvec+20, yyvstop+184, yycrank+1245, yysvec+20, yyvstop+186, yycrank+1254, yysvec+20, yyvstop+188, yycrank+1268, yysvec+20, yyvstop+191, yycrank+1287, yysvec+20, yyvstop+193, yycrank+1301, yysvec+20, yyvstop+195, yycrank+1310, yysvec+20, yyvstop+197, yycrank+1320, yysvec+20, yyvstop+200, yycrank+1347, yysvec+20, yyvstop+202, yycrank+1357, yysvec+20, yyvstop+204, yycrank+1368, yysvec+20, yyvstop+206, yycrank+1382, yysvec+20, yyvstop+208, yycrank+1407, yysvec+20, yyvstop+211, yycrank+1417, yysvec+20, yyvstop+213, yycrank+1428, yysvec+20, yyvstop+216, yycrank+1438, yysvec+20, yyvstop+218, yycrank+1459, yysvec+20, yyvstop+220, yycrank+1477, yysvec+20, yyvstop+222, yycrank+1480, yysvec+20, yyvstop+224, yycrank+1494, yysvec+20, yyvstop+226, yycrank+1529, yysvec+20, yyvstop+229, yycrank+1519, yysvec+20, yyvstop+231, yycrank+1540, yysvec+20, yyvstop+234, yycrank+1550, yysvec+20, yyvstop+236, yycrank+1579, yysvec+20, yyvstop+238, yycrank+1593, yysvec+20, yyvstop+240, yycrank+1598, yysvec+20, yyvstop+242, yycrank+1614, yysvec+20, yyvstop+244, yycrank+1645, yysvec+20, yyvstop+246, yycrank+1655, yysvec+20, yyvstop+248, yycrank+1656, yysvec+20, yyvstop+250, yycrank+1697, yysvec+20, yyvstop+252, yycrank+1707, yysvec+20, yyvstop+254, yycrank+1708, yysvec+20, yyvstop+256, yycrank+1722, yysvec+20, yyvstop+258, yycrank+1753, yysvec+20, yyvstop+261, yycrank+1763, yysvec+20, yyvstop+263, yycrank+1764, yysvec+20, yyvstop+265, yycrank+1774, yysvec+20, yyvstop+267, yycrank+1805, yysvec+20, yyvstop+269, yycrank+1815, yysvec+20, yyvstop+272, yycrank+1816, yysvec+20, yyvstop+274, yycrank+1826, yysvec+20, yyvstop+276, yycrank+1869, yysvec+20, yyvstop+278, yycrank+1868, yysvec+20, yyvstop+280, yycrank+1878, yysvec+20, yyvstop+282, yycrank+1883, yysvec+20, yyvstop+284, yycrank+1920, yysvec+20, yyvstop+286, yycrank+1929, yysvec+20, yyvstop+288, yycrank+1930, yysvec+20, yyvstop+291, yycrank+1939, yysvec+20, yyvstop+293, yycrank+1972, yysvec+20, yyvstop+296, yycrank+1981, yysvec+20, yyvstop+298, yycrank+1982, yysvec+20, yyvstop+300, yycrank+1991, yysvec+20, yyvstop+302, yycrank+2030, yysvec+20, yyvstop+304, yycrank+2037, yysvec+20, yyvstop+306, yycrank+2040, yysvec+20, yyvstop+308, yycrank+2051, yysvec+20, yyvstop+311, yycrank+2090, yysvec+20, yyvstop+313, yycrank+2093, yysvec+20, yyvstop+315, yycrank+2104, yysvec+20, yyvstop+318, yycrank+2107, yysvec+20, yyvstop+320, yycrank+2146, yysvec+20, yyvstop+322, yycrank+2155, yysvec+20, yyvstop+324, yycrank+2156, yysvec+20, yyvstop+326, yycrank+2165, yysvec+20, yyvstop+328, yycrank+2198, yysvec+20, yyvstop+330, yycrank+2207, yysvec+20, yyvstop+332, yycrank+2208, yysvec+20, yyvstop+335, yycrank+56, 0, 0, yycrank+2221, yysvec+20, yyvstop+337, yycrank+2254, yysvec+20, yyvstop+340, yycrank+2263, yysvec+20, yyvstop+342, yycrank+2264, yysvec+20, yyvstop+344, yycrank+2273, yysvec+20, yyvstop+347, yycrank+2310, yysvec+20, yyvstop+350, yycrank+2315, yysvec+20, yyvstop+352, yycrank+2320, yysvec+20, yyvstop+354, yycrank+2325, yysvec+20, yyvstop+357, yycrank+2362, yysvec+20, yyvstop+360, yycrank+2367, yysvec+20, yyvstop+362, yycrank+2372, yysvec+20, yyvstop+365, yycrank+2383, yysvec+20, yyvstop+368, yycrank+2418, yysvec+20, yyvstop+370, yycrank+2425, yysvec+20, yyvstop+373, yycrank+2432, yysvec+20, yyvstop+375, yycrank+2435, yysvec+20, yyvstop+378, yycrank+2477, yysvec+20, yyvstop+380, yycrank+2482, yysvec+20, yyvstop+383, yycrank+2487, yysvec+20, yyvstop+385, yycrank+2496, yysvec+20, yyvstop+387, yycrank+2529, yysvec+20, yyvstop+389, yycrank+2538, yysvec+20, yyvstop+391, yycrank+2545, yysvec+20, yyvstop+393, yycrank+2548, yysvec+20, yyvstop+395, yycrank+2587, yysvec+20, yyvstop+398, yycrank+2594, yysvec+20, yyvstop+400, yycrank+2597, yysvec+20, yyvstop+402, yycrank+2608, yysvec+20, yyvstop+404, yycrank+2645, yysvec+20, yyvstop+406, yycrank+2650, yysvec+20, yyvstop+408, yycrank+2655, yysvec+20, yyvstop+410, yycrank+58, 0, 0, yycrank+2666, yysvec+20, yyvstop+412, yycrank+2701, yysvec+20, yyvstop+415, yycrank+2708, yysvec+20, yyvstop+417, yycrank+2711, yysvec+20, yyvstop+420, yycrank+2722, yysvec+20, yyvstop+422, yycrank+2759, yysvec+20, yyvstop+424, yycrank+2764, yysvec+20, yyvstop+426, yycrank+2769, yysvec+20, yyvstop+429, yycrank+2774, yysvec+20, yyvstop+432, yycrank+2815, yysvec+20, yyvstop+434, yycrank+2816, yysvec+20, yyvstop+436, yycrank+2825, yysvec+20, yyvstop+438, yycrank+2830, yysvec+20, yyvstop+441, yycrank+2871, yysvec+20, yyvstop+443, yycrank+2872, yysvec+20, yyvstop+445, yycrank+2881, yysvec+20, yyvstop+447, yycrank+2890, yysvec+20, yyvstop+449, yycrank+2923, yysvec+20, yyvstop+452, yycrank+2932, yysvec+20, yyvstop+454, yycrank+2937, yysvec+20, yyvstop+456, yycrank+2942, yysvec+20, yyvstop+459, yycrank+2979, yysvec+20, yyvstop+461, yycrank+56, 0, 0, yycrank+2984, yysvec+20, yyvstop+463, yycrank+-3062, 0, yyvstop+465, yycrank+3085, yysvec+20, yyvstop+468, yycrank+3086, yysvec+20, yyvstop+470, yycrank+2997, yysvec+20, yyvstop+472, yycrank+3096, yysvec+20, yyvstop+475, yycrank+3095, yysvec+20, yyvstop+477, yycrank+3137, yysvec+20, yyvstop+480, yycrank+3138, yysvec+20, yyvstop+483, yycrank+3147, yysvec+20, yyvstop+485, yycrank+3152, yysvec+20, yyvstop+488, yycrank+3189, yysvec+20, yyvstop+490, yycrank+3198, yysvec+20, yyvstop+492, yycrank+3199, yysvec+20, yyvstop+494, yycrank+3208, yysvec+20, yyvstop+497, yycrank+55, 0, 0, yycrank+3245, yysvec+20, yyvstop+499, yycrank+-3310, yysvec+218, yyvstop+501, yycrank+3255, yysvec+20, yyvstop+503, yycrank+3330, yysvec+20, yyvstop+505, yycrank+3258, yysvec+20, yyvstop+507, yycrank+3341, yysvec+20, yyvstop+509, yycrank+3348, yysvec+20, yyvstop+511, yycrank+3357, yysvec+20, yyvstop+513, yycrank+3390, yysvec+20, yyvstop+515, yycrank+3399, yysvec+20, yyvstop+517, yycrank+0, 0, yyvstop+520, yycrank+3400, yysvec+20, yyvstop+522, yycrank+3409, yysvec+20, yyvstop+525, yycrank+3442, yysvec+20, yyvstop+527, yycrank+3451, yysvec+20, yyvstop+529, yycrank+3452, yysvec+20, yyvstop+531, yycrank+3461, yysvec+20, yyvstop+534, yycrank+3494, yysvec+20, yyvstop+536, yycrank+3503, yysvec+20, yyvstop+538, yycrank+3504, yysvec+20, yyvstop+540, yycrank+3513, yysvec+20, yyvstop+542, yycrank+3546, yysvec+20, yyvstop+545, yycrank+3555, yysvec+20, yyvstop+548, yycrank+3560, yysvec+20, yyvstop+550, yycrank+3597, yysvec+20, yyvstop+552, yycrank+3607, yysvec+20, yyvstop+554, yycrank+3608, yysvec+20, yyvstop+556, yycrank+3618, yysvec+20, yyvstop+559, yycrank+3655, yysvec+20, yyvstop+561, yycrank+3660, yysvec+20, yyvstop+563, yycrank+3665, yysvec+20, yyvstop+566, yycrank+3676, yysvec+20, yyvstop+568, yycrank+3707, yysvec+20, yyvstop+570, yycrank+3717, yysvec+20, yyvstop+572, yycrank+3718, yysvec+20, yyvstop+574, yycrank+3728, yysvec+20, yyvstop+577, yycrank+3759, yysvec+20, yyvstop+579, 0, 0, 0}; struct yywork *yytop = yycrank+3873; struct yysvf *yybgin = yysvec+1; char yymatch[] = { 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 011 ,01 ,'"' ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,'.' ,01 , '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' , '0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' , 'H' ,'I' ,'J' ,'K' ,'L' ,'J' ,'N' ,'O' , 'P' ,'Q' ,'R' ,'S' ,'T' ,'U' ,'V' ,'W' , 'X' ,'Y' ,'J' ,'[' ,01 ,01 ,01 ,'_' , 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' , 'H' ,'I' ,'J' ,'K' ,'L' ,'J' ,'N' ,'O' , 'P' ,'Q' ,'R' ,'S' ,'T' ,'U' ,'V' ,'W' , 'X' ,'Y' ,'J' ,01 ,'|' ,01 ,01 ,01 , 0}; char yyextra[] = { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0}; #ifndef lint static char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */ #endif int yylineno =1; # define YYU(x) x # define NLSTATE yyprevious=YYNEWLINE char yytext[YYLMAX]; struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; char yysbuf[YYLMAX]; char *yysptr = yysbuf; int *yyfnd; extern struct yysvf *yyestate; int yyprevious = YYNEWLINE; CLASS_NAME :: yylook(){ register struct yysvf *yystate, **lsp; register struct yywork *yyt; struct yysvf *yyz; int yych, yyfirst; struct yywork *yyr; # ifdef LEXDEBUG int debug; # endif char *yylastch; /* start off machines */ # ifdef LEXDEBUG debug = 0; # endif yyfirst=1; if (!yymorfg) yylastch = yytext; else { yymorfg=0; yylastch = yytext+yyleng; } for(;;){ lsp = yylstate; yyestate = yystate = yybgin; if (yyprevious==YYNEWLINE) yystate++; for (;;){ # ifdef LEXDEBUG if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); # endif yyt = yystate->yystoff; if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ yyz = yystate->yyother; if(yyz == 0)break; if(yyz->yystoff == yycrank)break; } *yylastch++ = yych = input(); yyfirst=0; tryagain: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"char "); allprint(yych); putchar('\n'); } # endif yyr = yyt; if ( (int)yyt > (int)yycrank){ yyt = yyr + yych; if (yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } } # ifdef YYOPTIM else if((int)yyt < (int)yycrank) { /* r < yycrank */ yyt = yyr = yycrank+(yycrank-yyt); # ifdef LEXDEBUG if(debug)fprintf(yyout,"compressed state\n"); # endif yyt = yyt + yych; if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } yyt = yyr + YYU(yymatch[yych]); # ifdef LEXDEBUG if(debug){ fprintf(yyout,"try fall back character "); allprint(YYU(yymatch[yych])); putchar('\n'); } # endif if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transition */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } } if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ # ifdef LEXDEBUG if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); # endif goto tryagain; } # endif else {unput(*--yylastch);break;} contin: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"state %d char ",yystate-yysvec-1); allprint(yych); putchar('\n'); } # endif ; } # ifdef LEXDEBUG if(debug){ fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); allprint(yych); putchar('\n'); } # endif while (lsp-- > yylstate){ *yylastch-- = 0; if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ yyolsp = lsp; if(yyextra[*yyfnd]){ /* must backup */ while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ lsp--; unput(*yylastch--); } } yyprevious = YYU(*yylastch); yylsp = lsp; yyleng = yylastch-yytext+1; yytext[yyleng] = 0; # ifdef LEXDEBUG if(debug){ fprintf(yyout,"\nmatch "); sprint(yytext); fprintf(yyout," action %d\n",*yyfnd); } # endif INT_RETURN(*yyfnd++); } unput(*yylastch); } if (yytext[0] == 0 /* && feof(yyin) */) { yysptr=yysbuf; INT_RETURN(0); } yyprevious = yytext[0] = input(); if (yyprevious>0) output(yyprevious); yylastch=yytext; # ifdef LEXDEBUG if(debug)putchar('\n'); # endif } } CLASS_NAME :: yyback(int *p,int m) { if (p==0) INT_RETURN(0); while (*p) { if (*p++ == m) INT_RETURN(1); } INT_RETURN(0); } /* the following are only used in the lex library */ CLASS_NAME :: yyinput(){ INT_RETURN(input()); } CLASS_NAME :: yyoutput(int c){ output(c); } CLASS_NAME :: yyunput(int c){ unput(c); }