#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);
}
syntax highlighted by Code2HTML, v. 0.9.1