Something went wrong. Try again.
Linux (musl ABI) build of the OpenBSD m4 program
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980/* original parser id follows *//* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" *//* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
#define YYBYACC 1#define YYMAJOR 2#define YYMINOR 0
#define YYEMPTY (-1)#define yyclearin (yychar = YYEMPTY)#define yyerrok (yyerrflag = 0)#define YYRECOVERING() (yyerrflag != 0)#define YYENOMEM (-2)#define YYEOF 0#define YYPREFIX "yy"
#define YYPURE 0
#line 2 "parser.y"/* $OpenBSD: parser.y,v 1.7 2012/04/12 17:00:11 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. */#include <math.h>#include <stdint.h>#define YYSTYPE int32_textern int32_t end_result;extern int yylex(void);extern int yyerror(const char *);#line 43 "parser.c"
#if ! defined(YYSTYPE) && ! defined(YYSTYPE_IS_DECLARED)/* Default: YYSTYPE is the semantic value type. */typedef int YYSTYPE;# define YYSTYPE_IS_DECLARED 1#endif
/* compatibility with bison */#ifdef YYPARSE_PARAM/* compatibility with FreeBSD */# ifdef YYPARSE_PARAM_TYPE# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)# else# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)# endif#else# define YYPARSE_DECL() yyparse(void)#endif
/* Parameters sent to lex. */#ifdef YYLEX_PARAM# define YYLEX_DECL() yylex(void *YYLEX_PARAM)# define YYLEX yylex(YYLEX_PARAM)#else# define YYLEX_DECL() yylex(void)# define YYLEX yylex()#endif
#if !(defined(yylex) || defined(YYSTATE))int YYLEX_DECL();#endif
/* Parameters sent to yyerror. */#ifndef YYERROR_DECL#define YYERROR_DECL() yyerror(const char *s)#endif#ifndef YYERROR_CALL#define YYERROR_CALL(msg) yyerror(msg)#endif
extern int YYPARSE_DECL();
#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 EXPONENT 267#define UMINUS 268#define UPLUS 269#define YYERRCODE 256typedef int YYINT;static const YYINT 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, 1,};static const YYINT yylen[] = { 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 1,};static const YYINT yydefred[] = { 0, 26, 0, 0, 0, 0, 0, 0, 0, 23, 22, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};static const YYINT yydgoto[] = { 7, 8,};static const YYINT yysindex[] = { 95, 0, 95, 95, 95, 95, 95, 0, 397, 0, 0, 0, 0, 383, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 0, 428, 471, 482, 185, 437, 493, 493, -10, -10, -10, -10, -23, -23, -34, -34, -267, -267, -267, -267,};static const YYINT yyrindex[] = { 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 62, 23, 101, 308, 201, 243, 124, 130, 144, 155, 79, 116, 51, 67, 1, 12, 28, 40,};static const YYINT yygindex[] = { 0, 582,};#define YYTABLESIZE 760static const YYINT yytable[] = { 32, 5, 1, 31, 0, 0, 0, 0, 29, 0, 0, 20, 6, 30, 31, 0, 0, 0, 0, 29, 27, 0, 28, 18, 30, 0, 0, 31, 7, 0, 0, 0, 29, 27, 0, 28, 0, 30, 5, 5, 4, 0, 5, 5, 5, 0, 5, 0, 5, 6, 6, 2, 20, 6, 6, 6, 0, 6, 0, 6, 0, 5, 19, 5, 18, 7, 7, 3, 0, 7, 7, 7, 6, 7, 6, 7, 0, 4, 4, 8, 0, 4, 4, 4, 0, 4, 0, 4, 7, 2, 7, 0, 2, 0, 2, 5, 2, 0, 0, 0, 4, 17, 4, 19, 0, 3, 6, 0, 3, 0, 3, 2, 3, 2, 0, 0, 9, 8, 0, 0, 8, 0, 7, 0, 10, 5, 0, 3, 4, 3, 12, 0, 0, 0, 4, 6, 6, 0, 2, 8, 3, 8, 17, 0, 11, 2, 0, 18, 0, 0, 0, 0, 7, 0, 9, 13, 0, 9, 0, 0, 0, 3, 10, 0, 4, 10, 0, 0, 12, 0, 0, 12, 0, 8, 0, 2, 9, 0, 9, 0, 0, 0, 11, 0, 10, 11, 10, 0, 0, 0, 12, 3, 12, 13, 0, 17, 13, 0, 0, 0, 0, 14, 0, 8, 11, 0, 11, 0, 0, 0, 9, 0, 0, 0, 0, 13, 0, 13, 10, 0, 0, 5, 31, 18, 12, 17, 0, 29, 27, 0, 28, 0, 30, 32, 0, 0, 0, 0, 11, 14, 9, 0, 14, 15, 32, 21, 0, 23, 10, 13, 0, 0, 0, 0, 12, 25, 26, 32, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 11, 0, 20, 6, 6, 6, 6, 6, 6, 6, 6, 13, 0, 15, 18, 18, 15, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 14, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 16, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 19, 19, 0, 0, 14, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 15, 8, 8, 8, 8, 8, 8, 8, 8, 16, 0, 0, 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 17, 17, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 16, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 13, 13, 13, 13, 13, 13, 31, 18, 0, 0, 33, 29, 27, 0, 28, 0, 30, 0, 16, 0, 31, 18, 0, 0, 0, 29, 27, 0, 28, 21, 30, 23, 19, 20, 22, 24, 25, 26, 32, 0, 0, 0, 0, 21, 0, 23, 14, 14, 14, 14, 0, 31, 18, 0, 0, 0, 29, 27, 0, 28, 31, 30, 0, 17, 0, 29, 27, 0, 28, 0, 30, 0, 0, 0, 21, 0, 23, 17, 0, 0, 0, 0, 0, 21, 0, 23, 0, 0, 15, 15, 15, 15, 0, 16, 31, 18, 0, 0, 0, 29, 27, 0, 28, 0, 30, 31, 18, 16, 17, 0, 29, 27, 0, 28, 0, 30, 31, 21, 0, 23, 0, 29, 27, 0, 28, 0, 30, 0, 21, 0, 23, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 16, 16, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 16, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 19, 20, 22, 24, 25, 26, 32, 0, 0, 0, 0, 0, 14, 15, 19, 20, 22, 24, 25, 26, 32, 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, 32, 0, 0, 19, 20, 22, 24, 25, 26, 32, 0, 0, 0, 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, 32, 0, 0, 0, 0, 19, 20, 22, 24, 25, 26, 32, 0, 0, 0, 0, 0, 0, 22, 24, 25, 26, 32,};static const YYINT yycheck[] = { 267, 0, 0, 37, -1, -1, -1, -1, 42, -1, -1, 0, 0, 47, 37, -1, -1, -1, -1, 42, 43, -1, 45, 0, 47, -1, -1, 37, 0, -1, -1, -1, 42, 43, -1, 45, -1, 47, 37, 38, 0, -1, 41, 42, 43, -1, 45, -1, 47, 37, 38, 0, 41, 41, 42, 43, -1, 45, -1, 47, -1, 60, 0, 62, 41, 37, 38, 0, -1, 41, 42, 43, 60, 45, 62, 47, -1, 37, 38, 0, -1, 41, 42, 43, -1, 45, -1, 47, 60, 38, 62, -1, 41, -1, 43, 94, 45, -1, -1, -1, 60, 0, 62, 41, -1, 38, 94, -1, 41, -1, 43, 60, 45, 62, -1, -1, 0, 38, -1, -1, 41, -1, 94, -1, 0, 124, -1, 60, 33, 62, 0, -1, -1, -1, 94, 40, 124, -1, 43, 60, 45, 62, 41, -1, 0, 94, -1, 124, -1, -1, -1, -1, 124, -1, 38, 0, -1, 41, -1, -1, -1, 94, 38, -1, 124, 41, -1, -1, 38, -1, -1, 41, -1, 94, -1, 124, 60, -1, 62, -1, -1, -1, 38, -1, 60, 41, 62, -1, -1, -1, 60, 124, 62, 38, -1, 94, 41, -1, -1, -1, -1, 0, -1, 124, 60, -1, 62, -1, -1, -1, 94, -1, -1, -1, -1, 60, -1, 62, 94, -1, -1, 126, 37, 38, 94, 124, -1, 42, 43, -1, 45, -1, 47, 267, -1, -1, -1, -1, 94, 38, 124, -1, 41, 0, 267, 60, -1, 62, 124, 94, -1, -1, -1, -1, 124, 265, 266, 267, -1, -1, 259, 260, 261, 262, 263, 264, 265, 266, 124, -1, 259, 259, 260, 261, 262, 263, 264, 265, 266, 124, -1, 38, 259, 260, 41, -1, -1, 259, 260, 261, 262, 263, 264, 265, 266, 94, -1, -1, -1, 259, 260, 261, 262, 263, 264, 265, 266, -1, 0, -1, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, -1, 259, 260, -1, -1, 124, 259, 260, 261, 262, 263, 264, 265, 266, -1, -1, -1, 94, 259, 260, 261, 262, 263, 264, 265, 266, 38, -1, -1, 41, -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, 259, 260, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 265, 266, 259, 260, 261, 262, 263, 264, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, -1, -1, -1, 94, 259, 260, 261, 262, 263, 264, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, 124, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, 60, 47, 62, 261, 262, 263, 264, 265, 266, 267, -1, -1, -1, -1, 60, -1, 62, 259, 260, 261, 262, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, 37, 47, -1, 94, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, 60, -1, 62, 94, -1, -1, -1, -1, -1, 60, -1, 62, -1, -1, 259, 260, 261, 262, -1, 124, 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, 37, 38, 124, 94, -1, 42, 43, -1, 45, -1, 47, 37, 60, -1, 62, -1, 42, 43, -1, 45, -1, 47, -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, 124, 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, 259, 260, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, 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, 32, -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, 259, 260, 261, 262, 263, 264, 265, 266, 267, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 265, 266, 267, -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, 267, -1, -1, 261, 262, 263, 264, 265, 266, 267, -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, 267, -1, -1, -1, -1, 261, 262, 263, 264, 265, 266, 267, -1, -1, -1, -1, -1, -1, 263, 264, 265, 266, 267,};#define YYFINAL 7#ifndef YYDEBUG#define YYDEBUG 0#endif#define YYMAXTOKEN 269#define YYUNDFTOKEN 273#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))#if YYDEBUG#ifndef NULL#define NULL (void*)0#endifstatic const char *const yyname[] = {
"end-of-file",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'!'",NULL,NULL,NULL,"'%'","'&'",NULL,"'('","')'","'*'","'+'",NULL,"'-'",NULL,"'/'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'<'",NULL,"'>'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'^'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'|'",NULL,"'~'",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"NUMBER","ERROR","LOR","LAND","EQ","NE","LE","GE","LSHIFT","RSHIFT","EXPONENT","UMINUS","UPLUS",NULL,NULL,NULL,"illegal-symbol",};static const char *const yyrule[] = {"$accept : top","top : expr","expr : expr '+' expr","expr : expr '-' expr","expr : expr EXPONENT 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
#if YYDEBUGint yydebug;#endif
int yyerrflag;int yychar;YYSTYPE yyval;YYSTYPE yylval;int yynerrs;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)YYLTYPE yyloc; /* position returned by actions */YYLTYPE yylloc; /* position from the lexer */#endif
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)#ifndef YYLLOC_DEFAULT#define YYLLOC_DEFAULT(loc, rhs, n) \do \{ \ if (n == 0) \ { \ (loc).first_line = YYRHSLOC(rhs, 0).last_line; \ (loc).first_column = YYRHSLOC(rhs, 0).last_column; \ (loc).last_line = YYRHSLOC(rhs, 0).last_line; \ (loc).last_column = YYRHSLOC(rhs, 0).last_column; \ } \ else \ { \ (loc).first_line = YYRHSLOC(rhs, 1).first_line; \ (loc).first_column = YYRHSLOC(rhs, 1).first_column; \ (loc).last_line = YYRHSLOC(rhs, n).last_line; \ (loc).last_column = YYRHSLOC(rhs, n).last_column; \ } \} while (0)#endif /* YYLLOC_DEFAULT */#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
/* define the initial stack-sizes */#ifdef YYSTACKSIZE#undef YYMAXDEPTH#define YYMAXDEPTH YYSTACKSIZE#else#ifdef YYMAXDEPTH#define YYSTACKSIZE YYMAXDEPTH#else#define YYSTACKSIZE 10000#define YYMAXDEPTH 10000#endif#endif
#ifndef YYINITSTACKSIZE#define YYINITSTACKSIZE 200#endif
typedef struct { unsigned stacksize; YYINT *s_base; YYINT *s_mark; YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *p_base; YYLTYPE *p_mark;#endif} YYSTACKDATA;/* variables for the parser stack */static YYSTACKDATA yystack;#line 83 "parser.y"
#line 434 "parser.c"
/* For use in generated program */#define yydepth (int)(yystack.s_mark - yystack.s_base)
#if YYDEBUG#include <stdio.h> /* needed for printf */#endif
#include <stdlib.h> /* needed for malloc, etc */#include <string.h> /* needed for memset */
/* allocate initial stack or double stack size, up to YYMAXDEPTH */static int yygrowstack(YYSTACKDATA *data){ int i; unsigned newsize; YYINT *newss; YYSTYPE *newvs;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *newps;#endif
if ((newsize = data->stacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return YYENOMEM; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH;
i = (int) (data->s_mark - data->s_base); newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == NULL) return YYENOMEM;
data->s_base = newss; data->s_mark = newss + i;
newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); if (newvs == NULL) return YYENOMEM;
data->l_base = newvs; data->l_mark = newvs + i;
#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps)); if (newps == NULL) return YYENOMEM;
data->p_base = newps; data->p_mark = newps + i;#endif
data->stacksize = newsize; data->s_last = data->s_base + newsize - 1;
#if YYDEBUG if (yydebug) fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);#endif return 0;}
#if YYPURE || defined(YY_NO_LEAKS)static void yyfreestack(YYSTACKDATA *data){ free(data->s_base); free(data->l_base);#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) free(data->p_base);#endif memset(data, 0, sizeof(*data));}#else#define yyfreestack(data) /* nothing */#endif /* YYPURE || defined(YY_NO_LEAKS) */
#define YYABORT goto yyabort#define YYREJECT goto yyabort#define YYACCEPT goto yyaccept#define YYERROR goto yyerrlab
intYYPARSE_DECL(){ int yym, yyn, yystate, yyresult;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE yyerror_loc_range[3]; /* position of error start/end (0 unused) */#endif#if YYDEBUG const char *yys;
if ((yys = getenv("YYDEBUG")) != NULL) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } if (yydebug) fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);#endif#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));#endif
yym = 0; /* yyn is set below */ yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; yystate = 0;
#if YYPURE memset(&yystack, 0, sizeof(yystack));#endif
if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystack.s_mark = yystack.s_base; yystack.l_mark = yystack.l_base;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) yystack.p_mark = yystack.p_base;#endif yystate = 0; *yystack.s_mark = 0;
yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { yychar = YYLEX; if (yychar < 0) yychar = YYEOF;#if YYDEBUG if (yydebug) { if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)", YYDEBUGSTR, yydepth, yystate, yychar, yys);#ifdef YYSTYPE_TOSTRING fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));#endif fputc('\n', stderr); }#endif } if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) {#if YYDEBUG if (yydebug) fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n", YYDEBUGSTR, yydepth, yystate, yytable[yyn]);#endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yylloc;#endif yychar = YYEMPTY; if (yyerrflag > 0) --yyerrflag; goto yyloop; } if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag != 0) goto yyinrecovery;
YYERROR_CALL("syntax error");#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */#endif
#if !YYBTYACC goto yyerrlab; /* redundant goto avoids 'unused label' warning */yyerrlab:#endif ++yynerrs;
yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE) {#if YYDEBUG if (yydebug) fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n", YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);#endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) /* lookahead position is error end position */ yyerror_loc_range[2] = yylloc; YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */ *++yystack.p_mark = yyloc;#endif goto yyloop; } else {#if YYDEBUG if (yydebug) fprintf(stderr, "%s[%d]: error recovery discarding state %d\n", YYDEBUGSTR, yydepth, *yystack.s_mark);#endif if (yystack.s_mark <= yystack.s_base) goto yyabort;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) /* the current TOS position is the error start position */ yyerror_loc_range[1] = *yystack.p_mark;#endif#if defined(YYDESTRUCT_CALL)#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYDESTRUCT_CALL("error: discarding state", yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);#else YYDESTRUCT_CALL("error: discarding state", yystos[*yystack.s_mark], yystack.l_mark);#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */#endif /* defined(YYDESTRUCT_CALL) */ --yystack.s_mark; --yystack.l_mark;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) --yystack.p_mark;#endif } } } else { if (yychar == YYEOF) goto yyabort;#if YYDEBUG if (yydebug) { if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n", YYDEBUGSTR, yydepth, yystate, yychar, yys); }#endif#if defined(YYDESTRUCT_CALL)#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);#else YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */#endif /* defined(YYDESTRUCT_CALL) */ yychar = YYEMPTY; goto yyloop; }
yyreduce: yym = yylen[yyn];#if YYDEBUG if (yydebug) { fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)", YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);#ifdef YYSTYPE_TOSTRING if (yym > 0) { int i; fputc('<', stderr); for (i = yym; i > 0; i--) { if (i != yym) fputs(", ", stderr); fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]], yystack.l_mark[1-i]), stderr); } fputc('>', stderr); }#endif fputc('\n', stderr); }#endif if (yym > 0) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval);#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
/* Perform position reduction */ memset(&yyloc, 0, sizeof(yyloc)); { YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym); /* just in case YYERROR is invoked within the action, save the start of the rhs as the error start position */ yyerror_loc_range[1] = yystack.p_mark[1-yym]; }#endif
switch (yyn) {case 1:#line 42 "parser.y" { end_result = yystack.l_mark[0]; }#line 739 "parser.c"break;case 2:#line 44 "parser.y" { yyval = yystack.l_mark[-2] + yystack.l_mark[0]; }#line 744 "parser.c"break;case 3:#line 45 "parser.y" { yyval = yystack.l_mark[-2] - yystack.l_mark[0]; }#line 749 "parser.c"break;case 4:#line 46 "parser.y" { yyval = pow(yystack.l_mark[-2], yystack.l_mark[0]); }#line 754 "parser.c"break;case 5:#line 47 "parser.y" { yyval = yystack.l_mark[-2] * yystack.l_mark[0]; }#line 759 "parser.c"break;case 6:#line 48 "parser.y" { if (yystack.l_mark[0] == 0) { yyerror("division by zero"); exit(1); } yyval = yystack.l_mark[-2] / yystack.l_mark[0]; }#line 770 "parser.c"break;case 7:#line 55 "parser.y" { if (yystack.l_mark[0] == 0) { yyerror("modulo zero"); exit(1); } yyval = yystack.l_mark[-2] % yystack.l_mark[0]; }#line 781 "parser.c"break;case 8:#line 62 "parser.y" { yyval = yystack.l_mark[-2] << yystack.l_mark[0]; }#line 786 "parser.c"break;case 9:#line 63 "parser.y" { yyval = yystack.l_mark[-2] >> yystack.l_mark[0]; }#line 791 "parser.c"break;case 10:#line 64 "parser.y" { yyval = yystack.l_mark[-2] < yystack.l_mark[0]; }#line 796 "parser.c"break;case 11:#line 65 "parser.y" { yyval = yystack.l_mark[-2] > yystack.l_mark[0]; }#line 801 "parser.c"break;case 12:#line 66 "parser.y" { yyval = yystack.l_mark[-2] <= yystack.l_mark[0]; }#line 806 "parser.c"break;case 13:#line 67 "parser.y" { yyval = yystack.l_mark[-2] >= yystack.l_mark[0]; }#line 811 "parser.c"break;case 14:#line 68 "parser.y" { yyval = yystack.l_mark[-2] == yystack.l_mark[0]; }#line 816 "parser.c"break;case 15:#line 69 "parser.y" { yyval = yystack.l_mark[-2] != yystack.l_mark[0]; }#line 821 "parser.c"break;case 16:#line 70 "parser.y" { yyval = yystack.l_mark[-2] & yystack.l_mark[0]; }#line 826 "parser.c"break;case 17:#line 71 "parser.y" { yyval = yystack.l_mark[-2] ^ yystack.l_mark[0]; }#line 831 "parser.c"break;case 18:#line 72 "parser.y" { yyval = yystack.l_mark[-2] | yystack.l_mark[0]; }#line 836 "parser.c"break;case 19:#line 73 "parser.y" { yyval = yystack.l_mark[-2] && yystack.l_mark[0]; }#line 841 "parser.c"break;case 20:#line 74 "parser.y" { yyval = yystack.l_mark[-2] || yystack.l_mark[0]; }#line 846 "parser.c"break;case 21:#line 75 "parser.y" { yyval = yystack.l_mark[-1]; }#line 851 "parser.c"break;case 22:#line 76 "parser.y" { yyval = -yystack.l_mark[0]; }#line 856 "parser.c"break;case 23:#line 77 "parser.y" { yyval = yystack.l_mark[0]; }#line 861 "parser.c"break;case 24:#line 78 "parser.y" { yyval = !yystack.l_mark[0]; }#line 866 "parser.c"break;case 25:#line 79 "parser.y" { yyval = ~yystack.l_mark[0]; }#line 871 "parser.c"break;#line 873 "parser.c" default: break; } yystack.s_mark -= yym; yystate = *yystack.s_mark; yystack.l_mark -= yym;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) yystack.p_mark -= yym;#endif yym = yylhs[yyn]; if (yystate == 0 && yym == 0) {#if YYDEBUG if (yydebug) { fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);#ifdef YYSTYPE_TOSTRING fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));#endif fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL); }#endif yystate = YYFINAL; *++yystack.s_mark = YYFINAL; *++yystack.l_mark = yyval;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc;#endif if (yychar < 0) { yychar = YYLEX; if (yychar < 0) yychar = YYEOF;#if YYDEBUG if (yydebug) { if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN]; fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n", YYDEBUGSTR, yydepth, YYFINAL, yychar, yys); }#endif } if (yychar == YYEOF) goto yyaccept; goto yyloop; } if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym];#if YYDEBUG if (yydebug) { fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);#ifdef YYSTYPE_TOSTRING fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));#endif fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate); }#endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) *++yystack.p_mark = yyloc;#endif goto yyloop;
yyoverflow: YYERROR_CALL("yacc stack overflow"); yyresult = 2; goto yyreturn;
yyabort: yyresult = 1; goto yyreturn;
yyaccept: yyresult = 0;
yyreturn:#if defined(YYDESTRUCT_CALL) if (yychar != YYEOF && yychar != YYEMPTY)#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);#else YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
{ YYSTYPE *pv;#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) YYLTYPE *pp;
for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp) YYDESTRUCT_CALL("cleanup: discarding state", yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);#else for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv) YYDESTRUCT_CALL("cleanup: discarding state", yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */ }#endif /* defined(YYDESTRUCT_CALL) */
yyfreestack(&yystack); return (yyresult);}