minix/tools/m4/bootstrap/parser.c
Thomas Veerman c8a0e2f4c6 Import NetBSD tools and build.sh
This commit finalizes support for cross compilation. The tools
directory are all links to the actual tools and are built on the
host system to build Minix. build.sh is the work horse that takes
care of all environment settings. It's slightly adjusted for Minix.
The /usr/src/Makefile has additional targets needed for cross
compilation.
2012-06-18 10:54:51 +00:00

650 lines
22 KiB
C

#if HAVE_NBTOOL_CONFIG_H
#include "nbtool_config.h"
#endif
#include <stdlib.h>
#ifndef lint
#if 0
static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
#else
#if defined(__NetBSD__) && defined(__IDSTRING)
__IDSTRING(yyrcsid, "NetBSD: skeleton.c,v 1.29 2008/07/18 14:25:37 drochner Exp ");
#endif /* __NetBSD__ && __IDSTRING */
#endif /* 0 */
#endif /* lint */
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYLEX yylex()
#define YYEMPTY -1
#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#line 2 "../../../usr.bin/m4/parser.y"
/* NetBSD: parser.y,v 1.2 2009/10/26 21:11:28 christos Exp */
/* $OpenBSD: parser.y,v 1.6 2008/08/21 21:00:14 espie Exp $ */
/*
* Copyright (c) 2004 Marc Espie <espie@cvs.openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#if HAVE_NBTOOL_CONFIG_H
#include "nbtool_config.h"
#endif
__RCSID("NetBSD: parser.y,v 1.2 2009/10/26 21:11:28 christos Exp ");
#include <stdint.h>
#define YYSTYPE int32_t
extern int32_t end_result;
extern int yylex(void);
extern int yyerror(const char *);
#line 48 "parser.c"
#define NUMBER 257
#define ERROR 258
#define LOR 259
#define LAND 260
#define EQ 261
#define NE 262
#define LE 263
#define GE 264
#define LSHIFT 265
#define RSHIFT 266
#define UMINUS 267
#define UPLUS 268
#define YYERRCODE 256
const short yylhs[] = { -1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1,
};
const short yylen[] = { 2,
1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2, 2, 2, 2, 1,
};
const short yydefred[] = { 0,
25, 0, 0, 0, 0, 0, 0, 0, 22, 21,
23, 24, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4, 5, 6,
};
const short yydgoto[] = { 7,
8,
};
const short yysindex[] = { -13,
0, -13, -13, -13, -13, -13, 0, 190, 0, 0,
0, 0, 114, -13, -13, -13, -13, -13, -13, -13,
-13, -13, -13, -13, -13, -13, -13, -13, -13, -13,
-13, 0, 321, 347, 159, 397, 354, -24, -24, -35,
-35, -35, -35, 136, 136, -31, -31, 0, 0, 0,
};
const short yyrindex[] = { 0,
0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 65, 56, 51, 48, 74, 60, 66, 34,
40, 76, 83, 17, 26, 1, 9, 0, 0, 0,
};
const short yygindex[] = { 0,
458,
};
#define YYTABLESIZE 663
const short yytable[] = { 0,
2, 31, 1, 0, 0, 31, 29, 27, 3, 28,
29, 30, 31, 0, 0, 30, 7, 29, 27, 4,
28, 0, 30, 0, 0, 8, 6, 0, 0, 2,
0, 3, 0, 9, 0, 21, 0, 23, 2, 11,
0, 2, 0, 2, 0, 2, 3, 16, 0, 3,
17, 3, 0, 3, 7, 18, 0, 7, 0, 13,
2, 0, 2, 8, 19, 14, 8, 0, 3, 0,
3, 9, 0, 15, 9, 10, 7, 11, 7, 0,
11, 0, 12, 0, 0, 8, 0, 8, 16, 0,
0, 17, 0, 9, 2, 9, 18, 13, 0, 11,
13, 11, 3, 14, 0, 19, 14, 0, 0, 0,
7, 15, 5, 10, 15, 0, 10, 0, 0, 8,
12, 0, 0, 12, 2, 0, 0, 9, 0, 0,
0, 0, 3, 11, 0, 10, 0, 10, 0, 0,
7, 16, 12, 0, 12, 0, 0, 0, 0, 8,
31, 18, 0, 13, 32, 29, 27, 9, 28, 14,
30, 0, 0, 11, 0, 0, 0, 15, 0, 10,
0, 16, 31, 21, 17, 23, 12, 29, 27, 0,
28, 0, 30, 13, 0, 0, 0, 0, 0, 14,
0, 0, 0, 0, 0, 31, 18, 15, 0, 10,
29, 27, 0, 28, 0, 30, 12, 17, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
23, 0, 0, 0, 0, 0, 31, 18, 0, 25,
26, 29, 27, 0, 28, 0, 30, 16, 22, 24,
25, 26, 0, 1, 0, 0, 0, 0, 0, 21,
0, 23, 17, 0, 0, 0, 0, 0, 0, 2,
2, 2, 2, 2, 2, 2, 2, 3, 3, 3,
3, 3, 3, 3, 3, 7, 7, 7, 7, 7,
7, 7, 7, 17, 8, 8, 8, 8, 8, 8,
8, 8, 9, 9, 9, 9, 9, 9, 11, 11,
11, 11, 11, 11, 0, 0, 16, 16, 0, 17,
17, 0, 0, 16, 18, 18, 0, 0, 13, 13,
13, 13, 0, 19, 14, 14, 14, 14, 0, 0,
0, 0, 15, 15, 10, 10, 10, 10, 10, 10,
0, 12, 12, 12, 12, 12, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 31, 18, 0,
0, 0, 29, 27, 0, 28, 0, 30, 0, 0,
0, 0, 14, 15, 19, 20, 22, 24, 25, 26,
21, 0, 23, 31, 18, 0, 0, 0, 29, 27,
31, 28, 0, 30, 0, 29, 27, 0, 28, 0,
30, 0, 0, 0, 0, 0, 21, 0, 23, 0,
0, 0, 0, 21, 17, 23, 0, 0, 0, 19,
20, 22, 24, 25, 26, 0, 0, 0, 0, 0,
0, 0, 0, 31, 18, 0, 0, 0, 29, 27,
17, 28, 0, 30, 16, 0, 0, 0, 14, 15,
19, 20, 22, 24, 25, 26, 21, 0, 23, 9,
10, 11, 12, 13, 0, 0, 0, 0, 0, 0,
16, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 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, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
15, 19, 20, 22, 24, 25, 26, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 19, 20, 22,
24, 25, 26, 0, 19, 20, 22, 24, 25, 26,
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, 19, 20, 22,
24, 25, 26,
};
const short yycheck[] = { -1,
0, 37, 0, -1, -1, 37, 42, 43, 0, 45,
42, 47, 37, -1, -1, 47, 0, 42, 43, 33,
45, -1, 47, -1, -1, 0, 40, -1, -1, 43,
-1, 45, -1, 0, -1, 60, -1, 62, 38, 0,
-1, 41, -1, 43, -1, 45, 38, 0, -1, 41,
0, 43, -1, 45, 38, 0, -1, 41, -1, 0,
60, -1, 62, 38, 0, 0, 41, -1, 60, -1,
62, 38, -1, 0, 41, 0, 60, 38, 62, -1,
41, -1, 0, -1, -1, 60, -1, 62, 41, -1,
-1, 41, -1, 60, 94, 62, 41, 38, -1, 60,
41, 62, 94, 38, -1, 41, 41, -1, -1, -1,
94, 38, 126, 38, 41, -1, 41, -1, -1, 94,
38, -1, -1, 41, 124, -1, -1, 94, -1, -1,
-1, -1, 124, 94, -1, 60, -1, 62, -1, -1,
124, 94, 60, -1, 62, -1, -1, -1, -1, 124,
37, 38, -1, 94, 41, 42, 43, 124, 45, 94,
47, -1, -1, 124, -1, -1, -1, 94, -1, 94,
-1, 124, 37, 60, 124, 62, 94, 42, 43, -1,
45, -1, 47, 124, -1, -1, -1, -1, -1, 124,
-1, -1, -1, -1, -1, 37, 38, 124, -1, 124,
42, 43, -1, 45, -1, 47, 124, 94, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 60, -1,
62, -1, -1, -1, -1, -1, 37, 38, -1, 265,
266, 42, 43, -1, 45, -1, 47, 124, 263, 264,
265, 266, -1, 257, -1, -1, -1, -1, -1, 60,
-1, 62, 94, -1, -1, -1, -1, -1, -1, 259,
260, 261, 262, 263, 264, 265, 266, 259, 260, 261,
262, 263, 264, 265, 266, 259, 260, 261, 262, 263,
264, 265, 266, 94, 259, 260, 261, 262, 263, 264,
265, 266, 259, 260, 261, 262, 263, 264, 259, 260,
261, 262, 263, 264, -1, -1, 259, 260, -1, 259,
260, -1, -1, 124, 259, 260, -1, -1, 259, 260,
261, 262, -1, 259, 259, 260, 261, 262, -1, -1,
-1, -1, 259, 260, 259, 260, 261, 262, 263, 264,
-1, 259, 260, 261, 262, 263, 264, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
-1, -1, 42, 43, -1, 45, -1, 47, -1, -1,
-1, -1, 259, 260, 261, 262, 263, 264, 265, 266,
60, -1, 62, 37, 38, -1, -1, -1, 42, 43,
37, 45, -1, 47, -1, 42, 43, -1, 45, -1,
47, -1, -1, -1, -1, -1, 60, -1, 62, -1,
-1, -1, -1, 60, 94, 62, -1, -1, -1, 261,
262, 263, 264, 265, 266, -1, -1, -1, -1, -1,
-1, -1, -1, 37, 38, -1, -1, -1, 42, 43,
94, 45, -1, 47, 124, -1, -1, -1, 259, 260,
261, 262, 263, 264, 265, 266, 60, -1, 62, 2,
3, 4, 5, 6, -1, -1, -1, -1, -1, -1,
124, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
260, 261, 262, 263, 264, 265, 266, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 261, 262, 263,
264, 265, 266, -1, 261, 262, 263, 264, 265, 266,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 261, 262, 263,
264, 265, 266,
};
#define YYFINAL 7
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 268
#if YYDEBUG
const char * const yyname[] = {
"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,
"'!'",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,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,
"'~'",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,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,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,0,0,0,0,0,0,0,0,0,0,"NUMBER","ERROR","LOR","LAND","EQ","NE","LE","GE",
"LSHIFT","RSHIFT","UMINUS","UPLUS",
};
const char * const yyrule[] = {
"$accept : top",
"top : expr",
"expr : expr '+' expr",
"expr : expr '-' expr",
"expr : expr '*' expr",
"expr : expr '/' expr",
"expr : expr '%' expr",
"expr : expr LSHIFT expr",
"expr : expr RSHIFT expr",
"expr : expr '<' expr",
"expr : expr '>' expr",
"expr : expr LE expr",
"expr : expr GE expr",
"expr : expr EQ expr",
"expr : expr NE expr",
"expr : expr '&' expr",
"expr : expr '^' expr",
"expr : expr '|' expr",
"expr : expr LAND expr",
"expr : expr LOR expr",
"expr : '(' expr ')'",
"expr : '-' expr",
"expr : '+' expr",
"expr : '!' expr",
"expr : '~' expr",
"expr : NUMBER",
};
#endif
#ifndef YYSTYPE
typedef int YYSTYPE;
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
static YYSTYPE yyvalzero;
YYSTYPE yylval;
short *yyss;
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
int yyparse(void);
#line 85 "../../../usr.bin/m4/parser.y"
#line 315 "parser.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(void);
static int yygrowstack(void)
{
int newsize, i;
short *newss;
YYSTYPE *newvs;
if ((newsize = yystacksize) == 0)
newsize = YYINITSTACKSIZE;
else if (newsize >= YYMAXDEPTH)
return -1;
else if ((newsize *= 2) > YYMAXDEPTH)
newsize = YYMAXDEPTH;
i = yyssp - yyss;
if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
return -1;
yyss = newss;
yyssp = newss + i;
if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
return -1;
yyvs = newvs;
yyvsp = newvs + i;
yystacksize = newsize;
yysslim = yyss + newsize - 1;
return 0;
}
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse(void)
{
int yym, yyn, yystate;
#if YYDEBUG
const char *yys;
if ((yys = getenv("YYDEBUG")) != NULL)
{
yyn = *yys;
if (yyn >= '0' && yyn <= '9')
yydebug = yyn - '0';
}
#endif
yynerrs = 0;
yyerrflag = 0;
yychar = (-1);
if (yyss == NULL && yygrowstack()) goto yyoverflow;
yyssp = yyss;
yyvsp = yyvs;
*yyssp = yystate = 0;
yyloop:
if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
}
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, shifting to state %d\n",
YYPREFIX, yystate, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
yychar = (-1);
if (yyerrflag > 0) --yyerrflag;
goto yyloop;
}
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
yyn = yytable[yyn];
goto yyreduce;
}
if (yyerrflag) goto yyinrecovery;
goto yynewerror;
yynewerror:
yyerror("syntax error");
goto yyerrlab;
yyerrlab:
++yynerrs;
yyinrecovery:
if (yyerrflag < 3)
{
yyerrflag = 3;
for (;;)
{
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
goto yyloop;
}
else
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: error recovery discarding state %d\n",
YYPREFIX, *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
--yyssp;
--yyvsp;
}
}
}
else
{
if (yychar == 0) goto yyabort;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
yychar = (-1);
goto yyloop;
}
yyreduce:
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
yym = yylen[yyn];
if (yym)
yyval = yyvsp[1-yym];
else
yyval = yyvalzero;
switch (yyn)
{
case 1:
#line 45 "../../../usr.bin/m4/parser.y"
{ end_result = yyvsp[0]; }
break;
case 2:
#line 47 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] + yyvsp[0]; }
break;
case 3:
#line 48 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] - yyvsp[0]; }
break;
case 4:
#line 49 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] * yyvsp[0]; }
break;
case 5:
#line 50 "../../../usr.bin/m4/parser.y"
{
if (yyvsp[0] == 0) {
yyerror("division by zero");
exit(1);
}
yyval = yyvsp[-2] / yyvsp[0];
}
break;
case 6:
#line 57 "../../../usr.bin/m4/parser.y"
{
if (yyvsp[0] == 0) {
yyerror("modulo zero");
exit(1);
}
yyval = yyvsp[-2] % yyvsp[0];
}
break;
case 7:
#line 64 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] << yyvsp[0]; }
break;
case 8:
#line 65 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] >> yyvsp[0]; }
break;
case 9:
#line 66 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] < yyvsp[0]; }
break;
case 10:
#line 67 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] > yyvsp[0]; }
break;
case 11:
#line 68 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] <= yyvsp[0]; }
break;
case 12:
#line 69 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] >= yyvsp[0]; }
break;
case 13:
#line 70 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] == yyvsp[0]; }
break;
case 14:
#line 71 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] != yyvsp[0]; }
break;
case 15:
#line 72 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] & yyvsp[0]; }
break;
case 16:
#line 73 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] ^ yyvsp[0]; }
break;
case 17:
#line 74 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] | yyvsp[0]; }
break;
case 18:
#line 75 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] && yyvsp[0]; }
break;
case 19:
#line 76 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-2] || yyvsp[0]; }
break;
case 20:
#line 77 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[-1]; }
break;
case 21:
#line 78 "../../../usr.bin/m4/parser.y"
{ yyval = -yyvsp[0]; }
break;
case 22:
#line 79 "../../../usr.bin/m4/parser.y"
{ yyval = yyvsp[0]; }
break;
case 23:
#line 80 "../../../usr.bin/m4/parser.y"
{ yyval = !yyvsp[0]; }
break;
case 24:
#line 81 "../../../usr.bin/m4/parser.y"
{ yyval = ~yyvsp[0]; }
break;
#line 591 "parser.c"
}
yyssp -= yym;
yystate = *yyssp;
yyvsp -= yym;
yym = yylhs[yyn];
if (yystate == 0 && yym == 0)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state 0 to\
state %d\n", YYPREFIX, YYFINAL);
#endif
yystate = YYFINAL;
*++yyssp = YYFINAL;
*++yyvsp = yyval;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, YYFINAL, yychar, yys);
}
#endif
}
if (yychar == 0) goto yyaccept;
goto yyloop;
}
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
yystate = yytable[yyn];
else
yystate = yydgoto[yym];
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate;
*++yyvsp = yyval;
goto yyloop;
yyoverflow:
yyerror("yacc stack overflow");
yyabort:
return (1);
yyaccept:
return (0);
}