#ifndef lint static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #endif #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define yyclearin (yychar=(-1)) #define yyerrok (yyerrflag=0) #define YYRECOVERING (yyerrflag!=0) #define yyparse Klyyparse #define yylex Klyylex #define yyerror Klyyerror #define yychar Klyychar #define yyval Klyyval #define yylval Klyylval #define yydebug Klyydebug #define yynerrs Klyynerrs #define yyerrflag Klyyerrflag #define yyss Klyyss #define yyssp Klyyssp #define yyvs Klyyvs #define yyvsp Klyyvsp #define yylhs Klyylhs #define yylen Klyylen #define yydefred Klyydefred #define yydgoto Klyydgoto #define yysindex Klyysindex #define yyrindex Klyyrindex #define yygindex Klyygindex #define yytable Klyytable #define yycheck Klyycheck #define yyname Klyyname #define yyrule Klyyrule #define YYPREFIX "Klyy" /* Copyright 1989-93 GROUPE BULL -- See license conditions in file COPYRIGHT */ /*****************************************************************************\ * * * BYacc grammar for Klone * * * \*****************************************************************************/ /* This grammar works with byacc (berkeley yacc) v1.9, but should not dependent * on the version, and should even work with yacc or bison */ #define IN_YACC_PARSER #include "klparser.h" typedef union{ KlO KlObject; KlCollection Kl_collection; } YYSTYPE; #define END_OF_FILE 257 #define STRING 258 #define RAW_STRING 259 #define QUOTECHAR 260 #define BINEXPR 261 #define BADBINEXPR 262 #define NON_CLOSED_STRING 263 #define NON_CLOSED_RAW_STRING 264 #define NON_CLOSED_COMMENT 265 #define NUMBER 266 #define HEX_NUMBER 267 #define SYMBCHAR 268 #define CHAR 269 #define CTRLCHAR 270 #define REAL_NUMBER 271 #define LEFTPAR 272 #define RIGHTPAR 273 #define LEFTBRA 274 #define RIGHTBRA 275 #define BACKQUOTE 276 #define UNQUOTE 277 #define UNQUOTESPLICING 278 #define NAME 279 #define PACKNAME 280 #define LEFTPARVECTOR 281 #define LEFTSQUARE 282 #define RIGHTPARDOT 283 #define RIGHTSQUARE 284 #define LEFTSHARPSQUARE 285 #define UNSIGNED_NUMBER 286 #define LONGLONG_NUMBER 287 #define YYERRCODE 256 short Klyylhs[] = { -1, 0, 0, 0, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, }; short Klyylen[] = { 2, 1, 2, 1, 1, 1, 3, 3, 3, 4, 1, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 0, }; short Klyydefred[] = { 0, 47, 3, 29, 30, 0, 45, 46, 35, 36, 5, 26, 44, 42, 43, 25, 49, 0, 49, 0, 0, 0, 4, 24, 49, 49, 49, 27, 28, 0, 1, 10, 14, 31, 0, 2, 0, 32, 33, 34, 0, 0, 0, 37, 6, 0, 48, 38, 7, 40, 22, 0, 39, 8, 41, 23, 19, 20, 21, 15, 16, 18, 17, 9, 11, 12, 13, }; short Klyydgoto[] = { 29, 46, 34, 31, 32, }; short Klyysindex[] = { -192, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, -64, -64, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, -160, 0, 0, 0, -224, -128, -96, 0, 0, -33, 0, 0, 0, 0, 0, -238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; short Klyyrindex[] = { 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, }; short Klyygindex[] = { -8, 236, 219, 142, 175, }; #define YYTABLESIZE 257 short Klyytable[] = { 1, 43, 3, 4, 5, 6, 7, 8, 9, 35, 10, 11, 12, 13, 14, 15, 16, 44, 18, 0, 19, 20, 21, 22, 23, 24, 25, 45, 10, 26, 27, 28, 1, 49, 3, 4, 5, 6, 7, 8, 9, 22, 10, 11, 12, 13, 14, 15, 16, 50, 18, 0, 19, 20, 21, 22, 23, 24, 25, 51, 0, 26, 27, 28, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 1, 47, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 0, 18, 48, 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 1, 52, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, 0, 53, 26, 27, 28, 1, 54, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, 63, 55, 26, 27, 28, 1, 65, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, 0, 64, 26, 27, 28, 56, 57, 66, 58, 0, 0, 0, 0, 0, 10, 0, 0, 30, 36, 0, 59, 60, 33, 0, 40, 41, 42, 22, 0, 0, 61, 0, 62, 0, 30, 0, 37, 38, 39, }; short Klyycheck[] = { 256, 257, 258, 259, 260, 261, 262, 263, 264, 17, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, 266, 285, 286, 287, 256, 257, 258, 259, 260, 261, 262, 263, 264, 279, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, 283, -1, 285, 286, 287, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, -1, 276, 277, 278, 279, 280, 281, 282, -1, -1, 285, 286, 287, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, -1, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, -1, 285, 286, 287, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, -1, 274, -1, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, -1, 274, -1, 276, 277, 278, 279, 280, 281, 282, 45, 284, 285, 286, 287, 256, 51, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, -1, 274, -1, 276, 277, 278, 279, 280, 281, 282, -1, 45, 285, 286, 287, 257, 258, 51, 260, -1, -1, -1, -1, -1, 266, -1, -1, 0, 18, -1, 272, 273, 5, -1, 24, 25, 26, 279, -1, -1, 282, -1, 284, -1, 17, -1, 19, 20, 21, }; #define YYFINAL 29 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 287 #if YYDEBUG char *Klyyname[] = { "end-of-file",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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,"END_OF_FILE","STRING", "RAW_STRING","QUOTECHAR","BINEXPR","BADBINEXPR","NON_CLOSED_STRING", "NON_CLOSED_RAW_STRING","NON_CLOSED_COMMENT","NUMBER","HEX_NUMBER","SYMBCHAR", "CHAR","CTRLCHAR","REAL_NUMBER","LEFTPAR","RIGHTPAR","LEFTBRA","RIGHTBRA", "BACKQUOTE","UNQUOTE","UNQUOTESPLICING","NAME","PACKNAME","LEFTPARVECTOR", "LEFTSQUARE","RIGHTPARDOT","RIGHTSQUARE","LEFTSHARPSQUARE","UNSIGNED_NUMBER", "LONGLONG_NUMBER", }; char *Klyyrule[] = { "$accept : main_s_exp", "main_s_exp : s_expression", "main_s_exp : RIGHTPAR main_s_exp", "main_s_exp : END_OF_FILE", "name : NAME", "number : NUMBER", "s_expression : LEFTPAR list_of_s_expressions RIGHTPAR", "s_expression : LEFTBRA list_of_s_expressions RIGHTBRA", "s_expression : LEFTSQUARE list_of_s_expressions RIGHTSQUARE", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT name", "s_expression : name", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT number", "s_expression : LEFTPARVECTOR list_of_s_expressions RIGHTPARDOT name", "s_expression : LEFTPARVECTOR list_of_s_expressions RIGHTPARDOT number", "s_expression : number", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT LEFTPAR", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT RIGHTPAR", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT RIGHTSQUARE", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT LEFTSQUARE", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT END_OF_FILE", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT STRING", "s_expression : LEFTPAR list_of_s_expressions RIGHTPARDOT QUOTECHAR", "s_expression : LEFTPARVECTOR list_of_s_expressions RIGHTPAR", "s_expression : LEFTSHARPSQUARE list_of_s_expressions RIGHTSQUARE", "s_expression : PACKNAME", "s_expression : REAL_NUMBER", "s_expression : HEX_NUMBER", "s_expression : UNSIGNED_NUMBER", "s_expression : LONGLONG_NUMBER", "s_expression : STRING", "s_expression : RAW_STRING", "s_expression : QUOTECHAR s_expression", "s_expression : BACKQUOTE s_expression", "s_expression : UNQUOTE s_expression", "s_expression : UNQUOTESPLICING s_expression", "s_expression : NON_CLOSED_STRING", "s_expression : NON_CLOSED_RAW_STRING", "s_expression : LEFTPAR list_of_s_expressions END_OF_FILE", "s_expression : LEFTBRA list_of_s_expressions END_OF_FILE", "s_expression : LEFTSQUARE list_of_s_expressions END_OF_FILE", "s_expression : LEFTPARVECTOR list_of_s_expressions END_OF_FILE", "s_expression : LEFTSHARPSQUARE list_of_s_expressions END_OF_FILE", "s_expression : CHAR", "s_expression : CTRLCHAR", "s_expression : SYMBCHAR", "s_expression : BINEXPR", "s_expression : BADBINEXPR", "s_expression : error", "list_of_s_expressions : list_of_s_expressions s_expression", "list_of_s_expressions :", }; #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 500 #define YYMAXDEPTH 500 #endif #endif int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short yyss[YYSTACKSIZE]; YYSTYPE yyvs[YYSTACKSIZE]; #define yystacksize YYSTACKSIZE static char *Klyyerrorstring; Klyyerror(s) char *s; { Klyyerrorstring = s; } static int Klyyparsing; KlyyparseSyntaxError(why) char *why; { /* set back flag to 0 since this error cannot be corrected */ Klyyparsing = 0; KlError1s(KlE_SYNTAX_ERROR, why); } int Klyyparse() { if (Klyyparsing) { /* we cannot re-enter parser! */ KlError1s(KlE_SYNTAX_ERROR, "Parser not reentrant: cannot call read in a read"); return 1; } else { Klyyparsing = 1; } if (KlyyparseRaw()) { /* abort */ Klyyparsing = 0; KlError1s(KlE_SYNTAX_ERROR, Klyyerrorstring); return 1; } else { /* accept */ Klyyparsing = 0; return 0; } } /* ;;; EMACS MODES ;;; Local Variables: *** ;;; mode:c *** ;;; End: *** */ #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int yyparse() { register int yym, yyn, yystate; #if YYDEBUG register char *yys; extern char *getenv(); if (yys = getenv("YYDEBUG")) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = (-1); yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if (yyn = yydefred[yystate]) goto yyreduce; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag) goto yyinrecovery; #ifdef lint goto yynewerror; #endif yynewerror: yyerror("syntax error"); #ifdef lint goto yyerrlab; #endif yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yyssp); #endif if (yyssp <= yyss) goto yyabort; --yyssp; --yyvsp; } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = (-1); goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) { case 1: {yyval.KlObject = KlReadExpr = yyvsp[0].KlObject; YYACCEPT;} break; case 2: {yyval.KlObject = KlReadExpr = yyvsp[0].KlObject; YYACCEPT;} break; case 3: {yyval.KlObject = KlReadExpr = NULL; YYACCEPT;} break; case 4: {yyval.KlObject = (KlO) KlInternBytes(yyleng, yytext);} break; case 5: {Int num; sscanf(yytext,"%ld",&num); yyval.KlObject = (KlO) KlNumberMake((Int) num);} break; case 6: {yyval.KlObject = (KlO) KlListMake(yyvsp[-1].Kl_collection);} break; case 7: {yyval.KlObject = KlCollectionEvalOnLine(yyvsp[-1].Kl_collection); if (!yyval.KlObject) { KlReadExpr = NULL; yyerror("Error in inline function"); YYABORT; } } break; case 8: {yyval.KlObject = (KlO) KlVectorMakeQ(yyvsp[-1].Kl_collection);} break; case 9: {yyval.KlObject = (KlO) KlAccessorMake(KlListMake(yyvsp[-2].Kl_collection), yyvsp[0].KlObject);} break; case 10: {yyval.KlObject = yyvsp[0].KlObject;} break; case 11: {yyval.KlObject = (KlO) KlAccessorMake(KlListMake(yyvsp[-2].Kl_collection), yyvsp[0].KlObject);} break; case 12: {yyval.KlObject = (KlO) KlAccessorMake(KlVectorMakeQ(yyvsp[-2].Kl_collection), yyvsp[0].KlObject);} break; case 13: {yyval.KlObject = (KlO) KlAccessorMake(KlVectorMakeQ(yyvsp[-2].Kl_collection), yyvsp[0].KlObject);} break; case 14: {yyval.KlObject = yyvsp[0].KlObject;} break; case 15: {yyval.KlObject = KlReadExpr = NULL; yyerror("Bad dot usage"); YYABORT;} break; case 16: {yyval.KlObject = KlReadExpr = NULL; yyerror("Bad dot usage"); YYABORT;} break; case 17: {yyval.KlObject = KlReadExpr = NULL; yyerror("Bad dot usage"); YYABORT;} break; case 18: {yyval.KlObject = KlReadExpr = NULL; yyerror("Bad dot usage"); YYABORT;} break; case 19: {yyval.KlObject = KlReadExpr = NULL; yyerror("Bad dot usage"); YYABORT;} break; case 20: {yyval.KlObject = KlReadExpr = NULL; yyerror("Bad dot usage"); YYABORT;} break; case 21: {yyval.KlObject = KlReadExpr = NULL; yyerror("Bad dot usage"); YYABORT;} break; case 22: {yyval.KlObject = (KlO) KlVectorMakeQ(yyvsp[-1].Kl_collection);} break; case 23: { if (((KlList) yyvsp[-1].Kl_collection)->size < 2 || (((KlList) yyvsp[-1].Kl_collection)->size == 2 && ((KlList) yyvsp[-1].Kl_collection)->list[0] == (KlO) KlA_assign) ) { yyerror("A locator #[...] needs more elements"); YYABORT; } yyval.KlObject = (KlO) KlLocatorMakeFromColl(yyvsp[-1].Kl_collection); } break; case 24: {yyval.KlObject = (KlO) KlPacknameMake(yyleng, yytext);} break; case 25: {double x; KlParseReals(x); yyval.KlObject = (KlO) KlRealMake(x);} break; case 26: {Int num; sscanf(yytext+2,"%lx",&num); yyval.KlObject = (KlO) KlNumberMake((Int) num);} break; case 27: {yyval.KlObject = (KlO) KlUnsignedMakeFromString(yytext);} break; case 28: {yyval.KlObject = (KlO) KlLongMakeFromString(yytext);} break; case 29: {yyval.KlObject = KlReadString;} break; case 30: {yyval.KlObject = KlReadString;} break; case 31: {yyval.KlObject = (KlO) KlQuotedExprMake(yyvsp[0].KlObject);} break; case 32: {yyval.KlObject = (KlO) KlBackQuotedExprMake(yyvsp[0].KlObject);} break; case 33: {yyval.KlObject = (KlO) KlUnquoteExprMake(yyvsp[0].KlObject);} break; case 34: {yyval.KlObject = (KlO) KlUnquoteSplicingExprMake(yyvsp[0].KlObject);} break; case 35: {yyval.KlObject = KlReadExpr = NULL; yyerror("Non closed string"); YYABORT; } break; case 36: {yyval.KlObject = KlReadExpr = NULL; yyerror("Non closed raw string"); YYABORT; } break; case 37: {yyval.KlObject = KlReadExpr = NULL; yyerror("Lacking \")\" at the end of file!"); YYABORT; } break; case 38: {yyval.KlObject = KlReadExpr = NULL; yyerror("Non-closed \"{\""); YYABORT; } break; case 39: {yyval.KlObject = KlReadExpr = NULL; yyerror("Non-closed \"[\""); YYABORT; } break; case 40: {yyval.KlObject = KlReadExpr = NULL; yyerror("Non-closed \"#(\""); YYABORT; } break; case 41: {yyval.KlObject = KlReadExpr = NULL; yyerror("Non-closed \"#[\""); YYABORT; } break; case 42: {yyval.KlObject = (KlO) KlNumberMake(((unsigned char *) yytext)[2]);} break; case 43: {yyval.KlObject = (KlO) KlNumberMake((yytext[3] - 64) % 32);} break; case 44: {int charcode = KlSymbCharParse(yytext+2); if (charcode == -1) { yyerror("Invalid character name"); YYABORT; } else { yyval.KlObject = (KlO) KlNumberMake(charcode); } } break; case 45: {yyval.KlObject = KlReadExprBin;} break; case 46: {yyval.KlObject = NIL;yyerror("Bad BinExpr");} break; case 47: {yyval.KlObject = NIL;} break; case 48: {yyval.Kl_collection = KlCollectionAdd(yyvsp[-1].Kl_collection, yyvsp[0].KlObject);} break; case 49: {yyval.Kl_collection = KlCollectionMake();} break; } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL); #endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yyssp, yystate); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); }