xref: /netbsd-src/tools/m4/bootstrap/parser.c (revision 912aaddf6cfee99a171d4adc0cca4ec8569f4fda)
141ebfbe2Schristos #if HAVE_NBTOOL_CONFIG_H
241ebfbe2Schristos #include "nbtool_config.h"
341ebfbe2Schristos #endif
441ebfbe2Schristos #include <stdlib.h>
541ebfbe2Schristos #ifndef lint
641ebfbe2Schristos #if 0
741ebfbe2Schristos static char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
841ebfbe2Schristos #else
941ebfbe2Schristos #if defined(__NetBSD__) && defined(__IDSTRING)
1041ebfbe2Schristos __IDSTRING(yyrcsid, "NetBSD: skeleton.c,v 1.29 2008/07/18 14:25:37 drochner Exp ");
1141ebfbe2Schristos #endif /* __NetBSD__ && __IDSTRING */
1241ebfbe2Schristos #endif /* 0 */
1341ebfbe2Schristos #endif /* lint */
1441ebfbe2Schristos #define YYBYACC 1
1541ebfbe2Schristos #define YYMAJOR 1
1641ebfbe2Schristos #define YYMINOR 9
1741ebfbe2Schristos #define YYLEX yylex()
1841ebfbe2Schristos #define YYEMPTY -1
1941ebfbe2Schristos #define yyclearin (yychar=(YYEMPTY))
2041ebfbe2Schristos #define yyerrok (yyerrflag=0)
2141ebfbe2Schristos #define YYRECOVERING (yyerrflag!=0)
2241ebfbe2Schristos #define YYPREFIX "yy"
23*912aaddfSuebayasi #line 2 "../../../usr.bin/m4/parser.y"
2441ebfbe2Schristos /* NetBSD: parser.y,v 1.2 2009/10/26 21:11:28 christos Exp  */
2541ebfbe2Schristos /* $OpenBSD: parser.y,v 1.6 2008/08/21 21:00:14 espie Exp $ */
2641ebfbe2Schristos /*
2741ebfbe2Schristos  * Copyright (c) 2004 Marc Espie <espie@cvs.openbsd.org>
2841ebfbe2Schristos  *
2941ebfbe2Schristos  * Permission to use, copy, modify, and distribute this software for any
3041ebfbe2Schristos  * purpose with or without fee is hereby granted, provided that the above
3141ebfbe2Schristos  * copyright notice and this permission notice appear in all copies.
3241ebfbe2Schristos  *
3341ebfbe2Schristos  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3441ebfbe2Schristos  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3541ebfbe2Schristos  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3641ebfbe2Schristos  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3741ebfbe2Schristos  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3841ebfbe2Schristos  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3941ebfbe2Schristos  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4041ebfbe2Schristos  */
4141ebfbe2Schristos #if HAVE_NBTOOL_CONFIG_H
4241ebfbe2Schristos #include "nbtool_config.h"
4341ebfbe2Schristos #endif
4441ebfbe2Schristos __RCSID("NetBSD: parser.y,v 1.2 2009/10/26 21:11:28 christos Exp ");
4541ebfbe2Schristos #include <stdint.h>
4641ebfbe2Schristos #define YYSTYPE	int32_t
4741ebfbe2Schristos extern int32_t end_result;
4841ebfbe2Schristos extern int yylex(void);
4941ebfbe2Schristos extern int yyerror(const char *);
5041ebfbe2Schristos #line 48 "parser.c"
5141ebfbe2Schristos #define NUMBER 257
5241ebfbe2Schristos #define ERROR 258
5341ebfbe2Schristos #define LOR 259
5441ebfbe2Schristos #define LAND 260
5541ebfbe2Schristos #define EQ 261
5641ebfbe2Schristos #define NE 262
5741ebfbe2Schristos #define LE 263
5841ebfbe2Schristos #define GE 264
5941ebfbe2Schristos #define LSHIFT 265
6041ebfbe2Schristos #define RSHIFT 266
6141ebfbe2Schristos #define UMINUS 267
6241ebfbe2Schristos #define UPLUS 268
6341ebfbe2Schristos #define YYERRCODE 256
6441ebfbe2Schristos const short yylhs[] = {                                        -1,
6541ebfbe2Schristos     0,    1,    1,    1,    1,    1,    1,    1,    1,    1,
6641ebfbe2Schristos     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
6741ebfbe2Schristos     1,    1,    1,    1,    1,
6841ebfbe2Schristos };
6941ebfbe2Schristos const short yylen[] = {                                         2,
7041ebfbe2Schristos     1,    3,    3,    3,    3,    3,    3,    3,    3,    3,
7141ebfbe2Schristos     3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
7241ebfbe2Schristos     2,    2,    2,    2,    1,
7341ebfbe2Schristos };
7441ebfbe2Schristos const short yydefred[] = {                                      0,
7541ebfbe2Schristos    25,    0,    0,    0,    0,    0,    0,    0,   22,   21,
7641ebfbe2Schristos    23,   24,    0,    0,    0,    0,    0,    0,    0,    0,
7741ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
7841ebfbe2Schristos     0,   20,    0,    0,    0,    0,    0,    0,    0,    0,
7941ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    4,    5,    6,
8041ebfbe2Schristos };
8141ebfbe2Schristos const short yydgoto[] = {                                       7,
8241ebfbe2Schristos     8,
8341ebfbe2Schristos };
8441ebfbe2Schristos const short yysindex[] = {                                    -13,
8541ebfbe2Schristos     0,  -13,  -13,  -13,  -13,  -13,    0,  190,    0,    0,
8641ebfbe2Schristos     0,    0,  114,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
8741ebfbe2Schristos   -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
8841ebfbe2Schristos   -13,    0,  321,  347,  159,  397,  354,  -24,  -24,  -35,
8941ebfbe2Schristos   -35,  -35,  -35,  136,  136,  -31,  -31,    0,    0,    0,
9041ebfbe2Schristos };
9141ebfbe2Schristos const short yyrindex[] = {                                      0,
9241ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    3,    0,    0,
9341ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
9441ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
9541ebfbe2Schristos     0,    0,   65,   56,   51,   48,   74,   60,   66,   34,
9641ebfbe2Schristos    40,   76,   83,   17,   26,    1,    9,    0,    0,    0,
9741ebfbe2Schristos };
9841ebfbe2Schristos const short yygindex[] = {                                      0,
9941ebfbe2Schristos   458,
10041ebfbe2Schristos };
10141ebfbe2Schristos #define YYTABLESIZE 663
10241ebfbe2Schristos const short yytable[] = {                                       0,
10341ebfbe2Schristos     2,   31,    1,    0,    0,   31,   29,   27,    3,   28,
10441ebfbe2Schristos    29,   30,   31,    0,    0,   30,    7,   29,   27,    4,
10541ebfbe2Schristos    28,    0,   30,    0,    0,    8,    6,    0,    0,    2,
10641ebfbe2Schristos     0,    3,    0,    9,    0,   21,    0,   23,    2,   11,
10741ebfbe2Schristos     0,    2,    0,    2,    0,    2,    3,   16,    0,    3,
10841ebfbe2Schristos    17,    3,    0,    3,    7,   18,    0,    7,    0,   13,
10941ebfbe2Schristos     2,    0,    2,    8,   19,   14,    8,    0,    3,    0,
11041ebfbe2Schristos     3,    9,    0,   15,    9,   10,    7,   11,    7,    0,
11141ebfbe2Schristos    11,    0,   12,    0,    0,    8,    0,    8,   16,    0,
11241ebfbe2Schristos     0,   17,    0,    9,    2,    9,   18,   13,    0,   11,
11341ebfbe2Schristos    13,   11,    3,   14,    0,   19,   14,    0,    0,    0,
11441ebfbe2Schristos     7,   15,    5,   10,   15,    0,   10,    0,    0,    8,
11541ebfbe2Schristos    12,    0,    0,   12,    2,    0,    0,    9,    0,    0,
11641ebfbe2Schristos     0,    0,    3,   11,    0,   10,    0,   10,    0,    0,
11741ebfbe2Schristos     7,   16,   12,    0,   12,    0,    0,    0,    0,    8,
11841ebfbe2Schristos    31,   18,    0,   13,   32,   29,   27,    9,   28,   14,
11941ebfbe2Schristos    30,    0,    0,   11,    0,    0,    0,   15,    0,   10,
12041ebfbe2Schristos     0,   16,   31,   21,   17,   23,   12,   29,   27,    0,
12141ebfbe2Schristos    28,    0,   30,   13,    0,    0,    0,    0,    0,   14,
12241ebfbe2Schristos     0,    0,    0,    0,    0,   31,   18,   15,    0,   10,
12341ebfbe2Schristos    29,   27,    0,   28,    0,   30,   12,   17,    0,    0,
12441ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,   21,    0,
12541ebfbe2Schristos    23,    0,    0,    0,    0,    0,   31,   18,    0,   25,
12641ebfbe2Schristos    26,   29,   27,    0,   28,    0,   30,   16,   22,   24,
12741ebfbe2Schristos    25,   26,    0,    1,    0,    0,    0,    0,    0,   21,
12841ebfbe2Schristos     0,   23,   17,    0,    0,    0,    0,    0,    0,    2,
12941ebfbe2Schristos     2,    2,    2,    2,    2,    2,    2,    3,    3,    3,
13041ebfbe2Schristos     3,    3,    3,    3,    3,    7,    7,    7,    7,    7,
13141ebfbe2Schristos     7,    7,    7,   17,    8,    8,    8,    8,    8,    8,
13241ebfbe2Schristos     8,    8,    9,    9,    9,    9,    9,    9,   11,   11,
13341ebfbe2Schristos    11,   11,   11,   11,    0,    0,   16,   16,    0,   17,
13441ebfbe2Schristos    17,    0,    0,   16,   18,   18,    0,    0,   13,   13,
13541ebfbe2Schristos    13,   13,    0,   19,   14,   14,   14,   14,    0,    0,
13641ebfbe2Schristos     0,    0,   15,   15,   10,   10,   10,   10,   10,   10,
13741ebfbe2Schristos     0,   12,   12,   12,   12,   12,   12,    0,    0,    0,
13841ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,   31,   18,    0,
13941ebfbe2Schristos     0,    0,   29,   27,    0,   28,    0,   30,    0,    0,
14041ebfbe2Schristos     0,    0,   14,   15,   19,   20,   22,   24,   25,   26,
14141ebfbe2Schristos    21,    0,   23,   31,   18,    0,    0,    0,   29,   27,
14241ebfbe2Schristos    31,   28,    0,   30,    0,   29,   27,    0,   28,    0,
14341ebfbe2Schristos    30,    0,    0,    0,    0,    0,   21,    0,   23,    0,
14441ebfbe2Schristos     0,    0,    0,   21,   17,   23,    0,    0,    0,   19,
14541ebfbe2Schristos    20,   22,   24,   25,   26,    0,    0,    0,    0,    0,
14641ebfbe2Schristos     0,    0,    0,   31,   18,    0,    0,    0,   29,   27,
14741ebfbe2Schristos    17,   28,    0,   30,   16,    0,    0,    0,   14,   15,
14841ebfbe2Schristos    19,   20,   22,   24,   25,   26,   21,    0,   23,    9,
14941ebfbe2Schristos    10,   11,   12,   13,    0,    0,    0,    0,    0,    0,
15041ebfbe2Schristos    16,   33,   34,   35,   36,   37,   38,   39,   40,   41,
15141ebfbe2Schristos    42,   43,   44,   45,   46,   47,   48,   49,   50,    0,
15241ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
15341ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
15441ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
15541ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
15641ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
15741ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
15841ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
15941ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
16041ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
16141ebfbe2Schristos    15,   19,   20,   22,   24,   25,   26,    0,    0,    0,
16241ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
16341ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,   19,   20,   22,
16441ebfbe2Schristos    24,   25,   26,    0,   19,   20,   22,   24,   25,   26,
16541ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
16641ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
16741ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
16841ebfbe2Schristos     0,    0,    0,    0,    0,    0,    0,   19,   20,   22,
16941ebfbe2Schristos    24,   25,   26,
17041ebfbe2Schristos };
17141ebfbe2Schristos const short yycheck[] = {                                      -1,
17241ebfbe2Schristos     0,   37,    0,   -1,   -1,   37,   42,   43,    0,   45,
17341ebfbe2Schristos    42,   47,   37,   -1,   -1,   47,    0,   42,   43,   33,
17441ebfbe2Schristos    45,   -1,   47,   -1,   -1,    0,   40,   -1,   -1,   43,
17541ebfbe2Schristos    -1,   45,   -1,    0,   -1,   60,   -1,   62,   38,    0,
17641ebfbe2Schristos    -1,   41,   -1,   43,   -1,   45,   38,    0,   -1,   41,
17741ebfbe2Schristos     0,   43,   -1,   45,   38,    0,   -1,   41,   -1,    0,
17841ebfbe2Schristos    60,   -1,   62,   38,    0,    0,   41,   -1,   60,   -1,
17941ebfbe2Schristos    62,   38,   -1,    0,   41,    0,   60,   38,   62,   -1,
18041ebfbe2Schristos    41,   -1,    0,   -1,   -1,   60,   -1,   62,   41,   -1,
18141ebfbe2Schristos    -1,   41,   -1,   60,   94,   62,   41,   38,   -1,   60,
18241ebfbe2Schristos    41,   62,   94,   38,   -1,   41,   41,   -1,   -1,   -1,
18341ebfbe2Schristos    94,   38,  126,   38,   41,   -1,   41,   -1,   -1,   94,
18441ebfbe2Schristos    38,   -1,   -1,   41,  124,   -1,   -1,   94,   -1,   -1,
18541ebfbe2Schristos    -1,   -1,  124,   94,   -1,   60,   -1,   62,   -1,   -1,
18641ebfbe2Schristos   124,   94,   60,   -1,   62,   -1,   -1,   -1,   -1,  124,
18741ebfbe2Schristos    37,   38,   -1,   94,   41,   42,   43,  124,   45,   94,
18841ebfbe2Schristos    47,   -1,   -1,  124,   -1,   -1,   -1,   94,   -1,   94,
18941ebfbe2Schristos    -1,  124,   37,   60,  124,   62,   94,   42,   43,   -1,
19041ebfbe2Schristos    45,   -1,   47,  124,   -1,   -1,   -1,   -1,   -1,  124,
19141ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   37,   38,  124,   -1,  124,
19241ebfbe2Schristos    42,   43,   -1,   45,   -1,   47,  124,   94,   -1,   -1,
19341ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   60,   -1,
19441ebfbe2Schristos    62,   -1,   -1,   -1,   -1,   -1,   37,   38,   -1,  265,
19541ebfbe2Schristos   266,   42,   43,   -1,   45,   -1,   47,  124,  263,  264,
19641ebfbe2Schristos   265,  266,   -1,  257,   -1,   -1,   -1,   -1,   -1,   60,
19741ebfbe2Schristos    -1,   62,   94,   -1,   -1,   -1,   -1,   -1,   -1,  259,
19841ebfbe2Schristos   260,  261,  262,  263,  264,  265,  266,  259,  260,  261,
19941ebfbe2Schristos   262,  263,  264,  265,  266,  259,  260,  261,  262,  263,
20041ebfbe2Schristos   264,  265,  266,   94,  259,  260,  261,  262,  263,  264,
20141ebfbe2Schristos   265,  266,  259,  260,  261,  262,  263,  264,  259,  260,
20241ebfbe2Schristos   261,  262,  263,  264,   -1,   -1,  259,  260,   -1,  259,
20341ebfbe2Schristos   260,   -1,   -1,  124,  259,  260,   -1,   -1,  259,  260,
20441ebfbe2Schristos   261,  262,   -1,  259,  259,  260,  261,  262,   -1,   -1,
20541ebfbe2Schristos    -1,   -1,  259,  260,  259,  260,  261,  262,  263,  264,
20641ebfbe2Schristos    -1,  259,  260,  261,  262,  263,  264,   -1,   -1,   -1,
20741ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   37,   38,   -1,
20841ebfbe2Schristos    -1,   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,
20941ebfbe2Schristos    -1,   -1,  259,  260,  261,  262,  263,  264,  265,  266,
21041ebfbe2Schristos    60,   -1,   62,   37,   38,   -1,   -1,   -1,   42,   43,
21141ebfbe2Schristos    37,   45,   -1,   47,   -1,   42,   43,   -1,   45,   -1,
21241ebfbe2Schristos    47,   -1,   -1,   -1,   -1,   -1,   60,   -1,   62,   -1,
21341ebfbe2Schristos    -1,   -1,   -1,   60,   94,   62,   -1,   -1,   -1,  261,
21441ebfbe2Schristos   262,  263,  264,  265,  266,   -1,   -1,   -1,   -1,   -1,
21541ebfbe2Schristos    -1,   -1,   -1,   37,   38,   -1,   -1,   -1,   42,   43,
21641ebfbe2Schristos    94,   45,   -1,   47,  124,   -1,   -1,   -1,  259,  260,
21741ebfbe2Schristos   261,  262,  263,  264,  265,  266,   60,   -1,   62,    2,
21841ebfbe2Schristos     3,    4,    5,    6,   -1,   -1,   -1,   -1,   -1,   -1,
21941ebfbe2Schristos   124,   14,   15,   16,   17,   18,   19,   20,   21,   22,
22041ebfbe2Schristos    23,   24,   25,   26,   27,   28,   29,   30,   31,   -1,
22141ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22241ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22341ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22441ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22541ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22641ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22741ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22841ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
22941ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
23041ebfbe2Schristos   260,  261,  262,  263,  264,  265,  266,   -1,   -1,   -1,
23141ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
23241ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,  262,  263,
23341ebfbe2Schristos   264,  265,  266,   -1,  261,  262,  263,  264,  265,  266,
23441ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
23541ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
23641ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
23741ebfbe2Schristos    -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,  262,  263,
23841ebfbe2Schristos   264,  265,  266,
23941ebfbe2Schristos };
24041ebfbe2Schristos #define YYFINAL 7
24141ebfbe2Schristos #ifndef YYDEBUG
24241ebfbe2Schristos #define YYDEBUG 0
24341ebfbe2Schristos #endif
24441ebfbe2Schristos #define YYMAXTOKEN 268
24541ebfbe2Schristos #if YYDEBUG
24641ebfbe2Schristos const char * const yyname[] = {
24741ebfbe2Schristos "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,
24841ebfbe2Schristos "'!'",0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,
24941ebfbe2Schristos 0,0,0,0,0,"'<'",0,"'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
25041ebfbe2Schristos 0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,
25141ebfbe2Schristos "'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
25241ebfbe2Schristos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
25341ebfbe2Schristos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
25441ebfbe2Schristos 0,0,0,0,0,0,0,0,0,0,0,0,0,"NUMBER","ERROR","LOR","LAND","EQ","NE","LE","GE",
25541ebfbe2Schristos "LSHIFT","RSHIFT","UMINUS","UPLUS",
25641ebfbe2Schristos };
25741ebfbe2Schristos const char * const yyrule[] = {
25841ebfbe2Schristos "$accept : top",
25941ebfbe2Schristos "top : expr",
26041ebfbe2Schristos "expr : expr '+' expr",
26141ebfbe2Schristos "expr : expr '-' expr",
26241ebfbe2Schristos "expr : expr '*' expr",
26341ebfbe2Schristos "expr : expr '/' expr",
26441ebfbe2Schristos "expr : expr '%' expr",
26541ebfbe2Schristos "expr : expr LSHIFT expr",
26641ebfbe2Schristos "expr : expr RSHIFT expr",
26741ebfbe2Schristos "expr : expr '<' expr",
26841ebfbe2Schristos "expr : expr '>' expr",
26941ebfbe2Schristos "expr : expr LE expr",
27041ebfbe2Schristos "expr : expr GE expr",
27141ebfbe2Schristos "expr : expr EQ expr",
27241ebfbe2Schristos "expr : expr NE expr",
27341ebfbe2Schristos "expr : expr '&' expr",
27441ebfbe2Schristos "expr : expr '^' expr",
27541ebfbe2Schristos "expr : expr '|' expr",
27641ebfbe2Schristos "expr : expr LAND expr",
27741ebfbe2Schristos "expr : expr LOR expr",
27841ebfbe2Schristos "expr : '(' expr ')'",
27941ebfbe2Schristos "expr : '-' expr",
28041ebfbe2Schristos "expr : '+' expr",
28141ebfbe2Schristos "expr : '!' expr",
28241ebfbe2Schristos "expr : '~' expr",
28341ebfbe2Schristos "expr : NUMBER",
28441ebfbe2Schristos };
28541ebfbe2Schristos #endif
28641ebfbe2Schristos #ifndef YYSTYPE
28741ebfbe2Schristos typedef int YYSTYPE;
28841ebfbe2Schristos #endif
28941ebfbe2Schristos #ifdef YYSTACKSIZE
29041ebfbe2Schristos #undef YYMAXDEPTH
29141ebfbe2Schristos #define YYMAXDEPTH YYSTACKSIZE
29241ebfbe2Schristos #else
29341ebfbe2Schristos #ifdef YYMAXDEPTH
29441ebfbe2Schristos #define YYSTACKSIZE YYMAXDEPTH
29541ebfbe2Schristos #else
29641ebfbe2Schristos #define YYSTACKSIZE 10000
29741ebfbe2Schristos #define YYMAXDEPTH 10000
29841ebfbe2Schristos #endif
29941ebfbe2Schristos #endif
30041ebfbe2Schristos #define YYINITSTACKSIZE 200
30141ebfbe2Schristos int yydebug;
30241ebfbe2Schristos int yynerrs;
30341ebfbe2Schristos int yyerrflag;
30441ebfbe2Schristos int yychar;
30541ebfbe2Schristos short *yyssp;
30641ebfbe2Schristos YYSTYPE *yyvsp;
30741ebfbe2Schristos YYSTYPE yyval;
30841ebfbe2Schristos static YYSTYPE yyvalzero;
30941ebfbe2Schristos YYSTYPE yylval;
31041ebfbe2Schristos short *yyss;
31141ebfbe2Schristos short *yysslim;
31241ebfbe2Schristos YYSTYPE *yyvs;
31341ebfbe2Schristos int yystacksize;
31441ebfbe2Schristos int yyparse(void);
315*912aaddfSuebayasi #line 85 "../../../usr.bin/m4/parser.y"
31641ebfbe2Schristos 
31741ebfbe2Schristos #line 315 "parser.c"
31841ebfbe2Schristos /* allocate initial stack or double stack size, up to YYMAXDEPTH */
31941ebfbe2Schristos static int yygrowstack(void);
yygrowstack(void)32041ebfbe2Schristos static int yygrowstack(void)
32141ebfbe2Schristos {
32241ebfbe2Schristos     int newsize, i;
32341ebfbe2Schristos     short *newss;
32441ebfbe2Schristos     YYSTYPE *newvs;
32541ebfbe2Schristos 
32641ebfbe2Schristos     if ((newsize = yystacksize) == 0)
32741ebfbe2Schristos         newsize = YYINITSTACKSIZE;
32841ebfbe2Schristos     else if (newsize >= YYMAXDEPTH)
32941ebfbe2Schristos         return -1;
33041ebfbe2Schristos     else if ((newsize *= 2) > YYMAXDEPTH)
33141ebfbe2Schristos         newsize = YYMAXDEPTH;
33241ebfbe2Schristos     i = yyssp - yyss;
33341ebfbe2Schristos     if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
33441ebfbe2Schristos         return -1;
33541ebfbe2Schristos     yyss = newss;
33641ebfbe2Schristos     yyssp = newss + i;
33741ebfbe2Schristos     if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
33841ebfbe2Schristos         return -1;
33941ebfbe2Schristos     yyvs = newvs;
34041ebfbe2Schristos     yyvsp = newvs + i;
34141ebfbe2Schristos     yystacksize = newsize;
34241ebfbe2Schristos     yysslim = yyss + newsize - 1;
34341ebfbe2Schristos     return 0;
34441ebfbe2Schristos }
34541ebfbe2Schristos 
34641ebfbe2Schristos #define YYABORT goto yyabort
34741ebfbe2Schristos #define YYREJECT goto yyabort
34841ebfbe2Schristos #define YYACCEPT goto yyaccept
34941ebfbe2Schristos #define YYERROR goto yyerrlab
35041ebfbe2Schristos int
yyparse(void)35141ebfbe2Schristos yyparse(void)
35241ebfbe2Schristos {
35341ebfbe2Schristos     int yym, yyn, yystate;
35441ebfbe2Schristos #if YYDEBUG
35541ebfbe2Schristos     const char *yys;
35641ebfbe2Schristos 
35741ebfbe2Schristos     if ((yys = getenv("YYDEBUG")) != NULL)
35841ebfbe2Schristos     {
35941ebfbe2Schristos         yyn = *yys;
36041ebfbe2Schristos         if (yyn >= '0' && yyn <= '9')
36141ebfbe2Schristos             yydebug = yyn - '0';
36241ebfbe2Schristos     }
36341ebfbe2Schristos #endif
36441ebfbe2Schristos 
36541ebfbe2Schristos     yynerrs = 0;
36641ebfbe2Schristos     yyerrflag = 0;
36741ebfbe2Schristos     yychar = (-1);
36841ebfbe2Schristos 
36941ebfbe2Schristos     if (yyss == NULL && yygrowstack()) goto yyoverflow;
37041ebfbe2Schristos     yyssp = yyss;
37141ebfbe2Schristos     yyvsp = yyvs;
37241ebfbe2Schristos     *yyssp = yystate = 0;
37341ebfbe2Schristos 
37441ebfbe2Schristos yyloop:
37541ebfbe2Schristos     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
37641ebfbe2Schristos     if (yychar < 0)
37741ebfbe2Schristos     {
37841ebfbe2Schristos         if ((yychar = yylex()) < 0) yychar = 0;
37941ebfbe2Schristos #if YYDEBUG
38041ebfbe2Schristos         if (yydebug)
38141ebfbe2Schristos         {
38241ebfbe2Schristos             yys = 0;
38341ebfbe2Schristos             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
38441ebfbe2Schristos             if (!yys) yys = "illegal-symbol";
38541ebfbe2Schristos             printf("%sdebug: state %d, reading %d (%s)\n",
38641ebfbe2Schristos                     YYPREFIX, yystate, yychar, yys);
38741ebfbe2Schristos         }
38841ebfbe2Schristos #endif
38941ebfbe2Schristos     }
39041ebfbe2Schristos     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
39141ebfbe2Schristos             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
39241ebfbe2Schristos     {
39341ebfbe2Schristos #if YYDEBUG
39441ebfbe2Schristos         if (yydebug)
39541ebfbe2Schristos             printf("%sdebug: state %d, shifting to state %d\n",
39641ebfbe2Schristos                     YYPREFIX, yystate, yytable[yyn]);
39741ebfbe2Schristos #endif
39841ebfbe2Schristos         if (yyssp >= yysslim && yygrowstack())
39941ebfbe2Schristos         {
40041ebfbe2Schristos             goto yyoverflow;
40141ebfbe2Schristos         }
40241ebfbe2Schristos         *++yyssp = yystate = yytable[yyn];
40341ebfbe2Schristos         *++yyvsp = yylval;
40441ebfbe2Schristos         yychar = (-1);
40541ebfbe2Schristos         if (yyerrflag > 0)  --yyerrflag;
40641ebfbe2Schristos         goto yyloop;
40741ebfbe2Schristos     }
40841ebfbe2Schristos     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
40941ebfbe2Schristos             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
41041ebfbe2Schristos     {
41141ebfbe2Schristos         yyn = yytable[yyn];
41241ebfbe2Schristos         goto yyreduce;
41341ebfbe2Schristos     }
41441ebfbe2Schristos     if (yyerrflag) goto yyinrecovery;
41541ebfbe2Schristos     goto yynewerror;
41641ebfbe2Schristos yynewerror:
41741ebfbe2Schristos     yyerror("syntax error");
41841ebfbe2Schristos     goto yyerrlab;
41941ebfbe2Schristos yyerrlab:
42041ebfbe2Schristos     ++yynerrs;
42141ebfbe2Schristos yyinrecovery:
42241ebfbe2Schristos     if (yyerrflag < 3)
42341ebfbe2Schristos     {
42441ebfbe2Schristos         yyerrflag = 3;
42541ebfbe2Schristos         for (;;)
42641ebfbe2Schristos         {
42741ebfbe2Schristos             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
42841ebfbe2Schristos                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
42941ebfbe2Schristos             {
43041ebfbe2Schristos #if YYDEBUG
43141ebfbe2Schristos                 if (yydebug)
43241ebfbe2Schristos                     printf("%sdebug: state %d, error recovery shifting\
43341ebfbe2Schristos  to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
43441ebfbe2Schristos #endif
43541ebfbe2Schristos                 if (yyssp >= yysslim && yygrowstack())
43641ebfbe2Schristos                 {
43741ebfbe2Schristos                     goto yyoverflow;
43841ebfbe2Schristos                 }
43941ebfbe2Schristos                 *++yyssp = yystate = yytable[yyn];
44041ebfbe2Schristos                 *++yyvsp = yylval;
44141ebfbe2Schristos                 goto yyloop;
44241ebfbe2Schristos             }
44341ebfbe2Schristos             else
44441ebfbe2Schristos             {
44541ebfbe2Schristos #if YYDEBUG
44641ebfbe2Schristos                 if (yydebug)
44741ebfbe2Schristos                     printf("%sdebug: error recovery discarding state %d\n",
44841ebfbe2Schristos                             YYPREFIX, *yyssp);
44941ebfbe2Schristos #endif
45041ebfbe2Schristos                 if (yyssp <= yyss) goto yyabort;
45141ebfbe2Schristos                 --yyssp;
45241ebfbe2Schristos                 --yyvsp;
45341ebfbe2Schristos             }
45441ebfbe2Schristos         }
45541ebfbe2Schristos     }
45641ebfbe2Schristos     else
45741ebfbe2Schristos     {
45841ebfbe2Schristos         if (yychar == 0) goto yyabort;
45941ebfbe2Schristos #if YYDEBUG
46041ebfbe2Schristos         if (yydebug)
46141ebfbe2Schristos         {
46241ebfbe2Schristos             yys = 0;
46341ebfbe2Schristos             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
46441ebfbe2Schristos             if (!yys) yys = "illegal-symbol";
46541ebfbe2Schristos             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
46641ebfbe2Schristos                     YYPREFIX, yystate, yychar, yys);
46741ebfbe2Schristos         }
46841ebfbe2Schristos #endif
46941ebfbe2Schristos         yychar = (-1);
47041ebfbe2Schristos         goto yyloop;
47141ebfbe2Schristos     }
47241ebfbe2Schristos yyreduce:
47341ebfbe2Schristos #if YYDEBUG
47441ebfbe2Schristos     if (yydebug)
47541ebfbe2Schristos         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
47641ebfbe2Schristos                 YYPREFIX, yystate, yyn, yyrule[yyn]);
47741ebfbe2Schristos #endif
47841ebfbe2Schristos     yym = yylen[yyn];
47941ebfbe2Schristos     if (yym)
48041ebfbe2Schristos         yyval = yyvsp[1-yym];
48141ebfbe2Schristos     else
48241ebfbe2Schristos         yyval = yyvalzero;
48341ebfbe2Schristos     switch (yyn)
48441ebfbe2Schristos     {
48541ebfbe2Schristos case 1:
486*912aaddfSuebayasi #line 45 "../../../usr.bin/m4/parser.y"
48741ebfbe2Schristos { end_result = yyvsp[0]; }
48841ebfbe2Schristos break;
48941ebfbe2Schristos case 2:
490*912aaddfSuebayasi #line 47 "../../../usr.bin/m4/parser.y"
49141ebfbe2Schristos { yyval = yyvsp[-2] + yyvsp[0]; }
49241ebfbe2Schristos break;
49341ebfbe2Schristos case 3:
494*912aaddfSuebayasi #line 48 "../../../usr.bin/m4/parser.y"
49541ebfbe2Schristos { yyval = yyvsp[-2] - yyvsp[0]; }
49641ebfbe2Schristos break;
49741ebfbe2Schristos case 4:
498*912aaddfSuebayasi #line 49 "../../../usr.bin/m4/parser.y"
49941ebfbe2Schristos { yyval = yyvsp[-2] * yyvsp[0]; }
50041ebfbe2Schristos break;
50141ebfbe2Schristos case 5:
502*912aaddfSuebayasi #line 50 "../../../usr.bin/m4/parser.y"
50341ebfbe2Schristos {
50441ebfbe2Schristos 		if (yyvsp[0] == 0) {
50541ebfbe2Schristos 			yyerror("division by zero");
50641ebfbe2Schristos 			exit(1);
50741ebfbe2Schristos 		}
50841ebfbe2Schristos 		yyval = yyvsp[-2] / yyvsp[0];
50941ebfbe2Schristos 	}
51041ebfbe2Schristos break;
51141ebfbe2Schristos case 6:
512*912aaddfSuebayasi #line 57 "../../../usr.bin/m4/parser.y"
51341ebfbe2Schristos {
51441ebfbe2Schristos 		if (yyvsp[0] == 0) {
51541ebfbe2Schristos 			yyerror("modulo zero");
51641ebfbe2Schristos 			exit(1);
51741ebfbe2Schristos 		}
51841ebfbe2Schristos 		yyval = yyvsp[-2] % yyvsp[0];
51941ebfbe2Schristos 	}
52041ebfbe2Schristos break;
52141ebfbe2Schristos case 7:
522*912aaddfSuebayasi #line 64 "../../../usr.bin/m4/parser.y"
52341ebfbe2Schristos { yyval = yyvsp[-2] << yyvsp[0]; }
52441ebfbe2Schristos break;
52541ebfbe2Schristos case 8:
526*912aaddfSuebayasi #line 65 "../../../usr.bin/m4/parser.y"
52741ebfbe2Schristos { yyval = yyvsp[-2] >> yyvsp[0]; }
52841ebfbe2Schristos break;
52941ebfbe2Schristos case 9:
530*912aaddfSuebayasi #line 66 "../../../usr.bin/m4/parser.y"
53141ebfbe2Schristos { yyval = yyvsp[-2] < yyvsp[0]; }
53241ebfbe2Schristos break;
53341ebfbe2Schristos case 10:
534*912aaddfSuebayasi #line 67 "../../../usr.bin/m4/parser.y"
53541ebfbe2Schristos { yyval = yyvsp[-2] > yyvsp[0]; }
53641ebfbe2Schristos break;
53741ebfbe2Schristos case 11:
538*912aaddfSuebayasi #line 68 "../../../usr.bin/m4/parser.y"
53941ebfbe2Schristos { yyval = yyvsp[-2] <= yyvsp[0]; }
54041ebfbe2Schristos break;
54141ebfbe2Schristos case 12:
542*912aaddfSuebayasi #line 69 "../../../usr.bin/m4/parser.y"
54341ebfbe2Schristos { yyval = yyvsp[-2] >= yyvsp[0]; }
54441ebfbe2Schristos break;
54541ebfbe2Schristos case 13:
546*912aaddfSuebayasi #line 70 "../../../usr.bin/m4/parser.y"
54741ebfbe2Schristos { yyval = yyvsp[-2] == yyvsp[0]; }
54841ebfbe2Schristos break;
54941ebfbe2Schristos case 14:
550*912aaddfSuebayasi #line 71 "../../../usr.bin/m4/parser.y"
55141ebfbe2Schristos { yyval = yyvsp[-2] != yyvsp[0]; }
55241ebfbe2Schristos break;
55341ebfbe2Schristos case 15:
554*912aaddfSuebayasi #line 72 "../../../usr.bin/m4/parser.y"
55541ebfbe2Schristos { yyval = yyvsp[-2] & yyvsp[0]; }
55641ebfbe2Schristos break;
55741ebfbe2Schristos case 16:
558*912aaddfSuebayasi #line 73 "../../../usr.bin/m4/parser.y"
55941ebfbe2Schristos { yyval = yyvsp[-2] ^ yyvsp[0]; }
56041ebfbe2Schristos break;
56141ebfbe2Schristos case 17:
562*912aaddfSuebayasi #line 74 "../../../usr.bin/m4/parser.y"
56341ebfbe2Schristos { yyval = yyvsp[-2] | yyvsp[0]; }
56441ebfbe2Schristos break;
56541ebfbe2Schristos case 18:
566*912aaddfSuebayasi #line 75 "../../../usr.bin/m4/parser.y"
56741ebfbe2Schristos { yyval = yyvsp[-2] && yyvsp[0]; }
56841ebfbe2Schristos break;
56941ebfbe2Schristos case 19:
570*912aaddfSuebayasi #line 76 "../../../usr.bin/m4/parser.y"
57141ebfbe2Schristos { yyval = yyvsp[-2] || yyvsp[0]; }
57241ebfbe2Schristos break;
57341ebfbe2Schristos case 20:
574*912aaddfSuebayasi #line 77 "../../../usr.bin/m4/parser.y"
57541ebfbe2Schristos { yyval = yyvsp[-1]; }
57641ebfbe2Schristos break;
57741ebfbe2Schristos case 21:
578*912aaddfSuebayasi #line 78 "../../../usr.bin/m4/parser.y"
57941ebfbe2Schristos { yyval = -yyvsp[0]; }
58041ebfbe2Schristos break;
58141ebfbe2Schristos case 22:
582*912aaddfSuebayasi #line 79 "../../../usr.bin/m4/parser.y"
58341ebfbe2Schristos { yyval = yyvsp[0]; }
58441ebfbe2Schristos break;
58541ebfbe2Schristos case 23:
586*912aaddfSuebayasi #line 80 "../../../usr.bin/m4/parser.y"
58741ebfbe2Schristos { yyval = !yyvsp[0]; }
58841ebfbe2Schristos break;
58941ebfbe2Schristos case 24:
590*912aaddfSuebayasi #line 81 "../../../usr.bin/m4/parser.y"
59141ebfbe2Schristos { yyval = ~yyvsp[0]; }
59241ebfbe2Schristos break;
59341ebfbe2Schristos #line 591 "parser.c"
59441ebfbe2Schristos     }
59541ebfbe2Schristos     yyssp -= yym;
59641ebfbe2Schristos     yystate = *yyssp;
59741ebfbe2Schristos     yyvsp -= yym;
59841ebfbe2Schristos     yym = yylhs[yyn];
59941ebfbe2Schristos     if (yystate == 0 && yym == 0)
60041ebfbe2Schristos     {
60141ebfbe2Schristos #if YYDEBUG
60241ebfbe2Schristos         if (yydebug)
60341ebfbe2Schristos             printf("%sdebug: after reduction, shifting from state 0 to\
60441ebfbe2Schristos  state %d\n", YYPREFIX, YYFINAL);
60541ebfbe2Schristos #endif
60641ebfbe2Schristos         yystate = YYFINAL;
60741ebfbe2Schristos         *++yyssp = YYFINAL;
60841ebfbe2Schristos         *++yyvsp = yyval;
60941ebfbe2Schristos         if (yychar < 0)
61041ebfbe2Schristos         {
61141ebfbe2Schristos             if ((yychar = yylex()) < 0) yychar = 0;
61241ebfbe2Schristos #if YYDEBUG
61341ebfbe2Schristos             if (yydebug)
61441ebfbe2Schristos             {
61541ebfbe2Schristos                 yys = 0;
61641ebfbe2Schristos                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
61741ebfbe2Schristos                 if (!yys) yys = "illegal-symbol";
61841ebfbe2Schristos                 printf("%sdebug: state %d, reading %d (%s)\n",
61941ebfbe2Schristos                         YYPREFIX, YYFINAL, yychar, yys);
62041ebfbe2Schristos             }
62141ebfbe2Schristos #endif
62241ebfbe2Schristos         }
62341ebfbe2Schristos         if (yychar == 0) goto yyaccept;
62441ebfbe2Schristos         goto yyloop;
62541ebfbe2Schristos     }
62641ebfbe2Schristos     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
62741ebfbe2Schristos             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
62841ebfbe2Schristos         yystate = yytable[yyn];
62941ebfbe2Schristos     else
63041ebfbe2Schristos         yystate = yydgoto[yym];
63141ebfbe2Schristos #if YYDEBUG
63241ebfbe2Schristos     if (yydebug)
63341ebfbe2Schristos         printf("%sdebug: after reduction, shifting from state %d \
63441ebfbe2Schristos to state %d\n", YYPREFIX, *yyssp, yystate);
63541ebfbe2Schristos #endif
63641ebfbe2Schristos     if (yyssp >= yysslim && yygrowstack())
63741ebfbe2Schristos     {
63841ebfbe2Schristos         goto yyoverflow;
63941ebfbe2Schristos     }
64041ebfbe2Schristos     *++yyssp = yystate;
64141ebfbe2Schristos     *++yyvsp = yyval;
64241ebfbe2Schristos     goto yyloop;
64341ebfbe2Schristos yyoverflow:
64441ebfbe2Schristos     yyerror("yacc stack overflow");
64541ebfbe2Schristos yyabort:
64641ebfbe2Schristos     return (1);
64741ebfbe2Schristos yyaccept:
64841ebfbe2Schristos     return (0);
64941ebfbe2Schristos }
650