Home | History | Annotate | Line # | Download | only in bootstrap
      1  1.1  christos #if HAVE_NBTOOL_CONFIG_H
      2  1.1  christos #include "nbtool_config.h"
      3  1.1  christos #endif
      4  1.1  christos #include <stdlib.h>
      5  1.1  christos #ifndef lint
      6  1.1  christos #if 0
      7  1.1  christos static char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
      8  1.1  christos #else
      9  1.1  christos #if defined(__NetBSD__) && defined(__IDSTRING)
     10  1.1  christos __IDSTRING(yyrcsid, "NetBSD: skeleton.c,v 1.29 2008/07/18 14:25:37 drochner Exp ");
     11  1.1  christos #endif /* __NetBSD__ && __IDSTRING */
     12  1.1  christos #endif /* 0 */
     13  1.1  christos #endif /* lint */
     14  1.1  christos #define YYBYACC 1
     15  1.1  christos #define YYMAJOR 1
     16  1.1  christos #define YYMINOR 9
     17  1.1  christos #define YYLEX yylex()
     18  1.1  christos #define YYEMPTY -1
     19  1.1  christos #define yyclearin (yychar=(YYEMPTY))
     20  1.1  christos #define yyerrok (yyerrflag=0)
     21  1.1  christos #define YYRECOVERING (yyerrflag!=0)
     22  1.1  christos #define YYPREFIX "yy"
     23  1.2  uebayasi #line 2 "../../../usr.bin/m4/parser.y"
     24  1.1  christos /* NetBSD: parser.y,v 1.2 2009/10/26 21:11:28 christos Exp  */
     25  1.1  christos /* $OpenBSD: parser.y,v 1.6 2008/08/21 21:00:14 espie Exp $ */
     26  1.1  christos /*
     27  1.1  christos  * Copyright (c) 2004 Marc Espie <espie (at) cvs.openbsd.org>
     28  1.1  christos  *
     29  1.1  christos  * Permission to use, copy, modify, and distribute this software for any
     30  1.1  christos  * purpose with or without fee is hereby granted, provided that the above
     31  1.1  christos  * copyright notice and this permission notice appear in all copies.
     32  1.1  christos  *
     33  1.1  christos  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     34  1.1  christos  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     35  1.1  christos  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     36  1.1  christos  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     37  1.1  christos  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     38  1.1  christos  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     39  1.1  christos  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     40  1.1  christos  */
     41  1.1  christos #if HAVE_NBTOOL_CONFIG_H
     42  1.1  christos #include "nbtool_config.h"
     43  1.1  christos #endif
     44  1.1  christos __RCSID("NetBSD: parser.y,v 1.2 2009/10/26 21:11:28 christos Exp ");
     45  1.1  christos #include <stdint.h>
     46  1.1  christos #define YYSTYPE	int32_t
     47  1.1  christos extern int32_t end_result;
     48  1.1  christos extern int yylex(void);
     49  1.1  christos extern int yyerror(const char *);
     50  1.1  christos #line 48 "parser.c"
     51  1.1  christos #define NUMBER 257
     52  1.1  christos #define ERROR 258
     53  1.1  christos #define LOR 259
     54  1.1  christos #define LAND 260
     55  1.1  christos #define EQ 261
     56  1.1  christos #define NE 262
     57  1.1  christos #define LE 263
     58  1.1  christos #define GE 264
     59  1.1  christos #define LSHIFT 265
     60  1.1  christos #define RSHIFT 266
     61  1.1  christos #define UMINUS 267
     62  1.1  christos #define UPLUS 268
     63  1.1  christos #define YYERRCODE 256
     64  1.1  christos const short yylhs[] = {                                        -1,
     65  1.1  christos     0,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     66  1.1  christos     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     67  1.1  christos     1,    1,    1,    1,    1,
     68  1.1  christos };
     69  1.1  christos const short yylen[] = {                                         2,
     70  1.1  christos     1,    3,    3,    3,    3,    3,    3,    3,    3,    3,
     71  1.1  christos     3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
     72  1.1  christos     2,    2,    2,    2,    1,
     73  1.1  christos };
     74  1.1  christos const short yydefred[] = {                                      0,
     75  1.1  christos    25,    0,    0,    0,    0,    0,    0,    0,   22,   21,
     76  1.1  christos    23,   24,    0,    0,    0,    0,    0,    0,    0,    0,
     77  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     78  1.1  christos     0,   20,    0,    0,    0,    0,    0,    0,    0,    0,
     79  1.1  christos     0,    0,    0,    0,    0,    0,    0,    4,    5,    6,
     80  1.1  christos };
     81  1.1  christos const short yydgoto[] = {                                       7,
     82  1.1  christos     8,
     83  1.1  christos };
     84  1.1  christos const short yysindex[] = {                                    -13,
     85  1.1  christos     0,  -13,  -13,  -13,  -13,  -13,    0,  190,    0,    0,
     86  1.1  christos     0,    0,  114,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
     87  1.1  christos   -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
     88  1.1  christos   -13,    0,  321,  347,  159,  397,  354,  -24,  -24,  -35,
     89  1.1  christos   -35,  -35,  -35,  136,  136,  -31,  -31,    0,    0,    0,
     90  1.1  christos };
     91  1.1  christos const short yyrindex[] = {                                      0,
     92  1.1  christos     0,    0,    0,    0,    0,    0,    0,    3,    0,    0,
     93  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     94  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     95  1.1  christos     0,    0,   65,   56,   51,   48,   74,   60,   66,   34,
     96  1.1  christos    40,   76,   83,   17,   26,    1,    9,    0,    0,    0,
     97  1.1  christos };
     98  1.1  christos const short yygindex[] = {                                      0,
     99  1.1  christos   458,
    100  1.1  christos };
    101  1.1  christos #define YYTABLESIZE 663
    102  1.1  christos const short yytable[] = {                                       0,
    103  1.1  christos     2,   31,    1,    0,    0,   31,   29,   27,    3,   28,
    104  1.1  christos    29,   30,   31,    0,    0,   30,    7,   29,   27,    4,
    105  1.1  christos    28,    0,   30,    0,    0,    8,    6,    0,    0,    2,
    106  1.1  christos     0,    3,    0,    9,    0,   21,    0,   23,    2,   11,
    107  1.1  christos     0,    2,    0,    2,    0,    2,    3,   16,    0,    3,
    108  1.1  christos    17,    3,    0,    3,    7,   18,    0,    7,    0,   13,
    109  1.1  christos     2,    0,    2,    8,   19,   14,    8,    0,    3,    0,
    110  1.1  christos     3,    9,    0,   15,    9,   10,    7,   11,    7,    0,
    111  1.1  christos    11,    0,   12,    0,    0,    8,    0,    8,   16,    0,
    112  1.1  christos     0,   17,    0,    9,    2,    9,   18,   13,    0,   11,
    113  1.1  christos    13,   11,    3,   14,    0,   19,   14,    0,    0,    0,
    114  1.1  christos     7,   15,    5,   10,   15,    0,   10,    0,    0,    8,
    115  1.1  christos    12,    0,    0,   12,    2,    0,    0,    9,    0,    0,
    116  1.1  christos     0,    0,    3,   11,    0,   10,    0,   10,    0,    0,
    117  1.1  christos     7,   16,   12,    0,   12,    0,    0,    0,    0,    8,
    118  1.1  christos    31,   18,    0,   13,   32,   29,   27,    9,   28,   14,
    119  1.1  christos    30,    0,    0,   11,    0,    0,    0,   15,    0,   10,
    120  1.1  christos     0,   16,   31,   21,   17,   23,   12,   29,   27,    0,
    121  1.1  christos    28,    0,   30,   13,    0,    0,    0,    0,    0,   14,
    122  1.1  christos     0,    0,    0,    0,    0,   31,   18,   15,    0,   10,
    123  1.1  christos    29,   27,    0,   28,    0,   30,   12,   17,    0,    0,
    124  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,   21,    0,
    125  1.1  christos    23,    0,    0,    0,    0,    0,   31,   18,    0,   25,
    126  1.1  christos    26,   29,   27,    0,   28,    0,   30,   16,   22,   24,
    127  1.1  christos    25,   26,    0,    1,    0,    0,    0,    0,    0,   21,
    128  1.1  christos     0,   23,   17,    0,    0,    0,    0,    0,    0,    2,
    129  1.1  christos     2,    2,    2,    2,    2,    2,    2,    3,    3,    3,
    130  1.1  christos     3,    3,    3,    3,    3,    7,    7,    7,    7,    7,
    131  1.1  christos     7,    7,    7,   17,    8,    8,    8,    8,    8,    8,
    132  1.1  christos     8,    8,    9,    9,    9,    9,    9,    9,   11,   11,
    133  1.1  christos    11,   11,   11,   11,    0,    0,   16,   16,    0,   17,
    134  1.1  christos    17,    0,    0,   16,   18,   18,    0,    0,   13,   13,
    135  1.1  christos    13,   13,    0,   19,   14,   14,   14,   14,    0,    0,
    136  1.1  christos     0,    0,   15,   15,   10,   10,   10,   10,   10,   10,
    137  1.1  christos     0,   12,   12,   12,   12,   12,   12,    0,    0,    0,
    138  1.1  christos     0,    0,    0,    0,    0,    0,    0,   31,   18,    0,
    139  1.1  christos     0,    0,   29,   27,    0,   28,    0,   30,    0,    0,
    140  1.1  christos     0,    0,   14,   15,   19,   20,   22,   24,   25,   26,
    141  1.1  christos    21,    0,   23,   31,   18,    0,    0,    0,   29,   27,
    142  1.1  christos    31,   28,    0,   30,    0,   29,   27,    0,   28,    0,
    143  1.1  christos    30,    0,    0,    0,    0,    0,   21,    0,   23,    0,
    144  1.1  christos     0,    0,    0,   21,   17,   23,    0,    0,    0,   19,
    145  1.1  christos    20,   22,   24,   25,   26,    0,    0,    0,    0,    0,
    146  1.1  christos     0,    0,    0,   31,   18,    0,    0,    0,   29,   27,
    147  1.1  christos    17,   28,    0,   30,   16,    0,    0,    0,   14,   15,
    148  1.1  christos    19,   20,   22,   24,   25,   26,   21,    0,   23,    9,
    149  1.1  christos    10,   11,   12,   13,    0,    0,    0,    0,    0,    0,
    150  1.1  christos    16,   33,   34,   35,   36,   37,   38,   39,   40,   41,
    151  1.1  christos    42,   43,   44,   45,   46,   47,   48,   49,   50,    0,
    152  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    153  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    154  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    155  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    156  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    157  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    158  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    159  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    160  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    161  1.1  christos    15,   19,   20,   22,   24,   25,   26,    0,    0,    0,
    162  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    163  1.1  christos     0,    0,    0,    0,    0,    0,    0,   19,   20,   22,
    164  1.1  christos    24,   25,   26,    0,   19,   20,   22,   24,   25,   26,
    165  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    166  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    167  1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    168  1.1  christos     0,    0,    0,    0,    0,    0,    0,   19,   20,   22,
    169  1.1  christos    24,   25,   26,
    170  1.1  christos };
    171  1.1  christos const short yycheck[] = {                                      -1,
    172  1.1  christos     0,   37,    0,   -1,   -1,   37,   42,   43,    0,   45,
    173  1.1  christos    42,   47,   37,   -1,   -1,   47,    0,   42,   43,   33,
    174  1.1  christos    45,   -1,   47,   -1,   -1,    0,   40,   -1,   -1,   43,
    175  1.1  christos    -1,   45,   -1,    0,   -1,   60,   -1,   62,   38,    0,
    176  1.1  christos    -1,   41,   -1,   43,   -1,   45,   38,    0,   -1,   41,
    177  1.1  christos     0,   43,   -1,   45,   38,    0,   -1,   41,   -1,    0,
    178  1.1  christos    60,   -1,   62,   38,    0,    0,   41,   -1,   60,   -1,
    179  1.1  christos    62,   38,   -1,    0,   41,    0,   60,   38,   62,   -1,
    180  1.1  christos    41,   -1,    0,   -1,   -1,   60,   -1,   62,   41,   -1,
    181  1.1  christos    -1,   41,   -1,   60,   94,   62,   41,   38,   -1,   60,
    182  1.1  christos    41,   62,   94,   38,   -1,   41,   41,   -1,   -1,   -1,
    183  1.1  christos    94,   38,  126,   38,   41,   -1,   41,   -1,   -1,   94,
    184  1.1  christos    38,   -1,   -1,   41,  124,   -1,   -1,   94,   -1,   -1,
    185  1.1  christos    -1,   -1,  124,   94,   -1,   60,   -1,   62,   -1,   -1,
    186  1.1  christos   124,   94,   60,   -1,   62,   -1,   -1,   -1,   -1,  124,
    187  1.1  christos    37,   38,   -1,   94,   41,   42,   43,  124,   45,   94,
    188  1.1  christos    47,   -1,   -1,  124,   -1,   -1,   -1,   94,   -1,   94,
    189  1.1  christos    -1,  124,   37,   60,  124,   62,   94,   42,   43,   -1,
    190  1.1  christos    45,   -1,   47,  124,   -1,   -1,   -1,   -1,   -1,  124,
    191  1.1  christos    -1,   -1,   -1,   -1,   -1,   37,   38,  124,   -1,  124,
    192  1.1  christos    42,   43,   -1,   45,   -1,   47,  124,   94,   -1,   -1,
    193  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   60,   -1,
    194  1.1  christos    62,   -1,   -1,   -1,   -1,   -1,   37,   38,   -1,  265,
    195  1.1  christos   266,   42,   43,   -1,   45,   -1,   47,  124,  263,  264,
    196  1.1  christos   265,  266,   -1,  257,   -1,   -1,   -1,   -1,   -1,   60,
    197  1.1  christos    -1,   62,   94,   -1,   -1,   -1,   -1,   -1,   -1,  259,
    198  1.1  christos   260,  261,  262,  263,  264,  265,  266,  259,  260,  261,
    199  1.1  christos   262,  263,  264,  265,  266,  259,  260,  261,  262,  263,
    200  1.1  christos   264,  265,  266,   94,  259,  260,  261,  262,  263,  264,
    201  1.1  christos   265,  266,  259,  260,  261,  262,  263,  264,  259,  260,
    202  1.1  christos   261,  262,  263,  264,   -1,   -1,  259,  260,   -1,  259,
    203  1.1  christos   260,   -1,   -1,  124,  259,  260,   -1,   -1,  259,  260,
    204  1.1  christos   261,  262,   -1,  259,  259,  260,  261,  262,   -1,   -1,
    205  1.1  christos    -1,   -1,  259,  260,  259,  260,  261,  262,  263,  264,
    206  1.1  christos    -1,  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,
    207  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   37,   38,   -1,
    208  1.1  christos    -1,   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,
    209  1.1  christos    -1,   -1,  259,  260,  261,  262,  263,  264,  265,  266,
    210  1.1  christos    60,   -1,   62,   37,   38,   -1,   -1,   -1,   42,   43,
    211  1.1  christos    37,   45,   -1,   47,   -1,   42,   43,   -1,   45,   -1,
    212  1.1  christos    47,   -1,   -1,   -1,   -1,   -1,   60,   -1,   62,   -1,
    213  1.1  christos    -1,   -1,   -1,   60,   94,   62,   -1,   -1,   -1,  261,
    214  1.1  christos   262,  263,  264,  265,  266,   -1,   -1,   -1,   -1,   -1,
    215  1.1  christos    -1,   -1,   -1,   37,   38,   -1,   -1,   -1,   42,   43,
    216  1.1  christos    94,   45,   -1,   47,  124,   -1,   -1,   -1,  259,  260,
    217  1.1  christos   261,  262,  263,  264,  265,  266,   60,   -1,   62,    2,
    218  1.1  christos     3,    4,    5,    6,   -1,   -1,   -1,   -1,   -1,   -1,
    219  1.1  christos   124,   14,   15,   16,   17,   18,   19,   20,   21,   22,
    220  1.1  christos    23,   24,   25,   26,   27,   28,   29,   30,   31,   -1,
    221  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    222  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    223  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    224  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    225  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    226  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    227  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    228  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    229  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    230  1.1  christos   260,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
    231  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    232  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,  262,  263,
    233  1.1  christos   264,  265,  266,   -1,  261,  262,  263,  264,  265,  266,
    234  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    235  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    236  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    237  1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,  262,  263,
    238  1.1  christos   264,  265,  266,
    239  1.1  christos };
    240  1.1  christos #define YYFINAL 7
    241  1.1  christos #ifndef YYDEBUG
    242  1.1  christos #define YYDEBUG 0
    243  1.1  christos #endif
    244  1.1  christos #define YYMAXTOKEN 268
    245  1.1  christos #if YYDEBUG
    246  1.1  christos const char * const yyname[] = {
    247  1.1  christos "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,
    248  1.1  christos "'!'",0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,
    249  1.1  christos 0,0,0,0,0,"'<'",0,"'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    250  1.1  christos 0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,
    251  1.1  christos "'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    252  1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    253  1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    254  1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,"NUMBER","ERROR","LOR","LAND","EQ","NE","LE","GE",
    255  1.1  christos "LSHIFT","RSHIFT","UMINUS","UPLUS",
    256  1.1  christos };
    257  1.1  christos const char * const yyrule[] = {
    258  1.1  christos "$accept : top",
    259  1.1  christos "top : expr",
    260  1.1  christos "expr : expr '+' expr",
    261  1.1  christos "expr : expr '-' expr",
    262  1.1  christos "expr : expr '*' expr",
    263  1.1  christos "expr : expr '/' expr",
    264  1.1  christos "expr : expr '%' expr",
    265  1.1  christos "expr : expr LSHIFT expr",
    266  1.1  christos "expr : expr RSHIFT expr",
    267  1.1  christos "expr : expr '<' expr",
    268  1.1  christos "expr : expr '>' expr",
    269  1.1  christos "expr : expr LE expr",
    270  1.1  christos "expr : expr GE expr",
    271  1.1  christos "expr : expr EQ expr",
    272  1.1  christos "expr : expr NE expr",
    273  1.1  christos "expr : expr '&' expr",
    274  1.1  christos "expr : expr '^' expr",
    275  1.1  christos "expr : expr '|' expr",
    276  1.1  christos "expr : expr LAND expr",
    277  1.1  christos "expr : expr LOR expr",
    278  1.1  christos "expr : '(' expr ')'",
    279  1.1  christos "expr : '-' expr",
    280  1.1  christos "expr : '+' expr",
    281  1.1  christos "expr : '!' expr",
    282  1.1  christos "expr : '~' expr",
    283  1.1  christos "expr : NUMBER",
    284  1.1  christos };
    285  1.1  christos #endif
    286  1.1  christos #ifndef YYSTYPE
    287  1.1  christos typedef int YYSTYPE;
    288  1.1  christos #endif
    289  1.1  christos #ifdef YYSTACKSIZE
    290  1.1  christos #undef YYMAXDEPTH
    291  1.1  christos #define YYMAXDEPTH YYSTACKSIZE
    292  1.1  christos #else
    293  1.1  christos #ifdef YYMAXDEPTH
    294  1.1  christos #define YYSTACKSIZE YYMAXDEPTH
    295  1.1  christos #else
    296  1.1  christos #define YYSTACKSIZE 10000
    297  1.1  christos #define YYMAXDEPTH 10000
    298  1.1  christos #endif
    299  1.1  christos #endif
    300  1.1  christos #define YYINITSTACKSIZE 200
    301  1.1  christos int yydebug;
    302  1.1  christos int yynerrs;
    303  1.1  christos int yyerrflag;
    304  1.1  christos int yychar;
    305  1.1  christos short *yyssp;
    306  1.1  christos YYSTYPE *yyvsp;
    307  1.1  christos YYSTYPE yyval;
    308  1.1  christos static YYSTYPE yyvalzero;
    309  1.1  christos YYSTYPE yylval;
    310  1.1  christos short *yyss;
    311  1.1  christos short *yysslim;
    312  1.1  christos YYSTYPE *yyvs;
    313  1.1  christos int yystacksize;
    314  1.1  christos int yyparse(void);
    315  1.2  uebayasi #line 85 "../../../usr.bin/m4/parser.y"
    316  1.1  christos 
    317  1.1  christos #line 315 "parser.c"
    318  1.1  christos /* allocate initial stack or double stack size, up to YYMAXDEPTH */
    319  1.1  christos static int yygrowstack(void);
    320  1.1  christos static int yygrowstack(void)
    321  1.1  christos {
    322  1.1  christos     int newsize, i;
    323  1.1  christos     short *newss;
    324  1.1  christos     YYSTYPE *newvs;
    325  1.1  christos 
    326  1.1  christos     if ((newsize = yystacksize) == 0)
    327  1.1  christos         newsize = YYINITSTACKSIZE;
    328  1.1  christos     else if (newsize >= YYMAXDEPTH)
    329  1.1  christos         return -1;
    330  1.1  christos     else if ((newsize *= 2) > YYMAXDEPTH)
    331  1.1  christos         newsize = YYMAXDEPTH;
    332  1.1  christos     i = yyssp - yyss;
    333  1.1  christos     if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
    334  1.1  christos         return -1;
    335  1.1  christos     yyss = newss;
    336  1.1  christos     yyssp = newss + i;
    337  1.1  christos     if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
    338  1.1  christos         return -1;
    339  1.1  christos     yyvs = newvs;
    340  1.1  christos     yyvsp = newvs + i;
    341  1.1  christos     yystacksize = newsize;
    342  1.1  christos     yysslim = yyss + newsize - 1;
    343  1.1  christos     return 0;
    344  1.1  christos }
    345  1.1  christos 
    346  1.1  christos #define YYABORT goto yyabort
    347  1.1  christos #define YYREJECT goto yyabort
    348  1.1  christos #define YYACCEPT goto yyaccept
    349  1.1  christos #define YYERROR goto yyerrlab
    350  1.1  christos int
    351  1.1  christos yyparse(void)
    352  1.1  christos {
    353  1.1  christos     int yym, yyn, yystate;
    354  1.1  christos #if YYDEBUG
    355  1.1  christos     const char *yys;
    356  1.1  christos 
    357  1.1  christos     if ((yys = getenv("YYDEBUG")) != NULL)
    358  1.1  christos     {
    359  1.1  christos         yyn = *yys;
    360  1.1  christos         if (yyn >= '0' && yyn <= '9')
    361  1.1  christos             yydebug = yyn - '0';
    362  1.1  christos     }
    363  1.1  christos #endif
    364  1.1  christos 
    365  1.1  christos     yynerrs = 0;
    366  1.1  christos     yyerrflag = 0;
    367  1.1  christos     yychar = (-1);
    368  1.1  christos 
    369  1.1  christos     if (yyss == NULL && yygrowstack()) goto yyoverflow;
    370  1.1  christos     yyssp = yyss;
    371  1.1  christos     yyvsp = yyvs;
    372  1.1  christos     *yyssp = yystate = 0;
    373  1.1  christos 
    374  1.1  christos yyloop:
    375  1.1  christos     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    376  1.1  christos     if (yychar < 0)
    377  1.1  christos     {
    378  1.1  christos         if ((yychar = yylex()) < 0) yychar = 0;
    379  1.1  christos #if YYDEBUG
    380  1.1  christos         if (yydebug)
    381  1.1  christos         {
    382  1.1  christos             yys = 0;
    383  1.1  christos             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
    384  1.1  christos             if (!yys) yys = "illegal-symbol";
    385  1.1  christos             printf("%sdebug: state %d, reading %d (%s)\n",
    386  1.1  christos                     YYPREFIX, yystate, yychar, yys);
    387  1.1  christos         }
    388  1.1  christos #endif
    389  1.1  christos     }
    390  1.1  christos     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
    391  1.1  christos             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    392  1.1  christos     {
    393  1.1  christos #if YYDEBUG
    394  1.1  christos         if (yydebug)
    395  1.1  christos             printf("%sdebug: state %d, shifting to state %d\n",
    396  1.1  christos                     YYPREFIX, yystate, yytable[yyn]);
    397  1.1  christos #endif
    398  1.1  christos         if (yyssp >= yysslim && yygrowstack())
    399  1.1  christos         {
    400  1.1  christos             goto yyoverflow;
    401  1.1  christos         }
    402  1.1  christos         *++yyssp = yystate = yytable[yyn];
    403  1.1  christos         *++yyvsp = yylval;
    404  1.1  christos         yychar = (-1);
    405  1.1  christos         if (yyerrflag > 0)  --yyerrflag;
    406  1.1  christos         goto yyloop;
    407  1.1  christos     }
    408  1.1  christos     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
    409  1.1  christos             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    410  1.1  christos     {
    411  1.1  christos         yyn = yytable[yyn];
    412  1.1  christos         goto yyreduce;
    413  1.1  christos     }
    414  1.1  christos     if (yyerrflag) goto yyinrecovery;
    415  1.1  christos     goto yynewerror;
    416  1.1  christos yynewerror:
    417  1.1  christos     yyerror("syntax error");
    418  1.1  christos     goto yyerrlab;
    419  1.1  christos yyerrlab:
    420  1.1  christos     ++yynerrs;
    421  1.1  christos yyinrecovery:
    422  1.1  christos     if (yyerrflag < 3)
    423  1.1  christos     {
    424  1.1  christos         yyerrflag = 3;
    425  1.1  christos         for (;;)
    426  1.1  christos         {
    427  1.1  christos             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
    428  1.1  christos                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
    429  1.1  christos             {
    430  1.1  christos #if YYDEBUG
    431  1.1  christos                 if (yydebug)
    432  1.1  christos                     printf("%sdebug: state %d, error recovery shifting\
    433  1.1  christos  to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
    434  1.1  christos #endif
    435  1.1  christos                 if (yyssp >= yysslim && yygrowstack())
    436  1.1  christos                 {
    437  1.1  christos                     goto yyoverflow;
    438  1.1  christos                 }
    439  1.1  christos                 *++yyssp = yystate = yytable[yyn];
    440  1.1  christos                 *++yyvsp = yylval;
    441  1.1  christos                 goto yyloop;
    442  1.1  christos             }
    443  1.1  christos             else
    444  1.1  christos             {
    445  1.1  christos #if YYDEBUG
    446  1.1  christos                 if (yydebug)
    447  1.1  christos                     printf("%sdebug: error recovery discarding state %d\n",
    448  1.1  christos                             YYPREFIX, *yyssp);
    449  1.1  christos #endif
    450  1.1  christos                 if (yyssp <= yyss) goto yyabort;
    451  1.1  christos                 --yyssp;
    452  1.1  christos                 --yyvsp;
    453  1.1  christos             }
    454  1.1  christos         }
    455  1.1  christos     }
    456  1.1  christos     else
    457  1.1  christos     {
    458  1.1  christos         if (yychar == 0) goto yyabort;
    459  1.1  christos #if YYDEBUG
    460  1.1  christos         if (yydebug)
    461  1.1  christos         {
    462  1.1  christos             yys = 0;
    463  1.1  christos             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
    464  1.1  christos             if (!yys) yys = "illegal-symbol";
    465  1.1  christos             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
    466  1.1  christos                     YYPREFIX, yystate, yychar, yys);
    467  1.1  christos         }
    468  1.1  christos #endif
    469  1.1  christos         yychar = (-1);
    470  1.1  christos         goto yyloop;
    471  1.1  christos     }
    472  1.1  christos yyreduce:
    473  1.1  christos #if YYDEBUG
    474  1.1  christos     if (yydebug)
    475  1.1  christos         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
    476  1.1  christos                 YYPREFIX, yystate, yyn, yyrule[yyn]);
    477  1.1  christos #endif
    478  1.1  christos     yym = yylen[yyn];
    479  1.1  christos     if (yym)
    480  1.1  christos         yyval = yyvsp[1-yym];
    481  1.1  christos     else
    482  1.1  christos         yyval = yyvalzero;
    483  1.1  christos     switch (yyn)
    484  1.1  christos     {
    485  1.1  christos case 1:
    486  1.2  uebayasi #line 45 "../../../usr.bin/m4/parser.y"
    487  1.1  christos { end_result = yyvsp[0]; }
    488  1.1  christos break;
    489  1.1  christos case 2:
    490  1.2  uebayasi #line 47 "../../../usr.bin/m4/parser.y"
    491  1.1  christos { yyval = yyvsp[-2] + yyvsp[0]; }
    492  1.1  christos break;
    493  1.1  christos case 3:
    494  1.2  uebayasi #line 48 "../../../usr.bin/m4/parser.y"
    495  1.1  christos { yyval = yyvsp[-2] - yyvsp[0]; }
    496  1.1  christos break;
    497  1.1  christos case 4:
    498  1.2  uebayasi #line 49 "../../../usr.bin/m4/parser.y"
    499  1.1  christos { yyval = yyvsp[-2] * yyvsp[0]; }
    500  1.1  christos break;
    501  1.1  christos case 5:
    502  1.2  uebayasi #line 50 "../../../usr.bin/m4/parser.y"
    503  1.1  christos {
    504  1.1  christos 		if (yyvsp[0] == 0) {
    505  1.1  christos 			yyerror("division by zero");
    506  1.1  christos 			exit(1);
    507  1.1  christos 		}
    508  1.1  christos 		yyval = yyvsp[-2] / yyvsp[0];
    509  1.1  christos 	}
    510  1.1  christos break;
    511  1.1  christos case 6:
    512  1.2  uebayasi #line 57 "../../../usr.bin/m4/parser.y"
    513  1.1  christos {
    514  1.1  christos 		if (yyvsp[0] == 0) {
    515  1.1  christos 			yyerror("modulo zero");
    516  1.1  christos 			exit(1);
    517  1.1  christos 		}
    518  1.1  christos 		yyval = yyvsp[-2] % yyvsp[0];
    519  1.1  christos 	}
    520  1.1  christos break;
    521  1.1  christos case 7:
    522  1.2  uebayasi #line 64 "../../../usr.bin/m4/parser.y"
    523  1.1  christos { yyval = yyvsp[-2] << yyvsp[0]; }
    524  1.1  christos break;
    525  1.1  christos case 8:
    526  1.2  uebayasi #line 65 "../../../usr.bin/m4/parser.y"
    527  1.1  christos { yyval = yyvsp[-2] >> yyvsp[0]; }
    528  1.1  christos break;
    529  1.1  christos case 9:
    530  1.2  uebayasi #line 66 "../../../usr.bin/m4/parser.y"
    531  1.1  christos { yyval = yyvsp[-2] < yyvsp[0]; }
    532  1.1  christos break;
    533  1.1  christos case 10:
    534  1.2  uebayasi #line 67 "../../../usr.bin/m4/parser.y"
    535  1.1  christos { yyval = yyvsp[-2] > yyvsp[0]; }
    536  1.1  christos break;
    537  1.1  christos case 11:
    538  1.2  uebayasi #line 68 "../../../usr.bin/m4/parser.y"
    539  1.1  christos { yyval = yyvsp[-2] <= yyvsp[0]; }
    540  1.1  christos break;
    541  1.1  christos case 12:
    542  1.2  uebayasi #line 69 "../../../usr.bin/m4/parser.y"
    543  1.1  christos { yyval = yyvsp[-2] >= yyvsp[0]; }
    544  1.1  christos break;
    545  1.1  christos case 13:
    546  1.2  uebayasi #line 70 "../../../usr.bin/m4/parser.y"
    547  1.1  christos { yyval = yyvsp[-2] == yyvsp[0]; }
    548  1.1  christos break;
    549  1.1  christos case 14:
    550  1.2  uebayasi #line 71 "../../../usr.bin/m4/parser.y"
    551  1.1  christos { yyval = yyvsp[-2] != yyvsp[0]; }
    552  1.1  christos break;
    553  1.1  christos case 15:
    554  1.2  uebayasi #line 72 "../../../usr.bin/m4/parser.y"
    555  1.1  christos { yyval = yyvsp[-2] & yyvsp[0]; }
    556  1.1  christos break;
    557  1.1  christos case 16:
    558  1.2  uebayasi #line 73 "../../../usr.bin/m4/parser.y"
    559  1.1  christos { yyval = yyvsp[-2] ^ yyvsp[0]; }
    560  1.1  christos break;
    561  1.1  christos case 17:
    562  1.2  uebayasi #line 74 "../../../usr.bin/m4/parser.y"
    563  1.1  christos { yyval = yyvsp[-2] | yyvsp[0]; }
    564  1.1  christos break;
    565  1.1  christos case 18:
    566  1.2  uebayasi #line 75 "../../../usr.bin/m4/parser.y"
    567  1.1  christos { yyval = yyvsp[-2] && yyvsp[0]; }
    568  1.1  christos break;
    569  1.1  christos case 19:
    570  1.2  uebayasi #line 76 "../../../usr.bin/m4/parser.y"
    571  1.1  christos { yyval = yyvsp[-2] || yyvsp[0]; }
    572  1.1  christos break;
    573  1.1  christos case 20:
    574  1.2  uebayasi #line 77 "../../../usr.bin/m4/parser.y"
    575  1.1  christos { yyval = yyvsp[-1]; }
    576  1.1  christos break;
    577  1.1  christos case 21:
    578  1.2  uebayasi #line 78 "../../../usr.bin/m4/parser.y"
    579  1.1  christos { yyval = -yyvsp[0]; }
    580  1.1  christos break;
    581  1.1  christos case 22:
    582  1.2  uebayasi #line 79 "../../../usr.bin/m4/parser.y"
    583  1.1  christos { yyval = yyvsp[0]; }
    584  1.1  christos break;
    585  1.1  christos case 23:
    586  1.2  uebayasi #line 80 "../../../usr.bin/m4/parser.y"
    587  1.1  christos { yyval = !yyvsp[0]; }
    588  1.1  christos break;
    589  1.1  christos case 24:
    590  1.2  uebayasi #line 81 "../../../usr.bin/m4/parser.y"
    591  1.1  christos { yyval = ~yyvsp[0]; }
    592  1.1  christos break;
    593  1.1  christos #line 591 "parser.c"
    594  1.1  christos     }
    595  1.1  christos     yyssp -= yym;
    596  1.1  christos     yystate = *yyssp;
    597  1.1  christos     yyvsp -= yym;
    598  1.1  christos     yym = yylhs[yyn];
    599  1.1  christos     if (yystate == 0 && yym == 0)
    600  1.1  christos     {
    601  1.1  christos #if YYDEBUG
    602  1.1  christos         if (yydebug)
    603  1.1  christos             printf("%sdebug: after reduction, shifting from state 0 to\
    604  1.1  christos  state %d\n", YYPREFIX, YYFINAL);
    605  1.1  christos #endif
    606  1.1  christos         yystate = YYFINAL;
    607  1.1  christos         *++yyssp = YYFINAL;
    608  1.1  christos         *++yyvsp = yyval;
    609  1.1  christos         if (yychar < 0)
    610  1.1  christos         {
    611  1.1  christos             if ((yychar = yylex()) < 0) yychar = 0;
    612  1.1  christos #if YYDEBUG
    613  1.1  christos             if (yydebug)
    614  1.1  christos             {
    615  1.1  christos                 yys = 0;
    616  1.1  christos                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
    617  1.1  christos                 if (!yys) yys = "illegal-symbol";
    618  1.1  christos                 printf("%sdebug: state %d, reading %d (%s)\n",
    619  1.1  christos                         YYPREFIX, YYFINAL, yychar, yys);
    620  1.1  christos             }
    621  1.1  christos #endif
    622  1.1  christos         }
    623  1.1  christos         if (yychar == 0) goto yyaccept;
    624  1.1  christos         goto yyloop;
    625  1.1  christos     }
    626  1.1  christos     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
    627  1.1  christos             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
    628  1.1  christos         yystate = yytable[yyn];
    629  1.1  christos     else
    630  1.1  christos         yystate = yydgoto[yym];
    631  1.1  christos #if YYDEBUG
    632  1.1  christos     if (yydebug)
    633  1.1  christos         printf("%sdebug: after reduction, shifting from state %d \
    634  1.1  christos to state %d\n", YYPREFIX, *yyssp, yystate);
    635  1.1  christos #endif
    636  1.1  christos     if (yyssp >= yysslim && yygrowstack())
    637  1.1  christos     {
    638  1.1  christos         goto yyoverflow;
    639  1.1  christos     }
    640  1.1  christos     *++yyssp = yystate;
    641  1.1  christos     *++yyvsp = yyval;
    642  1.1  christos     goto yyloop;
    643  1.1  christos yyoverflow:
    644  1.1  christos     yyerror("yacc stack overflow");
    645  1.1  christos yyabort:
    646  1.1  christos     return (1);
    647  1.1  christos yyaccept:
    648  1.1  christos     return (0);
    649  1.1  christos }
    650