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