#define YYBISON 1
#define YYBISON_VERSION "3.0.4"
#define YYSKELETON_NAME "yacc.c"
#define YYPURE 1
#define YYPUSH 0
#define YYPULL 1
#line 1 "src/parser.y"
#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include "compile.h"
#include "jv_alloc.h"
#define YYMALLOC jv_mem_alloc
#define YYFREE jv_mem_free
#line 77 "src/parser.c"
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
# define YY_NULLPTR nullptr
# else
# define YY_NULLPTR 0
# endif
# endif
#ifdef YYERROR_VERBOSE
# undef YYERROR_VERBOSE
# define YYERROR_VERBOSE 1
#else
# define YYERROR_VERBOSE 1
#endif
#ifndef YY_YY_SRC_PARSER_H_INCLUDED
# define YY_YY_SRC_PARSER_H_INCLUDED
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int yydebug;
#endif
#line 11 "src/parser.y"
#include "locfile.h"
struct lexer_param;
#define YYLTYPE location
#define YYLLOC_DEFAULT(Loc, Rhs, N) \
do { \
if (N) { \
(Loc).start = YYRHSLOC(Rhs, 1).start; \
(Loc).end = YYRHSLOC(Rhs, N).end; \
} else { \
(Loc).start = YYRHSLOC(Rhs, 0).end; \
(Loc).end = YYRHSLOC(Rhs, 0).end; \
} \
} while (0)
#line 124 "src/parser.c"
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
INVALID_CHARACTER = 258,
IDENT = 259,
FIELD = 260,
LITERAL = 261,
FORMAT = 262,
REC = 263,
SETMOD = 264,
EQ = 265,
NEQ = 266,
DEFINEDOR = 267,
AS = 268,
DEF = 269,
MODULE = 270,
IMPORT = 271,
INCLUDE = 272,
IF = 273,
THEN = 274,
ELSE = 275,
ELSE_IF = 276,
REDUCE = 277,
FOREACH = 278,
END = 279,
AND = 280,
OR = 281,
TRY = 282,
CATCH = 283,
LABEL = 284,
BREAK = 285,
LOC = 286,
SETPIPE = 287,
SETPLUS = 288,
SETMINUS = 289,
SETMULT = 290,
SETDIV = 291,
SETDEFINEDOR = 292,
LESSEQ = 293,
GREATEREQ = 294,
ALTERNATION = 295,
QQSTRING_START = 296,
QQSTRING_TEXT = 297,
QQSTRING_INTERP_START = 298,
QQSTRING_INTERP_END = 299,
QQSTRING_END = 300,
FUNCDEF = 301,
NONOPT = 302
};
#endif
#define INVALID_CHARACTER 258
#define IDENT 259
#define FIELD 260
#define LITERAL 261
#define FORMAT 262
#define REC 263
#define SETMOD 264
#define EQ 265
#define NEQ 266
#define DEFINEDOR 267
#define AS 268
#define DEF 269
#define MODULE 270
#define IMPORT 271
#define INCLUDE 272
#define IF 273
#define THEN 274
#define ELSE 275
#define ELSE_IF 276
#define REDUCE 277
#define FOREACH 278
#define END 279
#define AND 280
#define OR 281
#define TRY 282
#define CATCH 283
#define LABEL 284
#define BREAK 285
#define LOC 286
#define SETPIPE 287
#define SETPLUS 288
#define SETMINUS 289
#define SETMULT 290
#define SETDIV 291
#define SETDEFINEDOR 292
#define LESSEQ 293
#define GREATEREQ 294
#define ALTERNATION 295
#define QQSTRING_START 296
#define QQSTRING_TEXT 297
#define QQSTRING_INTERP_START 298
#define QQSTRING_INTERP_END 299
#define QQSTRING_END 300
#define FUNCDEF 301
#define NONOPT 302
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
#line 31 "src/parser.y"
jv literal;
block blk;
#line 235 "src/parser.c"
};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE YYLTYPE;
struct YYLTYPE
{
int first_line;
int first_column;
int last_line;
int last_column;
};
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif
int yyparse (block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr);
#endif
#line 124 "src/parser.y"
#include "lexer.h"
struct lexer_param {
yyscan_t lexer;
};
#define FAIL(loc, msg) \
do { \
location l = loc; \
yyerror(&l, answer, errors, locations, lexer_param_ptr, msg); \
; \
} while (0)
void yyerror(YYLTYPE* loc, block* answer, int* errors,
struct locfile* locations, struct lexer_param* lexer_param_ptr, const char *s){
(*errors)++;
if (strstr(s, "unexpected")) {
#ifdef WIN32
locfile_locate(locations, *loc, "jq: error: %s (Windows cmd shell quoting issues?)", s);
#else
locfile_locate(locations, *loc, "jq: error: %s (Unix shell quoting issues?)", s);
#endif
} else {
locfile_locate(locations, *loc, "jq: error: %s", s);
}
}
int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, block* answer, int* errors,
struct locfile* locations, struct lexer_param* lexer_param_ptr) {
yyscan_t lexer = lexer_param_ptr->lexer;
int tok = jq_yylex(yylval, yylloc, lexer);
if ((tok == LITERAL || tok == QQSTRING_TEXT) && !jv_is_valid(yylval->literal)) {
jv msg = jv_invalid_get_msg(jv_copy(yylval->literal));
if (jv_get_kind(msg) == JV_KIND_STRING) {
FAIL(*yylloc, jv_string_value(msg));
} else {
FAIL(*yylloc, "Invalid literal");
}
jv_free(msg);
jv_free(yylval->literal);
yylval->literal = jv_null();
}
return tok;
}
static jv check_object_key(block k) {
if (block_is_const(k) && block_const_kind(k) != JV_KIND_STRING) {
char errbuf[15];
return jv_string_fmt("Cannot use %s (%s) as object key",
jv_kind_name(block_const_kind(k)),
jv_dump_string_trunc(jv_copy(block_const(k)), errbuf, sizeof(errbuf)));
}
return jv_invalid();
}
static block gen_index(block obj, block key) {
return BLOCK(gen_subexp(key), obj, gen_op_simple(INDEX));
}
static block gen_index_opt(block obj, block key) {
return BLOCK(gen_subexp(key), obj, gen_op_simple(INDEX_OPT));
}
static block gen_slice_index(block obj, block start, block end, opcode idx_op) {
block key = BLOCK(gen_subexp(gen_const(jv_object())),
gen_subexp(gen_const(jv_string("start"))),
gen_subexp(start),
gen_op_simple(INSERT),
gen_subexp(gen_const(jv_string("end"))),
gen_subexp(end),
gen_op_simple(INSERT));
return BLOCK(key, obj, gen_op_simple(idx_op));
}
static block constant_fold(block a, block b, int op) {
if (!block_is_single(a) || !block_is_const(a) ||
!block_is_single(b) || !block_is_const(b))
return gen_noop();
if (op == '+') {
if (block_const_kind(a) == JV_KIND_NULL) {
block_free(a);
return b;
}
if (block_const_kind(b) == JV_KIND_NULL) {
block_free(b);
return a;
}
}
if (block_const_kind(a) != block_const_kind(b))
return gen_noop();
jv res = jv_invalid();
if (block_const_kind(a) == JV_KIND_NUMBER) {
double na = jv_number_value(block_const(a));
double nb = jv_number_value(block_const(b));
switch (op) {
case '+': res = jv_number(na + nb); break;
case '-': res = jv_number(na - nb); break;
case '*': res = jv_number(na * nb); break;
case '/': res = jv_number(na / nb); break;
case EQ: res = (na == nb ? jv_true() : jv_false()); break;
case NEQ: res = (na != nb ? jv_true() : jv_false()); break;
case '<': res = (na < nb ? jv_true() : jv_false()); break;
case '>': res = (na > nb ? jv_true() : jv_false()); break;
case LESSEQ: res = (na <= nb ? jv_true() : jv_false()); break;
case GREATEREQ: res = (na >= nb ? jv_true() : jv_false()); break;
default: break;
}
} else if (op == '+' && block_const_kind(a) == JV_KIND_STRING) {
res = jv_string_concat(block_const(a), block_const(b));
} else {
return gen_noop();
}
if (jv_get_kind(res) == JV_KIND_INVALID)
return gen_noop();
block_free(a);
block_free(b);
return gen_const(res);
}
static block gen_binop(block a, block b, int op) {
block folded = constant_fold(a, b, op);
if (!block_is_noop(folded))
return folded;
const char* funcname = 0;
switch (op) {
case '+': funcname = "_plus"; break;
case '-': funcname = "_minus"; break;
case '*': funcname = "_multiply"; break;
case '/': funcname = "_divide"; break;
case '%': funcname = "_mod"; break;
case EQ: funcname = "_equal"; break;
case NEQ: funcname = "_notequal"; break;
case '<': funcname = "_less"; break;
case '>': funcname = "_greater"; break;
case LESSEQ: funcname = "_lesseq"; break;
case GREATEREQ: funcname = "_greatereq"; break;
}
assert(funcname);
return gen_call(funcname, BLOCK(gen_lambda(a), gen_lambda(b)));
}
static block gen_format(block a, jv fmt) {
return BLOCK(a, gen_call("format", gen_lambda(gen_const(fmt))));
}
static block gen_definedor_assign(block object, block val) {
block tmp = gen_op_var_fresh(STOREV, "tmp");
return BLOCK(gen_op_simple(DUP),
val, tmp,
gen_call("_modify", BLOCK(gen_lambda(object),
gen_lambda(gen_definedor(gen_noop(),
gen_op_bound(LOADV, tmp))))));
}
static block gen_update(block object, block val, int optype) {
block tmp = gen_op_var_fresh(STOREV, "tmp");
return BLOCK(gen_op_simple(DUP),
val,
tmp,
gen_call("_modify", BLOCK(gen_lambda(object),
gen_lambda(gen_binop(gen_noop(),
gen_op_bound(LOADV, tmp),
optype)))));
}
#line 438 "src/parser.c"
#ifdef short
# undef short
#endif
#ifdef YYTYPE_UINT8
typedef YYTYPE_UINT8 yytype_uint8;
#else
typedef unsigned char yytype_uint8;
#endif
#ifdef YYTYPE_INT8
typedef YYTYPE_INT8 yytype_int8;
#else
typedef signed char yytype_int8;
#endif
#ifdef YYTYPE_UINT16
typedef YYTYPE_UINT16 yytype_uint16;
#else
typedef unsigned short int yytype_uint16;
#endif
#ifdef YYTYPE_INT16
typedef YYTYPE_INT16 yytype_int16;
#else
typedef short int yytype_int16;
#endif
#ifndef YYSIZE_T
# ifdef __SIZE_TYPE__
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
# elif ! defined YYSIZE_T
# include <stddef.h>
# define YYSIZE_T size_t
# else
# define YYSIZE_T unsigned int
# endif
#endif
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h>
# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
# endif
# endif
# ifndef YY_
# define YY_(Msgid) Msgid
# endif
#endif
#ifndef YY_ATTRIBUTE
# if (defined __GNUC__ \
&& (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
|| defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
# else
# define YY_ATTRIBUTE(Spec)
# endif
#endif
#ifndef YY_ATTRIBUTE_PURE
# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
#endif
#ifndef YY_ATTRIBUTE_UNUSED
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
#endif
#if !defined _Noreturn \
&& (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
# if defined _MSC_VER && 1200 <= _MSC_VER
# define _Noreturn __declspec (noreturn)
# else
# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
# endif
#endif
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
#else
# define YYUSE(E)
#endif
#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
#endif
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
#ifndef YY_INITIAL_VALUE
# define YY_INITIAL_VALUE(Value)
#endif
#if ! defined yyoverflow || YYERROR_VERBOSE
# ifdef YYSTACK_USE_ALLOCA
# if YYSTACK_USE_ALLOCA
# ifdef __GNUC__
# define YYSTACK_ALLOC __builtin_alloca
# elif defined __BUILTIN_VA_ARG_INCR
# include <alloca.h>
# elif defined _AIX
# define YYSTACK_ALLOC __alloca
# elif defined _MSC_VER
# include <malloc.h>
# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
# include <stdlib.h>
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
# endif
# endif
# endif
# endif
# endif
# ifdef YYSTACK_ALLOC
# define YYSTACK_FREE(Ptr) do { ; } while (0)
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM 4032
# endif
# else
# define YYSTACK_ALLOC YYMALLOC
# define YYSTACK_FREE YYFREE
# ifndef YYSTACK_ALLOC_MAXIMUM
# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
# endif
# if (defined __cplusplus && ! defined EXIT_SUCCESS \
&& ! ((defined YYMALLOC || defined malloc) \
&& (defined YYFREE || defined free)))
# include <stdlib.h>
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
# endif
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
# if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T);
# endif
# endif
# ifndef YYFREE
# define YYFREE free
# if ! defined free && ! defined EXIT_SUCCESS
void free (void *);
# endif
# endif
# endif
#endif
#if (! defined yyoverflow \
&& (! defined __cplusplus \
|| (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
&& defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
union yyalloc
{
yytype_int16 yyss_alloc;
YYSTYPE yyvs_alloc;
YYLTYPE yyls_alloc;
};
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
# define YYSTACK_BYTES(N) \
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
+ 2 * YYSTACK_GAP_MAXIMUM)
# define YYCOPY_NEEDED 1
# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (0)
#endif
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
# define YYCOPY(Dst, Src, Count) \
__builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
# else
# define YYCOPY(Dst, Src, Count) \
do \
{ \
YYSIZE_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
while (0)
# endif
# endif
#endif
#define YYFINAL 27
#define YYLAST 1972
#define YYNTOKENS 69
#define YYNNTS 30
#define YYNRULES 162
#define YYNSTATES 313
#define YYUNDEFTOK 2
#define YYMAXUTOK 302
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 62, 56, 2, 2,
60, 61, 54, 52, 48, 53, 64, 55, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 63, 59,
50, 49, 51, 58, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 65, 2, 66, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 67, 47, 68, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 57
};
#if YYDEBUG
static const yytype_uint16 yyrline[] =
{
0, 300, 300, 303, 308, 311, 322, 325, 330, 333,
338, 342, 345, 349, 353, 357, 360, 365, 369, 373,
378, 385, 389, 393, 397, 401, 405, 409, 413, 417,
421, 425, 429, 433, 437, 441, 445, 449, 455, 461,
465, 469, 473, 477, 481, 485, 489, 493, 498, 501,
518, 527, 534, 542, 553, 558, 564, 567, 572, 577,
584, 584, 588, 588, 595, 598, 601, 607, 610, 615,
618, 621, 627, 630, 633, 641, 645, 648, 651, 654,
657, 660, 663, 666, 669, 673, 679, 682, 685, 688,
691, 694, 697, 700, 703, 706, 709, 712, 715, 718,
721, 724, 727, 734, 738, 742, 754, 759, 760, 761,
762, 765, 768, 773, 778, 781, 786, 789, 794, 798,
801, 806, 809, 814, 817, 822, 825, 828, 831, 834,
837, 845, 851, 854, 857, 860, 863, 866, 869, 872,
875, 878, 881, 884, 887, 890, 893, 896, 899, 902,
905, 910, 913, 914, 915, 918, 921, 924, 927, 931,
935, 939, 947
};
#endif
#if YYDEBUG || YYERROR_VERBOSE || 1
static const char *const yytname[] =
{
"$end", "error", "$undefined", "INVALID_CHARACTER", "IDENT", "FIELD",
"LITERAL", "FORMAT", "\"..\"", "\"%=\"", "\"==\"", "\"!=\"", "\"//\"",
"\"as\"", "\"def\"", "\"module\"", "\"import\"", "\"include\"", "\"if\"",
"\"then\"", "\"else\"", "\"elif\"", "\"reduce\"", "\"foreach\"",
"\"end\"", "\"and\"", "\"or\"", "\"try\"", "\"catch\"", "\"label\"",
"\"break\"", "\"__loc__\"", "\"|=\"", "\"+=\"", "\"-=\"", "\"*=\"",
"\"/=\"", "\"//=\"", "\"<=\"", "\">=\"", "\"?//\"", "QQSTRING_START",
"QQSTRING_TEXT", "QQSTRING_INTERP_START", "QQSTRING_INTERP_END",
"QQSTRING_END", "FUNCDEF", "'|'", "','", "'='", "'<'", "'>'", "'+'",
"'-'", "'*'", "'/'", "'%'", "NONOPT", "'?'", "';'", "'('", "')'", "'$'",
"':'", "'.'", "'['", "']'", "'{'", "'}'", "$accept", "TopLevel",
"Module", "Imports", "FuncDefs", "Exp", "Import", "ImportWhat",
"ImportFrom", "FuncDef", "Params", "Param", "String", "@1", "@2",
"QQString", "ElseBody", "ExpD", "Term", "Args", "Arg", "RepPatterns",
"Patterns", "Pattern", "ArrayPats", "ObjPats", "ObjPat", "Keyword",
"MkDict", "MkDictPair", YY_NULLPTR
};
#endif
# ifdef YYPRINT
static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 124, 44, 61,
60, 62, 43, 45, 42, 47, 37, 302, 63, 59,
40, 41, 36, 58, 46, 91, 93, 123, 125
};
# endif
#define YYPACT_NINF -158
#define yypact_value_is_default(Yystate) \
(!!((Yystate) == (-158)))
#define YYTABLE_NINF -152
#define yytable_value_is_error(Yytable_value) \
(!!((Yytable_value) == (-152)))
static const yytype_int16 yypact[] =
{
21, 772, 43, 63, -6, 12, -158, 80, -158, 122,
772, 193, 193, 772, 74, 5, -158, 772, 522, 10,
279, 455, 152, 1290, 772, -158, 8, -158, 3, 3,
772, 63, 680, 772, -158, -158, 67, 1646, 58, 130,
106, 133, -158, 135, -158, 20, 83, 1120, -158, -158,
-158, 140, 80, 93, 86, -158, 917, -23, 91, -158,
-158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
-158, -158, -158, -158, -158, -158, -158, -158, 772, 151,
94, 97, 95, 113, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 772, 772, 772, 772, -158, -158,
1814, 104, -7, 3, 388, 171, -158, -158, -158, 1814,
772, -158, -158, 1341, 1814, 59, -158, -158, 7, 772,
587, -7, -7, 652, 117, -158, 4, -158, -158, -158,
-158, -158, -158, 345, -3, -158, -3, 1154, -158, -3,
-3, -158, 345, 1882, 370, 370, 1848, 436, 1914, 1882,
1882, 1882, 1882, 1882, 1882, 370, 370, 1814, 1848, 1882,
370, 370, 20, 20, 129, 129, 129, -158, 184, -7,
834, 149, 143, 156, 134, 136, 772, 145, 867, 47,
-158, -158, 772, -158, 23, -158, 200, 72, -158, 1392,
-158, 1596, 146, 150, -158, -158, 772, -158, 772, -158,
-11, -158, -3, 162, 51, 162, 148, 162, 162, -158,
-158, -158, -24, 153, 154, 772, 209, 155, -15, -158,
158, -7, 772, -158, -158, 967, -158, 744, 157, -158,
215, -158, -158, -158, 7, 159, -158, 772, 772, -158,
772, 772, 1814, 1680, -158, -3, -3, -7, -158, -7,
-7, 1188, 163, -7, 834, -158, -7, 185, 1814, 169,
170, 1017, -158, -158, -158, 772, 1730, 1780, 1443, 1494,
-158, 162, 162, -158, -158, -158, 166, -7, -158, -158,
-158, -158, -158, 172, 1545, -158, 772, 772, 772, -7,
-158, -158, -158, 1596, 1222, 1067, -158, -158, -158, 772,
-158, 1256, -158
};
static const yytype_uint8 yydefact[] =
{
4, 0, 0, 6, 105, 81, 96, 98, 73, 0,
0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
0, 0, 0, 0, 0, 97, 47, 1, 0, 0,
8, 6, 0, 0, 77, 62, 0, 0, 0, 0,
18, 0, 75, 0, 64, 32, 0, 0, 104, 103,
84, 0, 0, 83, 0, 101, 0, 0, 160, 132,
133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
143, 144, 145, 146, 147, 148, 149, 150, 0, 0,
158, 0, 0, 152, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 21, 5,
10, 80, 0, 0, 0, 0, 53, 52, 3, 2,
8, 7, 48, 0, 113, 0, 111, 64, 0, 0,
0, 0, 0, 0, 0, 74, 0, 107, 99, 85,
79, 108, 100, 0, 0, 110, 0, 0, 159, 0,
0, 102, 0, 40, 41, 42, 25, 24, 23, 27,
31, 34, 36, 39, 26, 45, 46, 28, 29, 22,
43, 44, 30, 33, 35, 37, 38, 76, 0, 0,
0, 0, 0, 117, 82, 0, 0, 89, 0, 0,
9, 49, 0, 106, 0, 59, 0, 0, 56, 0,
16, 0, 0, 0, 19, 17, 0, 65, 0, 61,
0, 154, 0, 162, 71, 155, 0, 157, 156, 153,
118, 121, 0, 0, 0, 0, 0, 0, 0, 123,
0, 0, 0, 78, 109, 0, 88, 0, 87, 51,
0, 112, 63, 58, 0, 0, 54, 0, 0, 15,
0, 0, 20, 0, 70, 0, 0, 0, 119, 0,
0, 0, 125, 0, 0, 120, 0, 116, 11, 95,
94, 0, 86, 50, 57, 0, 0, 0, 0, 0,
66, 69, 161, 122, 131, 127, 0, 0, 129, 124,
128, 92, 91, 93, 0, 68, 0, 0, 0, 0,
126, 90, 55, 0, 0, 0, 130, 67, 12, 0,
14, 0, 13
};
static const yytype_int16 yypgoto[] =
{
-158, -158, -158, 201, 115, -1, -158, -158, 204, -8,
-158, -5, 6, -158, -158, 110, -65, -131, -4, -158,
48, -158, 16, -149, -158, -158, -22, -157, -104, -158
};
static const yytype_int16 yydefgoto[] =
{
-1, 2, 3, 30, 118, 110, 31, 32, 115, 24,
197, 198, 25, 44, 127, 136, 249, 213, 26, 125,
126, 181, 182, 183, 222, 228, 229, 81, 82, 83
};
static const yytype_int16 yytable[] =
{
23, 4, 5, 6, 7, 8, 42, 38, 39, 37,
52, 195, 40, 111, 48, 215, 45, 47, 217, 218,
56, 112, 120, 230, 257, 143, 53, 15, 80, 119,
221, 123, 124, 264, 116, 116, 1, 143, 16, 211,
144, 49, 258, 27, 16, 145, 207, 208, 219, 209,
212, 239, 144, 265, 33, 178, 111, 18, 179, 19,
180, 20, 21, 111, 22, 207, 208, 43, 242, 196,
34, 131, 113, 114, 105, 106, 107, 147, 108, 28,
29, 254, 267, 153, 154, 155, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
170, 171, 172, 173, 174, 175, 176, 230, 283, 240,
284, 285, 120, 188, 288, 113, 114, 290, 192, 184,
193, 35, 113, 114, 281, 282, 36, 128, 199, 201,
129, 244, 205, 245, 133, 111, 41, 134, 300, 135,
214, 139, 214, 132, 137, 214, 214, 202, 203, 80,
306, 140, 141, 57, 146, 148, 58, 149, 80, 52,
150, 152, 177, 151, 206, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 189, 235, 227, 108, 220, 231,
232, 124, 233, 16, 113, 114, -115, 4, 5, 6,
7, 8, 234, 236, 243, 252, 250, 253, 214, 255,
251, 256, 78, 262, 79, 272, 259, 260, 263, 273,
-151, 266, 275, 15, 261, -114, 287, 291, 292, 299,
301, 268, 121, 117, 16, 190, 271, 194, 307, 274,
241, 0, 289, 0, 0, 0, 276, 277, 0, 278,
279, 214, 214, 18, 0, 19, 0, 20, 21, 0,
22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
227, 0, 0, 0, 294, 0, 0, 0, 0, -72,
50, 0, 0, 51, -72, 0, 52, 0, -72, -72,
-72, -72, -72, 0, 0, 303, 304, 305, -72, -72,
-72, 0, 0, -72, -72, -72, 0, -72, 311, 0,
0, -72, -72, -72, -72, -72, -72, -72, -72, 0,
16, 0, 0, -72, 0, 0, -72, -72, -72, -72,
-72, -72, -72, -72, -72, -72, 0, -72, -72, 0,
-72, 0, -72, -72, -72, -72, 210, -72, 0, 58,
0, 0, 52, 0, 0, 0, 0, 0, 59, 60,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
71, 72, 73, 74, 75, 76, 77, 0, 0, 0,
-152, -152, 0, 0, 0, 0, 16, 0, 0, 185,
0, 0, 4, 5, 6, 7, 8, 0, 0, 0,
0, 0, 9, 0, 0, 78, 10, 79, -152, -152,
11, 12, 0, -151, 0, 13, 0, 14, 15, 0,
-152, -152, 103, 104, 105, 106, 107, 0, 108, 16,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 17, 0, 0, 0, 0, 85, 86, 18, 0,
19, 186, 20, 21, 187, 22, 54, 0, 0, 4,
5, 6, 7, 8, 0, 0, 0, 0, 0, 9,
0, 0, 0, 10, 96, 97, 0, 11, 12, 0,
0, 0, 13, 0, 14, 15, 101, 102, 103, 104,
105, 106, 107, 0, 108, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
0, 0, 0, 0, 0, 18, 0, 19, 0, 20,
21, 55, 22, 46, 0, 0, 4, 5, 6, 7,
8, 0, 0, 0, 0, 0, 9, 0, 0, 0,
10, 0, 0, 0, 11, 12, 0, 0, 0, 13,
0, 14, 15, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 17, 0, 0, 0, 0,
0, 0, 18, 0, 19, 0, 20, 21, 200, 22,
0, 4, 5, 6, 7, 8, 0, 0, 0, 0,
0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
12, 0, 0, 0, 13, 0, 14, 15, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 16, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 0, 0, 0, 18, 0, 19,
0, 20, 21, 204, 22, 0, 4, 5, 6, 7,
8, 0, 0, 0, 0, 0, 9, 0, 0, 0,
10, 0, 0, 0, 11, 12, 0, 0, 0, 13,
0, 14, 15, 0, 4, 5, 6, 7, 8, 0,
0, 0, 0, 16, 9, 0, 0, 0, 10, 0,
0, 0, 11, 12, 0, 17, 0, 13, 0, 14,
15, 0, 18, 0, 19, 0, 20, 21, 0, 22,
0, 16, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 17, 0, 0, 0, 0, 0, 122,
18, 0, 19, 0, 20, 21, 0, 22, 4, 5,
6, 7, 8, 0, 0, 0, 0, 0, 9, 0,
0, 0, 10, 0, 0, 0, 11, 12, 0, 0,
0, 13, 0, 14, 15, 0, 4, 5, 6, 7,
8, 0, 0, 0, 0, 16, 9, 0, 0, 0,
10, 0, 0, 0, 11, 12, 0, 17, 0, 13,
0, 14, 15, 0, 18, 0, 19, 0, 20, 21,
270, 22, 0, 16, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 17, 0, 0, 0, 0,
0, 0, 18, 0, 19, 223, 20, 21, 224, 22,
0, 52, 0, 0, 0, 0, 0, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
72, 73, 74, 75, 76, 77, 0, 0, 0, 0,
0, 0, 0, 0, 0, 16, 84, 85, 86, 87,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 88, 89, 225, 0, 226, 0, 0, 90,
91, 92, 93, 94, 95, 96, 97, 0, 0, 0,
0, 0, 0, 0, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 0, 108, 84, 85, 86, 87,
237, 0, 0, 238, 0, 0, 0, 0, 0, 0,
0, 0, 88, 89, 0, 0, 0, 0, 0, 90,
91, 92, 93, 94, 95, 96, 97, 0, 0, 0,
0, 0, 0, 0, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 0, 108, 84, 85, 86, 87,
0, 0, 0, 142, 0, 0, 0, 0, 0, 0,
0, 0, 88, 89, 0, 0, 0, 0, 0, 90,
91, 92, 93, 94, 95, 96, 97, 0, 0, 0,
0, 0, 0, 0, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 0, 108, 84, 85, 86, 87,
0, 0, 0, 269, 0, 0, 0, 0, 0, 0,
0, 0, 88, 89, 0, 0, 0, 0, 0, 90,
91, 92, 93, 94, 95, 96, 97, 0, 0, 0,
0, 0, 0, 0, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 0, 108, 84, 85, 86, 87,
0, 0, 0, 293, 0, 0, 0, 0, 0, 0,
0, 0, 88, 89, 0, 0, 0, 0, 0, 90,
91, 92, 93, 94, 95, 96, 97, 0, 0, 0,
0, 0, 0, 0, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 0, 108, 309, 0, 310, 84,
85, 86, 87, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 88, 89, 0, 0, 0,
0, 0, 90, 91, 92, 93, 94, 95, 96, 97,
0, 0, 0, 84, 85, 86, 87, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 0, 108, 88,
89, 138, 0, 0, 0, 0, 90, 91, 92, 93,
94, 95, 96, 97, 0, 0, 0, 84, 85, 86,
87, 98, 99, 100, 101, 102, 103, 104, 105, 106,
107, 0, 108, 88, 89, 216, 0, 0, 0, 0,
90, 91, 92, 93, 94, 95, 96, 97, 0, 0,
0, 84, 85, 86, 87, 98, 99, 100, 101, 102,
103, 104, 105, 106, 107, 0, 108, 88, 89, 286,
0, 0, 0, 0, 90, 91, 92, 93, 94, 95,
96, 97, 0, 0, 0, 84, 85, 86, 87, 98,
99, 100, 101, 102, 103, 104, 105, 106, 107, 0,
108, 88, 89, 308, 0, 0, 0, 0, 90, 91,
92, 93, 94, 95, 96, 97, 0, 0, 0, 84,
85, 86, 87, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 0, 108, 88, 89, 312, 0, 0,
0, 0, 90, 91, 92, 93, 94, 95, 96, 97,
0, 0, 0, 0, 0, 0, 0, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 0, 108, 109,
84, 85, 86, 87, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 88, 89, 0, 0,
0, 0, 0, 90, 91, 92, 93, 94, 95, 96,
97, 0, 0, 0, 0, 0, 0, 0, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 0, 108,
191, 84, 85, 86, 87, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 88, 89, 0,
0, 0, 0, 0, 90, 91, 92, 93, 94, 95,
96, 97, 0, 0, 0, 0, 0, 0, 0, 98,
99, 100, 101, 102, 103, 104, 105, 106, 107, 0,
108, 246, 84, 85, 86, 87, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 88, 89,
0, 0, 0, 0, 0, 90, 91, 92, 93, 94,
95, 96, 97, 0, 0, 0, 0, 0, 0, 0,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
0, 108, 297, 84, 85, 86, 87, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 88,
89, 0, 0, 0, 0, 0, 90, 91, 92, 93,
94, 95, 96, 97, 0, 0, 0, 0, 0, 0,
0, 98, 99, 100, 101, 102, 103, 104, 105, 106,
107, 0, 108, 298, 84, 85, 86, 87, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
88, 89, 0, 0, 0, 0, 0, 90, 91, 92,
93, 94, 95, 96, 97, 0, 0, 0, 0, 0,
0, 0, 98, 99, 100, 101, 102, 103, 104, 105,
106, 107, 0, 108, 302, 84, 85, 86, 87, 0,
0, 0, 0, 0, 0, 0, 247, 248, 0, 0,
0, 88, 89, 0, 0, 0, 0, 0, 90, 91,
92, 93, 94, 95, 96, 97, 0, 0, 0, 0,
0, 0, 0, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 0, 108, 84, 85, 86, 87, 0,
0, 0, 0, 0, 0, 130, 0, 0, 0, 0,
0, 88, 89, 0, 0, 0, 0, 0, 90, 91,
92, 93, 94, 95, 96, 97, 0, 0, 0, 84,
85, 86, 87, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 0, 108, 88, 89, 0, 0, 0,
0, 0, 90, 91, 92, 93, 94, 95, 96, 97,
0, 0, 0, 0, 280, 0, 0, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 0, 108, 84,
85, 86, 87, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 295, 88, 89, 0, 0, 0,
0, 0, 90, 91, 92, 93, 94, 95, 96, 97,
0, 0, 0, 0, 0, 0, 0, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 0, 108, 84,
85, 86, 87, 0, 0, 0, 0, 0, 0, 296,
0, 0, 0, 0, 0, 88, 89, 0, 0, 0,
0, 0, 90, 91, 92, 93, 94, 95, 96, 97,
0, 0, 0, 84, 85, 86, 87, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 0, 108, 88,
89, 0, 0, 0, 0, 0, 90, 91, 92, 93,
94, 95, 96, 97, 0, 0, 0, 84, 85, 86,
87, 98, 99, 100, 101, 102, 103, 104, 105, 106,
107, 0, 108, 88, 89, 0, 0, 0, 0, 0,
90, 91, 92, 93, 94, 95, 96, 97, 0, 0,
0, -152, 85, 86, 0, 0, 0, 100, 101, 102,
103, 104, 105, 106, 107, 0, 108, 88, 89, 0,
0, 0, 0, 0, -152, -152, -152, -152, -152, -152,
96, 97, 0, 0, 85, 86, 0, 0, 0, 0,
0, -152, 101, 102, 103, 104, 105, 106, 107, 88,
108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 96, 97, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 101, 102, 103, 104, 105, 106,
107, 0, 108
};
static const yytype_int16 yycheck[] =
{
1, 4, 5, 6, 7, 8, 1, 11, 12, 10,
7, 4, 13, 5, 4, 146, 17, 18, 149, 150,
21, 13, 30, 180, 48, 48, 20, 30, 22, 30,
179, 32, 33, 48, 28, 29, 15, 48, 41, 143,
63, 31, 66, 0, 41, 68, 42, 43, 152, 45,
53, 4, 63, 68, 60, 62, 5, 60, 65, 62,
67, 64, 65, 5, 67, 42, 43, 62, 45, 62,
58, 13, 64, 65, 54, 55, 56, 78, 58, 16,
17, 212, 231, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 264, 257, 62,
259, 260, 120, 114, 263, 64, 65, 266, 59, 113,
61, 41, 64, 65, 255, 256, 4, 60, 129, 130,
63, 59, 133, 61, 28, 5, 62, 4, 287, 4,
144, 1, 146, 13, 61, 149, 150, 131, 132, 143,
299, 58, 66, 1, 63, 4, 4, 63, 152, 7,
63, 48, 58, 68, 47, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 13, 186, 180, 58, 4, 40,
47, 192, 58, 41, 64, 65, 40, 4, 5, 6,
7, 8, 66, 58, 4, 206, 60, 208, 212, 47,
60, 63, 60, 4, 62, 58, 63, 63, 63, 4,
68, 63, 63, 30, 225, 40, 63, 58, 58, 63,
58, 232, 31, 29, 41, 120, 237, 127, 303, 244,
192, -1, 264, -1, -1, -1, 247, 248, -1, 250,
251, 255, 256, 60, -1, 62, -1, 64, 65, -1,
67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
264, -1, -1, -1, 275, -1, -1, -1, -1, 0,
1, -1, -1, 4, 5, -1, 7, -1, 9, 10,
11, 12, 13, -1, -1, 296, 297, 298, 19, 20,
21, -1, -1, 24, 25, 26, -1, 28, 309, -1,
-1, 32, 33, 34, 35, 36, 37, 38, 39, -1,
41, -1, -1, 44, -1, -1, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, -1, 58, 59, -1,
61, -1, 63, 64, 65, 66, 1, 68, -1, 4,
-1, -1, 7, -1, -1, -1, -1, -1, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, -1, -1, -1,
10, 11, -1, -1, -1, -1, 41, -1, -1, 1,
-1, -1, 4, 5, 6, 7, 8, -1, -1, -1,
-1, -1, 14, -1, -1, 60, 18, 62, 38, 39,
22, 23, -1, 68, -1, 27, -1, 29, 30, -1,
50, 51, 52, 53, 54, 55, 56, -1, 58, 41,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 53, -1, -1, -1, -1, 10, 11, 60, -1,
62, 63, 64, 65, 66, 67, 1, -1, -1, 4,
5, 6, 7, 8, -1, -1, -1, -1, -1, 14,
-1, -1, -1, 18, 38, 39, -1, 22, 23, -1,
-1, -1, 27, -1, 29, 30, 50, 51, 52, 53,
54, 55, 56, -1, 58, -1, 41, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 53, -1,
-1, -1, -1, -1, -1, 60, -1, 62, -1, 64,
65, 66, 67, 1, -1, -1, 4, 5, 6, 7,
8, -1, -1, -1, -1, -1, 14, -1, -1, -1,
18, -1, -1, -1, 22, 23, -1, -1, -1, 27,
-1, 29, 30, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 41, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 53, -1, -1, -1, -1,
-1, -1, 60, -1, 62, -1, 64, 65, 1, 67,
-1, 4, 5, 6, 7, 8, -1, -1, -1, -1,
-1, 14, -1, -1, -1, 18, -1, -1, -1, 22,
23, -1, -1, -1, 27, -1, 29, 30, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 41, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
53, -1, -1, -1, -1, -1, -1, 60, -1, 62,
-1, 64, 65, 1, 67, -1, 4, 5, 6, 7,
8, -1, -1, -1, -1, -1, 14, -1, -1, -1,
18, -1, -1, -1, 22, 23, -1, -1, -1, 27,
-1, 29, 30, -1, 4, 5, 6, 7, 8, -1,
-1, -1, -1, 41, 14, -1, -1, -1, 18, -1,
-1, -1, 22, 23, -1, 53, -1, 27, -1, 29,
30, -1, 60, -1, 62, -1, 64, 65, -1, 67,
-1, 41, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 53, -1, -1, -1, -1, -1, 59,
60, -1, 62, -1, 64, 65, -1, 67, 4, 5,
6, 7, 8, -1, -1, -1, -1, -1, 14, -1,
-1, -1, 18, -1, -1, -1, 22, 23, -1, -1,
-1, 27, -1, 29, 30, -1, 4, 5, 6, 7,
8, -1, -1, -1, -1, 41, 14, -1, -1, -1,
18, -1, -1, -1, 22, 23, -1, 53, -1, 27,
-1, 29, 30, -1, 60, -1, 62, -1, 64, 65,
66, 67, -1, 41, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 53, -1, -1, -1, -1,
-1, -1, 60, -1, 62, 1, 64, 65, 4, 67,
-1, 7, -1, -1, -1, -1, -1, 13, 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, 41, 9, 10, 11, 12,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 25, 26, 60, -1, 62, -1, -1, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, -1, -1, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, -1, 58, 9, 10, 11, 12,
63, -1, -1, 66, -1, -1, -1, -1, -1, -1,
-1, -1, 25, 26, -1, -1, -1, -1, -1, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, -1, -1, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, -1, 58, 9, 10, 11, 12,
-1, -1, -1, 66, -1, -1, -1, -1, -1, -1,
-1, -1, 25, 26, -1, -1, -1, -1, -1, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, -1, -1, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, -1, 58, 9, 10, 11, 12,
-1, -1, -1, 66, -1, -1, -1, -1, -1, -1,
-1, -1, 25, 26, -1, -1, -1, -1, -1, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, -1, -1, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, -1, 58, 9, 10, 11, 12,
-1, -1, -1, 66, -1, -1, -1, -1, -1, -1,
-1, -1, 25, 26, -1, -1, -1, -1, -1, 32,
33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
-1, -1, -1, -1, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, -1, 58, 59, -1, 61, 9,
10, 11, 12, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 25, 26, -1, -1, -1,
-1, -1, 32, 33, 34, 35, 36, 37, 38, 39,
-1, -1, -1, 9, 10, 11, 12, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, -1, 58, 25,
26, 61, -1, -1, -1, -1, 32, 33, 34, 35,
36, 37, 38, 39, -1, -1, -1, 9, 10, 11,
12, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, -1, 58, 25, 26, 61, -1, -1, -1, -1,
32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
-1, 9, 10, 11, 12, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, -1, 58, 25, 26, 61,
-1, -1, -1, -1, 32, 33, 34, 35, 36, 37,
38, 39, -1, -1, -1, 9, 10, 11, 12, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, -1,
58, 25, 26, 61, -1, -1, -1, -1, 32, 33,
34, 35, 36, 37, 38, 39, -1, -1, -1, 9,
10, 11, 12, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, -1, 58, 25, 26, 61, -1, -1,
-1, -1, 32, 33, 34, 35, 36, 37, 38, 39,
-1, -1, -1, -1, -1, -1, -1, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, -1, 58, 59,
9, 10, 11, 12, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
-1, -1, -1, 32, 33, 34, 35, 36, 37, 38,
39, -1, -1, -1, -1, -1, -1, -1, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, -1, 58,
59, 9, 10, 11, 12, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
-1, -1, -1, -1, 32, 33, 34, 35, 36, 37,
38, 39, -1, -1, -1, -1, -1, -1, -1, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, -1,
58, 59, 9, 10, 11, 12, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 25, 26,
-1, -1, -1, -1, -1, 32, 33, 34, 35, 36,
37, 38, 39, -1, -1, -1, -1, -1, -1, -1,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
-1, 58, 59, 9, 10, 11, 12, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 25,
26, -1, -1, -1, -1, -1, 32, 33, 34, 35,
36, 37, 38, 39, -1, -1, -1, -1, -1, -1,
-1, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, -1, 58, 59, 9, 10, 11, 12, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
25, 26, -1, -1, -1, -1, -1, 32, 33, 34,
35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
-1, -1, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, -1, 58, 59, 9, 10, 11, 12, -1,
-1, -1, -1, -1, -1, -1, 20, 21, -1, -1,
-1, 25, 26, -1, -1, -1, -1, -1, 32, 33,
34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
-1, -1, -1, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, -1, 58, 9, 10, 11, 12, -1,
-1, -1, -1, -1, -1, 19, -1, -1, -1, -1,
-1, 25, 26, -1, -1, -1, -1, -1, 32, 33,
34, 35, 36, 37, 38, 39, -1, -1, -1, 9,
10, 11, 12, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, -1, 58, 25, 26, -1, -1, -1,
-1, -1, 32, 33, 34, 35, 36, 37, 38, 39,
-1, -1, -1, -1, 44, -1, -1, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, -1, 58, 9,
10, 11, 12, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 24, 25, 26, -1, -1, -1,
-1, -1, 32, 33, 34, 35, 36, 37, 38, 39,
-1, -1, -1, -1, -1, -1, -1, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, -1, 58, 9,
10, 11, 12, -1, -1, -1, -1, -1, -1, 19,
-1, -1, -1, -1, -1, 25, 26, -1, -1, -1,
-1, -1, 32, 33, 34, 35, 36, 37, 38, 39,
-1, -1, -1, 9, 10, 11, 12, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, -1, 58, 25,
26, -1, -1, -1, -1, -1, 32, 33, 34, 35,
36, 37, 38, 39, -1, -1, -1, 9, 10, 11,
12, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, -1, 58, 25, 26, -1, -1, -1, -1, -1,
32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
-1, 9, 10, 11, -1, -1, -1, 49, 50, 51,
52, 53, 54, 55, 56, -1, 58, 25, 26, -1,
-1, -1, -1, -1, 32, 33, 34, 35, 36, 37,
38, 39, -1, -1, 10, 11, -1, -1, -1, -1,
-1, 49, 50, 51, 52, 53, 54, 55, 56, 25,
58, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 38, 39, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 50, 51, 52, 53, 54, 55,
56, -1, 58
};
static const yytype_uint8 yystos[] =
{
0, 15, 70, 71, 4, 5, 6, 7, 8, 14,
18, 22, 23, 27, 29, 30, 41, 53, 60, 62,
64, 65, 67, 74, 78, 81, 87, 0, 16, 17,
72, 75, 76, 60, 58, 41, 4, 74, 87, 87,
74, 62, 1, 62, 82, 74, 1, 74, 4, 31,
1, 4, 7, 81, 1, 66, 74, 1, 4, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 60, 62,
81, 96, 97, 98, 9, 10, 11, 12, 25, 26,
32, 33, 34, 35, 36, 37, 38, 39, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 58, 59,
74, 5, 13, 64, 65, 77, 81, 77, 73, 74,
78, 72, 59, 74, 74, 88, 89, 83, 60, 63,
19, 13, 13, 28, 4, 4, 84, 61, 61, 1,
58, 66, 66, 48, 63, 68, 63, 74, 4, 63,
63, 68, 48, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 58, 62, 65,
67, 90, 91, 92, 81, 1, 63, 66, 74, 13,
73, 59, 59, 61, 84, 4, 62, 79, 80, 74,
1, 74, 91, 91, 1, 74, 47, 42, 43, 45,
1, 97, 53, 86, 87, 86, 61, 86, 86, 97,
4, 92, 93, 1, 4, 60, 62, 81, 94, 95,
96, 40, 47, 58, 66, 74, 58, 63, 66, 4,
62, 89, 45, 4, 59, 61, 59, 20, 21, 85,
60, 60, 74, 74, 86, 47, 63, 48, 66, 63,
63, 74, 4, 63, 48, 68, 63, 92, 74, 66,
66, 74, 58, 4, 80, 63, 74, 74, 74, 74,
44, 86, 86, 92, 92, 92, 61, 63, 92, 95,
92, 58, 58, 66, 74, 24, 19, 59, 59, 63,
92, 58, 59, 74, 74, 74, 92, 85, 61, 59,
61, 74, 61
};
static const yytype_uint8 yyr1[] =
{
0, 69, 70, 70, 71, 71, 72, 72, 73, 73,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 75, 75,
76, 76, 76, 77, 78, 78, 79, 79, 80, 80,
82, 81, 83, 81, 84, 84, 84, 85, 85, 86,
86, 86, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 87, 87, 87, 87, 87, 87, 87, 87, 87,
87, 88, 88, 89, 90, 90, 91, 91, 92, 92,
92, 93, 93, 94, 94, 95, 95, 95, 95, 95,
95, 95, 96, 96, 96, 96, 96, 96, 96, 96,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
96, 97, 97, 97, 97, 98, 98, 98, 98, 98,
98, 98, 98
};
static const yytype_uint8 yyr2[] =
{
0, 2, 3, 3, 0, 3, 0, 2, 0, 2,
2, 5, 9, 11, 9, 5, 4, 4, 2, 4,
5, 2, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 2, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 1, 2, 3,
5, 4, 2, 1, 5, 8, 1, 3, 2, 1,
0, 4, 0, 5, 0, 2, 4, 5, 3, 3,
2, 1, 1, 1, 3, 2, 3, 2, 4, 3,
2, 1, 3, 2, 2, 3, 5, 4, 4, 3,
7, 6, 6, 6, 5, 5, 1, 1, 1, 3,
3, 2, 3, 2, 2, 1, 4, 3, 3, 4,
3, 1, 3, 1, 3, 1, 3, 1, 2, 3,
3, 1, 3, 1, 3, 2, 4, 3, 3, 3,
5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 3, 3, 3, 3, 3, 1, 2,
1, 5, 3
};
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY (-2)
#define YYEOF 0
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus)
#define YYBACKUP(Token, Value) \
do \
if (yychar == YYEMPTY) \
{ \
yychar = (Token); \
yylval = (Value); \
YYPOPSTACK (yylen); \
yystate = *yyssp; \
goto yybackup; \
} \
else \
{ \
yyerror (&yylloc, answer, errors, locations, lexer_param_ptr, YY_("syntax error: cannot back up")); \
YYERROR; \
} \
while (0)
#define YYTERROR 1
#define YYERRCODE 256
#ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N) \
do \
if (N) \
{ \
(Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
(Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
(Current).last_line = YYRHSLOC (Rhs, N).last_line; \
(Current).last_column = YYRHSLOC (Rhs, N).last_column; \
} \
else \
{ \
(Current).first_line = (Current).last_line = \
YYRHSLOC (Rhs, 0).last_line; \
(Current).first_column = (Current).last_column = \
YYRHSLOC (Rhs, 0).last_column; \
} \
while (0)
#endif
#define YYRHSLOC(Rhs, K) ((Rhs)[K])
#if YYDEBUG
# ifndef YYFPRINTF
# include <stdio.h>
# define YYFPRINTF fprintf
# endif
# define YYDPRINTF(Args) \
do { \
if (yydebug) \
YYFPRINTF Args; \
} while (0)
#ifndef YY_LOCATION_PRINT
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
YY_ATTRIBUTE_UNUSED
static unsigned
yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
{
unsigned res = 0;
int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
if (0 <= yylocp->first_line)
{
res += YYFPRINTF (yyo, "%d", yylocp->first_line);
if (0 <= yylocp->first_column)
res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
}
if (0 <= yylocp->last_line)
{
if (yylocp->first_line < yylocp->last_line)
{
res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
if (0 <= end_col)
res += YYFPRINTF (yyo, ".%d", end_col);
}
else if (0 <= end_col && yylocp->first_column < end_col)
res += YYFPRINTF (yyo, "-%d", end_col);
}
return res;
}
# define YY_LOCATION_PRINT(File, Loc) \
yy_location_print_ (File, &(Loc))
# else
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
# endif
#endif
# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
Type, Value, Location, answer, errors, locations, lexer_param_ptr); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
static void
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr)
{
FILE *yyo = yyoutput;
YYUSE (yyo);
YYUSE (yylocationp);
YYUSE (answer);
YYUSE (errors);
YYUSE (locations);
YYUSE (lexer_param_ptr);
if (!yyvaluep)
return;
# ifdef YYPRINT
if (yytype < YYNTOKENS)
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
# endif
YYUSE (yytype);
}
static void
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr)
{
YYFPRINTF (yyoutput, "%s %s (",
yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
YY_LOCATION_PRINT (yyoutput, *yylocationp);
YYFPRINTF (yyoutput, ": ");
yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, answer, errors, locations, lexer_param_ptr);
YYFPRINTF (yyoutput, ")");
}
static void
yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
{
YYFPRINTF (stderr, "Stack now");
for (; yybottom <= yytop; yybottom++)
{
int yybot = *yybottom;
YYFPRINTF (stderr, " %d", yybot);
}
YYFPRINTF (stderr, "\n");
}
# define YY_STACK_PRINT(Bottom, Top) \
do { \
if (yydebug) \
yy_stack_print ((Bottom), (Top)); \
} while (0)
static void
yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr)
{
unsigned long int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
yyrule - 1, yylno);
for (yyi = 0; yyi < yynrhs; yyi++)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr,
yystos[yyssp[yyi + 1 - yynrhs]],
&(yyvsp[(yyi + 1) - (yynrhs)])
, &(yylsp[(yyi + 1) - (yynrhs)]) , answer, errors, locations, lexer_param_ptr);
YYFPRINTF (stderr, "\n");
}
}
# define YY_REDUCE_PRINT(Rule) \
do { \
if (yydebug) \
yy_reduce_print (yyssp, yyvsp, yylsp, Rule, answer, errors, locations, lexer_param_ptr); \
} while (0)
int yydebug;
#else
# define YYDPRINTF(Args)
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif
#ifndef YYINITDEPTH
# define YYINITDEPTH 200
#endif
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif
#if YYERROR_VERBOSE
# ifndef yystrlen
# if defined __GLIBC__ && defined _STRING_H
# define yystrlen strlen
# else
static YYSIZE_T
yystrlen (const char *yystr)
{
YYSIZE_T yylen;
for (yylen = 0; yystr[yylen]; yylen++)
continue;
return yylen;
}
# endif
# endif
# ifndef yystpcpy
# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
# define yystpcpy stpcpy
# else
static char *
yystpcpy (char *yydest, const char *yysrc)
{
char *yyd = yydest;
const char *yys = yysrc;
while ((*yyd++ = *yys++) != '\0')
continue;
return yyd - 1;
}
# endif
# endif
# ifndef yytnamerr
static YYSIZE_T
yytnamerr (char *yyres, const char *yystr)
{
if (*yystr == '"')
{
YYSIZE_T yyn = 0;
char const *yyp = yystr;
for (;;)
switch (*++yyp)
{
case '\'':
case ',':
goto do_not_strip_quotes;
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
default:
if (yyres)
yyres[yyn] = *yyp;
yyn++;
break;
case '"':
if (yyres)
yyres[yyn] = '\0';
return yyn;
}
do_not_strip_quotes: ;
}
if (! yyres)
return yystrlen (yystr);
return yystpcpy (yyres, yystr) - yyres;
}
# endif
static int
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
yytype_int16 *yyssp, int yytoken)
{
YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
const char *yyformat = YY_NULLPTR;
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
int yycount = 0;
if (yytoken != YYEMPTY)
{
int yyn = yypact[*yyssp];
yyarg[yycount++] = yytname[yytoken];
if (!yypact_value_is_default (yyn))
{
int yyxbegin = yyn < 0 ? -yyn : 0;
int yychecklim = YYLAST - yyn + 1;
int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
int yyx;
for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
&& !yytable_value_is_error (yytable[yyx + yyn]))
{
if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
{
yycount = 1;
yysize = yysize0;
break;
}
yyarg[yycount++] = yytname[yyx];
{
YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
if (! (yysize <= yysize1
&& yysize1 <= YYSTACK_ALLOC_MAXIMUM))
return 2;
yysize = yysize1;
}
}
}
}
switch (yycount)
{
# define YYCASE_(N, S) \
case N: \
yyformat = S; \
break
YYCASE_(0, YY_("syntax error"));
YYCASE_(1, YY_("syntax error, unexpected %s"));
YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
# undef YYCASE_
}
{
YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
return 2;
yysize = yysize1;
}
if (*yymsg_alloc < yysize)
{
*yymsg_alloc = 2 * yysize;
if (! (yysize <= *yymsg_alloc
&& *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
*yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
return 1;
}
{
char *yyp = *yymsg;
int yyi = 0;
while ((*yyp = *yyformat) != '\0')
if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
{
yyp += yytnamerr (yyp, yyarg[yyi++]);
yyformat += 2;
}
else
{
yyp++;
yyformat++;
}
}
return 0;
}
#endif
static void
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr)
{
YYUSE (yyvaluep);
YYUSE (yylocationp);
YYUSE (answer);
YYUSE (errors);
YYUSE (locations);
YYUSE (lexer_param_ptr);
if (!yymsg)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
switch (yytype)
{
case 4:
#line 36 "src/parser.y"
{ jv_free(((*yyvaluep).literal)); }
#line 1893 "src/parser.c"
break;
case 5:
#line 36 "src/parser.y"
{ jv_free(((*yyvaluep).literal)); }
#line 1899 "src/parser.c"
break;
case 6:
#line 36 "src/parser.y"
{ jv_free(((*yyvaluep).literal)); }
#line 1905 "src/parser.c"
break;
case 7:
#line 36 "src/parser.y"
{ jv_free(((*yyvaluep).literal)); }
#line 1911 "src/parser.c"
break;
case 42:
#line 36 "src/parser.y"
{ jv_free(((*yyvaluep).literal)); }
#line 1917 "src/parser.c"
break;
case 71:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1923 "src/parser.c"
break;
case 72:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1929 "src/parser.c"
break;
case 73:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1935 "src/parser.c"
break;
case 74:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1941 "src/parser.c"
break;
case 75:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1947 "src/parser.c"
break;
case 76:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1953 "src/parser.c"
break;
case 77:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1959 "src/parser.c"
break;
case 78:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1965 "src/parser.c"
break;
case 79:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1971 "src/parser.c"
break;
case 80:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1977 "src/parser.c"
break;
case 81:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1983 "src/parser.c"
break;
case 84:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1989 "src/parser.c"
break;
case 85:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 1995 "src/parser.c"
break;
case 86:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2001 "src/parser.c"
break;
case 87:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2007 "src/parser.c"
break;
case 88:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2013 "src/parser.c"
break;
case 89:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2019 "src/parser.c"
break;
case 90:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2025 "src/parser.c"
break;
case 91:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2031 "src/parser.c"
break;
case 92:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2037 "src/parser.c"
break;
case 93:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2043 "src/parser.c"
break;
case 94:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2049 "src/parser.c"
break;
case 95:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2055 "src/parser.c"
break;
case 96:
#line 36 "src/parser.y"
{ jv_free(((*yyvaluep).literal)); }
#line 2061 "src/parser.c"
break;
case 97:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2067 "src/parser.c"
break;
case 98:
#line 37 "src/parser.y"
{ block_free(((*yyvaluep).blk)); }
#line 2073 "src/parser.c"
break;
default:
break;
}
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
int
yyparse (block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr)
{
int yychar;
YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
static YYLTYPE yyloc_default
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
= { 1, 1, 1, 1 }
# endif
;
YYLTYPE yylloc = yyloc_default;
int yynerrs;
int yystate;
int yyerrstatus;
yytype_int16 yyssa[YYINITDEPTH];
yytype_int16 *yyss;
yytype_int16 *yyssp;
YYSTYPE yyvsa[YYINITDEPTH];
YYSTYPE *yyvs;
YYSTYPE *yyvsp;
YYLTYPE yylsa[YYINITDEPTH];
YYLTYPE *yyls;
YYLTYPE *yylsp;
YYLTYPE yyerror_range[3];
YYSIZE_T yystacksize;
int yyn;
int yyresult;
int yytoken = 0;
YYSTYPE yyval;
YYLTYPE yyloc;
#if YYERROR_VERBOSE
char yymsgbuf[128];
char *yymsg = yymsgbuf;
YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
#endif
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
int yylen = 0;
yyssp = yyss = yyssa;
yyvsp = yyvs = yyvsa;
yylsp = yyls = yylsa;
yystacksize = YYINITDEPTH;
YYDPRINTF ((stderr, "Starting parse\n"));
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
yychar = YYEMPTY;
yylsp[0] = yylloc;
goto yysetstate;
yynewstate:
yyssp++;
yysetstate:
*yyssp = yystate;
if (yyss + yystacksize - 1 <= yyssp)
{
YYSIZE_T yysize = yyssp - yyss + 1;
#ifdef yyoverflow
{
YYSTYPE *yyvs1 = yyvs;
yytype_int16 *yyss1 = yyss;
YYLTYPE *yyls1 = yyls;
yyoverflow (YY_("memory exhausted"),
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
&yyls1, yysize * sizeof (*yylsp),
&yystacksize);
yyls = yyls1;
yyss = yyss1;
yyvs = yyvs1;
}
#else
# ifndef YYSTACK_RELOCATE
goto yyexhaustedlab;
# else
if (YYMAXDEPTH <= yystacksize)
goto yyexhaustedlab;
yystacksize *= 2;
if (YYMAXDEPTH < yystacksize)
yystacksize = YYMAXDEPTH;
{
yytype_int16 *yyss1 = yyss;
union yyalloc *yyptr =
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
goto yyexhaustedlab;
YYSTACK_RELOCATE (yyss_alloc, yyss);
YYSTACK_RELOCATE (yyvs_alloc, yyvs);
YYSTACK_RELOCATE (yyls_alloc, yyls);
# undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
# endif
#endif
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
yylsp = yyls + yysize - 1;
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
if (yystate == YYFINAL)
YYACCEPT;
goto yybackup;
yybackup:
yyn = yypact[yystate];
if (yypact_value_is_default (yyn))
goto yydefault;
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = yylex (&yylval, &yylloc, answer, errors, locations, lexer_param_ptr);
}
if (yychar <= YYEOF)
{
yychar = yytoken = YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
else
{
yytoken = YYTRANSLATE (yychar);
YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
}
yyn += yytoken;
if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
goto yydefault;
yyn = yytable[yyn];
if (yyn <= 0)
{
if (yytable_value_is_error (yyn))
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
if (yyerrstatus)
yyerrstatus--;
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
yychar = YYEMPTY;
yystate = yyn;
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
*++yylsp = yylloc;
goto yynewstate;
yydefault:
yyn = yydefact[yystate];
if (yyn == 0)
goto yyerrlab;
goto yyreduce;
yyreduce:
yylen = yyr2[yyn];
yyval = yyvsp[1-yylen];
YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
case 2:
#line 300 "src/parser.y"
{
*answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk));
}
#line 2369 "src/parser.c"
break;
case 3:
#line 303 "src/parser.y"
{
*answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
}
#line 2377 "src/parser.c"
break;
case 4:
#line 308 "src/parser.y"
{
(yyval.blk) = gen_noop();
}
#line 2385 "src/parser.c"
break;
case 5:
#line 311 "src/parser.y"
{
if (!block_is_const((yyvsp[-1].blk))) {
FAIL((yyloc), "Module metadata must be constant");
(yyval.blk) = gen_noop();
block_free((yyvsp[-1].blk));
} else {
(yyval.blk) = gen_module((yyvsp[-1].blk));
}
}
#line 2399 "src/parser.c"
break;
case 6:
#line 322 "src/parser.y"
{
(yyval.blk) = gen_noop();
}
#line 2407 "src/parser.c"
break;
case 7:
#line 325 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk));
}
#line 2415 "src/parser.c"
break;
case 8:
#line 330 "src/parser.y"
{
(yyval.blk) = gen_noop();
}
#line 2423 "src/parser.c"
break;
case 9:
#line 333 "src/parser.y"
{
(yyval.blk) = block_bind((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO);
}
#line 2431 "src/parser.c"
break;
case 10:
#line 338 "src/parser.y"
{
(yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO);
}
#line 2439 "src/parser.c"
break;
case 11:
#line 342 "src/parser.y"
{
(yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2447 "src/parser.c"
break;
case 12:
#line 345 "src/parser.y"
{
(yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk));
}
#line 2455 "src/parser.c"
break;
case 13:
#line 349 "src/parser.y"
{
(yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk));
}
#line 2463 "src/parser.c"
break;
case 14:
#line 353 "src/parser.y"
{
(yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop());
}
#line 2471 "src/parser.c"
break;
case 15:
#line 357 "src/parser.y"
{
(yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
}
#line 2479 "src/parser.c"
break;
case 16:
#line 360 "src/parser.y"
{
FAIL((yyloc), "Possibly unterminated 'if' statement");
(yyval.blk) = (yyvsp[-2].blk);
}
#line 2488 "src/parser.c"
break;
case 17:
#line 365 "src/parser.y"
{
(yyval.blk) = gen_try((yyvsp[-2].blk), gen_try_handler((yyvsp[0].blk)));
}
#line 2497 "src/parser.c"
break;
case 18:
#line 369 "src/parser.y"
{
(yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK));
}
#line 2506 "src/parser.c"
break;
case 19:
#line 373 "src/parser.y"
{
FAIL((yyloc), "Possibly unterminated 'try' statement");
(yyval.blk) = (yyvsp[-2].blk);
}
#line 2515 "src/parser.c"
break;
case 20:
#line 378 "src/parser.y"
{
jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[-2].literal)));
(yyval.blk) = gen_location((yyloc), locations, gen_label(jv_string_value(v), (yyvsp[0].blk)));
jv_free((yyvsp[-2].literal));
jv_free(v);
}
#line 2526 "src/parser.c"
break;
case 21:
#line 385 "src/parser.y"
{
(yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK));
}
#line 2534 "src/parser.c"
break;
case 22:
#line 389 "src/parser.y"
{
(yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk))));
}
#line 2542 "src/parser.c"
break;
case 23:
#line 393 "src/parser.y"
{
(yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2550 "src/parser.c"
break;
case 24:
#line 397 "src/parser.y"
{
(yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2558 "src/parser.c"
break;
case 25:
#line 401 "src/parser.y"
{
(yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2566 "src/parser.c"
break;
case 26:
#line 405 "src/parser.y"
{
(yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2574 "src/parser.c"
break;
case 27:
#line 409 "src/parser.y"
{
(yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk))));
}
#line 2582 "src/parser.c"
break;
case 28:
#line 413 "src/parser.y"
{
(yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2590 "src/parser.c"
break;
case 29:
#line 417 "src/parser.y"
{
(yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2598 "src/parser.c"
break;
case 30:
#line 421 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+');
}
#line 2606 "src/parser.c"
break;
case 31:
#line 425 "src/parser.y"
{
(yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+');
}
#line 2614 "src/parser.c"
break;
case 32:
#line 429 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop()));
}
#line 2622 "src/parser.c"
break;
case 33:
#line 433 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-');
}
#line 2630 "src/parser.c"
break;
case 34:
#line 437 "src/parser.y"
{
(yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-');
}
#line 2638 "src/parser.c"
break;
case 35:
#line 441 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*');
}
#line 2646 "src/parser.c"
break;
case 36:
#line 445 "src/parser.y"
{
(yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*');
}
#line 2654 "src/parser.c"
break;
case 37:
#line 449 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '/');
if (block_is_const_inf((yyval.blk)))
FAIL((yyloc), "Division by zero?");
}
#line 2664 "src/parser.c"
break;
case 38:
#line 455 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '%');
if (block_is_const_inf((yyval.blk)))
FAIL((yyloc), "Remainder by zero?");
}
#line 2674 "src/parser.c"
break;
case 39:
#line 461 "src/parser.y"
{
(yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/');
}
#line 2682 "src/parser.c"
break;
case 40:
#line 465 "src/parser.y"
{
(yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%');
}
#line 2690 "src/parser.c"
break;
case 41:
#line 469 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ);
}
#line 2698 "src/parser.c"
break;
case 42:
#line 473 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ);
}
#line 2706 "src/parser.c"
break;
case 43:
#line 477 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<');
}
#line 2714 "src/parser.c"
break;
case 44:
#line 481 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>');
}
#line 2722 "src/parser.c"
break;
case 45:
#line 485 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ);
}
#line 2730 "src/parser.c"
break;
case 46:
#line 489 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ);
}
#line 2738 "src/parser.c"
break;
case 47:
#line 493 "src/parser.y"
{
(yyval.blk) = (yyvsp[0].blk);
}
#line 2746 "src/parser.c"
break;
case 48:
#line 498 "src/parser.y"
{
(yyval.blk) = (yyvsp[-1].blk);
}
#line 2754 "src/parser.c"
break;
case 49:
#line 501 "src/parser.y"
{
if (!block_is_const((yyvsp[-1].blk))) {
FAIL((yyloc), "Module metadata must be constant");
(yyval.blk) = gen_noop();
block_free((yyvsp[-2].blk));
block_free((yyvsp[-1].blk));
} else if (block_const_kind((yyvsp[-1].blk)) != JV_KIND_OBJECT) {
FAIL((yyloc), "Module metadata must be an object");
(yyval.blk) = gen_noop();
block_free((yyvsp[-2].blk));
block_free((yyvsp[-1].blk));
} else {
(yyval.blk) = gen_import_meta((yyvsp[-2].blk), (yyvsp[-1].blk));
}
}
#line 2774 "src/parser.c"
break;
case 50:
#line 518 "src/parser.y"
{
jv v = block_const((yyvsp[-3].blk));
(yyval.blk) = gen_import(jv_string_value(v), jv_string_value((yyvsp[0].literal)), 1);
block_free((yyvsp[-3].blk));
jv_free((yyvsp[0].literal));
jv_free(v);
}
#line 2788 "src/parser.c"
break;
case 51:
#line 527 "src/parser.y"
{
jv v = block_const((yyvsp[-2].blk));
(yyval.blk) = gen_import(jv_string_value(v), jv_string_value((yyvsp[0].literal)), 0);
block_free((yyvsp[-2].blk));
jv_free((yyvsp[0].literal));
jv_free(v);
}
#line 2800 "src/parser.c"
break;
case 52:
#line 534 "src/parser.y"
{
jv v = block_const((yyvsp[0].blk));
(yyval.blk) = gen_import(jv_string_value(v), NULL, 0);
block_free((yyvsp[0].blk));
jv_free(v);
}
#line 2811 "src/parser.c"
break;
case 53:
#line 542 "src/parser.y"
{
if (!block_is_const((yyvsp[0].blk))) {
FAIL((yyloc), "Import path must be constant");
(yyval.blk) = gen_const(jv_string(""));
block_free((yyvsp[0].blk));
} else {
(yyval.blk) = (yyvsp[0].blk);
}
}
#line 2825 "src/parser.c"
break;
case 54:
#line 553 "src/parser.y"
{
(yyval.blk) = gen_function(jv_string_value((yyvsp[-3].literal)), gen_noop(), (yyvsp[-1].blk));
jv_free((yyvsp[-3].literal));
}
#line 2834 "src/parser.c"
break;
case 55:
#line 558 "src/parser.y"
{
(yyval.blk) = gen_function(jv_string_value((yyvsp[-6].literal)), (yyvsp[-4].blk), (yyvsp[-1].blk));
jv_free((yyvsp[-6].literal));
}
#line 2843 "src/parser.c"
break;
case 56:
#line 564 "src/parser.y"
{
(yyval.blk) = (yyvsp[0].blk);
}
#line 2851 "src/parser.c"
break;
case 57:
#line 567 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2859 "src/parser.c"
break;
case 58:
#line 572 "src/parser.y"
{
(yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal)));
jv_free((yyvsp[0].literal));
}
#line 2868 "src/parser.c"
break;
case 59:
#line 577 "src/parser.y"
{
(yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal)));
jv_free((yyvsp[0].literal));
}
#line 2877 "src/parser.c"
break;
case 60:
#line 584 "src/parser.y"
{ (yyval.literal) = jv_string("text"); }
#line 2883 "src/parser.c"
break;
case 61:
#line 584 "src/parser.y"
{
(yyval.blk) = (yyvsp[-1].blk);
jv_free((yyvsp[-2].literal));
}
#line 2892 "src/parser.c"
break;
case 62:
#line 588 "src/parser.y"
{ (yyval.literal) = (yyvsp[-1].literal); }
#line 2898 "src/parser.c"
break;
case 63:
#line 588 "src/parser.y"
{
(yyval.blk) = (yyvsp[-1].blk);
jv_free((yyvsp[-2].literal));
}
#line 2907 "src/parser.c"
break;
case 64:
#line 595 "src/parser.y"
{
(yyval.blk) = gen_const(jv_string(""));
}
#line 2915 "src/parser.c"
break;
case 65:
#line 598 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+');
}
#line 2923 "src/parser.c"
break;
case 66:
#line 601 "src/parser.y"
{
(yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+');
}
#line 2931 "src/parser.c"
break;
case 67:
#line 607 "src/parser.y"
{
(yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
}
#line 2939 "src/parser.c"
break;
case 68:
#line 610 "src/parser.y"
{
(yyval.blk) = (yyvsp[-1].blk);
}
#line 2947 "src/parser.c"
break;
case 69:
#line 615 "src/parser.y"
{
(yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 2955 "src/parser.c"
break;
case 70:
#line 618 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop()));
}
#line 2963 "src/parser.c"
break;
case 71:
#line 621 "src/parser.y"
{
(yyval.blk) = (yyvsp[0].blk);
}
#line 2971 "src/parser.c"
break;
case 72:
#line 627 "src/parser.y"
{
(yyval.blk) = gen_noop();
}
#line 2979 "src/parser.c"
break;
case 73:
#line 630 "src/parser.y"
{
(yyval.blk) = gen_call("recurse", gen_noop());
}
#line 2987 "src/parser.c"
break;
case 74:
#line 633 "src/parser.y"
{
jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[0].literal))); (yyval.blk) = gen_location((yyloc), locations,
BLOCK(gen_op_unbound(LOADV, jv_string_value(v)),
gen_call("error", gen_noop())));
jv_free(v);
jv_free((yyvsp[0].literal));
}
#line 3000 "src/parser.c"
break;
case 75:
#line 641 "src/parser.y"
{
FAIL((yyloc), "break requires a label to break to");
(yyval.blk) = gen_noop();
}
#line 3009 "src/parser.c"
break;
case 76:
#line 645 "src/parser.y"
{
(yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal)));
}
#line 3017 "src/parser.c"
break;
case 77:
#line 648 "src/parser.y"
{
(yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal)));
}
#line 3025 "src/parser.c"
break;
case 78:
#line 651 "src/parser.y"
{
(yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk));
}
#line 3033 "src/parser.c"
break;
case 79:
#line 654 "src/parser.y"
{
(yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk));
}
#line 3041 "src/parser.c"
break;
case 80:
#line 657 "src/parser.y"
{
(yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal)));
}
#line 3049 "src/parser.c"
break;
case 81:
#line 660 "src/parser.y"
{
(yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal)));
}
#line 3057 "src/parser.c"
break;
case 82:
#line 663 "src/parser.y"
{
(yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 3065 "src/parser.c"
break;
case 83:
#line 666 "src/parser.y"
{
(yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk));
}
#line 3073 "src/parser.c"
break;
case 84:
#line 669 "src/parser.y"
{
FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields");
(yyval.blk) = gen_noop();
}
#line 3082 "src/parser.c"
break;
case 85:
#line 673 "src/parser.y"
{
jv_free((yyvsp[-1].literal));
FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields");
(yyval.blk) = gen_noop();
}
#line 3092 "src/parser.c"
break;
case 86:
#line 679 "src/parser.y"
{
(yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk));
}
#line 3100 "src/parser.c"
break;
case 87:
#line 682 "src/parser.y"
{
(yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk));
}
#line 3108 "src/parser.c"
break;
case 88:
#line 685 "src/parser.y"
{
(yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT));
}
#line 3116 "src/parser.c"
break;
case 89:
#line 688 "src/parser.y"
{
(yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH));
}
#line 3124 "src/parser.c"
break;
case 90:
#line 691 "src/parser.y"
{
(yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT);
}
#line 3132 "src/parser.c"
break;
case 91:
#line 694 "src/parser.y"
{
(yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT);
}
#line 3140 "src/parser.c"
break;
case 92:
#line 697 "src/parser.y"
{
(yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT);
}
#line 3148 "src/parser.c"
break;
case 93:
#line 700 "src/parser.y"
{
(yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX);
}
#line 3156 "src/parser.c"
break;
case 94:
#line 703 "src/parser.y"
{
(yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX);
}
#line 3164 "src/parser.c"
break;
case 95:
#line 706 "src/parser.y"
{
(yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX);
}
#line 3172 "src/parser.c"
break;
case 96:
#line 709 "src/parser.y"
{
(yyval.blk) = gen_const((yyvsp[0].literal));
}
#line 3180 "src/parser.c"
break;
case 97:
#line 712 "src/parser.y"
{
(yyval.blk) = (yyvsp[0].blk);
}
#line 3188 "src/parser.c"
break;
case 98:
#line 715 "src/parser.y"
{
(yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal));
}
#line 3196 "src/parser.c"
break;
case 99:
#line 718 "src/parser.y"
{
(yyval.blk) = (yyvsp[-1].blk);
}
#line 3204 "src/parser.c"
break;
case 100:
#line 721 "src/parser.y"
{
(yyval.blk) = gen_collect((yyvsp[-1].blk));
}
#line 3212 "src/parser.c"
break;
case 101:
#line 724 "src/parser.y"
{
(yyval.blk) = gen_const(jv_array());
}
#line 3220 "src/parser.c"
break;
case 102:
#line 727 "src/parser.y"
{
block o = gen_const_object((yyvsp[-1].blk));
if (o.first != NULL)
(yyval.blk) = o;
else
(yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP));
}
#line 3232 "src/parser.c"
break;
case 103:
#line 734 "src/parser.y"
{
(yyval.blk) = gen_const(JV_OBJECT(jv_string("file"), jv_copy(locations->fname),
jv_string("line"), jv_number(locfile_get_line(locations, (yyloc).start) + 1)));
}
#line 3241 "src/parser.c"
break;
case 104:
#line 738 "src/parser.y"
{
(yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))));
jv_free((yyvsp[0].literal));
}
#line 3250 "src/parser.c"
break;
case 105:
#line 742 "src/parser.y"
{
const char *s = jv_string_value((yyvsp[0].literal));
if (strcmp(s, "false") == 0)
(yyval.blk) = gen_const(jv_false());
else if (strcmp(s, "true") == 0)
(yyval.blk) = gen_const(jv_true());
else if (strcmp(s, "null") == 0)
(yyval.blk) = gen_const(jv_null());
else
(yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop()));
jv_free((yyvsp[0].literal));
}
#line 3267 "src/parser.c"
break;
case 106:
#line 754 "src/parser.y"
{
(yyval.blk) = gen_call(jv_string_value((yyvsp[-3].literal)), (yyvsp[-1].blk));
(yyval.blk) = gen_location((yylsp[-3]), locations, (yyval.blk));
jv_free((yyvsp[-3].literal));
}
#line 3277 "src/parser.c"
break;
case 107:
#line 759 "src/parser.y"
{ (yyval.blk) = gen_noop(); }
#line 3283 "src/parser.c"
break;
case 108:
#line 760 "src/parser.y"
{ (yyval.blk) = gen_noop(); }
#line 3289 "src/parser.c"
break;
case 109:
#line 761 "src/parser.y"
{ (yyval.blk) = (yyvsp[-3].blk); }
#line 3295 "src/parser.c"
break;
case 110:
#line 762 "src/parser.y"
{ (yyval.blk) = gen_noop(); }
#line 3301 "src/parser.c"
break;
case 111:
#line 765 "src/parser.y"
{
(yyval.blk) = (yyvsp[0].blk);
}
#line 3309 "src/parser.c"
break;
case 112:
#line 768 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 3317 "src/parser.c"
break;
case 113:
#line 773 "src/parser.y"
{
(yyval.blk) = gen_lambda((yyvsp[0].blk));
}
#line 3325 "src/parser.c"
break;
case 114:
#line 778 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[-2].blk), gen_destructure_alt((yyvsp[0].blk)));
}
#line 3333 "src/parser.c"
break;
case 115:
#line 781 "src/parser.y"
{
(yyval.blk) = gen_destructure_alt((yyvsp[0].blk));
}
#line 3341 "src/parser.c"
break;
case 116:
#line 786 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 3349 "src/parser.c"
break;
case 117:
#line 789 "src/parser.y"
{
(yyval.blk) = (yyvsp[0].blk);
}
#line 3357 "src/parser.c"
break;
case 118:
#line 794 "src/parser.y"
{
(yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)));
jv_free((yyvsp[0].literal));
}
#line 3366 "src/parser.c"
break;
case 119:
#line 798 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP));
}
#line 3374 "src/parser.c"
break;
case 120:
#line 801 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP));
}
#line 3382 "src/parser.c"
break;
case 121:
#line 806 "src/parser.y"
{
(yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk));
}
#line 3390 "src/parser.c"
break;
case 122:
#line 809 "src/parser.y"
{
(yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 3398 "src/parser.c"
break;
case 123:
#line 814 "src/parser.y"
{
(yyval.blk) = (yyvsp[0].blk);
}
#line 3406 "src/parser.c"
break;
case 124:
#line 817 "src/parser.y"
{
(yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 3414 "src/parser.c"
break;
case 125:
#line 822 "src/parser.y"
{
(yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))));
}
#line 3422 "src/parser.c"
break;
case 126:
#line 825 "src/parser.y"
{
(yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), BLOCK(gen_op_simple(DUP), gen_op_unbound(STOREV, jv_string_value((yyvsp[-2].literal))), (yyvsp[0].blk)));
}
#line 3430 "src/parser.c"
break;
case 127:
#line 828 "src/parser.y"
{
(yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
}
#line 3438 "src/parser.c"
break;
case 128:
#line 831 "src/parser.y"
{
(yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
}
#line 3446 "src/parser.c"
break;
case 129:
#line 834 "src/parser.y"
{
(yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 3454 "src/parser.c"
break;
case 130:
#line 837 "src/parser.y"
{
jv msg = check_object_key((yyvsp[-3].blk));
if (jv_is_valid(msg)) {
FAIL((yyloc), jv_string_value(msg));
}
jv_free(msg);
(yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk));
}
#line 3467 "src/parser.c"
break;
case 131:
#line 845 "src/parser.y"
{
FAIL((yyloc), "May need parentheses around object key expression");
(yyval.blk) = (yyvsp[0].blk);
}
#line 3476 "src/parser.c"
break;
case 132:
#line 851 "src/parser.y"
{
(yyval.literal) = jv_string("as");
}
#line 3484 "src/parser.c"
break;
case 133:
#line 854 "src/parser.y"
{
(yyval.literal) = jv_string("def");
}
#line 3492 "src/parser.c"
break;
case 134:
#line 857 "src/parser.y"
{
(yyval.literal) = jv_string("module");
}
#line 3500 "src/parser.c"
break;
case 135:
#line 860 "src/parser.y"
{
(yyval.literal) = jv_string("import");
}
#line 3508 "src/parser.c"
break;
case 136:
#line 863 "src/parser.y"
{
(yyval.literal) = jv_string("include");
}
#line 3516 "src/parser.c"
break;
case 137:
#line 866 "src/parser.y"
{
(yyval.literal) = jv_string("if");
}
#line 3524 "src/parser.c"
break;
case 138:
#line 869 "src/parser.y"
{
(yyval.literal) = jv_string("then");
}
#line 3532 "src/parser.c"
break;
case 139:
#line 872 "src/parser.y"
{
(yyval.literal) = jv_string("else");
}
#line 3540 "src/parser.c"
break;
case 140:
#line 875 "src/parser.y"
{
(yyval.literal) = jv_string("elif");
}
#line 3548 "src/parser.c"
break;
case 141:
#line 878 "src/parser.y"
{
(yyval.literal) = jv_string("reduce");
}
#line 3556 "src/parser.c"
break;
case 142:
#line 881 "src/parser.y"
{
(yyval.literal) = jv_string("foreach");
}
#line 3564 "src/parser.c"
break;
case 143:
#line 884 "src/parser.y"
{
(yyval.literal) = jv_string("end");
}
#line 3572 "src/parser.c"
break;
case 144:
#line 887 "src/parser.y"
{
(yyval.literal) = jv_string("and");
}
#line 3580 "src/parser.c"
break;
case 145:
#line 890 "src/parser.y"
{
(yyval.literal) = jv_string("or");
}
#line 3588 "src/parser.c"
break;
case 146:
#line 893 "src/parser.y"
{
(yyval.literal) = jv_string("try");
}
#line 3596 "src/parser.c"
break;
case 147:
#line 896 "src/parser.y"
{
(yyval.literal) = jv_string("catch");
}
#line 3604 "src/parser.c"
break;
case 148:
#line 899 "src/parser.y"
{
(yyval.literal) = jv_string("label");
}
#line 3612 "src/parser.c"
break;
case 149:
#line 902 "src/parser.y"
{
(yyval.literal) = jv_string("break");
}
#line 3620 "src/parser.c"
break;
case 150:
#line 905 "src/parser.y"
{
(yyval.literal) = jv_string("__loc__");
}
#line 3628 "src/parser.c"
break;
case 151:
#line 910 "src/parser.y"
{
(yyval.blk)=gen_noop();
}
#line 3636 "src/parser.c"
break;
case 152:
#line 913 "src/parser.y"
{ (yyval.blk) = (yyvsp[0].blk); }
#line 3642 "src/parser.c"
break;
case 153:
#line 914 "src/parser.y"
{ (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); }
#line 3648 "src/parser.c"
break;
case 154:
#line 915 "src/parser.y"
{ (yyval.blk) = (yyvsp[0].blk); }
#line 3654 "src/parser.c"
break;
case 155:
#line 918 "src/parser.y"
{
(yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
}
#line 3662 "src/parser.c"
break;
case 156:
#line 921 "src/parser.y"
{
(yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
}
#line 3670 "src/parser.c"
break;
case 157:
#line 924 "src/parser.y"
{
(yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk));
}
#line 3678 "src/parser.c"
break;
case 158:
#line 927 "src/parser.y"
{
(yyval.blk) = gen_dictpair((yyvsp[0].blk), BLOCK(gen_op_simple(POP), gen_op_simple(DUP2),
gen_op_simple(DUP2), gen_op_simple(INDEX)));
}
#line 3687 "src/parser.c"
break;
case 159:
#line 931 "src/parser.y"
{
(yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)),
gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal)))));
}
#line 3696 "src/parser.c"
break;
case 160:
#line 935 "src/parser.y"
{
(yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))),
gen_index(gen_noop(), gen_const((yyvsp[0].literal))));
}
#line 3705 "src/parser.c"
break;
case 161:
#line 939 "src/parser.y"
{
jv msg = check_object_key((yyvsp[-3].blk));
if (jv_is_valid(msg)) {
FAIL((yyloc), jv_string_value(msg));
}
jv_free(msg);
(yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk));
}
#line 3718 "src/parser.c"
break;
case 162:
#line 947 "src/parser.y"
{
FAIL((yyloc), "May need parentheses around object key expression");
(yyval.blk) = (yyvsp[0].blk);
}
#line 3727 "src/parser.c"
break;
#line 3731 "src/parser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
YYPOPSTACK (yylen);
yylen = 0;
YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
*++yylsp = yyloc;
yyn = yyr1[yyn];
yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
yystate = yydefgoto[yyn - YYNTOKENS];
goto yynewstate;
yyerrlab:
yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
if (!yyerrstatus)
{
++yynerrs;
#if ! YYERROR_VERBOSE
yyerror (&yylloc, answer, errors, locations, lexer_param_ptr, YY_("syntax error"));
#else
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
yyssp, yytoken)
{
char const *yymsgp = YY_("syntax error");
int yysyntax_error_status;
yysyntax_error_status = YYSYNTAX_ERROR;
if (yysyntax_error_status == 0)
yymsgp = yymsg;
else if (yysyntax_error_status == 1)
{
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
if (!yymsg)
{
yymsg = yymsgbuf;
yymsg_alloc = sizeof yymsgbuf;
yysyntax_error_status = 2;
}
else
{
yysyntax_error_status = YYSYNTAX_ERROR;
yymsgp = yymsg;
}
}
yyerror (&yylloc, answer, errors, locations, lexer_param_ptr, yymsgp);
if (yysyntax_error_status == 2)
goto yyexhaustedlab;
}
# undef YYSYNTAX_ERROR
#endif
}
yyerror_range[1] = yylloc;
if (yyerrstatus == 3)
{
if (yychar <= YYEOF)
{
if (yychar == YYEOF)
YYABORT;
}
else
{
yydestruct ("Error: discarding",
yytoken, &yylval, &yylloc, answer, errors, locations, lexer_param_ptr);
yychar = YYEMPTY;
}
}
goto yyerrlab1;
yyerrorlab:
if ( 0)
goto yyerrorlab;
yyerror_range[1] = yylsp[1-yylen];
YYPOPSTACK (yylen);
yylen = 0;
YY_STACK_PRINT (yyss, yyssp);
yystate = *yyssp;
goto yyerrlab1;
yyerrlab1:
yyerrstatus = 3;
for (;;)
{
yyn = yypact[yystate];
if (!yypact_value_is_default (yyn))
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
{
yyn = yytable[yyn];
if (0 < yyn)
break;
}
}
if (yyssp == yyss)
YYABORT;
yyerror_range[1] = *yylsp;
yydestruct ("Error: popping",
yystos[yystate], yyvsp, yylsp, answer, errors, locations, lexer_param_ptr);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
}
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
yyerror_range[2] = yylloc;
YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
*++yylsp = yyloc;
YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
yystate = yyn;
goto yynewstate;
yyacceptlab:
yyresult = 0;
goto yyreturn;
yyabortlab:
yyresult = 1;
goto yyreturn;
#if !defined yyoverflow || YYERROR_VERBOSE
yyexhaustedlab:
yyerror (&yylloc, answer, errors, locations, lexer_param_ptr, YY_("memory exhausted"));
yyresult = 2;
#endif
yyreturn:
if (yychar != YYEMPTY)
{
yytoken = YYTRANSLATE (yychar);
yydestruct ("Cleanup: discarding lookahead",
yytoken, &yylval, &yylloc, answer, errors, locations, lexer_param_ptr);
}
YYPOPSTACK (yylen);
YY_STACK_PRINT (yyss, yyssp);
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
yystos[*yyssp], yyvsp, yylsp, answer, errors, locations, lexer_param_ptr);
YYPOPSTACK (1);
}
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
#if YYERROR_VERBOSE
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
#endif
return yyresult;
}
#line 951 "src/parser.y"
int jq_parse(struct locfile* locations, block* answer) {
struct lexer_param scanner;
YY_BUFFER_STATE buf;
jq_yylex_init_extra(0, &scanner.lexer);
buf = jq_yy_scan_bytes(locations->data, locations->length, scanner.lexer);
int errors = 0;
*answer = gen_noop();
yyparse(answer, &errors, locations, &scanner);
jq_yy_delete_buffer(buf, scanner.lexer);
jq_yylex_destroy(scanner.lexer);
if (errors > 0) {
block_free(*answer);
*answer = gen_noop();
}
return errors;
}
int jq_parse_library(struct locfile* locations, block* answer) {
int errs = jq_parse(locations, answer);
if (errs) return errs;
if (block_has_main(*answer)) {
locfile_locate(locations, UNKNOWN_LOCATION, "jq: error: library should only have function definitions, not a main expression");
return 1;
}
assert(block_has_only_binders_and_imports(*answer, OP_IS_CALL_PSEUDO));
return 0;
}