Imported Upstream version 20210802
[platform/upstream/byacc.git] / test / yacc / grammar.tab.c
index e78f188..4c8a2a6 100644 (file)
@@ -3,8 +3,8 @@
 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
 
 #define YYBYACC 1
-#define YYMAJOR 1
-#define YYMINOR 9
+#define YYMAJOR 2
+#define YYMINOR 0
 #define YYCHECK "yyyymmdd"
 
 #define YYEMPTY        (-1)
@@ -124,6 +124,7 @@ static void yyerror(const char *s);
 
 /* #include "cproto.h" */
 #define MAX_TEXT_SIZE 1024
+#define TEXT_LEN (MAX_TEXT_SIZE / 2 - 3)
 
 /* Prototype styles */
 #if OPT_LINTLIBRARY
@@ -384,7 +385,7 @@ haveAnsiParam (void)
     }
     return FALSE;
 }
-#line 388 "grammar.tab.c"
+#line 389 "grammar.tab.c"
 
 /* compatibility with bison */
 #ifdef YYPARSE_PARAM
@@ -453,7 +454,7 @@ extern int YYPARSE_DECL();
 #define T_ASMARG 290
 #define T_VA_DCL 291
 #define YYERRCODE 256
-typedef short YYINT;
+typedef int YYINT;
 static const YYINT grammar_lhs[] = {                     -1,
     0,    0,   26,   26,   27,   27,   27,   27,   27,   27,
    27,   31,   30,   30,   28,   28,   34,   28,   32,   32,
@@ -884,13 +885,15 @@ static const char *const grammar_rule[] = {
 };
 #endif
 
+#if YYDEBUG
 int      yydebug;
-int      yynerrs;
+#endif
 
 int      yyerrflag;
 int      yychar;
 YYSTYPE  yyval;
 YYSTYPE  yylval;
+int      yynerrs;
 
 /* define the initial stack-sizes */
 #ifdef YYSTACKSIZE
@@ -917,7 +920,7 @@ typedef struct {
 } YYSTACKDATA;
 /* variables for the parser stack */
 static YYSTACKDATA yystack;
-#line 1014 "grammar.y"
+#line 1015 "grammar.y"
 
 /* lex.yy.c */
 #define BEGIN yy_start = 1 + 2 *
@@ -934,7 +937,7 @@ extern char *yytext;
 extern FILE *yyin, *yyout;
 
 static int curly;                      /* number of curly brace nesting levels */
-static int ly_count;                   /* number of occurances of %% */
+static int ly_count;                   /* number of occurrences of %% */
 static int inc_depth;                  /* include nesting level */
 static SymbolTable *included_files;    /* files already included */
 static int yy_start = 0;               /* start state number */
@@ -1088,10 +1091,10 @@ free_parser(void)
 #endif
 }
 #endif
-#line 1092 "grammar.tab.c"
+#line 1095 "grammar.tab.c"
 
 #if YYDEBUG
-#include <stdio.h>             /* needed for printf */
+#include <stdio.h>     /* needed for printf */
 #endif
 
 #include <stdlib.h>    /* needed for malloc, etc */
@@ -1163,10 +1166,12 @@ YYPARSE_DECL()
     }
 #endif
 
+    /* yym is set below */
+    /* yyn is set below */
     yynerrs = 0;
     yyerrflag = 0;
     yychar = YYEMPTY;
-    yystate = 0;
+    /* yystate is set below */
 
 #if YYPURE
     memset(&yystack, 0, sizeof(yystack));
@@ -1182,28 +1187,26 @@ yyloop:
     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
     if (yychar < 0)
     {
-        if ((yychar = YYLEX) < 0) yychar = YYEOF;
+        yychar = YYLEX;
+        if (yychar < 0) yychar = YYEOF;
 #if YYDEBUG
         if (yydebug)
         {
-            yys = yyname[YYTRANSLATE(yychar)];
+            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
             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 (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
     {
 #if YYDEBUG
         if (yydebug)
             printf("%sdebug: state %d, shifting to state %d\n",
                     YYPREFIX, yystate, yytable[yyn]);
 #endif
-        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
-        {
-            goto yyoverflow;
-        }
+        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
         yystate = yytable[yyn];
         *++yystack.s_mark = yytable[yyn];
         *++yystack.l_mark = yylval;
@@ -1211,18 +1214,17 @@ yyloop:
         if (yyerrflag > 0)  --yyerrflag;
         goto yyloop;
     }
-    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
-            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
+    if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
     {
         yyn = yytable[yyn];
         goto yyreduce;
     }
-    if (yyerrflag) goto yyinrecovery;
+    if (yyerrflag != 0) goto yyinrecovery;
 
     YYERROR_CALL("syntax error");
 
-    goto yyerrlab;
-
+    goto yyerrlab; /* redundant goto avoids 'unused label' warning */
 yyerrlab:
     ++yynerrs;
 
@@ -1232,18 +1234,15 @@ yyinrecovery:
         yyerrflag = 3;
         for (;;)
         {
-            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
-                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
+            if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
+                    yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
             {
 #if YYDEBUG
                 if (yydebug)
                     printf("%sdebug: state %d, error recovery shifting\
  to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
 #endif
-                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
-                {
-                    goto yyoverflow;
-                }
+                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
                 yystate = yytable[yyn];
                 *++yystack.s_mark = yytable[yyn];
                 *++yystack.l_mark = yylval;
@@ -1268,7 +1267,7 @@ yyinrecovery:
 #if YYDEBUG
         if (yydebug)
         {
-            yys = yyname[YYTRANSLATE(yychar)];
+            if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
                     YYPREFIX, yystate, yychar, yys);
         }
@@ -1284,41 +1283,46 @@ yyreduce:
                 YYPREFIX, yystate, yyn, yyrule[yyn]);
 #endif
     yym = yylen[yyn];
-    if (yym)
+    if (yym > 0)
         yyval = yystack.l_mark[1-yym];
     else
         memset(&yyval, 0, sizeof yyval);
+
     switch (yyn)
     {
 case 10:
-#line 377 "grammar.y"
+#line 378 "grammar.y"
        {
            yyerrok;
        }
+#line 1299 "grammar.tab.c"
 break;
 case 11:
-#line 381 "grammar.y"
+#line 382 "grammar.y"
        {
            yyerrok;
        }
+#line 1306 "grammar.tab.c"
 break;
 case 13:
-#line 392 "grammar.y"
+#line 393 "grammar.y"
        {
            /* Provide an empty action here so bison will not complain about
             * incompatible types in the default action it normally would
             * have generated.
             */
        }
+#line 1316 "grammar.tab.c"
 break;
 case 14:
-#line 399 "grammar.y"
+#line 400 "grammar.y"
        {
            /* empty */
        }
+#line 1323 "grammar.tab.c"
 break;
 case 15:
-#line 406 "grammar.y"
+#line 407 "grammar.y"
        {
 #if OPT_LINTLIBRARY
            if (types_out && want_typedef()) {
@@ -1329,9 +1333,10 @@ case 15:
            free_decl_spec(&yystack.l_mark[-1].decl_spec);
            end_typedef();
        }
+#line 1337 "grammar.tab.c"
 break;
 case 16:
-#line 417 "grammar.y"
+#line 418 "grammar.y"
        {
            if (func_params != NULL) {
                set_param_types(func_params, &yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
@@ -1345,34 +1350,39 @@ case 16:
            free_decl_spec(&yystack.l_mark[-2].decl_spec);
            end_typedef();
        }
+#line 1354 "grammar.tab.c"
 break;
 case 17:
-#line 431 "grammar.y"
+#line 432 "grammar.y"
        {
            cur_decl_spec_flags = yystack.l_mark[0].decl_spec.flags;
            free_decl_spec(&yystack.l_mark[0].decl_spec);
        }
+#line 1362 "grammar.tab.c"
 break;
 case 18:
-#line 436 "grammar.y"
+#line 437 "grammar.y"
        {
            end_typedef();
        }
+#line 1369 "grammar.tab.c"
 break;
 case 19:
-#line 443 "grammar.y"
+#line 444 "grammar.y"
        {
            begin_typedef();
        }
+#line 1376 "grammar.tab.c"
 break;
 case 20:
-#line 447 "grammar.y"
+#line 448 "grammar.y"
        {
            begin_typedef();
        }
+#line 1383 "grammar.tab.c"
 break;
 case 23:
-#line 459 "grammar.y"
+#line 460 "grammar.y"
        {
            int flags = cur_decl_spec_flags;
 
@@ -1384,9 +1394,10 @@ case 23:
            new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
            free_declarator(yystack.l_mark[0].declarator);
        }
+#line 1398 "grammar.tab.c"
 break;
 case 24:
-#line 471 "grammar.y"
+#line 472 "grammar.y"
        {
            int flags = cur_decl_spec_flags;
 
@@ -1395,9 +1406,10 @@ case 24:
            new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
            free_declarator(yystack.l_mark[0].declarator);
        }
+#line 1410 "grammar.tab.c"
 break;
 case 25:
-#line 483 "grammar.y"
+#line 484 "grammar.y"
        {
            check_untagged(&yystack.l_mark[-1].decl_spec);
            if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
@@ -1408,9 +1420,10 @@ case 25:
            func_params->begin_comment = cur_file->begin_comment;
            func_params->end_comment = cur_file->end_comment;
        }
+#line 1424 "grammar.tab.c"
 break;
 case 26:
-#line 494 "grammar.y"
+#line 495 "grammar.y"
        {
            /* If we're converting to K&R and we've got a nominally K&R
             * function which has a parameter which is ANSI (i.e., a prototyped
@@ -1434,9 +1447,10 @@ case 26:
            free_decl_spec(&yystack.l_mark[-4].decl_spec);
            free_declarator(yystack.l_mark[-3].declarator);
        }
+#line 1451 "grammar.tab.c"
 break;
 case 28:
-#line 519 "grammar.y"
+#line 520 "grammar.y"
        {
            if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
                yyerror("syntax error");
@@ -1446,9 +1460,10 @@ case 28:
            func_params->begin_comment = cur_file->begin_comment;
            func_params->end_comment = cur_file->end_comment;
        }
+#line 1464 "grammar.tab.c"
 break;
 case 29:
-#line 529 "grammar.y"
+#line 530 "grammar.y"
        {
            DeclSpec decl_spec;
 
@@ -1464,140 +1479,162 @@ case 29:
            free_decl_spec(&decl_spec);
            free_declarator(yystack.l_mark[-4].declarator);
        }
+#line 1483 "grammar.tab.c"
 break;
 case 36:
-#line 560 "grammar.y"
+#line 561 "grammar.y"
        {
            join_decl_specs(&yyval.decl_spec, &yystack.l_mark[-1].decl_spec, &yystack.l_mark[0].decl_spec);
            free(yystack.l_mark[-1].decl_spec.text);
            free(yystack.l_mark[0].decl_spec.text);
        }
+#line 1492 "grammar.tab.c"
 break;
 case 40:
-#line 575 "grammar.y"
+#line 576 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1499 "grammar.tab.c"
 break;
 case 41:
-#line 579 "grammar.y"
+#line 580 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_EXTERN);
        }
+#line 1506 "grammar.tab.c"
 break;
 case 42:
-#line 583 "grammar.y"
+#line 584 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1513 "grammar.tab.c"
 break;
 case 43:
-#line 587 "grammar.y"
+#line 588 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_STATIC);
        }
+#line 1520 "grammar.tab.c"
 break;
 case 44:
-#line 591 "grammar.y"
+#line 592 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_INLINE);
        }
+#line 1527 "grammar.tab.c"
 break;
 case 45:
-#line 595 "grammar.y"
+#line 596 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_JUNK);
        }
+#line 1534 "grammar.tab.c"
 break;
 case 46:
-#line 602 "grammar.y"
+#line 603 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
        }
+#line 1541 "grammar.tab.c"
 break;
 case 47:
-#line 606 "grammar.y"
+#line 607 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1548 "grammar.tab.c"
 break;
 case 48:
-#line 610 "grammar.y"
+#line 611 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_FLOAT);
        }
+#line 1555 "grammar.tab.c"
 break;
 case 49:
-#line 614 "grammar.y"
+#line 615 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1562 "grammar.tab.c"
 break;
 case 50:
-#line 618 "grammar.y"
+#line 619 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1569 "grammar.tab.c"
 break;
 case 51:
-#line 622 "grammar.y"
+#line 623 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_SHORT);
        }
+#line 1576 "grammar.tab.c"
 break;
 case 52:
-#line 626 "grammar.y"
+#line 627 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1583 "grammar.tab.c"
 break;
 case 53:
-#line 630 "grammar.y"
+#line 631 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1590 "grammar.tab.c"
 break;
 case 54:
-#line 634 "grammar.y"
+#line 635 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1597 "grammar.tab.c"
 break;
 case 55:
-#line 638 "grammar.y"
+#line 639 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
        }
+#line 1604 "grammar.tab.c"
 break;
 case 56:
-#line 642 "grammar.y"
+#line 643 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1611 "grammar.tab.c"
 break;
 case 57:
-#line 646 "grammar.y"
+#line 647 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1618 "grammar.tab.c"
 break;
 case 58:
-#line 650 "grammar.y"
+#line 651 "grammar.y"
        {
            Symbol *s;
            s = find_symbol(typedef_names, yystack.l_mark[0].text.text);
            if (s != NULL)
                new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
        }
+#line 1628 "grammar.tab.c"
 break;
 case 61:
-#line 662 "grammar.y"
+#line 663 "grammar.y"
        {
            new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
        }
+#line 1635 "grammar.tab.c"
 break;
 case 62:
-#line 666 "grammar.y"
+#line 667 "grammar.y"
        {
            /* This rule allows the <pointer> nonterminal to scan #define
             * names as if they were type modifiers.
@@ -1607,58 +1644,66 @@ case 62:
            if (s != NULL)
                new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
        }
+#line 1648 "grammar.tab.c"
 break;
 case 63:
-#line 679 "grammar.y"
+#line 680 "grammar.y"
        {
            char *s;
            if ((s = implied_typedef()) == 0)
-               (void)sprintf(s = buf, "%s %s", yystack.l_mark[-2].text.text, yystack.l_mark[-1].text.text);
+               (void)sprintf(s = buf, "%.*s %.*s", TEXT_LEN, yystack.l_mark[-2].text.text, TEXT_LEN, yystack.l_mark[-1].text.text);
            new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
        }
+#line 1658 "grammar.tab.c"
 break;
 case 64:
-#line 686 "grammar.y"
+#line 687 "grammar.y"
        {
            char *s;
            if ((s = implied_typedef()) == 0)
-               (void)sprintf(s = buf, "%s {}", yystack.l_mark[-1].text.text);
+               (void)sprintf(s = buf, "%.*s {}", TEXT_LEN, yystack.l_mark[-1].text.text);
            new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
        }
+#line 1668 "grammar.tab.c"
 break;
 case 65:
-#line 693 "grammar.y"
+#line 694 "grammar.y"
        {
-           (void)sprintf(buf, "%s %s", yystack.l_mark[-1].text.text, yystack.l_mark[0].text.text);
+           (void)sprintf(buf, "%.*s %.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].text.text);
            new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
        }
+#line 1676 "grammar.tab.c"
 break;
 case 66:
-#line 701 "grammar.y"
+#line 702 "grammar.y"
        {
            imply_typedef(yyval.text.text);
        }
+#line 1683 "grammar.tab.c"
 break;
 case 67:
-#line 705 "grammar.y"
+#line 706 "grammar.y"
        {
            imply_typedef(yyval.text.text);
        }
+#line 1690 "grammar.tab.c"
 break;
 case 68:
-#line 712 "grammar.y"
+#line 713 "grammar.y"
        {
            new_decl_list(&yyval.decl_list, yystack.l_mark[0].declarator);
        }
+#line 1697 "grammar.tab.c"
 break;
 case 69:
-#line 716 "grammar.y"
+#line 717 "grammar.y"
        {
            add_decl_list(&yyval.decl_list, &yystack.l_mark[-2].decl_list, yystack.l_mark[0].declarator);
        }
+#line 1704 "grammar.tab.c"
 break;
 case 70:
-#line 723 "grammar.y"
+#line 724 "grammar.y"
        {
            if (yystack.l_mark[0].declarator->func_def != FUNC_NONE && func_params == NULL &&
                func_style == FUNC_TRADITIONAL && cur_file->convert) {
@@ -1667,9 +1712,10 @@ case 70:
            }
            cur_declarator = yyval.declarator;
        }
+#line 1716 "grammar.tab.c"
 break;
 case 71:
-#line 732 "grammar.y"
+#line 733 "grammar.y"
        {
            if (yystack.l_mark[-1].declarator->func_def != FUNC_NONE && func_params == NULL &&
                func_style == FUNC_TRADITIONAL && cur_file->convert) {
@@ -1677,77 +1723,86 @@ case 71:
                fputs(" =", cur_file->tmp_file);
            }
        }
+#line 1727 "grammar.tab.c"
 break;
 case 73:
-#line 744 "grammar.y"
+#line 745 "grammar.y"
        {
            char *s;
            if ((s = implied_typedef()) == 0)
-               (void)sprintf(s = buf, "enum %s", yystack.l_mark[-1].text.text);
+               (void)sprintf(s = buf, "enum %.*s", TEXT_LEN, yystack.l_mark[-1].text.text);
            new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
        }
+#line 1737 "grammar.tab.c"
 break;
 case 74:
-#line 751 "grammar.y"
+#line 752 "grammar.y"
        {
            char *s;
            if ((s = implied_typedef()) == 0)
-               (void)sprintf(s = buf, "%s {}", yystack.l_mark[-1].text.text);
+               (void)sprintf(s = buf, "%.*s {}", TEXT_LEN, yystack.l_mark[-1].text.text);
            new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
        }
+#line 1747 "grammar.tab.c"
 break;
 case 75:
-#line 758 "grammar.y"
+#line 759 "grammar.y"
        {
-           (void)sprintf(buf, "enum %s", yystack.l_mark[0].text.text);
+           (void)sprintf(buf, "enum %.*s", TEXT_LEN, yystack.l_mark[0].text.text);
            new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
        }
+#line 1755 "grammar.tab.c"
 break;
 case 76:
-#line 766 "grammar.y"
+#line 767 "grammar.y"
        {
            imply_typedef("enum");
            yyval.text = yystack.l_mark[0].text;
        }
+#line 1763 "grammar.tab.c"
 break;
 case 79:
-#line 779 "grammar.y"
+#line 780 "grammar.y"
        {
            yyval.declarator = yystack.l_mark[0].declarator;
-           (void)sprintf(buf, "%s%s", yystack.l_mark[-1].text.text, yyval.declarator->text);
+           (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yyval.declarator->text);
            free(yyval.declarator->text);
            yyval.declarator->text = xstrdup(buf);
            yyval.declarator->begin = yystack.l_mark[-1].text.begin;
            yyval.declarator->pointer = TRUE;
        }
+#line 1775 "grammar.tab.c"
 break;
 case 81:
-#line 792 "grammar.y"
+#line 793 "grammar.y"
        {
            yyval.declarator = new_declarator(yystack.l_mark[0].text.text, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin);
        }
+#line 1782 "grammar.tab.c"
 break;
 case 82:
-#line 796 "grammar.y"
+#line 797 "grammar.y"
        {
            yyval.declarator = yystack.l_mark[-1].declarator;
-           (void)sprintf(buf, "(%s)", yyval.declarator->text);
+           (void)sprintf(buf, "(%.*s)", TEXT_LEN, yyval.declarator->text);
            free(yyval.declarator->text);
            yyval.declarator->text = xstrdup(buf);
            yyval.declarator->begin = yystack.l_mark[-2].text.begin;
        }
+#line 1793 "grammar.tab.c"
 break;
 case 83:
-#line 804 "grammar.y"
+#line 805 "grammar.y"
        {
            yyval.declarator = yystack.l_mark[-1].declarator;
-           (void)sprintf(buf, "%s%s", yyval.declarator->text, yystack.l_mark[0].text.text);
+           (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yyval.declarator->text, TEXT_LEN, yystack.l_mark[0].text.text);
            free(yyval.declarator->text);
            yyval.declarator->text = xstrdup(buf);
        }
+#line 1803 "grammar.tab.c"
 break;
 case 84:
-#line 811 "grammar.y"
+#line 812 "grammar.y"
        {
            yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
            yyval.declarator->params = yystack.l_mark[-1].param_list;
@@ -1755,9 +1810,10 @@ case 84:
            yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
            yyval.declarator->func_def = FUNC_ANSI;
        }
+#line 1814 "grammar.tab.c"
 break;
 case 85:
-#line 819 "grammar.y"
+#line 820 "grammar.y"
        {
            yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
            yyval.declarator->params = yystack.l_mark[-1].param_list;
@@ -1765,163 +1821,185 @@ case 85:
            yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
            yyval.declarator->func_def = FUNC_TRADITIONAL;
        }
+#line 1825 "grammar.tab.c"
 break;
 case 86:
-#line 830 "grammar.y"
+#line 831 "grammar.y"
        {
-           (void)sprintf(yyval.text.text, "*%s", yystack.l_mark[0].text.text);
+           (void)sprintf(yyval.text.text, "*%.*s", TEXT_LEN, yystack.l_mark[0].text.text);
            yyval.text.begin = yystack.l_mark[-1].text.begin;
        }
+#line 1833 "grammar.tab.c"
 break;
 case 87:
-#line 835 "grammar.y"
+#line 836 "grammar.y"
        {
-           (void)sprintf(yyval.text.text, "*%s%s", yystack.l_mark[-1].text.text, yystack.l_mark[0].text.text);
+           (void)sprintf(yyval.text.text, "*%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].text.text);
            yyval.text.begin = yystack.l_mark[-2].text.begin;
        }
+#line 1841 "grammar.tab.c"
 break;
 case 88:
-#line 843 "grammar.y"
+#line 844 "grammar.y"
        {
            strcpy(yyval.text.text, "");
            yyval.text.begin = 0L;
        }
+#line 1849 "grammar.tab.c"
 break;
 case 90:
-#line 852 "grammar.y"
+#line 853 "grammar.y"
        {
            (void)sprintf(yyval.text.text, "%s ", yystack.l_mark[0].decl_spec.text);
            yyval.text.begin = yystack.l_mark[0].decl_spec.begin;
            free(yystack.l_mark[0].decl_spec.text);
        }
+#line 1858 "grammar.tab.c"
 break;
 case 91:
-#line 858 "grammar.y"
+#line 859 "grammar.y"
        {
-           (void)sprintf(yyval.text.text, "%s%s ", yystack.l_mark[-1].text.text, yystack.l_mark[0].decl_spec.text);
+           (void)sprintf(yyval.text.text, "%.*s%.*s ", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].decl_spec.text);
            yyval.text.begin = yystack.l_mark[-1].text.begin;
            free(yystack.l_mark[0].decl_spec.text);
        }
+#line 1867 "grammar.tab.c"
 break;
 case 93:
-#line 868 "grammar.y"
+#line 869 "grammar.y"
        {
            add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, "...");
        }
+#line 1874 "grammar.tab.c"
 break;
 case 94:
-#line 875 "grammar.y"
+#line 876 "grammar.y"
        {
            new_param_list(&yyval.param_list, yystack.l_mark[0].parameter);
        }
+#line 1881 "grammar.tab.c"
 break;
 case 95:
-#line 879 "grammar.y"
+#line 880 "grammar.y"
        {
            add_param_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].parameter);
        }
+#line 1888 "grammar.tab.c"
 break;
 case 96:
-#line 886 "grammar.y"
+#line 887 "grammar.y"
        {
            check_untagged(&yystack.l_mark[-1].decl_spec);
            yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
        }
+#line 1896 "grammar.tab.c"
 break;
 case 97:
-#line 891 "grammar.y"
+#line 892 "grammar.y"
        {
            check_untagged(&yystack.l_mark[-1].decl_spec);
            yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
        }
+#line 1904 "grammar.tab.c"
 break;
 case 98:
-#line 896 "grammar.y"
+#line 897 "grammar.y"
        {
            check_untagged(&yystack.l_mark[0].decl_spec);
            yyval.parameter = new_parameter(&yystack.l_mark[0].decl_spec, (Declarator *)0);
        }
+#line 1912 "grammar.tab.c"
 break;
 case 99:
-#line 904 "grammar.y"
+#line 905 "grammar.y"
        {
            new_ident_list(&yyval.param_list);
        }
+#line 1919 "grammar.tab.c"
 break;
 case 101:
-#line 912 "grammar.y"
+#line 913 "grammar.y"
        {
            new_ident_list(&yyval.param_list);
            add_ident_list(&yyval.param_list, &yyval.param_list, yystack.l_mark[0].text.text);
        }
+#line 1927 "grammar.tab.c"
 break;
 case 102:
-#line 917 "grammar.y"
+#line 918 "grammar.y"
        {
            add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].text.text);
        }
+#line 1934 "grammar.tab.c"
 break;
 case 103:
-#line 924 "grammar.y"
+#line 925 "grammar.y"
        {
            yyval.text = yystack.l_mark[0].text;
        }
+#line 1941 "grammar.tab.c"
 break;
 case 104:
-#line 928 "grammar.y"
+#line 929 "grammar.y"
        {
 #if OPT_LINTLIBRARY
            if (lintLibrary()) { /* Lint doesn't grok C++ ref variables */
                yyval.text = yystack.l_mark[0].text;
            } else
 #endif
-               (void)sprintf(yyval.text.text, "&%s", yystack.l_mark[0].text.text);
+               (void)sprintf(yyval.text.text, "&%.*s", TEXT_LEN, yystack.l_mark[0].text.text);
            yyval.text.begin = yystack.l_mark[-1].text.begin;
        }
+#line 1954 "grammar.tab.c"
 break;
 case 105:
-#line 941 "grammar.y"
+#line 942 "grammar.y"
        {
            yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
        }
+#line 1961 "grammar.tab.c"
 break;
 case 106:
-#line 945 "grammar.y"
+#line 946 "grammar.y"
        {
            yyval.declarator = yystack.l_mark[0].declarator;
-           (void)sprintf(buf, "%s%s", yystack.l_mark[-1].text.text, yyval.declarator->text);
+           (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yyval.declarator->text);
            free(yyval.declarator->text);
            yyval.declarator->text = xstrdup(buf);
            yyval.declarator->begin = yystack.l_mark[-1].text.begin;
        }
+#line 1972 "grammar.tab.c"
 break;
 case 108:
-#line 957 "grammar.y"
+#line 958 "grammar.y"
        {
            yyval.declarator = yystack.l_mark[-1].declarator;
-           (void)sprintf(buf, "(%s)", yyval.declarator->text);
+           (void)sprintf(buf, "(%.*s)", TEXT_LEN, yyval.declarator->text);
            free(yyval.declarator->text);
            yyval.declarator->text = xstrdup(buf);
            yyval.declarator->begin = yystack.l_mark[-2].text.begin;
        }
+#line 1983 "grammar.tab.c"
 break;
 case 109:
-#line 965 "grammar.y"
+#line 966 "grammar.y"
        {
            yyval.declarator = yystack.l_mark[-1].declarator;
-           (void)sprintf(buf, "%s%s", yyval.declarator->text, yystack.l_mark[0].text.text);
+           (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yyval.declarator->text, TEXT_LEN, yystack.l_mark[0].text.text);
            free(yyval.declarator->text);
            yyval.declarator->text = xstrdup(buf);
        }
+#line 1993 "grammar.tab.c"
 break;
 case 110:
-#line 972 "grammar.y"
+#line 973 "grammar.y"
        {
            yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
        }
+#line 2000 "grammar.tab.c"
 break;
 case 111:
-#line 976 "grammar.y"
+#line 977 "grammar.y"
        {
            yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-3].declarator->begin);
            yyval.declarator->params = yystack.l_mark[-1].param_list;
@@ -1929,18 +2007,20 @@ case 111:
            yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
            yyval.declarator->func_def = FUNC_ANSI;
        }
+#line 2011 "grammar.tab.c"
 break;
 case 112:
-#line 984 "grammar.y"
+#line 985 "grammar.y"
        {
            yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].declarator->begin);
            yyval.declarator->func_stack = yystack.l_mark[-2].declarator;
            yyval.declarator->head = (yystack.l_mark[-2].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-2].declarator->head;
            yyval.declarator->func_def = FUNC_ANSI;
        }
+#line 2021 "grammar.tab.c"
 break;
 case 113:
-#line 991 "grammar.y"
+#line 992 "grammar.y"
        {
            Declarator *d;
 
@@ -1951,9 +2031,10 @@ case 113:
            yyval.declarator->head = yyval.declarator;
            yyval.declarator->func_def = FUNC_ANSI;
        }
+#line 2035 "grammar.tab.c"
 break;
 case 114:
-#line 1002 "grammar.y"
+#line 1003 "grammar.y"
        {
            Declarator *d;
 
@@ -1963,8 +2044,9 @@ case 114:
            yyval.declarator->head = yyval.declarator;
            yyval.declarator->func_def = FUNC_ANSI;
        }
+#line 2048 "grammar.tab.c"
 break;
-#line 1968 "grammar.tab.c"
+#line 2050 "grammar.tab.c"
     }
     yystack.s_mark -= yym;
     yystate = *yystack.s_mark;
@@ -1982,11 +2064,12 @@ break;
         *++yystack.l_mark = yyval;
         if (yychar < 0)
         {
-            if ((yychar = YYLEX) < 0) yychar = YYEOF;
+            yychar = YYLEX;
+            if (yychar < 0) yychar = YYEOF;
 #if YYDEBUG
             if (yydebug)
             {
-                yys = yyname[YYTRANSLATE(yychar)];
+                if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
                 printf("%sdebug: state %d, reading %d (%s)\n",
                         YYPREFIX, YYFINAL, yychar, yys);
             }
@@ -1995,8 +2078,8 @@ break;
         if (yychar == YYEOF) goto yyaccept;
         goto yyloop;
     }
-    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
-            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
+    if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
         yystate = yytable[yyn];
     else
         yystate = yydgoto[yym];
@@ -2005,10 +2088,7 @@ break;
         printf("%sdebug: after reduction, shifting from state %d \
 to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
 #endif
-    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
-    {
-        goto yyoverflow;
-    }
+    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
     *++yystack.s_mark = (YYINT) yystate;
     *++yystack.l_mark = yyval;
     goto yyloop;