44, 45, 52, 53, 54, 55
};
-static const short yyrline[] = { 0,
+static const short yyprhs[] = { 0,
+ 0, 2, 4, 8, 11, 14, 17, 20, 23, 26,
+ 29, 32, 35, 38, 42, 47, 51, 56, 61, 62,
+ 68, 69, 71, 75, 80, 85, 89, 93, 97, 101,
+ 105, 109, 113, 117, 121, 125, 129, 133, 137, 141,
+ 145, 149, 153, 157, 161, 165, 171, 175, 179, 181,
+ 183, 185, 187, 189, 191, 193, 195, 197, 199, 204,
+ 206, 208, 210, 214, 218, 222, 227, 230, 232, 234,
+ 237, 239, 242, 244, 247, 249, 253, 256, 258, 261,
+ 263, 266, 270, 273, 275, 279, 286, 295, 305, 307,
+ 309, 311, 313, 316, 320, 323, 327, 331, 336, 339,
+ 343, 346, 349, 352, 355, 357, 360, 362, 364, 366,
+ 368, 370, 372, 376, 378, 380, 382, 384, 386, 388
+};
+
+static const short yyrhs[] = { 67,
+ 0, 68, 0, 67, 29, 68, 0, 49, 68, 0,
+ 37, 68, 0, 48, 68, 0, 59, 68, 0, 60,
+ 68, 0, 53, 68, 0, 54, 68, 0, 68, 53,
+ 0, 68, 54, 0, 16, 68, 0, 68, 55, 82,
+ 0, 68, 55, 49, 68, 0, 68, 56, 82, 0,
+ 68, 56, 49, 68, 0, 68, 57, 67, 61, 0,
+ 0, 68, 58, 69, 70, 62, 0, 0, 68, 0,
+ 70, 29, 68, 0, 63, 78, 64, 68, 0, 58,
+ 78, 62, 68, 0, 58, 67, 62, 0, 68, 46,
+ 68, 0, 68, 49, 68, 0, 68, 50, 68, 0,
+ 68, 51, 68, 0, 68, 47, 68, 0, 68, 48,
+ 68, 0, 68, 44, 68, 0, 68, 45, 68, 0,
+ 68, 38, 68, 0, 68, 39, 68, 0, 68, 42,
+ 68, 0, 68, 43, 68, 0, 68, 40, 68, 0,
+ 68, 41, 68, 0, 68, 37, 68, 0, 68, 36,
+ 68, 0, 68, 35, 68, 0, 68, 34, 68, 0,
+ 68, 33, 68, 0, 68, 32, 68, 65, 68, 0,
+ 68, 31, 68, 0, 68, 27, 68, 0, 3, 0,
+ 11, 0, 5, 0, 12, 0, 4, 0, 6, 0,
+ 72, 0, 24, 0, 25, 0, 26, 0, 16, 58,
+ 78, 62, 0, 7, 0, 28, 0, 9, 0, 71,
+ 18, 82, 0, 71, 18, 82, 0, 79, 18, 82,
+ 0, 79, 18, 60, 82, 0, 18, 82, 0, 83,
+ 0, 79, 0, 79, 74, 0, 49, 0, 49, 74,
+ 0, 37, 0, 37, 74, 0, 75, 0, 58, 74,
+ 62, 0, 75, 76, 0, 76, 0, 75, 77, 0,
+ 77, 0, 57, 61, 0, 57, 3, 61, 0, 58,
+ 62, 0, 73, 0, 79, 18, 49, 0, 78, 58,
+ 79, 18, 49, 62, 0, 78, 58, 79, 18, 49,
+ 62, 58, 62, 0, 78, 58, 79, 18, 49, 62,
+ 58, 81, 62, 0, 10, 0, 23, 0, 21, 0,
+ 22, 0, 21, 23, 0, 17, 21, 23, 0, 21,
+ 21, 0, 21, 21, 23, 0, 17, 21, 21, 0,
+ 17, 21, 21, 23, 0, 22, 23, 0, 17, 22,
+ 23, 0, 13, 82, 0, 14, 82, 0, 15, 82,
+ 0, 17, 80, 0, 17, 0, 20, 80, 0, 20,
+ 0, 10, 0, 23, 0, 21, 0, 22, 0, 78,
+ 0, 81, 29, 78, 0, 8, 0, 9, 0, 10,
+ 0, 11, 0, 12, 0, 8, 0, 9, 0
+};
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
225, 229, 230, 235, 238, 241, 245, 249, 253, 257,
261, 265, 269, 273, 279, 283, 289, 293, 297, 301,
307, 310, 314, 318, 324, 330, 336, 340, 344, 348,
352, 356, 360, 364, 368, 372, 376, 380, 384, 388,
392, 396, 400, 404, 408, 412, 416, 420, 426, 436,
449, 461, 474, 481, 488, 491, 497, 503, 509, 516,
- 523, 530, 548, 558, 570, 583, 601, 647, 742, 743,
- 778, 780, 782, 784, 786, 789, 791, 796, 802, 804,
- 808, 810, 814, 818, 819, 821, 823, 826, 833, 835,
- 837, 839, 841, 843, 845, 847, 849, 851, 853, 855,
- 857, 860, 863, 866, 868, 870, 872, 876, 877, 883,
- 889, 898, 903, 910, 911, 912, 913, 914, 917, 918
+ 523, 530, 548, 558, 570, 583, 601, 647, 741, 742,
+ 777, 779, 781, 783, 785, 788, 790, 795, 801, 803,
+ 807, 809, 813, 817, 818, 820, 822, 825, 832, 834,
+ 836, 838, 840, 842, 844, 846, 848, 850, 852, 854,
+ 856, 859, 862, 865, 867, 869, 871, 875, 876, 882,
+ 888, 897, 902, 909, 910, 911, 912, 913, 916, 917
};
-static const char * const yytname[] = { 0,
+static const char * const yytname[] = { "$",
"error","$illegal.","INT","CHAR","UINT","FLOAT","STRING","NAME","BLOCKNAME","TYPENAME",
"NAME_OR_INT","NAME_OR_UINT","STRUCT","UNION","ENUM","SIZEOF","UNSIGNED","COLONCOLON","ERROR","SIGNED",
"LONG","SHORT","INT_KEYWORD","LAST","REGNAME","VARIABLE","ASSIGN_MODIFY","THIS","','","ABOVE_COMMA",
"'='","'?'","OR","AND","'|'","'^'","'&'","EQUAL","NOTEQUAL","'<'",
"'>'","LEQ","GEQ","LSH","RSH","'@'","'+'","'-'","'*'","'/'",
"'%'","UNARY","INCREMENT","DECREMENT","ARROW","'.'","'['","'('","'!'","'~'",
-"']'","')'","'{'","'}'","':'","start"
+"']'","')'","'{'","'}'","':'","start","exp1","exp","@1","arglist",
+"block","variable","ptype","abs_decl","direct_abs_decl","array_mod","func_mod","type","typebase","typename",
+"nonempty_typelist","name","name_not_typename",""
};
+#endif
static const short yyr1[] = { 0,
66, 67, 67, 68, 68, 68, 68, 68, 68, 68,
53, 54, 55, 56, 57, 58, -1, 49, 50, 51,
-1, 53, 54, 55, 56, 57, 58
};
-#define YYPURE 1
-
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "bison.simple"
+#line 3 "/usr/latest/lib/bison.simple"
/* Skeleton output parser for bison,
- Copyright (C) 1984 Bob Corbett and Richard Stallman
+ Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* Not GNU C. */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__)
#include <alloca.h>
-#endif
+#else /* Not sparc */
+#ifdef MSDOS
+#include <malloc.h>
+#endif /* MSDOS */
+#endif /* Not sparc. */
+#endif /* Not GNU C. */
+#endif /* alloca not defined. */
/* This is the parser code that is written into each bison parser
when the %semantic_parser declaration is not specified in the grammar.
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
-#define YYFAIL goto yyerrlab;
#define YYACCEPT return(0)
#define YYABORT return(1)
-#define YYERROR goto yyerrlab
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
#define YYTERROR 1
#define YYERRCODE 256
-#ifndef YYIMPURE
+#ifndef YYPURE
#define YYLEX yylex()
#endif
-#ifndef YYPURE
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
#define YYLEX yylex(&yylval, &yylloc)
+#else
+#define YYLEX yylex(&yylval)
+#endif
#endif
/* If nonreentrant, generate the variables here */
-#ifndef YYIMPURE
+#ifndef YYPURE
int yychar; /* the lookahead symbol */
YYSTYPE yylval; /* the semantic value of the */
/* lookahead symbol */
+#ifdef YYLSP_NEEDED
YYLTYPE yylloc; /* location data for the lookahead */
/* symbol */
+#endif
int yynerrs; /* number of parse errors so far */
-#endif /* YYIMPURE */
+#endif /* not YYPURE */
#if YYDEBUG != 0
int yydebug; /* nonzero means print parse trace */
from coexisting. */
#endif
-/* YYMAXDEPTH indicates the initial size of the parser's stacks */
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 200
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
#endif
-/* YYMAXLIMIT is the maximum size the stacks can grow to
+/* YYMAXDEPTH is the maximum size the stacks can grow to
(effective only if the built-in stack extension method is used). */
-#ifndef YYMAXLIMIT
-#define YYMAXLIMIT 10000
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
#endif
+\f
+#ifndef __cplusplus
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_bcopy (from, to, count)
+ char *from;
+ char *to;
+ int count;
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_bcopy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
-#line 90 "bison.simple"
+#endif
+\f
+#line 160 "/usr/latest/lib/bison.simple"
int
yyparse()
{
register int yyn;
register short *yyssp;
register YYSTYPE *yyvsp;
- YYLTYPE *yylsp;
int yyerrstatus; /* number of tokens to shift before error messages enabled */
int yychar1; /* lookahead token as an internal (translated) token number */
- short yyssa[YYMAXDEPTH]; /* the state stack */
- YYSTYPE yyvsa[YYMAXDEPTH]; /* the semantic value stack */
- YYLTYPE yylsa[YYMAXDEPTH]; /* the location stack */
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
short *yyss = yyssa; /* refer to the stacks thru separate pointers */
YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
- int yymaxdepth = YYMAXDEPTH;
+#define YYPOPSTACK (yyvsp--, yysp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yysp--)
+#endif
-#ifndef YYPURE
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
int yychar;
YYSTYPE yylval;
- YYLTYPE yylloc;
int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
#endif
YYSTYPE yyval; /* the variable used to return */
yyssp = yyss - 1;
yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
yylsp = yyls;
+#endif
/* Push a new state, which is found in yystate . */
/* In all cases, when you get here, the value and location stacks
*++yyssp = yystate;
- if (yyssp >= yyss + yymaxdepth - 1)
+ if (yyssp >= yyss + yystacksize - 1)
{
/* Give user a chance to reallocate the stack */
/* Use copies of these so that the &'s don't force the real ones into memory. */
YYSTYPE *yyvs1 = yyvs;
- YYLTYPE *yyls1 = yyls;
short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
/* Get the current used size of the three stacks, in elements. */
int size = yyssp - yyss + 1;
yyoverflow("parser stack overflow",
&yyss1, size * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp),
+#ifdef YYLSP_NEEDED
&yyls1, size * sizeof (*yylsp),
- &yymaxdepth);
+#endif
+ &yystacksize);
- yyss = yyss1; yyvs = yyvs1; yyls = yyls1;
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
#else /* no yyoverflow */
/* Extend the stack our own way. */
- if (yymaxdepth >= YYMAXLIMIT)
- yyerror("parser stack overflow");
- yymaxdepth *= 2;
- if (yymaxdepth > YYMAXLIMIT)
- yymaxdepth = YYMAXLIMIT;
- yyss = (short *) alloca (yymaxdepth * sizeof (*yyssp));
- bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
- yyvs = (YYSTYPE *) alloca (yymaxdepth * sizeof (*yyvsp));
- bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
- yyls = (YYLTYPE *) alloca (yymaxdepth * sizeof (*yylsp));
- bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
#endif
#endif /* no yyoverflow */
#if YYDEBUG != 0
if (yydebug)
- fprintf(stderr, "Stack size increased to %d\n", yymaxdepth);
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif
- if (yyssp >= yyss + yymaxdepth - 1)
+ if (yyssp >= yyss + yystacksize - 1)
YYABORT;
}
fprintf(stderr, "Entering state %d\n", yystate);
#endif
+ yybackup:
+
/* Do appropriate processing given the current state. */
/* Read a lookahead token if we need one and don't already have one. */
-yyresume:
+/* yyresume: */
/* First try to decide what to do without reference to lookahead token. */
#if YYDEBUG != 0
if (yydebug)
{
- if (yylen == 1)
- fprintf (stderr, "Reducing 1 value via line %d, ",
- yyrline[yyn]);
- else
- fprintf (stderr, "Reducing %d values via line %d, ",
- yylen, yyrline[yyn]);
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symboles being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
}
#endif
case LOC_TYPEDEF:
case LOC_LABEL:
case LOC_BLOCK:
- case LOC_EXTERNAL:
case LOC_CONST_BYTES:
/* In this case the expression can
;
break;}
case 70:
-#line 744 "./expread.y"
+#line 743 "./expread.y"
{
/* This is where the interesting stuff happens. */
int done = 0;
;
break;}
case 71:
-#line 779 "./expread.y"
+#line 778 "./expread.y"
{ push_type (tp_pointer); yyval.voidval = 0; ;
break;}
case 72:
-#line 781 "./expread.y"
+#line 780 "./expread.y"
{ push_type (tp_pointer); yyval.voidval = yyvsp[0].voidval; ;
break;}
case 73:
-#line 783 "./expread.y"
+#line 782 "./expread.y"
{ push_type (tp_reference); yyval.voidval = 0; ;
break;}
case 74:
-#line 785 "./expread.y"
+#line 784 "./expread.y"
{ push_type (tp_reference); yyval.voidval = yyvsp[0].voidval; ;
break;}
case 76:
-#line 790 "./expread.y"
+#line 789 "./expread.y"
{ yyval.voidval = yyvsp[-1].voidval; ;
break;}
case 77:
-#line 792 "./expread.y"
+#line 791 "./expread.y"
{
push_type_int (yyvsp[0].lval);
push_type (tp_array);
;
break;}
case 78:
-#line 797 "./expread.y"
+#line 796 "./expread.y"
{
push_type_int (yyvsp[0].lval);
push_type (tp_array);
;
break;}
case 79:
-#line 803 "./expread.y"
+#line 802 "./expread.y"
{ push_type (tp_function); ;
break;}
case 80:
-#line 805 "./expread.y"
+#line 804 "./expread.y"
{ push_type (tp_function); ;
break;}
case 81:
-#line 809 "./expread.y"
+#line 808 "./expread.y"
{ yyval.lval = -1; ;
break;}
case 82:
-#line 811 "./expread.y"
+#line 810 "./expread.y"
{ yyval.lval = yyvsp[-1].lval; ;
break;}
case 83:
-#line 815 "./expread.y"
+#line 814 "./expread.y"
{ yyval.voidval = 0; ;
break;}
case 85:
-#line 820 "./expread.y"
+#line 819 "./expread.y"
{ yyval.tval = lookup_member_type (builtin_type_int, yyvsp[-2].tval); ;
break;}
case 86:
-#line 822 "./expread.y"
+#line 821 "./expread.y"
{ yyval.tval = lookup_member_type (yyvsp[-5].tval, yyvsp[-3].tval); ;
break;}
case 87:
-#line 824 "./expread.y"
+#line 823 "./expread.y"
{ yyval.tval = lookup_member_type
(lookup_function_type (yyvsp[-7].tval), yyvsp[-5].tval); ;
break;}
case 88:
-#line 827 "./expread.y"
+#line 826 "./expread.y"
{ yyval.tval = lookup_member_type
(lookup_function_type (yyvsp[-8].tval), yyvsp[-6].tval);
free (yyvsp[-1].tvec); ;
break;}
case 89:
-#line 834 "./expread.y"
+#line 833 "./expread.y"
{ yyval.tval = yyvsp[0].tsym.type; ;
break;}
case 90:
-#line 836 "./expread.y"
+#line 835 "./expread.y"
{ yyval.tval = builtin_type_int; ;
break;}
case 91:
-#line 838 "./expread.y"
+#line 837 "./expread.y"
{ yyval.tval = builtin_type_long; ;
break;}
case 92:
-#line 840 "./expread.y"
+#line 839 "./expread.y"
{ yyval.tval = builtin_type_short; ;
break;}
case 93:
-#line 842 "./expread.y"
+#line 841 "./expread.y"
{ yyval.tval = builtin_type_long; ;
break;}
case 94:
-#line 844 "./expread.y"
+#line 843 "./expread.y"
{ yyval.tval = builtin_type_unsigned_long; ;
break;}
case 95:
-#line 846 "./expread.y"
+#line 845 "./expread.y"
{ yyval.tval = builtin_type_long_long; ;
break;}
case 96:
-#line 848 "./expread.y"
+#line 847 "./expread.y"
{ yyval.tval = builtin_type_long_long; ;
break;}
case 97:
-#line 850 "./expread.y"
+#line 849 "./expread.y"
{ yyval.tval = builtin_type_unsigned_long_long; ;
break;}
case 98:
-#line 852 "./expread.y"
+#line 851 "./expread.y"
{ yyval.tval = builtin_type_unsigned_long_long; ;
break;}
case 99:
-#line 854 "./expread.y"
+#line 853 "./expread.y"
{ yyval.tval = builtin_type_short; ;
break;}
case 100:
-#line 856 "./expread.y"
+#line 855 "./expread.y"
{ yyval.tval = builtin_type_unsigned_short; ;
break;}
case 101:
-#line 858 "./expread.y"
+#line 857 "./expread.y"
{ yyval.tval = lookup_struct (copy_name (yyvsp[0].sval),
expression_context_block); ;
break;}
case 102:
-#line 861 "./expread.y"
+#line 860 "./expread.y"
{ yyval.tval = lookup_union (copy_name (yyvsp[0].sval),
expression_context_block); ;
break;}
case 103:
-#line 864 "./expread.y"
+#line 863 "./expread.y"
{ yyval.tval = lookup_enum (copy_name (yyvsp[0].sval),
expression_context_block); ;
break;}
case 104:
-#line 867 "./expread.y"
+#line 866 "./expread.y"
{ yyval.tval = lookup_unsigned_typename (TYPE_NAME(yyvsp[0].tsym.type)); ;
break;}
case 105:
-#line 869 "./expread.y"
+#line 868 "./expread.y"
{ yyval.tval = builtin_type_unsigned_int; ;
break;}
case 106:
-#line 871 "./expread.y"
+#line 870 "./expread.y"
{ yyval.tval = yyvsp[0].tsym.type; ;
break;}
case 107:
-#line 873 "./expread.y"
+#line 872 "./expread.y"
{ yyval.tval = builtin_type_int; ;
break;}
case 109:
-#line 878 "./expread.y"
+#line 877 "./expread.y"
{
yyval.tsym.stoken.ptr = "int";
yyval.tsym.stoken.length = 3;
;
break;}
case 110:
-#line 884 "./expread.y"
+#line 883 "./expread.y"
{
yyval.tsym.stoken.ptr = "long";
yyval.tsym.stoken.length = 4;
;
break;}
case 111:
-#line 890 "./expread.y"
+#line 889 "./expread.y"
{
yyval.tsym.stoken.ptr = "short";
yyval.tsym.stoken.length = 5;
;
break;}
case 112:
-#line 899 "./expread.y"
+#line 898 "./expread.y"
{ yyval.tvec = (struct type **)xmalloc (sizeof (struct type *) * 2);
yyval.tvec[0] = (struct type *)0;
yyval.tvec[1] = yyvsp[0].tval;
;
break;}
case 113:
-#line 904 "./expread.y"
+#line 903 "./expread.y"
{ int len = sizeof (struct type *) * ++(yyvsp[-2].ivec[0]);
yyval.tvec = (struct type **)xrealloc (yyvsp[-2].tvec, len);
yyval.tvec[yyval.ivec[0]] = yyvsp[0].tval;
;
break;}
case 114:
-#line 910 "./expread.y"
+#line 909 "./expread.y"
{ yyval.sval = yyvsp[0].ssym.stoken; ;
break;}
case 115:
-#line 911 "./expread.y"
+#line 910 "./expread.y"
{ yyval.sval = yyvsp[0].ssym.stoken; ;
break;}
case 116:
-#line 912 "./expread.y"
+#line 911 "./expread.y"
{ yyval.sval = yyvsp[0].tsym.stoken; ;
break;}
case 117:
-#line 913 "./expread.y"
+#line 912 "./expread.y"
{ yyval.sval = yyvsp[0].ssym.stoken; ;
break;}
case 118:
-#line 914 "./expread.y"
+#line 913 "./expread.y"
{ yyval.sval = yyvsp[0].ssym.stoken; ;
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 327 "bison.simple"
+#line 423 "/usr/latest/lib/bison.simple"
\f
yyvsp -= yylen;
yyssp -= yylen;
/* If not already recovering from an error, report this error. */
{
++yynerrs;
- yyerror("parse error");
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) xmalloc(size + 15);
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
}
+yyerrlab1: /* here on error raised explicitly by an action */
+
if (yyerrstatus == 3)
{
/* if just tried and failed to reuse lookahead token after an error, discard it. */
yystate = yyn;
goto yynewstate;
}
-#line 929 "./expread.y"
+#line 928 "./expread.y"
\f
/* Begin counting arguments for a function call,