diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-07-29 11:24:49 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-07-29 11:24:49 +0900 |
| commit | 63a983c4d7925fe82d84cece2530c44bd0f89655 (patch) | |
| tree | 17c251ba02a2b2771f08c8372f5ddef9423f72a8 | |
| parent | 5cde5983d98fbfe9d2dcc7a45a0da6fa8011aded (diff) | |
| download | mruby-63a983c4d7925fe82d84cece2530c44bd0f89655.tar.gz mruby-63a983c4d7925fe82d84cece2530c44bd0f89655.zip | |
y.tab.c: remove auto generated `y.tab.c` from repository.
It used to be generated in the build, but `bison` required to generation
was too hard to install correctly on MacOS and Windows (version mismatch
and package maneger issues). This is retry.
| -rw-r--r-- | .github/workflows/build.yml | 3 | ||||
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | appveyor.yml | 2 | ||||
| -rw-r--r-- | mrbgems/mruby-compiler/core/y.tab.c | 13961 |
4 files changed, 5 insertions, 13962 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6ee80eefd..bc44b563e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -123,7 +123,7 @@ jobs: --only-site --site http://mirrors.kernel.org/sourceware/cygwin/ --root ${{ env.cygwin-root }} --local-package-dir ${{ env.package-dir }} - --packages gcc-core,gcc-g++,ruby + --packages gcc-core,gcc-g++,ruby,bison - name: Set PATH for Cygwin run: | echo '::set-env name=PATH::${{ env.cygwin-root }}\bin;${{ env.cygwin-root }}\usr\bin' @@ -151,5 +151,6 @@ jobs: - name: Build and test shell: cmd run: | + choco install winflexbison3 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" rake -m test:build && rake test:run diff --git a/.gitignore b/.gitignore index 6a0e7e46b..1472ca0e5 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ compile_commands.json cscope.files cscope.out tags +y.tab.c /.git /bin diff --git a/appveyor.yml b/appveyor.yml index 8782f59aa..f2fa54a89 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -38,6 +38,8 @@ init: - set PATH=C:\Ruby26-x64\bin;%PATH% - ruby --version +install: + - choco install winflexbison3 build_script: - set MRUBY_CONFIG=ci/msvc diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c deleted file mode 100644 index 63f458e48..000000000 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ /dev/null @@ -1,13961 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.5.1" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 1 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* First part of user prologue. */ -#line 7 "mrbgems/mruby-compiler/core/parse.y" - -#undef PARSER_DEBUG -#ifdef PARSER_DEBUG -# define YYDEBUG 1 -#endif -#define YYSTACK_USE_ALLOCA 1 - -#include <ctype.h> -#include <errno.h> -#include <string.h> -#include <mruby.h> -#include <mruby/compile.h> -#include <mruby/proc.h> -#include <mruby/error.h> -#include <mruby/throw.h> -#include <mruby/string.h> -#include <mruby/dump.h> -#include <mruby/presym.h> -#include "node.h" - -#define YYLEX_PARAM p - -typedef mrb_ast_node node; -typedef struct mrb_parser_state parser_state; -typedef struct mrb_parser_heredoc_info parser_heredoc_info; - -static int yyparse(parser_state *p); -static int yylex(void *lval, parser_state *p); -static void yyerror(parser_state *p, const char *s); -static void yywarning(parser_state *p, const char *s); -static void backref_error(parser_state *p, node *n); -static void void_expr_error(parser_state *p, node *n); -static void tokadd(parser_state *p, int32_t c); - -#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c)) - -typedef unsigned int stack_type; - -#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1)) -#define BITSTACK_POP(stack) ((stack) = (stack) >> 1) -#define BITSTACK_LEXPOP(stack) ((stack) = ((stack) >> 1) | ((stack) & 1)) -#define BITSTACK_SET_P(stack) ((stack)&1) - -#define COND_PUSH(n) BITSTACK_PUSH(p->cond_stack, (n)) -#define COND_POP() BITSTACK_POP(p->cond_stack) -#define COND_LEXPOP() BITSTACK_LEXPOP(p->cond_stack) -#define COND_P() BITSTACK_SET_P(p->cond_stack) - -#define CMDARG_PUSH(n) BITSTACK_PUSH(p->cmdarg_stack, (n)) -#define CMDARG_POP() BITSTACK_POP(p->cmdarg_stack) -#define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack) -#define CMDARG_P() BITSTACK_SET_P(p->cmdarg_stack) - -#define SET_LINENO(c,n) ((c)->lineno = (n)) -#define NODE_LINENO(c,n) do {\ - if (n) {\ - (c)->filename_index = (n)->filename_index;\ - (c)->lineno = (n)->lineno;\ - }\ -} while (0) - -#define sym(x) ((mrb_sym)(intptr_t)(x)) -#define nsym(x) ((node*)(intptr_t)(x)) -#define nint(x) ((node*)(intptr_t)(x)) -#define intn(x) ((int)(intptr_t)(x)) -#define typen(x) ((enum node_type)(intptr_t)(x)) - -#define NUM_SUFFIX_R (1<<0) -#define NUM_SUFFIX_I (1<<1) - -static inline mrb_sym -intern_cstr_gen(parser_state *p, const char *s) -{ - return mrb_intern_cstr(p->mrb, s); -} -#define intern_cstr(s) intern_cstr_gen(p,(s)) - -static inline mrb_sym -intern_gen(parser_state *p, const char *s, size_t len) -{ - return mrb_intern(p->mrb, s, len); -} -#define intern(s,len) intern_gen(p,(s),(len)) - -#define intern_op(op) MRB_OPSYM_2(p->mrb, op) - -static void -cons_free_gen(parser_state *p, node *cons) -{ - cons->cdr = p->cells; - p->cells = cons; -} -#define cons_free(c) cons_free_gen(p, (c)) - -static void* -parser_palloc(parser_state *p, size_t size) -{ - void *m = mrb_pool_alloc(p->pool, size); - - if (!m) { - MRB_THROW(p->jmp); - } - return m; -} - -static node* -cons_gen(parser_state *p, node *car, node *cdr) -{ - node *c; - - if (p->cells) { - c = p->cells; - p->cells = p->cells->cdr; - } - else { - c = (node *)parser_palloc(p, sizeof(mrb_ast_node)); - } - - c->car = car; - c->cdr = cdr; - c->lineno = p->lineno; - c->filename_index = p->current_filename_index; - /* beginning of next partial file; need to point the previous file */ - if (p->lineno == 0 && p->current_filename_index > 0) { - c->filename_index-- ; - } - return c; -} -#define cons(a,b) cons_gen(p,(a),(b)) - -static node* -list1_gen(parser_state *p, node *a) -{ - return cons(a, 0); -} -#define list1(a) list1_gen(p, (a)) - -static node* -list2_gen(parser_state *p, node *a, node *b) -{ - return cons(a, cons(b,0)); -} -#define list2(a,b) list2_gen(p, (a),(b)) - -static node* -list3_gen(parser_state *p, node *a, node *b, node *c) -{ - return cons(a, cons(b, cons(c,0))); -} -#define list3(a,b,c) list3_gen(p, (a),(b),(c)) - -static node* -list4_gen(parser_state *p, node *a, node *b, node *c, node *d) -{ - return cons(a, cons(b, cons(c, cons(d, 0)))); -} -#define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d)) - -static node* -list5_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e) -{ - return cons(a, cons(b, cons(c, cons(d, cons(e, 0))))); -} -#define list5(a,b,c,d,e) list5_gen(p, (a),(b),(c),(d),(e)) - -static node* -list6_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e, node *f) -{ - return cons(a, cons(b, cons(c, cons(d, cons(e, cons(f, 0)))))); -} -#define list6(a,b,c,d,e,f) list6_gen(p, (a),(b),(c),(d),(e),(f)) - -static node* -append_gen(parser_state *p, node *a, node *b) -{ - node *c = a; - - if (!a) return b; - if (!b) return a; - while (c->cdr) { - c = c->cdr; - } - c->cdr = b; - return a; -} -#define append(a,b) append_gen(p,(a),(b)) -#define push(a,b) append_gen(p,(a),list1(b)) - -static char* -parser_strndup(parser_state *p, const char *s, size_t len) -{ - char *b = (char *)parser_palloc(p, len+1); - - memcpy(b, s, len); - b[len] = '\0'; - return b; -} -#undef strndup -#define strndup(s,len) parser_strndup(p, s, len) - -static char* -parser_strdup(parser_state *p, const char *s) -{ - return parser_strndup(p, s, strlen(s)); -} -#undef strdup -#define strdup(s) parser_strdup(p, s) - -static void -dump_int(uint16_t i, char *s) -{ - char *p = s; - char *t = s; - - while (i > 0) { - *p++ = (i % 10)+'0'; - i /= 10; - } - if (p == s) *p++ = '0'; - *p = 0; - p--; /* point the last char */ - while (t < p) { - char c = *t; - *t++ = *p; - *p-- = c; - } -} - -/* xxx ----------------------------- */ - -static node* -local_switch(parser_state *p) -{ - node *prev = p->locals; - - p->locals = cons(0, 0); - return prev; -} - -static void -local_resume(parser_state *p, node *prev) -{ - p->locals = prev; -} - -static void -local_nest(parser_state *p) -{ - p->locals = cons(0, p->locals); -} - -static void -local_unnest(parser_state *p) -{ - if (p->locals) { - p->locals = p->locals->cdr; - } -} - -static mrb_bool -local_var_p(parser_state *p, mrb_sym sym) -{ - const struct RProc *u; - node *l = p->locals; - - while (l) { - node *n = l->car; - while (n) { - if (sym(n->car) == sym) return TRUE; - n = n->cdr; - } - l = l->cdr; - } - - u = p->upper; - while (u && !MRB_PROC_CFUNC_P(u)) { - const struct mrb_irep *ir = u->body.irep; - const mrb_sym *v = ir->lv; - int i; - - if (v) { - for (i=0; i+1 < ir->nlocals; i++) { - if (v[i] == sym) return TRUE; - } - } - if (MRB_PROC_SCOPE_P(u)) break; - u = u->upper; - } - return FALSE; -} - -static void -local_add_f(parser_state *p, mrb_sym sym) -{ - if (p->locals) { - p->locals->car = push(p->locals->car, nsym(sym)); - } -} - -static void -local_add(parser_state *p, mrb_sym sym) -{ - if (!local_var_p(p, sym)) { - local_add_f(p, sym); - } -} - -static void -local_add_blk(parser_state *p, mrb_sym blk) -{ - /* allocate register for block */ - local_add_f(p, blk ? blk : intern_op(and)); -} - -static void -local_add_kw(parser_state *p, mrb_sym kwd) -{ - /* allocate register for keywords hash */ - local_add_f(p, kwd ? kwd : intern_op(pow)); -} - -static node* -locals_node(parser_state *p) -{ - return p->locals ? p->locals->car : NULL; -} - -static void -nvars_nest(parser_state *p) -{ - p->nvars = cons(nint(0), p->nvars); -} - -static void -nvars_block(parser_state *p) -{ - p->nvars = cons(nint(-2), p->nvars); -} - -static void -nvars_unnest(parser_state *p) -{ - p->nvars = p->nvars->cdr; -} - -/* (:scope (vars..) (prog...)) */ -static node* -new_scope(parser_state *p, node *body) -{ - return cons((node*)NODE_SCOPE, cons(locals_node(p), body)); -} - -/* (:begin prog...) */ -static node* -new_begin(parser_state *p, node *body) -{ - if (body) { - return list2((node*)NODE_BEGIN, body); - } - return cons((node*)NODE_BEGIN, 0); -} - -#define newline_node(n) (n) - -/* (:rescue body rescue else) */ -static node* -new_rescue(parser_state *p, node *body, node *resq, node *els) -{ - return list4((node*)NODE_RESCUE, body, resq, els); -} - -static node* -new_mod_rescue(parser_state *p, node *body, node *resq) -{ - return new_rescue(p, body, list1(list3(0, 0, resq)), 0); -} - -/* (:ensure body ensure) */ -static node* -new_ensure(parser_state *p, node *a, node *b) -{ - return cons((node*)NODE_ENSURE, cons(a, cons(0, b))); -} - -/* (:nil) */ -static node* -new_nil(parser_state *p) -{ - return list1((node*)NODE_NIL); -} - -/* (:true) */ -static node* -new_true(parser_state *p) -{ - return list1((node*)NODE_TRUE); -} - -/* (:false) */ -static node* -new_false(parser_state *p) -{ - return list1((node*)NODE_FALSE); -} - -/* (:alias new old) */ -static node* -new_alias(parser_state *p, mrb_sym a, mrb_sym b) -{ - return cons((node*)NODE_ALIAS, cons(nsym(a), nsym(b))); -} - -/* (:if cond then else) */ -static node* -new_if(parser_state *p, node *a, node *b, node *c) -{ - void_expr_error(p, a); - return list4((node*)NODE_IF, a, b, c); -} - -/* (:unless cond then else) */ -static node* -new_unless(parser_state *p, node *a, node *b, node *c) -{ - void_expr_error(p, a); - return list4((node*)NODE_IF, a, c, b); -} - -/* (:while cond body) */ -static node* -new_while(parser_state *p, node *a, node *b) -{ - void_expr_error(p, a); - return cons((node*)NODE_WHILE, cons(a, b)); -} - -/* (:until cond body) */ -static node* -new_until(parser_state *p, node *a, node *b) -{ - void_expr_error(p, a); - return cons((node*)NODE_UNTIL, cons(a, b)); -} - -/* (:for var obj body) */ -static node* -new_for(parser_state *p, node *v, node *o, node *b) -{ - void_expr_error(p, o); - return list4((node*)NODE_FOR, v, o, b); -} - -/* (:case a ((when ...) body) ((when...) body)) */ -static node* -new_case(parser_state *p, node *a, node *b) -{ - node *n = list2((node*)NODE_CASE, a); - node *n2 = n; - - void_expr_error(p, a); - while (n2->cdr) { - n2 = n2->cdr; - } - n2->cdr = b; - return n; -} - -/* (:postexe a) */ -static node* -new_postexe(parser_state *p, node *a) -{ - return cons((node*)NODE_POSTEXE, a); -} - -/* (:self) */ -static node* -new_self(parser_state *p) -{ - return list1((node*)NODE_SELF); -} - -/* (:call a b c) */ -static node* -new_call(parser_state *p, node *a, mrb_sym b, node *c, int pass) -{ - node *n = list4(nint(pass?NODE_CALL:NODE_SCALL), a, nsym(b), c); - void_expr_error(p, a); - NODE_LINENO(n, a); - return n; -} - -/* (:fcall self mid args) */ -static node* -new_fcall(parser_state *p, mrb_sym b, node *c) -{ - node *n = new_self(p); - NODE_LINENO(n, c); - n = list4((node*)NODE_FCALL, n, nsym(b), c); - NODE_LINENO(n, c); - return n; -} - -/* (:super . c) */ -static node* -new_super(parser_state *p, node *c) -{ - return cons((node*)NODE_SUPER, c); -} - -/* (:zsuper) */ -static node* -new_zsuper(parser_state *p) -{ - return list1((node*)NODE_ZSUPER); -} - -/* (:yield . c) */ -static node* -new_yield(parser_state *p, node *c) -{ - if (c) { - if (c->cdr) { - yyerror(p, "both block arg and actual block given"); - } - return cons((node*)NODE_YIELD, c->car); - } - return cons((node*)NODE_YIELD, 0); -} - -/* (:return . c) */ -static node* -new_return(parser_state *p, node *c) -{ - return cons((node*)NODE_RETURN, c); -} - -/* (:break . c) */ -static node* -new_break(parser_state *p, node *c) -{ - return cons((node*)NODE_BREAK, c); -} - -/* (:next . c) */ -static node* -new_next(parser_state *p, node *c) -{ - return cons((node*)NODE_NEXT, c); -} - -/* (:redo) */ -static node* -new_redo(parser_state *p) -{ - return list1((node*)NODE_REDO); -} - -/* (:retry) */ -static node* -new_retry(parser_state *p) -{ - return list1((node*)NODE_RETRY); -} - -/* (:dot2 a b) */ -static node* -new_dot2(parser_state *p, node *a, node *b) -{ - return cons((node*)NODE_DOT2, cons(a, b)); -} - -/* (:dot3 a b) */ -static node* -new_dot3(parser_state *p, node *a, node *b) -{ - return cons((node*)NODE_DOT3, cons(a, b)); -} - -/* (:colon2 b c) */ -static node* -new_colon2(parser_state *p, node *b, mrb_sym c) -{ - void_expr_error(p, b); - return cons((node*)NODE_COLON2, cons(b, nsym(c))); -} - -/* (:colon3 . c) */ -static node* -new_colon3(parser_state *p, mrb_sym c) -{ - return cons((node*)NODE_COLON3, nsym(c)); -} - -/* (:and a b) */ -static node* -new_and(parser_state *p, node *a, node *b) -{ - return cons((node*)NODE_AND, cons(a, b)); -} - -/* (:or a b) */ -static node* -new_or(parser_state *p, node *a, node *b) -{ - return cons((node*)NODE_OR, cons(a, b)); -} - -/* (:array a...) */ -static node* -new_array(parser_state *p, node *a) -{ - return cons((node*)NODE_ARRAY, a); -} - -/* (:splat . a) */ -static node* -new_splat(parser_state *p, node *a) -{ - return cons((node*)NODE_SPLAT, a); -} - -/* (:hash (k . v) (k . v)...) */ -static node* -new_hash(parser_state *p, node *a) -{ - return cons((node*)NODE_HASH, a); -} - -/* (:kw_hash (k . v) (k . v)...) */ -static node* -new_kw_hash(parser_state *p, node *a) -{ - return cons((node*)NODE_KW_HASH, a); -} - -/* (:sym . a) */ -static node* -new_sym(parser_state *p, mrb_sym sym) -{ - return cons((node*)NODE_SYM, nsym(sym)); -} - -static mrb_sym -new_strsym(parser_state *p, node* str) -{ - const char *s = (const char*)str->cdr->car; - size_t len = (size_t)str->cdr->cdr; - - return mrb_intern(p->mrb, s, len); -} - -/* (:lvar . a) */ -static node* -new_lvar(parser_state *p, mrb_sym sym) -{ - return cons((node*)NODE_LVAR, nsym(sym)); -} - -/* (:gvar . a) */ -static node* -new_gvar(parser_state *p, mrb_sym sym) -{ - return cons((node*)NODE_GVAR, nsym(sym)); -} - -/* (:ivar . a) */ -static node* -new_ivar(parser_state *p, mrb_sym sym) -{ - return cons((node*)NODE_IVAR, nsym(sym)); -} - -/* (:cvar . a) */ -static node* -new_cvar(parser_state *p, mrb_sym sym) -{ - return cons((node*)NODE_CVAR, nsym(sym)); -} - -/* (:nvar . a) */ -static node* -new_nvar(parser_state *p, int num) -{ - int nvars = intn(p->nvars->car); - - p->nvars->car = nint(nvars > num ? nvars : num); - return cons((node*)NODE_NVAR, nint(num)); -} - -/* (:const . a) */ -static node* -new_const(parser_state *p, mrb_sym sym) -{ - return cons((node*)NODE_CONST, nsym(sym)); -} - -/* (:undef a...) */ -static node* -new_undef(parser_state *p, mrb_sym sym) -{ - return list2((node*)NODE_UNDEF, nsym(sym)); -} - -/* (:class class super body) */ -static node* -new_class(parser_state *p, node *c, node *s, node *b) -{ - void_expr_error(p, s); - return list4((node*)NODE_CLASS, c, s, cons(locals_node(p), b)); -} - -/* (:sclass obj body) */ -static node* -new_sclass(parser_state *p, node *o, node *b) -{ - void_expr_error(p, o); - return list3((node*)NODE_SCLASS, o, cons(locals_node(p), b)); -} - -/* (:module module body) */ -static node* -new_module(parser_state *p, node *m, node *b) -{ - return list3((node*)NODE_MODULE, m, cons(locals_node(p), b)); -} - -/* (:def m lv (arg . body)) */ -static node* -new_def(parser_state *p, mrb_sym m, node *a, node *b) -{ - return list5((node*)NODE_DEF, nsym(m), 0, a, b); -} - -static void -defn_setup(parser_state *p, node *d, node *a, node *b) -{ - node *n = d->cdr->cdr; - - n->car = locals_node(p); - p->cmdarg_stack = intn(n->cdr->car); - n->cdr->car = a; - local_resume(p, n->cdr->cdr->car); - n->cdr->cdr->car = b; -} - -/* (:sdef obj m lv (arg . body)) */ -static node* -new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b) -{ - void_expr_error(p, o); - return list6((node*)NODE_SDEF, o, nsym(m), 0, a, b); -} - -static void -defs_setup(parser_state *p, node *d, node *a, node *b) -{ - node *n = d->cdr->cdr->cdr; - - n->car = locals_node(p); - p->cmdarg_stack = intn(n->cdr->car); - n->cdr->car = a; - local_resume(p, n->cdr->cdr->car); - n->cdr->cdr->car = b; -} - -/* (:arg . sym) */ -static node* -new_arg(parser_state *p, mrb_sym sym) -{ - return cons((node*)NODE_ARG, nsym(sym)); -} - -static void -local_add_margs(parser_state *p, node *n) -{ - while (n) { - if (typen(n->car->car) == NODE_MASGN) { - node *t = n->car->cdr->cdr; - - n->car->cdr->cdr = NULL; - while (t) { - local_add_f(p, sym(t->car)); - t = t->cdr; - } - local_add_margs(p, n->car->cdr->car->car); - local_add_margs(p, n->car->cdr->car->cdr->cdr->car); - } - n = n->cdr; - } -} - -static void -local_add_lv(parser_state *p, node *lv) -{ - while (lv) { - local_add_f(p, sym(lv->car)); - lv = lv->cdr; - } -} - -/* (m o r m2 tail) */ -/* m: (a b c) */ -/* o: ((a . e1) (b . e2)) */ -/* r: a */ -/* m2: (a b c) */ -/* b: a */ -static node* -new_args(parser_state *p, node *m, node *opt, mrb_sym rest, node *m2, node *tail) -{ - node *n; - - local_add_margs(p, m); - local_add_margs(p, m2); - n = cons(m2, tail); - n = cons(nsym(rest), n); - n = cons(opt, n); - while (opt) { - /* opt: (sym . (opt . lv)) -> (sym . opt) */ - local_add_lv(p, opt->car->cdr->cdr); - opt->car->cdr = opt->car->cdr->car; - opt = opt->cdr; - } - return cons(m, n); -} - -/* (:args_tail keywords rest_keywords_sym block_sym) */ -static node* -new_args_tail(parser_state *p, node *kws, node *kwrest, mrb_sym blk) -{ - node *k; - - if (kws || kwrest) { - local_add_kw(p, (kwrest && kwrest->cdr)? sym(kwrest->cdr) : 0); - } - - local_add_blk(p, blk); - - /* allocate register for keywords arguments */ - /* order is for Proc#parameters */ - for (k = kws; k; k = k->cdr) { - if (!k->car->cdr->cdr->car) { /* allocate required keywords */ - local_add_f(p, sym(k->car->cdr->car)); - } - } - for (k = kws; k; k = k->cdr) { - if (k->car->cdr->cdr->car) { /* allocate keywords with default */ - local_add_lv(p, k->car->cdr->cdr->car->cdr); - k->car->cdr->cdr->car = k->car->cdr->cdr->car->car; - local_add_f(p, sym(k->car->cdr->car)); - } - } - - return list4((node*)NODE_ARGS_TAIL, kws, kwrest, nsym(blk)); -} - -/* (:kw_arg kw_sym def_arg) */ -static node* -new_kw_arg(parser_state *p, mrb_sym kw, node *def_arg) -{ - mrb_assert(kw); - return list3((node*)NODE_KW_ARG, nsym(kw), def_arg); -} - -/* (:kw_rest_args . a) */ -static node* -new_kw_rest_args(parser_state *p, node *a) -{ - return cons((node*)NODE_KW_REST_ARGS, a); -} - -/* (:block_arg . a) */ -static node* -new_block_arg(parser_state *p, node *a) -{ - return cons((node*)NODE_BLOCK_ARG, a); -} - -static node* -setup_numparams(parser_state *p, node *a) -{ - int nvars = intn(p->nvars->car); - if (nvars > 0) { - int i; - mrb_sym sym; - // m || opt || rest || tail - if (a && (a->car || (a->cdr && a->cdr->car) || (a->cdr->cdr && a->cdr->cdr->car) || (a->cdr->cdr->cdr->cdr && a->cdr->cdr->cdr->cdr->car))) { - yyerror(p, "ordinary parameter is defined"); - } - else if (p->locals) { - /* p->locals should not be NULL unless error happens before the point */ - node* args = 0; - for (i = nvars; i > 0; i--) { - char buf[3]; - - buf[0] = '_'; - buf[1] = i+'0'; - buf[2] = '\0'; - sym = intern_cstr(buf); - args = cons(new_arg(p, sym), args); - p->locals->car = cons(nsym(sym), p->locals->car); - } - a = new_args(p, args, 0, 0, 0, 0); - } - } - return a; -} - -/* (:block arg body) */ -static node* -new_block(parser_state *p, node *a, node *b) -{ - a = setup_numparams(p, a); - return list4((node*)NODE_BLOCK, locals_node(p), a, b); -} - -/* (:lambda arg body) */ -static node* -new_lambda(parser_state *p, node *a, node *b) -{ - return list4((node*)NODE_LAMBDA, locals_node(p), a, b); -} - -/* (:asgn lhs rhs) */ -static node* -new_asgn(parser_state *p, node *a, node *b) -{ - void_expr_error(p, b); - return cons((node*)NODE_ASGN, cons(a, b)); -} - -/* (:masgn mlhs=(pre rest post) mrhs) */ -static node* -new_masgn(parser_state *p, node *a, node *b) -{ - void_expr_error(p, b); - return cons((node*)NODE_MASGN, cons(a, b)); -} - -/* (:masgn mlhs mrhs) no check */ -static node* -new_masgn_param(parser_state *p, node *a, node *b) -{ - return cons((node*)NODE_MASGN, cons(a, b)); -} - -/* (:asgn lhs rhs) */ -static node* -new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b) -{ - void_expr_error(p, b); - return list4((node*)NODE_OP_ASGN, a, nsym(op), b); -} - -static node* -new_imaginary(parser_state *p, node *imaginary) -{ - return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Complex), list1(list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary)), 1); -} - -static node* -new_rational(parser_state *p, node *rational) -{ - return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Rational), list1(list1(rational)), 1); -} - -/* (:int . i) */ -static node* -new_int(parser_state *p, const char *s, int base, int suffix) -{ - node* result = list3((node*)NODE_INT, (node*)strdup(s), nint(base)); - if (suffix & NUM_SUFFIX_R) { - result = new_rational(p, result); - } - if (suffix & NUM_SUFFIX_I) { - result = new_imaginary(p, result); - } - return result; -} - -#ifndef MRB_NO_FLOAT -/* (:float . i) */ -static node* -new_float(parser_state *p, const char *s, int suffix) -{ - node* result = cons((node*)NODE_FLOAT, (node*)strdup(s)); - if (suffix & NUM_SUFFIX_R) { - result = new_rational(p, result); - } - if (suffix & NUM_SUFFIX_I) { - result = new_imaginary(p, result); - } - return result; -} -#endif - -/* (:str . (s . len)) */ -static node* -new_str(parser_state *p, const char *s, size_t len) -{ - return cons((node*)NODE_STR, cons((node*)strndup(s, len), nint(len))); -} - -/* (:dstr . a) */ -static node* -new_dstr(parser_state *p, node *a) -{ - return cons((node*)NODE_DSTR, a); -} - -static int -string_node_p(node *n) -{ - return (int)(typen(n->car) == NODE_STR); -} - -static node* -composite_string_node(parser_state *p, node *a, node *b) -{ - size_t newlen = (size_t)a->cdr + (size_t)b->cdr; - char *str = (char*)mrb_pool_realloc(p->pool, a->car, (size_t)a->cdr + 1, newlen + 1); - memcpy(str + (size_t)a->cdr, b->car, (size_t)b->cdr); - str[newlen] = '\0'; - a->car = (node*)str; - a->cdr = (node*)newlen; - cons_free(b); - return a; -} - -static node* -concat_string(parser_state *p, node *a, node *b) -{ - if (string_node_p(a)) { - if (string_node_p(b)) { - /* a == NODE_STR && b == NODE_STR */ - composite_string_node(p, a->cdr, b->cdr); - cons_free(b); - return a; - } - else { - /* a == NODE_STR && b == NODE_DSTR */ - - if (string_node_p(b->cdr->car)) { - /* a == NODE_STR && b->[NODE_STR, ...] */ - composite_string_node(p, a->cdr, b->cdr->car->cdr); - cons_free(b->cdr->car); - b->cdr->car = a; - return b; - } - } - } - else { - node *c; /* last node of a */ - for (c = a; c->cdr != NULL; c = c->cdr) ; - - if (string_node_p(b)) { - /* a == NODE_DSTR && b == NODE_STR */ - if (string_node_p(c->car)) { - /* a->[..., NODE_STR] && b == NODE_STR */ - composite_string_node(p, c->car->cdr, b->cdr); - cons_free(b); - return a; - } - - push(a, b); - return a; - } - else { - /* a == NODE_DSTR && b == NODE_DSTR */ - if (string_node_p(c->car) && string_node_p(b->cdr->car)) { - /* a->[..., NODE_STR] && b->[NODE_STR, ...] */ - node *d = b->cdr; - cons_free(b); - composite_string_node(p, c->car->cdr, d->car->cdr); - cons_free(d->car); - c->cdr = d->cdr; - cons_free(d); - return a; - } - else { - c->cdr = b->cdr; - cons_free(b); - return a; - } - } - } - - return new_dstr(p, list2(a, b)); -} - -/* (:str . (s . len)) */ -static node* -new_xstr(parser_state *p, const char *s, int len) -{ - return cons((node*)NODE_XSTR, cons((node*)strndup(s, len), nint(len))); -} - -/* (:xstr . a) */ -static node* -new_dxstr(parser_state *p, node *a) -{ - return cons((node*)NODE_DXSTR, a); -} - -/* (:dsym . a) */ -static node* -new_dsym(parser_state *p, node *a) -{ - return cons((node*)NODE_DSYM, a); -} - -/* (:regx . (s . (opt . enc))) */ -static node* -new_regx(parser_state *p, const char *p1, const char* p2, const char* p3) -{ - return cons((node*)NODE_REGX, cons((node*)p1, cons((node*)p2, (node*)p3))); -} - -/* (:dregx . (a . b)) */ -static node* -new_dregx(parser_state *p, node *a, node *b) -{ - return cons((node*)NODE_DREGX, cons(a, b)); -} - -/* (:backref . n) */ -static node* -new_back_ref(parser_state *p, int n) -{ - return cons((node*)NODE_BACK_REF, nint(n)); -} - -/* (:nthref . n) */ -static node* -new_nth_ref(parser_state *p, int n) -{ - return cons((node*)NODE_NTH_REF, nint(n)); -} - -/* (:heredoc . a) */ -static node* -new_heredoc(parser_state *p) -{ - parser_heredoc_info *inf = (parser_heredoc_info *)parser_palloc(p, sizeof(parser_heredoc_info)); - return cons((node*)NODE_HEREDOC, (node*)inf); -} - -static void -new_bv(parser_state *p, mrb_sym id) -{ -} - -static node* -new_literal_delim(parser_state *p) -{ - return cons((node*)NODE_LITERAL_DELIM, 0); -} - -/* (:words . a) */ -static node* -new_words(parser_state *p, node *a) -{ - return cons((node*)NODE_WORDS, a); -} - -/* (:symbols . a) */ -static node* -new_symbols(parser_state *p, node *a) -{ - return cons((node*)NODE_SYMBOLS, a); -} - -/* xxx ----------------------------- */ - -/* (:call a op) */ -static node* -call_uni_op(parser_state *p, node *recv, const char *m) -{ - void_expr_error(p, recv); - return new_call(p, recv, intern_cstr(m), 0, 1); -} - -/* (:call a op b) */ -static node* -call_bin_op(parser_state *p, node *recv, const char *m, node *arg1) -{ - return new_call(p, recv, intern_cstr(m), list1(list1(arg1)), 1); -} - -static void -args_with_block(parser_state *p, node *a, node *b) -{ - if (b) { - if (a->cdr) { - yyerror(p, "both block arg and actual block given"); - } - a->cdr = b; - } -} - -static void -endless_method_name(parser_state *p, node *defn) -{ - mrb_sym sym = sym(defn->cdr->car); - mrb_int len; - const char *name = mrb_sym_name_len(p->mrb, sym, &len); - - if (len > 1 && name[len-1] == '=') { - for (int i=0; i<len-1; i++) { - if (!identchar(name[i])) return; - } - yyerror(p, "setter method cannot be defined by endless method definition"); - } -} - -static void -call_with_block(parser_state *p, node *a, node *b) -{ - node *n; - - switch (typen(a->car)) { - case NODE_SUPER: - case NODE_ZSUPER: - if (!a->cdr) a->cdr = cons(0, b); - else { - args_with_block(p, a->cdr, b); - } - break; - case NODE_CALL: - case NODE_FCALL: - case NODE_SCALL: - n = a->cdr->cdr->cdr; - if (!n->car) n->car = cons(0, b); - else { - args_with_block(p, n->car, b); - } - break; - default: - break; - } -} - -static node* -new_negate(parser_state *p, node *n) -{ - return cons((node*)NODE_NEGATE, n); -} - -static node* -cond(node *n) -{ - return n; -} - -static node* -ret_args(parser_state *p, node *n) -{ - if (n->cdr) { - yyerror(p, "block argument should not be given"); - return NULL; - } - if (!n->car->cdr) return n->car->car; - return new_array(p, n->car); -} - -static void -assignable(parser_state *p, node *lhs) -{ - if (intn(lhs->car) == NODE_LVAR) { - local_add(p, sym(lhs->cdr)); - } -} - -static node* -var_reference(parser_state *p, node *lhs) -{ - node *n; - - if (intn(lhs->car) == NODE_LVAR) { - if (!local_var_p(p, sym(lhs->cdr))) { - n = new_fcall(p, sym(lhs->cdr), 0); - cons_free(lhs); - return n; - } - } - - return lhs; -} - -typedef enum mrb_string_type string_type; - -static node* -new_strterm(parser_state *p, string_type type, int term, int paren) -{ - return cons(nint(type), cons(nint(0), cons(nint(paren), nint(term)))); -} - -static void -end_strterm(parser_state *p) -{ - cons_free(p->lex_strterm->cdr->cdr); - cons_free(p->lex_strterm->cdr); - cons_free(p->lex_strterm); - p->lex_strterm = NULL; -} - -static parser_heredoc_info * -parsing_heredoc_inf(parser_state *p) -{ - node *nd = p->parsing_heredoc; - if (nd == NULL) - return NULL; - /* mrb_assert(nd->car->car == NODE_HEREDOC); */ - return (parser_heredoc_info*)nd->car->cdr; -} - -static void -heredoc_treat_nextline(parser_state *p) -{ - if (p->heredocs_from_nextline == NULL) - return; - if (p->parsing_heredoc == NULL) { - node *n; - p->parsing_heredoc = p->heredocs_from_nextline; - p->lex_strterm_before_heredoc = p->lex_strterm; - p->lex_strterm = new_strterm(p, parsing_heredoc_inf(p)->type, 0, 0); - n = p->all_heredocs; - if (n) { - while (n->cdr) - n = n->cdr; - n->cdr = p->parsing_heredoc; - } - else { - p->all_heredocs = p->parsing_heredoc; - } - } - else { - node *n, *m; - m = p->heredocs_from_nextline; - while (m->cdr) - m = m->cdr; - n = p->all_heredocs; - mrb_assert(n != NULL); - if (n == p->parsing_heredoc) { - m->cdr = n; - p->all_heredocs = p->heredocs_from_nextline; - p->parsing_heredoc = p->heredocs_from_nextline; - } - else { - while (n->cdr != p->parsing_heredoc) { - n = n->cdr; - mrb_assert(n != NULL); - } - m->cdr = n->cdr; - n->cdr = p->heredocs_from_nextline; - p->parsing_heredoc = p->heredocs_from_nextline; - } - } - p->heredocs_from_nextline = NULL; -} - -static void -heredoc_end(parser_state *p) -{ - p->parsing_heredoc = p->parsing_heredoc->cdr; - if (p->parsing_heredoc == NULL) { - p->lstate = EXPR_BEG; - end_strterm(p); - p->lex_strterm = p->lex_strterm_before_heredoc; - p->lex_strterm_before_heredoc = NULL; - } - else { - /* next heredoc */ - p->lex_strterm->car = nint(parsing_heredoc_inf(p)->type); - } -} -#define is_strterm_type(p,str_func) (intn((p)->lex_strterm->car) & (str_func)) - -/* xxx ----------------------------- */ - - -#line 1451 "mrbgems/mruby-compiler/core/y.tab.c" - -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast<Type> (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 1 -#endif - - -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - keyword_class = 258, - keyword_module = 259, - keyword_def = 260, - keyword_begin = 261, - keyword_if = 262, - keyword_unless = 263, - keyword_while = 264, - keyword_until = 265, - keyword_for = 266, - keyword_undef = 267, - keyword_rescue = 268, - keyword_ensure = 269, - keyword_end = 270, - keyword_then = 271, - keyword_elsif = 272, - keyword_else = 273, - keyword_case = 274, - keyword_when = 275, - keyword_break = 276, - keyword_next = 277, - keyword_redo = 278, - keyword_retry = 279, - keyword_in = 280, - keyword_do = 281, - keyword_do_cond = 282, - keyword_do_block = 283, - keyword_do_LAMBDA = 284, - keyword_return = 285, - keyword_yield = 286, - keyword_super = 287, - keyword_self = 288, - keyword_nil = 289, - keyword_true = 290, - keyword_false = 291, - keyword_and = 292, - keyword_or = 293, - keyword_not = 294, - modifier_if = 295, - modifier_unless = 296, - modifier_while = 297, - modifier_until = 298, - modifier_rescue = 299, - keyword_alias = 300, - keyword_BEGIN = 301, - keyword_END = 302, - keyword__LINE__ = 303, - keyword__FILE__ = 304, - keyword__ENCODING__ = 305, - tIDENTIFIER = 306, - tFID = 307, - tGVAR = 308, - tIVAR = 309, - tCONSTANT = 310, - tCVAR = 311, - tLABEL_TAG = 312, - tINTEGER = 313, - tFLOAT = 314, - tCHAR = 315, - tXSTRING = 316, - tREGEXP = 317, - tSTRING = 318, - tSTRING_PART = 319, - tSTRING_MID = 320, - tNTH_REF = 321, - tBACK_REF = 322, - tREGEXP_END = 323, - tNUMPARAM = 324, - tUPLUS = 325, - tUMINUS = 326, - tCMP = 327, - tEQ = 328, - tEQQ = 329, - tNEQ = 330, - tGEQ = 331, - tLEQ = 332, - tANDOP = 333, - tOROP = 334, - tMATCH = 335, - tNMATCH = 336, - tDOT2 = 337, - tDOT3 = 338, - tBDOT2 = 339, - tBDOT3 = 340, - tAREF = 341, - tASET = 342, - tLSHFT = 343, - tRSHFT = 344, - tCOLON2 = 345, - tCOLON3 = 346, - tOP_ASGN = 347, - tASSOC = 348, - tLPAREN = 349, - tLPAREN_ARG = 350, - tRPAREN = 351, - tLBRACK = 352, - tLBRACE = 353, - tLBRACE_ARG = 354, - tSTAR = 355, - tPOW = 356, - tDSTAR = 357, - tAMPER = 358, - tLAMBDA = 359, - tANDDOT = 360, - tSYMBEG = 361, - tSTRING_BEG = 362, - tXSTRING_BEG = 363, - tSTRING_DVAR = 364, - tREGEXP_BEG = 365, - tWORDS_BEG = 366, - tSYMBOLS_BEG = 367, - tLAMBEG = 368, - tHEREDOC_BEG = 369, - tHEREDOC_END = 370, - tLITERAL_DELIM = 371, - tHD_LITERAL_DELIM = 372, - tHD_STRING_PART = 373, - tHD_STRING_MID = 374, - tLOWEST = 375, - tUMINUS_NUM = 376, - tLAST_TOKEN = 377 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 1393 "mrbgems/mruby-compiler/core/parse.y" - - node *nd; - mrb_sym id; - int num; - stack_type stack; - const struct vtable *vars; - -#line 1631 "mrbgems/mruby-compiler/core/y.tab.c" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - - -int yyparse (parser_state *p); - - - - - -#ifdef short -# undef short -#endif - -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - <limits.h> and (if available) <stdint.h> are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include <limits.h> /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include <stdint.h> /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif -#endif - -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; -#else -typedef short yytype_int16; -#endif - -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned -# endif -#endif - -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) -# else -# define YY_ATTRIBUTE_PURE -# endif -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# 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) /* Nothing. */ -#endif - -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - - -#define YY_ASSERT(E) ((void) (0 && (E))) - -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# 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> /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yy_state_t yyss_alloc; - YYSTYPE yyvs_alloc; -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYPTRDIFF_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYPTRDIFF_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 3 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 13314 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 149 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 177 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 611 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 1075 - -#define YYUNDEFTOK 2 -#define YYMAXUTOK 377 - - -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 148, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 135, 2, 2, 2, 133, 128, 2, - 144, 145, 131, 129, 142, 130, 147, 132, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 123, 146, - 125, 121, 124, 122, 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, 140, 2, 141, 127, 2, 143, 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, 138, 126, 139, 136, 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, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 134, 137 -}; - -#if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = -{ - 0, 1564, 1564, 1564, 1575, 1581, 1585, 1590, 1594, 1600, - 1602, 1601, 1615, 1642, 1648, 1652, 1657, 1661, 1667, 1667, - 1671, 1675, 1679, 1683, 1687, 1691, 1695, 1700, 1701, 1705, - 1709, 1713, 1717, 1724, 1727, 1731, 1735, 1739, 1743, 1747, - 1752, 1756, 1765, 1775, 1784, 1794, 1801, 1802, 1806, 1810, - 1811, 1815, 1819, 1823, 1827, 1831, 1841, 1840, 1855, 1864, - 1865, 1868, 1869, 1876, 1875, 1890, 1894, 1899, 1903, 1908, - 1912, 1917, 1921, 1925, 1929, 1933, 1939, 1943, 1949, 1950, - 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, - 1998, 1999, 2005, 2009, 2015, 2019, 2025, 2029, 2033, 2037, - 2041, 2045, 2051, 2057, 2064, 2068, 2072, 2076, 2080, 2084, - 2090, 2096, 2101, 2107, 2111, 2114, 2118, 2122, 2129, 2130, - 2131, 2132, 2137, 2144, 2145, 2148, 2152, 2152, 2158, 2159, - 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, - 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, - 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2190, 2190, - 2190, 2191, 2191, 2192, 2192, 2192, 2193, 2193, 2193, 2193, - 2194, 2194, 2194, 2195, 2195, 2195, 2196, 2196, 2196, 2196, - 2197, 2197, 2197, 2197, 2198, 2198, 2198, 2198, 2199, 2199, - 2199, 2199, 2200, 2200, 2200, 2200, 2201, 2201, 2204, 2208, - 2212, 2216, 2220, 2224, 2228, 2233, 2238, 2243, 2247, 2251, - 2255, 2259, 2263, 2267, 2271, 2275, 2279, 2283, 2287, 2291, - 2295, 2299, 2303, 2307, 2311, 2315, 2319, 2323, 2327, 2331, - 2335, 2339, 2343, 2347, 2351, 2355, 2359, 2363, 2367, 2371, - 2375, 2379, 2383, 2387, 2391, 2400, 2410, 2419, 2429, 2435, - 2436, 2441, 2445, 2452, 2456, 2464, 2468, 2484, 2510, 2511, - 2514, 2515, 2516, 2521, 2526, 2533, 2539, 2544, 2549, 2554, - 2561, 2561, 2572, 2578, 2582, 2588, 2589, 2592, 2598, 2604, - 2609, 2616, 2621, 2626, 2633, 2634, 2635, 2636, 2637, 2638, - 2639, 2640, 2644, 2649, 2648, 2660, 2664, 2659, 2669, 2669, - 2673, 2677, 2681, 2685, 2690, 2695, 2699, 2703, 2707, 2711, - 2715, 2716, 2722, 2728, 2721, 2740, 2748, 2756, 2756, 2756, - 2763, 2763, 2763, 2770, 2776, 2781, 2783, 2780, 2792, 2790, - 2808, 2813, 2806, 2830, 2828, 2844, 2854, 2865, 2869, 2873, - 2877, 2883, 2890, 2891, 2892, 2895, 2896, 2899, 2900, 2908, - 2909, 2915, 2919, 2922, 2926, 2930, 2934, 2939, 2943, 2947, - 2951, 2957, 2956, 2966, 2970, 2974, 2978, 2984, 2989, 2994, - 2998, 3002, 3006, 3010, 3014, 3018, 3022, 3026, 3030, 3034, - 3038, 3042, 3046, 3050, 3056, 3061, 3068, 3068, 3072, 3077, - 3084, 3088, 3094, 3095, 3098, 3103, 3106, 3110, 3116, 3120, - 3127, 3126, 3141, 3151, 3155, 3160, 3167, 3171, 3175, 3179, - 3183, 3187, 3191, 3195, 3199, 3206, 3205, 3220, 3219, 3235, - 3243, 3252, 3255, 3262, 3265, 3269, 3270, 3273, 3277, 3280, - 3284, 3287, 3288, 3289, 3290, 3293, 3294, 3300, 3301, 3302, - 3306, 3312, 3313, 3319, 3324, 3323, 3334, 3338, 3344, 3348, - 3354, 3358, 3364, 3367, 3368, 3371, 3377, 3383, 3384, 3387, - 3394, 3393, 3407, 3411, 3418, 3423, 3430, 3436, 3437, 3438, - 3439, 3440, 3444, 3450, 3454, 3460, 3461, 3462, 3466, 3472, - 3476, 3480, 3484, 3488, 3494, 3498, 3504, 3508, 3512, 3516, - 3520, 3524, 3532, 3539, 3550, 3551, 3555, 3559, 3558, 3575, - 3576, 3579, 3585, 3603, 3623, 3624, 3630, 3636, 3642, 3649, - 3654, 3661, 3665, 3671, 3675, 3681, 3682, 3685, 3689, 3695, - 3699, 3703, 3707, 3713, 3718, 3723, 3727, 3731, 3735, 3739, - 3743, 3747, 3751, 3755, 3759, 3763, 3767, 3771, 3775, 3780, - 3786, 3791, 3796, 3801, 3806, 3813, 3817, 3824, 3829, 3828, - 3840, 3844, 3850, 3858, 3866, 3874, 3878, 3884, 3888, 3894, - 3895, 3898, 3903, 3910, 3911, 3914, 3920, 3924, 3930, 3935, - 3935, 3960, 3961, 3967, 3972, 3978, 3979, 3982, 3988, 3993, - 4003, 4010, 4011, 4012, 4015, 4016, 4017, 4018, 4021, 4022, - 4023, 4026, 4027, 4030, 4034, 4040, 4041, 4047, 4048, 4051, - 4052, 4055, 4058, 4059, 4060, 4063, 4064, 4065, 4068, 4075, - 4076, 4080 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || 1 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "keyword_class", "keyword_module", - "keyword_def", "keyword_begin", "keyword_if", "keyword_unless", - "keyword_while", "keyword_until", "keyword_for", "keyword_undef", - "keyword_rescue", "keyword_ensure", "keyword_end", "keyword_then", - "keyword_elsif", "keyword_else", "keyword_case", "keyword_when", - "keyword_break", "keyword_next", "keyword_redo", "keyword_retry", - "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block", - "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super", - "keyword_self", "keyword_nil", "keyword_true", "keyword_false", - "keyword_and", "keyword_or", "keyword_not", "modifier_if", - "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue", - "keyword_alias", "keyword_BEGIN", "keyword_END", "keyword__LINE__", - "keyword__FILE__", "keyword__ENCODING__", "\"local variable or method\"", - "\"method\"", "\"global variable\"", "\"instance variable\"", - "\"constant\"", "\"class variable\"", "\"label\"", "\"integer literal\"", - "\"float literal\"", "\"character literal\"", "tXSTRING", "tREGEXP", - "tSTRING", "tSTRING_PART", "tSTRING_MID", "tNTH_REF", "tBACK_REF", - "tREGEXP_END", "\"numbered parameter\"", "\"unary plus\"", - "\"unary minus\"", "\"<=>\"", "\"==\"", "\"===\"", "\"!=\"", "\">=\"", - "\"<=\"", "\"&&\"", "\"||\"", "\"=~\"", "\"!~\"", "\"..\"", "\"...\"", - "tBDOT2", "tBDOT3", "tAREF", "tASET", "\"<<\"", "\">>\"", "\"::\"", - "tCOLON3", "tOP_ASGN", "\"=>\"", "tLPAREN", "\"(\"", "\")\"", "\"[\"", - "tLBRACE", "\"{\"", "\"*\"", "tPOW", "\"**\"", "\"&\"", "\"->\"", - "\"&.\"", "\"symbol\"", "\"string literal\"", "tXSTRING_BEG", - "tSTRING_DVAR", "tREGEXP_BEG", "tWORDS_BEG", "tSYMBOLS_BEG", "tLAMBEG", - "\"here document\"", "tHEREDOC_END", "tLITERAL_DELIM", - "tHD_LITERAL_DELIM", "tHD_STRING_PART", "tHD_STRING_MID", "tLOWEST", - "'='", "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'", "'-'", - "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "tLAST_TOKEN", "'{'", - "'}'", "'['", "']'", "','", "'`'", "'('", "')'", "';'", "'.'", "'\\n'", - "$accept", "program", "$@1", "top_compstmt", "top_stmts", "top_stmt", - "@2", "bodystmt", "compstmt", "stmts", "stmt", "$@3", "command_asgn", - "command_rhs", "expr", "defn_head", "defs_head", "$@4", "expr_value", - "command_call", "block_command", "cmd_brace_block", "$@5", "command", - "mlhs", "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_list", - "mlhs_post", "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", - "undef_list", "$@6", "op", "reswords", "arg", "aref_args", "arg_rhs", - "paren_args", "opt_paren_args", "opt_call_args", "call_args", - "command_args", "@7", "block_arg", "opt_block_arg", "comma", "args", - "mrhs", "primary", "@8", "@9", "$@10", "$@11", "@12", "@13", "$@14", - "$@15", "$@16", "$@17", "$@18", "$@19", "@20", "@21", "@22", "@23", - "primary_value", "then", "do", "if_tail", "opt_else", "for_var", - "f_margs", "$@24", "block_args_tail", "opt_block_args_tail", - "block_param", "opt_block_param", "block_param_def", "$@25", - "opt_bv_decl", "bv_decls", "bvar", "f_larglist", "lambda_body", - "do_block", "$@26", "block_call", "method_call", "brace_block", "@27", - "@28", "case_body", "cases", "opt_rescue", "exc_list", "exc_var", - "opt_ensure", "literal", "string", "string_fragment", "string_rep", - "string_interp", "@29", "xstring", "regexp", "heredoc", "heredoc_bodies", - "heredoc_body", "heredoc_string_rep", "heredoc_string_interp", "@30", - "words", "symbol", "basic_symbol", "sym", "symbols", "numeric", - "variable", "var_lhs", "var_ref", "backref", "superclass", "$@31", - "f_opt_arglist_paren", "f_arglist_paren", "f_arglist", "f_label", "f_kw", - "f_block_kw", "f_block_kwarg", "f_kwarg", "kwrest_mark", "f_kwrest", - "args_tail", "opt_args_tail", "f_args", "f_bad_arg", "f_norm_arg", - "f_arg_item", "@32", "f_arg", "f_opt_asgn", "f_opt", "f_block_opt", - "f_block_optarg", "f_optarg", "restarg_mark", "f_rest_arg", - "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "$@33", - "assoc_list", "assocs", "label_tag", "assoc", "operation", "operation2", - "operation3", "dot_or_colon", "call_op", "call_op2", "opt_terms", - "opt_nl", "rparen", "trailer", "term", "nl", "terms", "none", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 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, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 61, 63, 58, 62, 60, 124, 94, 38, 43, - 45, 42, 47, 37, 376, 33, 126, 377, 123, 125, - 91, 93, 44, 96, 40, 41, 59, 46, 10 -}; -# endif - -#define YYPACT_NINF (-850) - -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) - -#define YYTABLE_NINF (-612) - -#define yytable_value_is_error(Yyn) \ - ((Yyn) == YYTABLE_NINF) - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - -850, 124, 3596, -850, 8329, 10453, 10795, 6637, -850, 10099, - 10099, -850, -850, 10567, 7819, 6372, 8565, 8565, -850, -850, - 8565, 4253, 3845, -850, -850, -850, -850, 200, 7819, -850, - 37, -850, -850, -850, 6779, 3709, -850, -850, 6921, -850, - -850, -850, -850, -850, -850, -850, 34, 10217, 10217, 10217, - 10217, 106, 5631, 633, 9037, 9391, 8101, -850, 7537, 1187, - 767, 989, 1214, 1237, -850, 86, 10335, 10217, -850, 751, - -850, 1505, -850, 115, 1288, 1288, -850, -850, 176, 70, - -850, 71, 10681, -850, 118, 12995, 477, 483, 60, 84, - -850, 365, -850, -850, -850, -850, -850, -850, -850, -850, - -850, 349, 165, -850, 501, 82, -850, -850, -850, -850, - -850, 131, 131, 137, 506, 1044, -850, 10099, 314, 5750, - 268, 1266, 1266, -850, 143, -850, 599, -850, -850, 82, - -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, - -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, - -850, -850, -850, -850, -850, -850, -850, -850, 49, 58, - 72, 83, -850, -850, -850, -850, -850, -850, 133, 162, - 187, 196, -850, 208, -850, -850, -850, -850, -850, -850, - -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, - -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, - -850, -850, -850, -850, -850, -850, -850, -850, -850, 241, - 4809, 233, 115, 1288, 1288, 69, 169, 13119, 628, 151, - 203, 155, 69, 10099, 10099, 659, 247, -850, -850, 732, - 329, 67, 87, -850, -850, -850, -850, -850, -850, -850, - -850, -850, 7678, -850, -850, 228, -850, -850, -850, -850, - -850, -850, 751, -850, 721, -850, 352, -850, -850, 751, - 3981, 10217, 10217, 10217, 10217, -850, 13057, -850, -850, 237, - 324, 237, -850, -850, -850, 8683, -850, -850, -850, 8565, - -850, -850, -850, 6372, 10099, -850, -850, 251, 5869, -850, - 851, 286, 13181, 13181, 544, 8447, 5631, 275, 751, 1505, - 751, 303, -850, 8447, 751, 292, 1351, 1351, -850, 13057, - 288, 1351, -850, 381, 10909, 296, 862, 905, 929, 1387, - -850, -850, -850, -850, 1282, -850, -850, -850, -850, -850, - -850, 814, 1287, -850, -850, 1021, -850, 1052, -850, 1320, - -850, 1337, 341, 350, -850, -850, -850, -850, 6134, 10099, - 10099, 10099, 10099, 8447, 10099, 10099, 61, -850, -850, -850, - -850, -850, -850, -850, -850, -850, -850, -850, -850, 1604, - 337, 340, 4809, 10217, -850, 321, 417, 354, -850, 751, - -850, -850, -850, 387, 10217, -850, 401, 472, 403, 511, - -850, -850, 449, 4809, -850, -850, 9509, -850, 5631, 8215, - 441, 9509, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10217, - 10217, 10217, 10217, 10217, 10217, 10217, 534, 10217, 10217, 10217, - 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 3391, - -850, 8565, -850, 11187, -850, -850, 12391, -850, -850, -850, - -850, 10335, 10335, -850, 491, -850, 115, -850, 952, -850, - -850, -850, -850, -850, -850, 11273, 8565, 11359, 4809, 10099, - -850, -850, -850, 577, 581, 158, 474, 479, -850, 4955, - 582, 10217, 11445, 8565, 11531, 10217, 10217, 5247, 639, 639, - 94, 11617, 8565, 11703, -850, 541, -850, 5869, 352, -850, - -850, 9627, 600, -850, 814, 10217, 13119, 13119, 13119, 10217, - 1057, -850, 8801, -850, 10217, -850, 9155, 6491, 471, 751, - 237, 237, -850, -850, 885, 473, -850, -850, 7819, 5366, - 498, 11445, 11531, 10217, 1505, 751, -850, -850, 6253, 484, - 1505, -850, -850, 9273, -850, 751, 9391, -850, -850, -850, - 952, 71, 10909, -850, 10909, 11789, 8565, 11875, 1458, -850, - -850, -850, 1348, 5869, 814, -850, -850, -850, -850, -850, - -850, -850, 10217, 10217, -850, -850, -850, -850, -850, -850, - -850, -850, -850, -850, 1165, 751, 751, 497, 10335, 632, - 13119, 345, -850, -850, -850, 12, -850, -850, 1458, -850, - 13119, 1458, -850, -850, 1769, -850, -850, 10335, 644, 63, - 10217, -850, 12711, 237, -850, 751, 10909, 512, -850, -850, - -850, 604, 542, 2903, -850, -850, 956, 284, 2755, 2755, - 2755, 2755, 1752, 1752, 3456, 2669, 2755, 2755, 13181, 13181, - 1232, 1232, -850, 286, 12649, 1752, 1752, 1467, 1467, 1477, - 355, 355, 286, 286, 286, 3275, 7277, 4525, 7395, -850, - 131, -850, 523, 237, 564, -850, 588, -850, -850, 4117, - -850, -850, 2330, 63, 63, -850, 12463, -850, -850, -850, - -850, -850, 751, 10099, 4809, 1109, 192, -850, 131, 529, - 131, 658, 885, 7960, -850, 9745, 657, -850, 10217, 10217, - 487, -850, 7039, 7158, 546, 311, 338, 657, -850, -850, - -850, -850, 91, 98, 556, 103, 104, 10099, 7819, 555, - 685, 13119, 249, -850, 814, 13119, 13119, 814, 10217, 13057, - -850, 237, 13119, -850, -850, -850, -850, 8919, 9155, -850, - -850, -850, 568, -850, -850, 38, 1505, 751, 1351, 441, - -850, 1109, 192, 562, 1167, 1168, 565, 77, -850, 573, - -850, 286, 286, -850, 147, 751, 572, -850, -850, 1708, - 673, 12525, -850, 665, -850, 354, -850, -850, -850, 587, - 590, 593, -850, 596, 665, 593, 679, 12587, -850, -850, - 1458, 4809, -850, -850, 12782, 9863, -850, -850, 10909, 8447, - 10335, 10217, 11961, 8565, 12047, 76, 10335, 10335, -850, 491, - 613, 8801, 10335, 10335, -850, 491, 84, 176, 4809, 5869, - 63, -850, 751, 726, -850, -850, -850, -850, 12711, -850, - 652, -850, 5512, 742, -850, 10099, 747, -850, 10217, 10217, - 386, 10217, 10217, 750, 6015, 6015, 107, 639, -850, -850, - -850, 9981, 5101, 814, 13119, -850, 6491, 237, -850, -850, - -850, 756, 624, 640, 4809, 5869, -850, -850, -850, 646, - -850, 1485, 751, 10217, 10217, -850, 1458, -850, 1769, -850, - 1769, -850, 1769, -850, -850, 10217, 10217, -850, 565, 565, - 11023, -850, 650, 354, 653, 11023, -850, 660, 661, -850, - 755, 10217, 12853, -850, -850, 13119, 4389, 4661, 666, 414, - 426, 10217, 10217, -850, -850, -850, -850, -850, 10335, -850, - -850, -850, -850, -850, -850, -850, 759, 670, 5869, 4809, - -850, -850, 11137, 69, -850, -850, 6015, -850, -850, 69, - -850, 10217, -850, 785, 797, -850, 13119, 148, -850, 9155, - -850, 1683, 799, 676, 1630, 1630, 894, -850, 13119, 13119, - 593, 681, 593, 593, 13119, 13119, 698, 712, 786, 957, - 345, -850, -850, 1422, -850, 957, 1458, -850, 1769, -850, - -850, 12924, 486, 13119, 13119, -850, -850, -850, -850, 705, - 832, 796, -850, 968, 905, 929, 4809, -850, 4955, -850, - -850, 6015, -850, -850, -850, -850, 116, -850, -850, -850, - -850, 713, 713, 1630, 714, -850, 1769, -850, -850, -850, - -850, -850, -850, 12133, -850, 354, 345, -850, -850, 716, - 718, 722, -850, 723, 722, -850, -850, 952, 12219, 8565, - 12305, 581, 487, 870, 1683, -850, 1630, 713, 1630, 593, - 733, 743, -850, 1458, -850, 1769, -850, 1769, -850, 1769, - -850, -850, 1109, 192, 745, 553, 866, -850, -850, -850, - -850, 713, -850, 722, 753, 722, 722, 756, -850, 1769, - -850, -850, -850, 722, -850 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_int16 yydefact[] = -{ - 2, 0, 0, 1, 0, 0, 0, 0, 293, 0, - 0, 317, 320, 0, 0, 597, 337, 338, 339, 340, - 305, 270, 270, 488, 487, 489, 490, 599, 0, 10, - 0, 492, 491, 493, 479, 583, 481, 480, 483, 482, - 475, 476, 437, 438, 494, 495, 291, 0, 0, 0, - 0, 0, 0, 295, 611, 611, 88, 312, 0, 0, - 0, 0, 0, 0, 452, 0, 0, 0, 3, 597, - 6, 9, 27, 33, 539, 539, 49, 60, 59, 0, - 76, 0, 80, 90, 0, 54, 248, 0, 61, 310, - 284, 285, 435, 286, 287, 288, 433, 432, 464, 434, - 431, 486, 0, 289, 290, 270, 5, 8, 337, 338, - 305, 611, 413, 0, 113, 114, 291, 0, 0, 0, - 0, 539, 539, 116, 496, 341, 0, 486, 290, 0, - 333, 168, 178, 169, 165, 194, 195, 196, 197, 176, - 191, 184, 174, 173, 189, 172, 171, 167, 192, 166, - 179, 183, 185, 177, 170, 186, 193, 188, 187, 180, - 190, 175, 164, 182, 181, 163, 161, 162, 158, 159, - 160, 118, 120, 119, 153, 154, 131, 132, 133, 140, - 137, 139, 134, 135, 155, 156, 141, 142, 146, 149, - 150, 136, 138, 128, 129, 130, 143, 144, 145, 147, - 148, 151, 152, 157, 569, 55, 121, 122, 568, 0, - 0, 0, 58, 539, 539, 0, 0, 54, 0, 486, - 0, 290, 0, 0, 0, 112, 0, 352, 351, 0, - 0, 486, 290, 187, 180, 190, 175, 158, 159, 160, - 118, 119, 0, 123, 125, 20, 124, 455, 460, 459, - 605, 608, 597, 607, 0, 457, 0, 609, 606, 598, - 581, 0, 0, 0, 0, 265, 277, 74, 269, 611, - 435, 611, 573, 75, 73, 611, 259, 306, 72, 0, - 258, 412, 71, 597, 0, 600, 18, 0, 0, 221, - 0, 222, 209, 212, 302, 0, 0, 0, 597, 15, - 597, 78, 14, 0, 597, 0, 602, 602, 249, 0, - 0, 602, 571, 0, 0, 86, 0, 96, 103, 539, - 469, 468, 470, 471, 0, 467, 466, 439, 444, 443, - 446, 0, 0, 441, 448, 0, 450, 0, 462, 0, - 473, 0, 477, 478, 53, 236, 237, 4, 598, 0, - 0, 0, 0, 0, 0, 0, 546, 542, 541, 540, - 543, 544, 548, 560, 515, 516, 564, 563, 559, 539, - 0, 504, 0, 508, 513, 611, 518, 611, 538, 0, - 545, 547, 550, 524, 0, 557, 524, 562, 524, 0, - 522, 500, 0, 0, 400, 402, 0, 92, 0, 84, - 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 208, 211, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 594, 611, 593, 0, 596, 595, 0, 417, 415, 311, - 436, 0, 0, 406, 65, 309, 330, 113, 114, 115, - 477, 478, 504, 497, 328, 0, 611, 0, 0, 0, - 592, 591, 56, 0, 611, 302, 0, 0, 343, 0, - 342, 0, 0, 611, 0, 0, 0, 0, 0, 0, - 302, 0, 611, 0, 325, 0, 126, 0, 0, 456, - 458, 0, 0, 610, 575, 0, 278, 580, 272, 0, - 275, 266, 0, 274, 0, 267, 0, 597, 0, 597, - 611, 611, 260, 271, 597, 0, 308, 52, 0, 0, - 0, 0, 0, 0, 17, 597, 300, 13, 598, 77, - 296, 299, 303, 604, 250, 603, 604, 252, 304, 572, - 102, 94, 0, 89, 0, 0, 611, 0, 539, 313, - 397, 472, 0, 0, 447, 453, 440, 442, 449, 451, - 463, 474, 0, 0, 7, 21, 22, 23, 24, 25, - 50, 51, 506, 552, 0, 597, 597, 524, 0, 0, - 507, 0, 520, 567, 517, 0, 521, 505, 0, 531, - 553, 0, 534, 561, 0, 536, 565, 0, 0, 611, - 0, 28, 30, 0, 31, 597, 0, 82, 93, 48, - 34, 46, 0, 253, 198, 29, 0, 290, 226, 231, - 232, 233, 228, 230, 240, 241, 234, 235, 207, 210, - 238, 239, 32, 218, 599, 227, 229, 223, 224, 225, - 213, 214, 215, 216, 217, 584, 589, 585, 590, 411, - 270, 409, 0, 611, 584, 586, 585, 587, 410, 270, - 584, 585, 270, 611, 611, 35, 253, 199, 45, 206, - 63, 66, 0, 0, 0, 113, 114, 117, 0, 0, - 611, 0, 597, 0, 294, 611, 611, 423, 0, 0, - 611, 344, 588, 301, 0, 584, 585, 611, 346, 318, - 345, 321, 588, 301, 0, 584, 585, 0, 0, 0, - 0, 277, 0, 324, 576, 578, 577, 0, 0, 279, - 273, 611, 579, 574, 257, 255, 261, 262, 264, 307, - 601, 19, 0, 26, 205, 79, 16, 597, 602, 95, - 87, 99, 101, 0, 98, 100, 599, 0, 465, 0, - 454, 219, 220, 546, 360, 597, 353, 503, 501, 0, - 41, 244, 335, 0, 514, 611, 566, 523, 551, 524, - 524, 524, 558, 524, 546, 524, 43, 246, 336, 388, - 386, 0, 385, 384, 283, 0, 91, 85, 0, 0, - 0, 0, 0, 611, 0, 0, 0, 0, 408, 69, - 414, 262, 0, 0, 407, 67, 403, 62, 0, 0, - 611, 331, 0, 0, 414, 334, 570, 57, 424, 425, - 611, 426, 0, 611, 349, 0, 0, 347, 0, 0, - 414, 0, 0, 0, 0, 0, 414, 0, 127, 461, - 323, 0, 0, 276, 280, 268, 597, 611, 11, 297, - 251, 97, 0, 390, 0, 0, 314, 445, 361, 358, - 549, 0, 597, 0, 0, 519, 0, 527, 0, 529, - 0, 535, 0, 532, 537, 0, 0, 383, 599, 599, - 510, 511, 611, 611, 368, 0, 555, 368, 368, 366, - 0, 0, 281, 83, 47, 254, 584, 585, 0, 584, - 585, 0, 0, 40, 203, 39, 204, 70, 0, 37, - 201, 38, 202, 68, 404, 405, 0, 0, 0, 0, - 498, 329, 0, 0, 428, 350, 0, 12, 430, 0, - 315, 0, 316, 0, 0, 326, 279, 611, 256, 263, - 396, 0, 0, 0, 0, 0, 356, 502, 42, 245, - 524, 524, 524, 524, 44, 247, 0, 0, 0, 509, - 0, 364, 365, 368, 376, 554, 0, 379, 0, 381, - 401, 282, 414, 243, 242, 36, 200, 418, 416, 0, - 0, 0, 427, 0, 104, 111, 0, 429, 0, 319, - 322, 0, 420, 421, 419, 394, 599, 392, 395, 399, - 398, 362, 359, 0, 354, 528, 0, 525, 530, 533, - 389, 387, 302, 0, 512, 611, 0, 367, 374, 368, - 368, 368, 556, 368, 368, 64, 332, 110, 0, 611, - 0, 611, 611, 0, 0, 391, 0, 357, 0, 524, - 588, 301, 363, 0, 371, 0, 373, 0, 380, 0, - 377, 382, 107, 109, 0, 584, 585, 422, 348, 327, - 393, 355, 526, 368, 368, 368, 368, 105, 372, 0, - 369, 375, 378, 368, 370 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -850, -850, -850, 379, -850, 44, -850, -221, 102, -850, - 30, -850, -19, -171, 161, 1373, 1745, -850, 1, -30, - -850, -656, -850, -13, 889, -220, 23, -60, -285, -450, - 15, 2261, -78, 901, 43, 3, -850, -850, 19, -850, - 1221, -850, 464, 81, -495, -377, 114, 17, -850, -415, - -256, -111, 39, -338, 32, -850, -850, -850, -850, -850, - -850, -850, -850, -850, -850, -850, -850, -850, -850, -850, - -850, 8, -213, -435, -122, -602, -850, -850, -850, 134, - 101, -850, -566, -850, -850, -359, -850, -116, -850, -850, - 135, -850, -850, -850, -81, -850, -850, -458, -850, -112, - -850, -850, -850, -850, -850, 66, 6, -158, -850, -850, - -850, -850, -394, -280, -850, 671, -850, -850, -850, 13, - -850, -850, -850, 2384, 2648, 924, 1983, -850, -850, 14, - 459, 24, 163, 357, -14, -850, -850, -850, 112, -453, - 189, -206, -837, -693, -553, -850, 280, -715, -542, -849, - -12, -518, -850, -90, -850, 111, -357, -850, -850, -850, - 26, 691, -399, 625, -173, -850, -850, -82, -850, 42, - -25, 525, -249, 78, -26, 9, -2 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 1, 2, 68, 69, 70, 287, 463, 464, 298, - 299, 518, 72, 610, 73, 213, 214, 683, 215, 76, - 77, 671, 810, 78, 79, 300, 80, 81, 82, 543, - 83, 216, 123, 124, 243, 244, 245, 708, 648, 207, - 85, 305, 614, 649, 277, 508, 509, 278, 279, 268, - 501, 536, 653, 604, 86, 210, 303, 737, 304, 319, - 747, 223, 834, 224, 835, 707, 991, 674, 672, 919, - 458, 290, 469, 699, 826, 827, 230, 755, 944, 1017, - 964, 878, 781, 782, 879, 852, 996, 997, 549, 856, - 395, 599, 88, 89, 445, 664, 663, 492, 994, 686, - 820, 923, 927, 90, 91, 92, 332, 333, 553, 93, - 94, 95, 554, 253, 254, 255, 487, 96, 97, 98, - 326, 99, 100, 219, 220, 103, 221, 454, 673, 370, - 371, 372, 373, 374, 881, 882, 375, 376, 377, 378, - 589, 379, 380, 381, 382, 574, 383, 384, 385, 886, - 887, 386, 387, 388, 389, 390, 582, 209, 459, 310, - 511, 495, 272, 129, 678, 651, 462, 457, 436, 515, - 853, 516, 534, 257, 258, 259, 302 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = -{ - 106, 285, 284, 265, 265, 433, 435, 265, 439, 477, - 87, 222, 87, 126, 126, 505, 252, 218, 218, 280, - 586, 229, 400, 218, 218, 218, 206, 246, 218, 542, - 710, 286, 71, 206, 71, 768, 344, 125, 125, 282, - 449, 246, 271, 271, 701, 125, 271, 206, 107, 772, - 205, 555, 308, 312, 652, 269, 269, 256, 537, 269, - 87, 859, 539, 615, 316, 885, 335, 337, 339, 341, - 769, 315, 391, 391, 218, 301, 525, 206, 348, 679, - 307, 311, 270, 270, 823, 468, 270, 720, 125, 392, - 316, 720, -104, 306, 740, 833, 694, 808, 809, 393, - 714, 325, 276, 281, 998, 704, 854, 723, 437, 280, - 437, 347, -111, 550, 125, 366, -107, 1022, 572, -110, - 270, 270, 444, -109, 3, 218, -485, 87, -106, -108, - 267, 273, -105, 901, 274, 767, 474, 723, 767, -488, - 367, 767, 779, 907, 342, 343, 393, 483, -487, 913, - 434, 579, 354, 355, 297, -112, 787, 440, 502, -77, - 506, 294, -489, 576, 804, 430, 822, 806, 491, 743, - 212, 212, 598, -490, 557, 288, 212, 557, 605, 557, - -91, 557, 573, 557, 247, 804, 443, 248, 249, 780, - 855, 396, 276, 281, 1022, 533, -488, 998, 753, 902, - 357, 358, 359, 360, 394, -487, 768, 432, 522, -96, - 443, 391, 391, 397, 555, 250, 361, 251, 87, -489, - 438, 297, 438, -492, 478, 479, 275, 466, 467, -103, - -490, 218, 218, -99, 547, -584, -102, 681, 393, 401, - -101, 769, -585, -484, 918, -98, -100, 476, 885, -97, - 523, 885, -491, 1004, 541, 505, 650, 441, 1034, 542, - 659, 206, 265, 662, 251, 468, 265, 503, 453, 503, - 665, 668, -104, 512, 750, 275, -111, -493, 446, -110, - -492, 283, -301, 218, 680, 325, -479, 218, 465, 858, - 471, 218, 218, 470, 488, 475, 87, -301, -483, 650, - 470, 659, 480, 87, 87, 271, 767, 528, 768, -491, - 680, 87, 720, 720, 510, 535, 535, 768, 269, 301, - 535, 542, 316, 843, 772, 524, 450, 451, 885, 723, - 552, 460, -301, 530, -493, 992, -585, 493, 893, -301, - 527, 270, 746, -479, 283, 270, 125, 819, 251, 680, - 565, 566, 567, 568, 484, -483, 87, 218, 218, 218, - 218, 87, 218, 218, 247, 447, 601, 248, 249, 448, - 486, 611, 491, 583, 680, 583, 442, 677, 71, 500, - 87, 494, 609, 569, 212, 212, 720, 417, 461, 519, - 520, 500, 564, 513, 557, 250, 763, 251, 297, 727, - 728, 87, 935, 831, 218, -111, 87, 316, 865, 616, - 768, 611, 611, 767, 607, 767, 898, 767, 265, 767, - 526, 301, 609, 609, -76, 42, 493, 538, 43, 512, - 832, 125, -106, 532, 750, 603, 540, 555, 544, 218, - 603, -484, 562, 265, 514, 517, 364, 365, 366, 616, - 616, 563, 657, 813, 512, 657, 417, 587, 578, -108, - 265, -499, 687, 581, 218, 845, 87, 218, 584, 265, - -104, 512, 59, 367, 285, 717, 657, 87, 931, 993, - 512, 218, 739, 768, 541, 87, 426, 427, 428, 850, - 218, -96, 785, 657, 768, 87, 585, 270, 770, 842, - 297, 773, 657, 542, 825, 822, 802, -105, 503, 503, - 212, 212, 212, 212, 658, 570, 571, 106, 803, 956, - 957, 731, 270, 593, 720, 961, 962, 87, 721, 588, - 712, 246, -581, 265, 794, -106, 87, 206, 658, 270, - 723, 657, 801, 591, 512, 594, 541, -108, 270, 71, - 316, 726, 316, 767, 218, 658, 700, 700, 736, 738, - 890, 87, 596, 750, 658, 760, 657, -341, 270, -106, - 597, 690, 270, 429, 125, 592, 125, 595, 908, 697, - 452, 452, -341, 608, 776, 632, 218, 916, 430, 709, - 670, 845, 684, 442, 685, 688, -479, 783, 691, 270, - 689, 841, 270, 658, 551, 218, 493, -105, 285, 795, - 506, -479, 270, 493, 316, 713, 725, -341, 730, 650, - 682, 659, -111, 431, -341, 903, -91, 105, 658, 105, - 432, 909, 911, 942, 105, 105, 523, 733, 125, 759, - 105, 105, 105, -103, -581, 105, -479, 762, 789, 577, - -581, 503, 1054, -479, 788, 749, 802, 280, 1042, 778, - 280, 783, 783, 790, 800, -110, 698, 799, -106, 770, - 814, -106, -106, 815, 812, 822, 805, 105, 280, 807, - 803, 218, 87, 821, 824, -106, -102, 830, 824, 455, - 888, 105, 766, 765, 839, 824, 766, 836, 980, -106, - 840, -106, 206, 851, 430, 908, -98, 848, 837, -108, - 986, 838, 857, 251, 861, 218, 988, 863, 472, 503, - 285, 246, 572, 875, 603, 914, 817, 206, 541, 866, - -100, 798, 868, 430, -105, 870, 939, 975, 872, 456, - 276, 921, 105, 276, 105, 922, 432, 535, -298, -291, - 811, -298, -298, 847, 247, -97, 926, 248, 249, 798, - 611, 276, 930, 583, -291, 932, 611, 905, 473, 940, - 970, 609, 611, 611, 977, 432, 951, 609, -298, -298, - 265, -298, -414, 609, 609, 250, 941, 251, 945, 87, - 470, 512, 960, 270, 270, 963, 316, 87, 616, -291, - 989, 218, 966, 968, 616, 218, -291, 972, 783, 978, - 616, 616, 990, 657, 999, 1000, 87, 87, 924, 894, - 125, 928, 481, 1006, 1010, 529, 929, 847, 334, 531, - 87, 328, 329, 218, 212, 105, 489, 430, 1011, 248, - 249, 1012, 87, 87, 1025, 503, -414, 1026, 105, 105, - 87, 1027, 285, 285, 756, 1036, 1038, 680, 1043, 270, - 1045, -414, 87, 87, 1047, 1049, 247, 270, 212, 248, - 249, 771, 482, 1020, 775, 658, 1023, -584, 611, 432, - 583, 583, -108, 330, 331, 1059, 1067, -585, 959, 609, - 920, 889, 883, 965, -414, 1069, -414, 250, 732, 251, - 105, 1030, 227, -414, 105, 667, 669, 130, 105, 105, - 1058, 917, 125, 105, 877, 700, 616, 125, 1060, 1057, - 105, 105, 354, 355, 925, 490, 87, 87, 105, 247, - 983, 208, 248, 249, 87, 824, 933, 934, 764, 667, - 669, 521, 915, 880, 937, 753, 1014, 357, 358, 359, - 360, 1019, 545, 1064, 125, 0, 430, 943, 867, 869, - 871, 504, 873, 361, 874, 0, 0, 430, 0, 0, - 285, 1035, 0, 105, 105, 105, 105, 105, 105, 105, - 105, -108, 0, 0, -108, -108, 212, 734, 967, 969, - 0, 473, 0, 0, 87, -486, 87, 105, 432, 87, - 247, 470, 546, 248, 249, 270, 0, 470, 0, 432, - -486, 0, -108, 583, -108, 0, 265, 0, 105, -290, - 979, 105, 0, 105, 0, 0, 105, 512, 987, 687, - 824, 250, 724, 251, -290, 0, 1003, 218, 0, 729, - 0, 0, -302, 0, 0, -486, 792, 1013, 0, 657, - 735, 336, -486, 328, 329, 0, 105, -302, 1028, 0, - 884, 430, 430, 0, 1018, 0, 105, 105, 0, -290, - -582, 766, 1015, 430, 889, 883, -290, 889, 883, 889, - 883, 105, 558, 105, 105, 328, 329, 0, 1031, 0, - 1032, 0, -302, 1033, 105, 270, 793, 456, 105, -302, - 757, 758, 105, 432, 432, 330, 331, 105, 1029, 0, - 0, 658, 105, 0, 559, 432, 328, 329, 0, 0, - 1044, 1046, 1048, 880, 1050, 1051, 880, 889, 883, 880, - 786, 880, 0, 0, -483, -588, 0, 330, 331, 1005, - 1007, 1008, 1009, 0, 105, 0, 950, 0, 952, -483, - 0, 0, 953, 105, 889, 883, 889, 883, 889, 883, - 889, 883, 0, 0, 1068, 1070, 1071, 1072, 330, 331, - 0, 105, -599, 0, 1074, -599, -599, 0, 105, 880, - 889, 883, -582, 0, -483, 0, 0, 0, -582, 0, - 0, -483, 0, -584, -585, 0, 0, 0, 0, -588, - 0, 0, 0, 105, 0, 251, 880, 816, 880, 0, - 880, 0, 880, 0, -588, 0, 753, 0, 357, 358, - 359, 360, 105, 0, 1001, 1002, 0, 0, 1062, 0, - 217, 217, 880, 0, 361, 0, 217, 266, 266, 0, - 0, 266, 0, 0, 0, 0, 1021, -588, 1024, -588, - 327, 328, 329, -584, 0, 0, -588, -584, -585, 362, - 904, 906, 849, 0, 0, 754, 910, 912, 289, 291, - 292, 293, -584, -585, 0, 266, 309, 338, 328, 329, - 860, 0, 0, 1037, 0, 0, 1039, 345, 346, 0, - 0, 0, 904, 906, 0, 910, 912, 0, 105, 105, - 340, 328, 329, 330, 331, -584, -585, -584, -585, 0, - 0, -584, -585, 0, -584, -585, 0, 356, 1061, 357, - 358, 359, 360, 1063, 0, 1065, 0, 0, 0, 1066, - 330, 331, 105, 417, 0, 361, 0, 0, 217, 356, - 0, 357, 358, 359, 360, 551, 328, 329, 0, 1073, - 556, 328, 329, 330, 331, 0, 0, 361, 0, 0, - 362, 424, 425, 426, 427, 428, 363, 364, 365, 366, - 0, 938, 976, 0, 0, 74, 0, 74, 121, 121, - 0, 0, 362, 560, 328, 329, 121, 947, 363, 364, - 365, 366, 0, 0, 367, 976, 0, 368, 330, 331, - 561, 328, 329, 330, 331, 0, 105, 0, 0, -611, - 369, 748, 328, 329, 105, 105, 367, 0, 105, 368, - 0, 105, 105, 0, 0, 74, 0, 105, 105, 121, - 0, 0, 369, 105, 105, 0, 330, 331, 356, 0, - 357, 358, 359, 360, 217, 217, 0, 105, 0, 0, - 105, 0, 0, 330, 331, 121, 361, 0, 0, 105, - 105, 0, 0, 0, 330, 331, 247, 105, 0, 248, - 249, 0, 0, 356, 0, 357, 358, 359, 360, 105, - 105, 362, 496, 497, 498, 345, 0, 363, 364, 365, - 366, 361, 74, 500, 0, 0, 266, 250, 0, 251, - 266, 0, 0, 0, 217, 217, 0, 0, 0, 356, - 0, 357, 358, 359, 360, 367, 362, 0, 368, 0, - 0, 0, 363, 364, 365, 366, 0, 361, 0, 0, - 0, 548, 0, 105, 0, 0, 753, 0, 357, 358, - 359, 360, 0, 105, 105, 349, 350, 351, 352, 353, - 367, 105, 362, 368, 361, 414, 415, 0, 363, 364, - 365, 366, 0, 0, 1016, 414, 415, 0, 417, 0, - 217, 217, 217, 217, 0, 217, 217, 0, 417, 362, - 0, 0, 0, 74, 0, 946, 367, 0, 0, 368, - 0, 0, 0, 0, 580, 423, 424, 425, 426, 427, - 428, 0, 0, 0, 0, 590, 424, 425, 426, 427, - 428, 105, 0, 105, 0, 0, 105, 602, 0, 0, - 0, 0, 613, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 630, 631, 0, 633, 634, - 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 0, 0, 266, 0, 105, 356, 0, 357, 358, 359, - 360, 74, 666, 666, 0, 0, 0, 0, 74, 74, - 0, 0, 0, 361, 0, 0, 74, 266, 0, 0, - 217, 753, 0, 357, 358, 359, 360, 121, 0, 575, - 0, 0, 666, 0, 266, 0, 666, 666, 362, 361, - 0, 0, 0, 266, 363, 364, 365, 366, 0, 0, - 0, 0, 711, 0, 0, 0, 715, 0, 0, 0, - 716, 74, 0, 719, 362, 722, 74, 309, 293, 0, - 0, 0, 367, 0, 995, 368, 357, 358, 359, 360, - 0, 0, 0, 0, 666, 74, 0, 75, 0, 75, - 122, 122, 361, 0, 719, 0, 0, 309, 122, 356, - 0, 357, 358, 359, 360, 0, 74, 266, 0, 0, - 0, 74, 121, 0, 74, 0, 0, 361, 0, 0, - 0, 0, 0, 751, 752, 0, 0, 0, 0, 0, - 0, 0, 0, 862, 0, 0, 0, 75, 0, 761, - 0, 122, 362, 0, 0, 0, 0, 0, 363, 364, - 365, 366, 0, 0, 74, 74, 0, 0, 777, 0, - 774, 784, 357, 358, 359, 360, 0, 122, 0, 0, - 0, 74, 0, 0, 0, 0, 367, 0, 361, 368, - 414, 415, 74, 0, 0, 0, 0, 0, 0, 0, - 74, 0, 0, 417, 0, 0, 0, 0, 0, 0, - 74, 0, 0, 362, 75, 0, 0, 0, 0, 0, - 364, 365, 366, 0, 0, 0, 0, 0, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 0, 0, 0, - 0, 0, 74, 0, 217, 0, 0, 367, 0, 0, - 0, 74, 0, 0, 0, 0, 818, 0, 0, 761, - 777, 0, 0, 0, 0, 121, 0, 121, 0, 0, - 0, 0, 0, 0, 0, 0, 74, 0, 217, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 844, - 0, 0, 0, 0, 0, 0, 0, 0, 719, 309, - 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, - 0, 0, 0, 0, 0, 104, 0, 104, 128, 128, - 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 892, 0, 0, 0, - 0, 666, 895, 0, 266, 0, 0, 666, 666, 0, - 0, 0, 719, 666, 666, 0, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 104, 0, 0, 0, 318, - 75, 75, 0, 0, 0, 0, 217, 74, 75, 666, - 666, 0, 666, 666, 0, 0, 0, 0, 0, 122, - 0, 0, 936, 0, 0, 318, 0, 293, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 948, 949, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 954, 955, 75, 0, - 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 971, 0, 0, 0, 0, 75, 0, 0, - 0, 0, 973, 974, 0, 0, 0, 0, 0, 666, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, - 0, 0, 0, 75, 122, 0, 75, 0, 0, 0, - 0, 0, 666, 0, 74, 0, 0, 0, 0, 0, - 309, 121, 74, 74, 0, 0, 0, 0, 0, 74, - 0, 0, 0, 0, 0, 74, 74, 0, 0, 0, - 0, 74, 74, 0, 0, 0, 75, 75, 0, 0, - 0, 0, 0, 104, 0, 74, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 0, 74, 74, 0, - 0, 0, 0, 0, 75, 74, 0, 0, 0, 0, - 0, 0, 75, 0, 0, 0, 0, 74, 74, 0, - 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 266, 0, 0, 121, 0, 0, 0, 0, 121, 0, - 0, 0, 0, 84, 75, 84, 0, 0, 0, 0, - 0, 104, 0, 75, 228, 0, 0, 0, 104, 104, - 0, 74, 0, 0, 0, 0, 104, 122, 0, 122, - 0, 74, 74, 0, 0, 121, 0, 318, 75, 74, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -611, 104, 0, 0, 0, 0, 104, 0, 0, 0, - 0, 0, 0, -611, -611, -611, -611, -611, -611, 0, - -611, 122, 0, 0, 0, 104, -611, -611, 0, 74, - 0, 74, 0, 0, 74, 0, 0, -611, -611, 0, - -611, -611, -611, -611, -611, 0, 104, 0, 0, 0, - 84, 104, 318, 0, 617, 0, 101, 0, 101, 127, - 127, 127, 0, 0, 0, 0, 0, 231, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, - -611, 0, 0, 0, 617, 617, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -611, 101, 0, 0, 0, - 317, 104, 0, 0, 0, -611, 0, 0, -611, -611, - 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, - 104, 0, 0, 0, 0, 0, 317, 0, -611, -611, - 104, 84, 0, 0, 275, -611, -611, -611, -611, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 104, 101, 0, 0, 0, 0, 0, 0, - 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 318, 75, 318, 0, 0, - 0, 0, 0, 122, 75, 75, 104, 0, 0, 0, - 0, 75, 0, 0, 0, 0, 0, 75, 75, 84, - 0, 0, 0, 75, 75, 0, 84, 84, 0, 0, - 0, 0, 0, 0, 84, 0, 0, 75, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, - 75, 0, 0, 0, 0, 0, 0, 75, 0, 318, - 0, 0, 0, 0, 101, 0, 0, 0, 0, 75, - 75, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, - 122, 0, 0, 84, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 102, 0, 102, 75, 84, 0, 0, 104, 0, 84, - 0, 0, 612, 75, 75, 0, 0, 122, 0, 0, - 0, 75, 101, 0, 0, 0, 0, 0, 0, 101, - 101, 0, 0, 0, 0, 0, 0, 101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, - 102, 0, 612, 612, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 75, 101, 75, 0, 0, 75, 101, 84, 0, - 0, 402, 403, 404, 405, 406, 407, 408, 84, 410, - 411, 0, 0, 0, 0, 0, 101, 414, 415, 0, - 0, 0, 0, 0, 104, 0, 0, 102, 0, 0, - 417, 318, 104, 617, 0, 0, 0, 101, 0, 617, - 84, 0, 101, 317, 0, 617, 617, 0, 0, 84, - 0, 104, 104, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 0, 0, 104, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 0, 0, 104, 104, 0, - 0, 0, 0, 0, 0, 104, 0, -612, -612, -612, - -612, 406, 407, 0, 0, -612, -612, 104, 104, 0, - 0, 0, 101, 414, 415, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 0, 0, 417, 0, 102, 0, - 0, 101, 0, 128, 0, 0, 0, 0, 128, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 0, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 0, - 0, 617, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 104, 104, 101, 0, 985, 0, 0, 0, 104, - 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 317, 0, 317, 0, - 0, 0, 0, 0, 0, 84, 102, 101, 0, 0, - 0, 0, 0, 102, 102, 0, 0, 791, 0, 0, - 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, - 0, 104, 0, 0, 104, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 0, - 317, 414, 415, 0, 0, 0, 102, 0, 0, 0, - 0, 102, 0, 0, 417, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 102, 0, 0, 0, 0, 418, 0, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 0, 0, - 0, 102, 84, 0, 0, -277, 102, 0, 0, 102, - 84, 612, 0, 0, 0, 0, 0, 612, 101, 0, - 0, 0, 0, 612, 612, 0, 0, 0, 0, 84, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 0, 0, 0, 0, 0, 102, - 102, 0, 0, 0, 0, 84, 84, 0, 0, 0, - 0, 0, 0, 84, 0, 0, 102, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 84, 102, 0, 0, - 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 0, 102, 0, 612, - 0, 0, 317, 101, 0, 0, 102, 0, 0, 84, - 84, 0, 0, 982, 0, 0, 0, 84, 0, 0, - 0, 0, 101, 101, 0, 0, 0, 0, 0, 0, - 0, 102, 0, 0, 0, 0, 101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 101, - 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 101, - 0, 0, 0, 0, 0, 0, 0, 84, 0, 84, - 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 127, 0, 0, 0, 0, 127, - 0, 0, 0, 0, 0, -588, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -588, -588, - -588, 0, -588, -588, 0, -588, 0, 0, 0, 0, - 0, -588, 101, 101, 0, 0, 984, 0, 0, 0, - 101, 0, -588, -588, 0, -588, -588, -588, -588, -588, - 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -588, -588, -588, - -588, -588, -588, -588, -588, -588, -588, -588, -588, 0, - 0, 0, 0, -588, -588, -588, 0, 796, -588, 0, - 101, 0, 101, 0, 0, 101, -588, 0, 0, 0, - -588, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -588, 0, 0, -588, -588, 0, -107, -588, 0, -588, - -588, -588, -588, -588, -588, -588, -588, -588, -588, 0, - 0, 0, 0, -588, -588, -588, 0, -99, 0, 0, - -588, -588, -588, -588, 0, 0, 0, 0, 0, 102, - 0, 0, 0, 0, 0, 0, 0, 102, 102, 0, - 0, 0, 645, 646, 102, 0, 647, 0, 0, 0, - 102, 102, 0, 0, 0, 0, 102, 102, 0, 0, - 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, - 102, 182, 183, 0, 0, 0, 0, 184, 185, 186, - 187, 0, 102, 102, 0, 0, 0, 0, 0, 0, - 102, 188, 189, 190, 0, 0, 0, 0, 0, 0, - 0, 0, 102, 102, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 0, 201, 202, 402, 403, - 404, 405, 406, 407, 203, 275, 410, 411, 0, 0, - 0, 0, 0, 0, 414, 415, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 102, 417, 0, 0, - 0, 0, 0, 0, 0, 0, 102, 102, 0, 0, - 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 0, 0, 0, 0, 0, 0, -611, 4, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, - 0, 0, 0, 0, 0, 15, 0, 16, 17, 18, - 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, - 24, 25, 26, 0, 102, 27, 102, 0, 0, 102, - 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, - 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, - 57, 0, 58, 59, 60, 0, 61, 62, 63, -292, - 64, -611, 0, 0, -611, -611, 0, 0, 0, 0, - 0, 0, -292, -292, -292, -292, -292, -292, 0, -292, - 65, 66, 67, 0, 0, 0, -292, -292, -292, 0, - 0, 0, -611, 0, -611, 0, -292, -292, 0, -292, - -292, -292, -292, -292, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -292, -292, -292, -292, -292, -292, -292, -292, -292, - -292, -292, -292, 0, 0, 0, 0, -292, -292, -292, - 0, 0, -292, 0, 0, 0, 0, 0, -292, 0, - -292, 0, 0, 0, -292, 0, 0, 0, 0, 0, - 0, 0, -292, 0, -292, 0, 0, -292, -292, 0, - 0, -292, -292, -292, -292, -292, -292, -292, -292, -292, - -292, -292, -292, 0, 0, -413, 0, 0, -292, -292, - -292, -292, 0, 0, -292, -292, -292, -292, -413, -413, - -413, -413, -413, -413, 0, -413, 0, 0, 0, 0, - 0, -413, -413, -413, 0, 0, 0, 0, 0, 0, - 0, 0, -413, -413, 0, -413, -413, -413, -413, -413, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -413, -413, -413, - -413, -413, -413, -413, -413, -413, -413, -413, -413, 0, - 0, 0, 0, -413, -413, -413, 0, 0, -413, 0, - 0, 0, 0, 0, -413, 0, -413, 0, 0, 0, - -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -413, 0, 0, -413, -413, 0, 0, -413, 0, -413, - -413, -413, -413, -413, -413, -413, -413, -413, -413, 0, - 0, -479, 0, -413, -413, -413, -413, -413, 0, 275, - -413, -413, -413, -413, -479, -479, -479, -479, -479, -479, - 0, -479, 0, 0, 0, 0, 0, 0, -479, -479, - 0, 0, 0, 0, 0, 0, 0, 0, -479, -479, - 0, -479, -479, -479, -479, -479, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 494, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, 0, 0, 0, 0, -479, - -479, -479, 0, -479, -479, 0, 0, 0, 0, 0, - -479, 0, -479, 0, 0, 0, -479, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -479, 0, 0, -479, - -479, 0, -479, -479, 0, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, 0, 0, -611, 0, 0, - -479, -479, -479, -479, 0, 0, -479, -479, -479, -479, - -611, -611, -611, -611, -611, -611, 0, -611, 0, 0, - 0, 0, 0, -611, -611, -611, 0, 0, 0, 0, - 0, 0, 0, 0, -611, -611, 0, -611, -611, -611, - -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -611, - -611, -611, -611, -611, -611, -611, -611, -611, -611, -611, - -611, 0, 0, 0, 0, -611, -611, -611, 0, 0, - -611, 0, 0, 0, 0, 0, -611, 0, -611, 0, - 0, 0, -611, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -611, 0, 0, -611, -611, 0, 0, -611, - 0, -611, -611, -611, -611, -611, -611, -611, -611, -611, - -611, 0, 0, -611, 0, -611, -611, -611, -611, -611, - 0, 275, -611, -611, -611, -611, -611, -611, -611, -611, - -611, -611, 0, -611, 0, 0, 0, 0, 0, 0, - -611, -611, 0, 0, 0, 0, 0, 0, 0, 0, - -611, -611, 0, -611, -611, -611, -611, -611, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -611, -611, -611, -611, -611, - -611, -611, -611, -611, -611, -611, -611, 0, 0, 0, - 0, -611, -611, -611, 0, 0, -611, 0, 0, 0, - 0, 0, -611, 0, -611, 0, 0, 0, -611, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -611, 0, - 0, -611, -611, 0, 0, -611, 0, -611, -611, -611, - -611, -611, -611, -611, -611, -611, -611, 0, 0, -588, - 0, 0, -611, -611, -611, -611, 0, 275, -611, -611, - -611, -611, -588, -588, -588, 0, -588, -588, 0, -588, - 0, 0, 0, 0, 0, -588, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -588, -588, 0, -588, - -588, -588, -588, -588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -588, -588, -588, -588, -588, -588, -588, -588, -588, - -588, -588, -588, 0, 0, 0, 0, -588, -588, -588, - 0, 796, -588, 0, 0, 0, 0, 0, 0, 0, - -588, 0, 0, 0, -588, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -588, 0, 0, -588, -588, 0, - -107, -588, 0, -588, -588, -588, -588, -588, -588, -588, - -588, -588, -588, 0, 0, -301, 0, -588, -588, -588, - 0, -588, 0, 0, -588, -588, -588, -588, -301, -301, - -301, 0, -301, -301, 0, -301, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -301, -301, 0, -301, -301, -301, -301, -301, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -301, -301, -301, - -301, -301, -301, -301, -301, -301, -301, -301, -301, 0, - 0, 0, 0, -301, -301, -301, 0, 797, -301, 0, - 0, 0, 0, 0, 0, 0, -301, 0, 0, 0, - -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -301, 0, 0, -301, -301, 0, -109, -301, 0, -301, - -301, -301, -301, -301, -301, -301, -301, -301, -301, 0, - 0, -301, 0, 0, -301, -301, 0, -101, 0, 0, - -301, -301, -301, -301, -301, -301, -301, 0, -301, -301, - 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -301, -301, - 0, -301, -301, -301, -301, -301, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -301, -301, -301, -301, -301, -301, -301, - -301, -301, -301, -301, -301, 0, 0, 0, 0, -301, - -301, -301, 0, 797, -301, 0, 0, 0, 0, 0, - 0, 0, -301, 0, 0, 0, -301, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -301, 0, 0, -301, - -301, 0, -109, -301, 0, -301, -301, -301, -301, -301, - -301, -301, -301, -301, -301, 0, 0, 0, 0, 0, - -301, -301, 0, -301, 0, 0, -301, -301, -301, -301, - 295, 0, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, -611, -611, -611, 0, 0, -611, 15, 0, - 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, - 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, - 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, - 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, - 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, - 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, - 62, 63, 0, 64, -611, 0, 0, -611, -611, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 65, 66, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -611, 295, -611, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, - -611, 0, -611, -611, 15, 0, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, - 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, - 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, - 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, - 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - -611, 0, 0, -611, -611, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, - 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -611, 295, -611, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 0, 0, -611, 0, 0, -611, - 15, -611, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, - 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, - 0, 0, 51, 0, 0, 52, 53, 0, 54, 55, - 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, -611, 0, 0, -611, - -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 65, 66, 67, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -611, 295, -611, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 0, 0, -611, 0, 0, -611, 15, 0, 16, 17, - 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, - 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, - 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, - 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, - 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, -611, 0, 0, -611, -611, 4, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, - 0, 65, 66, 67, 0, 15, 0, 16, 17, 18, - 19, 0, 0, -611, 0, -611, 20, 21, 22, 23, - 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 50, 0, 0, 0, 0, 0, 51, 0, 0, - 52, 53, 0, 54, 55, 0, 56, 0, 0, 0, - 57, 0, 58, 59, 60, 0, 61, 62, 63, 0, - 64, -611, 0, 0, -611, -611, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65, 66, 67, 0, 0, -611, 0, 0, 0, 0, - 0, 0, -611, 295, -611, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 0, -611, -611, 0, 0, - 0, 15, 0, 16, 17, 18, 19, 0, 0, 0, - 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, - 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, - 0, 0, 0, 51, 0, 0, 52, 53, 0, 54, - 55, 0, 56, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, -611, 0, 0, - -611, -611, 295, 0, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 0, 0, 65, 66, 67, 0, - 15, 0, 16, 17, 18, 19, 0, 0, -611, 0, - -611, 20, 21, 22, 23, 24, 25, 26, 0, 0, - 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, - 0, 0, 51, 0, 0, 296, 53, 0, 54, 55, - 0, 56, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, -611, 0, 0, -611, - -611, 295, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 0, 0, 65, 66, 67, 0, 15, - 0, 16, 17, 18, 19, 0, -611, -611, 0, -611, - 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, - 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, - 0, 51, 0, 0, 52, 53, 0, 54, 55, 0, - 56, 0, 0, 0, 57, 0, 58, 59, 60, 0, - 61, 62, 63, 0, 64, -611, 0, 0, -611, -611, - 295, 0, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 0, 0, 65, 66, 67, 0, 15, 0, - 16, 17, 18, 19, 0, -611, -611, 0, -611, 20, - 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, - 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, - 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, - 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, - 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, - 62, 63, 0, 64, -611, 0, 0, -611, -611, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 65, 66, 67, 0, 0, -611, 0, - 0, 0, 0, 0, 0, -611, 295, -611, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, - -611, 0, 0, 0, 15, 0, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, - 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, - 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 50, 0, 0, 0, 0, 0, 51, 0, 0, 52, - 53, 0, 54, 55, 0, 56, 0, 0, 0, 57, - 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - -611, 0, 0, -611, -611, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 0, 0, 65, - 66, 67, 0, 15, 0, 16, 17, 18, 19, 0, - 0, -611, 0, -611, 20, 21, 22, 23, 24, 25, - 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, - 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, - 0, 54, 55, 0, 56, 0, 0, 0, 57, 0, - 58, 59, 60, 0, 61, 62, 63, 0, 64, 247, - 0, 0, 248, 249, 0, 0, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 0, 0, 65, 66, - 67, 0, 15, 0, 16, 17, 18, 19, 0, 0, - 250, 0, 251, 20, 21, 22, 23, 24, 25, 26, - 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, - 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, - 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, - 54, 55, 0, 56, 0, 0, 0, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, 247, 0, - 0, 248, 249, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 65, 66, 67, - 0, 15, 0, 16, 17, 18, 19, 0, 0, 250, - 0, 251, 20, 21, 22, 23, 24, 25, 26, 0, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, - 0, 0, 0, 211, 0, 0, 119, 53, 0, 54, - 55, 0, 0, 0, 0, 0, 57, 0, 58, 59, - 60, 0, 61, 62, 63, 0, 64, 247, 0, 0, - 248, 249, 0, 0, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 0, 0, 0, 65, 66, 67, 0, - 15, 0, 108, 109, 18, 19, 0, 0, 250, 0, - 251, 110, 111, 112, 23, 24, 25, 26, 0, 0, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, - 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, - 0, 0, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, 247, 0, 0, 248, - 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 65, 264, 67, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 250, 0, 251, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 0, 0, 0, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 0, 0, 0, - 0, 0, 165, 166, 167, 168, 169, 170, 171, 172, - 36, 37, 173, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, - 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, - 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 0, 201, 202, 0, 0, 0, 0, 0, 0, - 203, 204, -581, -581, -581, -581, -581, -581, -581, -581, - -581, 0, 0, 0, 0, 0, 0, 0, -581, 0, - -581, -581, -581, -581, 0, -581, 0, 0, 0, -581, - -581, -581, -581, -581, -581, -581, 0, 0, -581, 0, - 0, 0, 0, 0, 0, 0, 0, -581, -581, -581, - -581, -581, -581, -581, -581, -581, 0, -581, -581, -581, - 0, 0, -581, 0, 0, -581, -581, 0, -581, -581, - -581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -581, -581, 0, 0, 0, 0, 0, - -581, 0, 0, -581, -581, 0, -581, -581, 0, -581, - 0, -581, -581, -581, 0, -581, -581, -581, 0, -581, - -581, -581, 0, -581, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -581, -581, -581, 0, -581, 0, 0, - 0, 0, 0, -581, -582, -582, -582, -582, -582, -582, - -582, -582, -582, 0, 0, 0, 0, 0, 0, 0, - -582, 0, -582, -582, -582, -582, 0, -582, 0, 0, - 0, -582, -582, -582, -582, -582, -582, -582, 0, 0, - -582, 0, 0, 0, 0, 0, 0, 0, 0, -582, - -582, -582, -582, -582, -582, -582, -582, -582, 0, -582, - -582, -582, 0, 0, -582, 0, 0, -582, -582, 0, - -582, -582, -582, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -582, -582, 0, 0, 0, - 0, 0, -582, 0, 0, -582, -582, 0, -582, -582, - 0, -582, 0, -582, -582, -582, 0, -582, -582, -582, - 0, -582, -582, -582, 0, -582, 0, 0, 0, 0, - 0, 0, -584, -584, -584, -584, -584, -584, -584, -584, - -584, 0, 0, 0, 0, -582, -582, -582, -584, -582, - -584, -584, -584, -584, 0, -582, 0, 0, 0, -584, - -584, -584, -584, -584, -584, -584, 0, 0, -584, 0, - 0, 0, 0, 0, 0, 0, 0, -584, -584, -584, - -584, -584, -584, -584, -584, -584, 0, -584, -584, -584, - 0, 0, -584, 0, 0, -584, -584, 0, -584, -584, - -584, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -584, -584, 0, 0, 0, 0, 0, - -584, 828, 0, -584, -584, 0, -584, -584, 0, -584, - 0, -584, -584, -584, 0, -584, -584, -584, 0, -584, - -584, -584, 0, -584, 0, 0, 0, 0, 0, 0, - -107, -585, -585, -585, -585, -585, -585, -585, -585, -585, - 0, 0, 0, -584, -584, -584, 0, -585, 0, -585, - -585, -585, -585, -584, 0, 0, 0, 0, -585, -585, - -585, -585, -585, -585, -585, 0, 0, -585, 0, 0, - 0, 0, 0, 0, 0, 0, -585, -585, -585, -585, - -585, -585, -585, -585, -585, 0, -585, -585, -585, 0, - 0, -585, 0, 0, -585, -585, 0, -585, -585, -585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -585, -585, 0, 0, 0, 0, 0, -585, - 829, 0, -585, -585, 0, -585, -585, 0, -585, 0, - -585, -585, -585, 0, -585, -585, -585, 0, -585, -585, - -585, 0, -585, 0, 0, 0, 0, 0, 0, -109, - -586, -586, -586, -586, -586, -586, -586, -586, -586, 0, - 0, 0, -585, -585, -585, 0, -586, 0, -586, -586, - -586, -586, -585, 0, 0, 0, 0, -586, -586, -586, - -586, -586, -586, -586, 0, 0, -586, 0, 0, 0, - 0, 0, 0, 0, 0, -586, -586, -586, -586, -586, - -586, -586, -586, -586, 0, -586, -586, -586, 0, 0, - -586, 0, 0, -586, -586, 0, -586, -586, -586, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -586, -586, 0, 0, 0, 0, 0, -586, 0, - 0, -586, -586, 0, -586, -586, 0, -586, 0, -586, - -586, -586, 0, -586, -586, -586, 0, -586, -586, -586, - 0, -586, 0, 0, 0, 0, 0, 0, -587, -587, - -587, -587, -587, -587, -587, -587, -587, 0, 0, 0, - 0, -586, -586, -586, -587, 0, -587, -587, -587, -587, - 0, -586, 0, 0, 0, -587, -587, -587, -587, -587, - -587, -587, 0, 0, -587, 0, 0, 0, 0, 0, - 0, 0, 0, -587, -587, -587, -587, -587, -587, -587, - -587, -587, 0, -587, -587, -587, 0, 0, -587, 0, - 0, -587, -587, 0, -587, -587, -587, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -587, - -587, 0, 0, 0, 0, 0, -587, 0, 0, -587, - -587, 0, -587, -587, 0, -587, 0, -587, -587, -587, - 0, -587, -587, -587, 0, -587, -587, -587, 0, -587, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -587, - -587, -587, 0, 0, 0, 0, 0, 0, 0, -587, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 0, 0, 0, 155, 156, 157, - 233, 234, 235, 236, 162, 163, 164, 0, 0, 0, - 0, 0, 165, 166, 167, 237, 238, 239, 240, 172, - 320, 321, 241, 322, 0, 0, 0, 0, 0, 0, - 323, 0, 0, 0, 0, 0, 0, 174, 175, 176, - 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, - 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, - 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 0, 201, 202, 0, 0, 0, 0, 0, 0, - 203, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 0, 0, 0, 155, 156, - 157, 233, 234, 235, 236, 162, 163, 164, 0, 0, - 0, 0, 0, 165, 166, 167, 237, 238, 239, 240, - 172, 320, 321, 241, 322, 0, 0, 0, 0, 0, - 0, 323, 0, 0, 0, 0, 0, 0, 174, 175, - 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, - 0, 0, 0, 0, 184, 185, 186, 187, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, - 190, 0, 0, 0, 0, 485, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 0, 201, 202, 0, 0, 0, 0, 0, - 0, 203, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 0, 0, 0, 155, - 156, 157, 233, 234, 235, 236, 162, 163, 164, 0, - 0, 0, 0, 0, 165, 166, 167, 237, 238, 239, - 240, 172, 0, 0, 241, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, - 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, - 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 189, 190, 0, 0, 0, 242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 0, 201, 202, 0, 0, 0, 0, - 0, 0, 203, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 0, 0, 0, - 155, 156, 157, 233, 234, 235, 236, 162, 163, 164, - 0, 0, 0, 0, 0, 165, 166, 167, 237, 238, - 239, 240, 172, 0, 0, 241, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, - 182, 183, 0, 0, 0, 0, 184, 185, 186, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 0, 201, 202, 0, 0, 0, - 0, 0, 0, 203, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, - 15, 0, 108, 109, 18, 19, 0, 0, 0, 0, - 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 313, 0, 0, 119, 53, 0, 54, 55, - 0, 0, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, 0, 0, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, - 0, 0, 0, 0, 15, 120, 108, 109, 18, 19, - 0, 0, 0, 314, 0, 110, 111, 112, 23, 24, - 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 313, 0, 0, 119, - 53, 0, 54, 55, 0, 0, 0, 0, 0, 57, - 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 0, 0, 0, 0, 0, 0, 15, 120, - 16, 17, 18, 19, 0, 0, 0, 606, 0, 20, - 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, - 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, - 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, - 51, 0, 0, 52, 53, 0, 54, 55, 0, 56, - 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, - 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 0, 0, 0, 65, 66, 67, 15, 0, 16, 17, - 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, - 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, - 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 50, 0, 0, 0, 0, 0, 51, 0, - 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, - 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, 0, 0, 0, 0, 0, 0, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, - 0, 65, 66, 67, 15, 0, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, - 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 32, 33, 260, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, - 53, 0, 54, 55, 0, 261, 0, 262, 263, 57, - 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 0, 0, 65, - 264, 67, 15, 0, 16, 17, 18, 19, 0, 0, - 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, - 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 31, 32, 33, 260, 35, 36, 37, 38, 39, - 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, - 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 507, 0, - 0, 0, 0, 0, 211, 0, 0, 119, 53, 0, - 54, 55, 0, 261, 0, 262, 263, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, - 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 0, 0, 0, 0, 65, 264, 67, - 15, 0, 108, 109, 18, 19, 0, 0, 0, 0, - 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 32, 33, 260, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, - 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, - 0, 718, 0, 262, 263, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, 0, 0, 0, 0, - 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 0, 0, 0, 0, 65, 264, 67, 15, 0, - 108, 109, 18, 19, 0, 0, 0, 0, 0, 110, - 111, 112, 23, 24, 25, 26, 0, 0, 113, 0, - 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, - 260, 35, 36, 37, 38, 39, 0, 40, 41, 42, - 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 846, 0, 0, 0, 0, 0, - 211, 0, 0, 119, 53, 0, 54, 55, 0, 718, - 0, 262, 263, 57, 0, 58, 59, 60, 0, 61, - 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, - 0, 0, 0, 65, 264, 67, 15, 0, 108, 109, - 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, - 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 32, 33, 260, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 50, 0, 0, 0, 0, 0, 211, 0, - 0, 119, 53, 0, 54, 55, 0, 261, 0, 262, - 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, 0, 0, 0, 0, 0, 0, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, - 0, 65, 264, 67, 15, 0, 108, 109, 18, 19, - 0, 0, 0, 0, 0, 110, 111, 112, 23, 24, - 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 32, 33, 260, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, - 53, 0, 54, 55, 0, 0, 0, 262, 263, 57, - 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 0, 0, 65, - 264, 67, 15, 0, 108, 109, 18, 19, 0, 0, - 0, 0, 0, 110, 111, 112, 23, 24, 25, 26, - 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 31, 32, 33, 260, 35, 36, 37, 38, 39, - 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, - 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, - 0, 0, 0, 0, 211, 0, 0, 119, 53, 0, - 54, 55, 0, 718, 0, 262, 0, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, - 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 0, 0, 0, 0, 65, 264, 67, - 15, 0, 108, 109, 18, 19, 0, 0, 0, 0, - 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 32, 33, 260, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, - 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, - 0, 0, 0, 262, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, 0, 0, 0, 0, - 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 0, 0, 0, 0, 65, 264, 67, 15, 0, - 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, - 21, 22, 23, 24, 25, 26, 0, 0, 113, 0, - 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, - 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, - 211, 0, 0, 119, 53, 0, 54, 55, 0, 600, - 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, - 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, - 0, 0, 0, 65, 264, 67, 15, 0, 108, 109, - 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, - 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 50, 0, 0, 0, 0, 0, 211, 0, - 0, 119, 53, 0, 54, 55, 0, 261, 0, 0, - 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, 0, 0, 0, 0, 0, 0, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, - 0, 65, 264, 67, 15, 0, 108, 109, 18, 19, - 0, 0, 0, 0, 0, 110, 111, 112, 23, 24, - 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, - 53, 0, 54, 55, 0, 600, 0, 0, 0, 57, - 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 0, 0, 65, - 264, 67, 15, 0, 108, 109, 18, 19, 0, 0, - 0, 0, 0, 110, 111, 112, 23, 24, 25, 26, - 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, - 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, - 0, 0, 0, 0, 211, 0, 0, 119, 53, 0, - 54, 55, 0, 891, 0, 0, 0, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, - 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 0, 0, 0, 0, 65, 264, 67, - 15, 0, 108, 109, 18, 19, 0, 0, 0, 0, - 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, - 0, 0, 211, 0, 0, 119, 53, 0, 54, 55, - 0, 718, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, 0, 0, 0, 0, - 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 0, 0, 0, 0, 65, 264, 67, 15, 0, - 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, - 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, - 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, - 211, 0, 0, 119, 53, 0, 54, 55, 0, 0, - 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, - 62, 63, 0, 64, 0, 0, 0, 0, 0, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, - 0, 0, 0, 65, 66, 67, 15, 0, 108, 109, - 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, - 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 50, 0, 0, 0, 0, 0, 211, 0, - 0, 119, 53, 0, 54, 55, 0, 0, 0, 0, - 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, 0, 0, 0, 0, 0, 0, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, - 0, 65, 264, 67, 15, 0, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, - 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 50, 0, 0, 0, 0, 0, 211, 0, 0, 119, - 53, 0, 54, 55, 0, 0, 0, 0, 0, 57, - 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 0, 0, 65, - 264, 67, 15, 0, 108, 109, 18, 19, 0, 0, - 0, 0, 0, 110, 111, 112, 23, 24, 25, 26, - 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 31, 32, 33, 114, 35, 36, 37, 115, 39, - 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, - 45, 0, 116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 0, 0, 118, 0, 0, 119, 53, 0, - 54, 55, 0, 0, 0, 0, 0, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, - 0, 0, 0, 0, 0, 0, 15, 120, 108, 109, - 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, - 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 225, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 226, 0, - 0, 52, 53, 0, 54, 55, 0, 56, 0, 0, - 0, 57, 0, 58, 59, 60, 0, 61, 62, 63, - 0, 64, 0, 0, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, - 15, 120, 108, 109, 18, 19, 0, 0, 0, 0, - 0, 110, 111, 112, 23, 24, 25, 26, 0, 0, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 313, 0, 0, 398, 53, 0, 54, 55, - 0, 399, 0, 0, 0, 57, 0, 58, 59, 60, - 0, 61, 62, 63, 0, 64, 0, 0, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, - 0, 0, 0, 0, 15, 120, 108, 109, 18, 19, - 0, 0, 0, 0, 0, 110, 111, 112, 23, 24, - 25, 26, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 32, 33, 114, 35, 36, 37, - 115, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 0, 0, 119, - 53, 0, 54, 55, 0, 0, 0, 0, 0, 57, - 0, 58, 59, 60, 0, 61, 62, 63, 0, 64, - 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 0, 0, 0, 0, 0, 0, 0, 15, 120, - 108, 109, 18, 19, 0, 0, 0, 0, 0, 110, - 111, 112, 23, 24, 25, 26, 0, 0, 113, 0, - 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, - 0, 0, 43, 0, 0, 44, 45, 0, 116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 313, 0, 0, 398, 53, 0, 54, 55, 0, 0, - 0, 0, 0, 57, 0, 58, 59, 60, 0, 61, - 62, 63, 0, 64, 0, 0, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, - 0, 0, 15, 120, 108, 109, 18, 19, 0, 0, - 0, 0, 0, 110, 111, 112, 23, 24, 25, 26, - 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, - 45, 0, 116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 958, 0, 0, 119, 53, 0, - 54, 55, 0, 0, 0, 0, 0, 57, 0, 58, - 59, 60, 0, 61, 62, 63, 0, 64, 0, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, - 0, 0, 0, 0, 0, 0, 15, 120, 108, 109, - 18, 19, 0, 0, 0, 0, 0, 110, 111, 112, - 23, 24, 25, 26, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 225, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 981, 0, - 0, 119, 53, 0, 54, 55, 0, 0, 654, 655, - 0, 57, 656, 58, 59, 60, 0, 61, 62, 63, - 0, 64, 0, 0, 0, 0, 0, 174, 175, 176, - 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, - 0, 120, 0, 184, 185, 186, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 0, 201, 202, 675, 646, 0, 0, 676, 0, - 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, - 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, - 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, - 660, 655, 0, 0, 661, 0, 203, 275, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, - 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, - 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 0, 201, 202, 692, 646, 0, 0, - 693, 0, 203, 275, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, - 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, - 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, - 201, 202, 695, 655, 0, 0, 696, 0, 203, 275, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, - 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 0, 201, 202, 702, 646, - 0, 0, 703, 0, 203, 275, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, - 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, - 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 0, 201, 202, 705, 655, 0, 0, 706, 0, - 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, - 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, - 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, - 741, 646, 0, 0, 742, 0, 203, 275, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, - 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, - 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 0, 201, 202, 744, 655, 0, 0, - 745, 0, 203, 275, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, - 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, - 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, - 201, 202, 896, 646, 0, 0, 897, 0, 203, 275, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, - 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 0, 201, 202, 899, 655, - 0, 0, 900, 0, 203, 275, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, - 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, - 0, 0, 0, 184, 185, 186, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 189, 190, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 0, 201, 202, 1040, 646, 0, 0, 1041, 0, - 203, 275, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 174, 175, 176, 177, 178, 179, 180, - 181, 0, 0, 182, 183, 0, 0, 0, 0, 184, - 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 189, 190, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 0, 201, 202, - 1052, 646, 0, 0, 1053, 0, 203, 275, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, - 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, - 183, 0, 0, 0, 0, 184, 185, 186, 187, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 0, 201, 202, 1055, 655, 0, 0, - 1056, 0, 203, 275, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 175, 176, 177, 178, - 179, 180, 181, 0, 0, 182, 183, 0, 0, 0, - 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 188, 189, 190, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 0, - 201, 202, 660, 655, 0, 0, 661, 0, 203, 275, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 174, 175, 176, 177, 178, 179, 180, 181, 0, - 0, 182, 183, 0, 0, 0, 0, 184, 185, 186, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 188, 189, 190, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 0, 201, 202, 0, 0, - 0, 0, 0, 0, 203, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 0, - 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 417, 0, 0, 0, 0, 864, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 418, 0, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 0, 0, 414, 415, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, - 0, 876, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 418, 0, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 0, 0, 414, 415, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 417, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, - 0, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 0, 0, 414, 415, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 418, 0, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 0, 0, 251, 0, 414, - 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 418, 0, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 0, 0, 0, 0, 0, - 0, 0, 0, -277, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 0, 0, 0, 0, - 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 418, 0, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 0, 0, 0, 0, - 0, 0, 0, 0, -278, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 0, 0, 0, - 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 417, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 418, 0, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 0, 0, 0, - 0, 0, 0, 0, 0, -279, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 0, 0, - 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 417, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 418, 0, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 0, 0, - 0, 0, 0, 0, 0, 0, -280, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 0, - 0, 0, 0, 414, 415, 0, 0, 0, 416, 0, - 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 418, 0, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 0, 0, 0, 0, 414, 415, 0, 0, 0, - 499, 0, 0, 0, 0, 0, 0, 0, 417, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, - 0, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 0, 0, 0, 0, 414, 415, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 418, 0, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, -612, -612, 0, 0, 0, 0, 414, - 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428 -}; - -static const yytype_int16 yycheck[] = -{ - 2, 27, 27, 16, 17, 87, 88, 20, 89, 222, - 2, 10, 4, 5, 6, 271, 15, 9, 10, 21, - 377, 13, 82, 15, 16, 17, 7, 14, 20, 314, - 488, 28, 2, 14, 4, 588, 66, 5, 6, 22, - 118, 28, 16, 17, 479, 13, 20, 28, 4, 591, - 7, 331, 54, 55, 431, 16, 17, 15, 307, 20, - 52, 754, 311, 401, 56, 780, 60, 61, 62, 63, - 588, 56, 74, 75, 66, 52, 296, 58, 69, 456, - 54, 55, 16, 17, 686, 16, 20, 502, 56, 75, - 82, 506, 25, 54, 544, 697, 473, 663, 664, 75, - 494, 58, 21, 22, 941, 482, 29, 506, 26, 111, - 26, 69, 25, 319, 82, 103, 25, 966, 57, 25, - 54, 55, 105, 25, 0, 117, 92, 119, 25, 25, - 16, 17, 25, 57, 20, 588, 218, 536, 591, 90, - 128, 594, 79, 799, 58, 59, 122, 229, 90, 805, - 90, 372, 37, 38, 52, 121, 606, 91, 269, 121, - 271, 55, 90, 369, 659, 105, 18, 662, 20, 546, - 9, 10, 393, 90, 332, 138, 15, 335, 398, 337, - 142, 339, 121, 341, 115, 680, 105, 118, 119, 126, - 113, 121, 111, 112, 1043, 306, 147, 1034, 51, 123, - 53, 54, 55, 56, 28, 147, 759, 147, 290, 142, - 129, 213, 214, 142, 494, 146, 69, 148, 210, 147, - 138, 119, 138, 90, 223, 224, 144, 213, 214, 142, - 147, 223, 224, 142, 316, 144, 142, 458, 214, 121, - 142, 759, 144, 92, 810, 142, 142, 92, 963, 142, - 92, 966, 90, 946, 314, 511, 429, 92, 142, 544, - 433, 242, 275, 436, 148, 16, 279, 269, 125, 271, - 441, 442, 121, 275, 554, 144, 121, 90, 117, 121, - 147, 144, 90, 275, 457, 242, 90, 279, 55, 142, - 121, 283, 284, 215, 252, 92, 288, 105, 90, 472, - 222, 474, 55, 295, 296, 279, 759, 298, 861, 147, - 483, 303, 727, 728, 275, 306, 307, 870, 279, 296, - 311, 606, 314, 717, 866, 295, 58, 59, 1043, 728, - 324, 90, 140, 303, 147, 937, 144, 259, 788, 147, - 298, 275, 548, 147, 144, 279, 314, 685, 148, 522, - 349, 350, 351, 352, 25, 147, 348, 349, 350, 351, - 352, 353, 354, 355, 115, 51, 396, 118, 119, 55, - 142, 401, 20, 375, 547, 377, 92, 455, 348, 142, - 372, 57, 401, 353, 223, 224, 801, 101, 147, 138, - 288, 142, 348, 279, 552, 146, 51, 148, 296, 510, - 511, 393, 837, 92, 396, 121, 398, 399, 765, 401, - 963, 441, 442, 866, 399, 868, 793, 870, 431, 872, - 145, 398, 441, 442, 121, 60, 348, 139, 63, 431, - 92, 399, 121, 141, 714, 396, 55, 717, 142, 431, - 401, 92, 101, 456, 283, 284, 101, 102, 103, 441, - 442, 101, 433, 674, 456, 436, 101, 379, 121, 121, - 473, 121, 464, 142, 456, 721, 458, 459, 51, 482, - 121, 473, 107, 128, 500, 500, 457, 469, 92, 937, - 482, 473, 542, 1036, 544, 477, 131, 132, 133, 738, - 482, 142, 603, 474, 1047, 487, 142, 431, 588, 712, - 398, 591, 483, 788, 17, 18, 92, 121, 510, 511, - 349, 350, 351, 352, 433, 354, 355, 519, 92, 878, - 879, 518, 456, 51, 939, 882, 883, 519, 502, 142, - 491, 518, 26, 546, 616, 121, 528, 518, 457, 473, - 939, 522, 653, 142, 546, 142, 606, 121, 482, 519, - 542, 509, 544, 1006, 546, 474, 478, 479, 528, 533, - 781, 553, 51, 843, 483, 578, 547, 90, 502, 16, - 121, 469, 506, 90, 542, 386, 544, 388, 92, 477, - 121, 122, 105, 142, 597, 51, 578, 808, 105, 487, - 99, 847, 15, 92, 13, 121, 90, 599, 16, 533, - 121, 712, 536, 522, 63, 597, 528, 121, 634, 634, - 721, 105, 546, 535, 606, 15, 145, 140, 145, 792, - 459, 794, 121, 140, 147, 796, 142, 2, 547, 4, - 147, 802, 803, 854, 9, 10, 92, 139, 606, 142, - 15, 16, 17, 142, 138, 20, 140, 15, 44, 369, - 144, 653, 1029, 147, 142, 553, 92, 659, 1015, 15, - 662, 663, 664, 121, 141, 121, 27, 650, 115, 759, - 141, 118, 119, 15, 673, 18, 659, 52, 680, 662, - 92, 673, 674, 685, 686, 121, 142, 141, 690, 90, - 780, 66, 581, 581, 139, 697, 585, 141, 919, 146, - 15, 148, 683, 141, 105, 92, 142, 139, 707, 121, - 923, 708, 139, 148, 142, 707, 929, 44, 90, 721, - 746, 708, 57, 44, 685, 806, 683, 708, 788, 142, - 142, 650, 142, 105, 121, 142, 847, 908, 142, 140, - 659, 15, 117, 662, 119, 93, 147, 738, 115, 90, - 672, 118, 119, 727, 115, 142, 14, 118, 119, 678, - 790, 680, 15, 765, 105, 15, 796, 797, 140, 145, - 15, 790, 802, 803, 15, 147, 866, 796, 145, 146, - 793, 148, 26, 802, 803, 146, 146, 148, 142, 781, - 712, 793, 142, 727, 728, 142, 788, 789, 790, 140, - 15, 793, 142, 142, 796, 797, 147, 141, 810, 139, - 802, 803, 15, 794, 15, 139, 808, 809, 820, 789, - 788, 823, 90, 142, 126, 300, 825, 801, 61, 304, - 822, 64, 65, 825, 673, 210, 115, 105, 126, 118, - 119, 55, 834, 835, 139, 847, 90, 15, 223, 224, - 842, 55, 878, 879, 574, 142, 142, 1030, 142, 793, - 142, 105, 854, 855, 142, 142, 115, 801, 707, 118, - 119, 591, 140, 963, 594, 794, 966, 144, 908, 147, - 882, 883, 16, 116, 117, 15, 141, 144, 880, 908, - 812, 780, 780, 885, 138, 142, 140, 146, 519, 148, - 275, 983, 13, 147, 279, 441, 442, 6, 283, 284, - 1032, 809, 880, 288, 780, 837, 908, 885, 1034, 1031, - 295, 296, 37, 38, 822, 254, 918, 919, 303, 115, - 922, 7, 118, 119, 926, 937, 834, 835, 581, 475, - 476, 90, 807, 780, 842, 51, 960, 53, 54, 55, - 56, 963, 90, 1043, 922, -1, 105, 855, 769, 770, - 771, 270, 773, 69, 775, -1, -1, 105, -1, -1, - 996, 996, -1, 348, 349, 350, 351, 352, 353, 354, - 355, 115, -1, -1, 118, 119, 825, 523, 887, 888, - -1, 140, -1, -1, 986, 90, 988, 372, 147, 991, - 115, 923, 140, 118, 119, 939, -1, 929, -1, 147, - 105, -1, 146, 1015, 148, -1, 1029, -1, 393, 90, - 918, 396, -1, 398, -1, -1, 401, 1029, 926, 1031, - 1032, 146, 507, 148, 105, -1, 142, 1029, -1, 514, - -1, -1, 90, -1, -1, 140, 90, 90, -1, 1030, - 525, 62, 147, 64, 65, -1, 431, 105, 90, -1, - 780, 105, 105, -1, 963, -1, 441, 442, -1, 140, - 26, 960, 960, 105, 963, 963, 147, 966, 966, 968, - 968, 456, 61, 458, 459, 64, 65, -1, 986, -1, - 988, -1, 140, 991, 469, 1029, 140, 140, 473, 147, - 575, 576, 477, 147, 147, 116, 117, 482, 140, -1, - -1, 1030, 487, -1, 62, 147, 64, 65, -1, -1, - 1019, 1020, 1021, 960, 1023, 1024, 963, 1016, 1016, 966, - 605, 968, -1, -1, 90, 26, -1, 116, 117, 950, - 951, 952, 953, -1, 519, -1, 866, -1, 868, 105, - -1, -1, 872, 528, 1043, 1043, 1045, 1045, 1047, 1047, - 1049, 1049, -1, -1, 1063, 1064, 1065, 1066, 116, 117, - -1, 546, 115, -1, 1073, 118, 119, -1, 553, 1016, - 1069, 1069, 138, -1, 140, -1, -1, -1, 144, -1, - -1, 147, -1, 26, 26, -1, -1, -1, -1, 90, - -1, -1, -1, 578, -1, 148, 1043, 682, 1045, -1, - 1047, -1, 1049, -1, 105, -1, 51, -1, 53, 54, - 55, 56, 597, -1, 944, 945, -1, -1, 1039, -1, - 9, 10, 1069, -1, 69, -1, 15, 16, 17, -1, - -1, 20, -1, -1, -1, -1, 966, 138, 968, 140, - 63, 64, 65, 144, -1, -1, 147, 90, 90, 94, - 796, 797, 737, -1, -1, 100, 802, 803, 47, 48, - 49, 50, 105, 105, -1, 54, 55, 63, 64, 65, - 755, -1, -1, 1003, -1, -1, 1006, 66, 67, -1, - -1, -1, 828, 829, -1, 831, 832, -1, 673, 674, - 63, 64, 65, 116, 117, 138, 138, 140, 140, -1, - -1, 144, 144, -1, 147, 147, -1, 51, 1038, 53, - 54, 55, 56, 1043, -1, 1045, -1, -1, -1, 1049, - 116, 117, 707, 101, -1, 69, -1, -1, 117, 51, - -1, 53, 54, 55, 56, 63, 64, 65, -1, 1069, - 63, 64, 65, 116, 117, -1, -1, 69, -1, -1, - 94, 129, 130, 131, 132, 133, 100, 101, 102, 103, - -1, 846, 908, -1, -1, 2, -1, 4, 5, 6, - -1, -1, 94, 63, 64, 65, 13, 862, 100, 101, - 102, 103, -1, -1, 128, 931, -1, 131, 116, 117, - 63, 64, 65, 116, 117, -1, 781, -1, -1, 121, - 144, 63, 64, 65, 789, 790, 128, -1, 793, 131, - -1, 796, 797, -1, -1, 52, -1, 802, 803, 56, - -1, -1, 144, 808, 809, -1, 116, 117, 51, -1, - 53, 54, 55, 56, 223, 224, -1, 822, -1, -1, - 825, -1, -1, 116, 117, 82, 69, -1, -1, 834, - 835, -1, -1, -1, 116, 117, 115, 842, -1, 118, - 119, -1, -1, 51, -1, 53, 54, 55, 56, 854, - 855, 94, 261, 262, 263, 264, -1, 100, 101, 102, - 103, 69, 119, 142, -1, -1, 275, 146, -1, 148, - 279, -1, -1, -1, 283, 284, -1, -1, -1, 51, - -1, 53, 54, 55, 56, 128, 94, -1, 131, -1, - -1, -1, 100, 101, 102, 103, -1, 69, -1, -1, - -1, 144, -1, 908, -1, -1, 51, -1, 53, 54, - 55, 56, -1, 918, 919, 40, 41, 42, 43, 44, - 128, 926, 94, 131, 69, 88, 89, -1, 100, 101, - 102, 103, -1, -1, 142, 88, 89, -1, 101, -1, - 349, 350, 351, 352, -1, 354, 355, -1, 101, 94, - -1, -1, -1, 210, -1, 100, 128, -1, -1, 131, - -1, -1, -1, -1, 373, 128, 129, 130, 131, 132, - 133, -1, -1, -1, -1, 384, 129, 130, 131, 132, - 133, 986, -1, 988, -1, -1, 991, 396, -1, -1, - -1, -1, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, -1, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - -1, -1, 431, -1, 1029, 51, -1, 53, 54, 55, - 56, 288, 441, 442, -1, -1, -1, -1, 295, 296, - -1, -1, -1, 69, -1, -1, 303, 456, -1, -1, - 459, 51, -1, 53, 54, 55, 56, 314, -1, 85, - -1, -1, 471, -1, 473, -1, 475, 476, 94, 69, - -1, -1, -1, 482, 100, 101, 102, 103, -1, -1, - -1, -1, 491, -1, -1, -1, 495, -1, -1, -1, - 499, 348, -1, 502, 94, 504, 353, 506, 507, -1, - -1, -1, 128, -1, 51, 131, 53, 54, 55, 56, - -1, -1, -1, -1, 523, 372, -1, 2, -1, 4, - 5, 6, 69, -1, 533, -1, -1, 536, 13, 51, - -1, 53, 54, 55, 56, -1, 393, 546, -1, -1, - -1, 398, 399, -1, 401, -1, -1, 69, -1, -1, - -1, -1, -1, 562, 563, -1, -1, -1, -1, -1, - -1, -1, -1, 85, -1, -1, -1, 52, -1, 578, - -1, 56, 94, -1, -1, -1, -1, -1, 100, 101, - 102, 103, -1, -1, 441, 442, -1, -1, 597, -1, - 51, 600, 53, 54, 55, 56, -1, 82, -1, -1, - -1, 458, -1, -1, -1, -1, 128, -1, 69, 131, - 88, 89, 469, -1, -1, -1, -1, -1, -1, -1, - 477, -1, -1, 101, -1, -1, -1, -1, -1, -1, - 487, -1, -1, 94, 119, -1, -1, -1, -1, -1, - 101, 102, 103, -1, -1, -1, -1, -1, 126, 127, - 128, 129, 130, 131, 132, 133, -1, -1, -1, -1, - -1, -1, 519, -1, 673, -1, -1, 128, -1, -1, - -1, 528, -1, -1, -1, -1, 685, -1, -1, 688, - 689, -1, -1, -1, -1, 542, -1, 544, -1, -1, - -1, -1, -1, -1, -1, -1, 553, -1, 707, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 718, - -1, -1, -1, -1, -1, -1, -1, -1, 727, 728, - -1, -1, -1, -1, -1, 210, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 606, - -1, -1, -1, -1, -1, 2, -1, 4, 5, 6, - -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 785, -1, -1, -1, - -1, 790, 791, -1, 793, -1, -1, 796, 797, -1, - -1, -1, 801, 802, 803, -1, -1, -1, -1, -1, - -1, -1, -1, 288, -1, 52, -1, -1, -1, 56, - 295, 296, -1, -1, -1, -1, 825, 674, 303, 828, - 829, -1, 831, 832, -1, -1, -1, -1, -1, 314, - -1, -1, 841, -1, -1, 82, -1, 846, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 863, 864, -1, -1, -1, -1, - -1, -1, -1, 348, -1, -1, 875, 876, 353, -1, - -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 891, -1, -1, -1, -1, 372, -1, -1, - -1, -1, 901, 902, -1, -1, -1, -1, -1, 908, - -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, - -1, -1, -1, 398, 399, -1, 401, -1, -1, -1, - -1, -1, 931, -1, 781, -1, -1, -1, -1, -1, - 939, 788, 789, 790, -1, -1, -1, -1, -1, 796, - -1, -1, -1, -1, -1, 802, 803, -1, -1, -1, - -1, 808, 809, -1, -1, -1, 441, 442, -1, -1, - -1, -1, -1, 210, -1, 822, -1, -1, -1, -1, - -1, -1, -1, 458, -1, -1, -1, 834, 835, -1, - -1, -1, -1, -1, 469, 842, -1, -1, -1, -1, - -1, -1, 477, -1, -1, -1, -1, 854, 855, -1, - -1, -1, 487, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1029, -1, -1, 880, -1, -1, -1, -1, 885, -1, - -1, -1, -1, 2, 519, 4, -1, -1, -1, -1, - -1, 288, -1, 528, 13, -1, -1, -1, 295, 296, - -1, 908, -1, -1, -1, -1, 303, 542, -1, 544, - -1, 918, 919, -1, -1, 922, -1, 314, 553, 926, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 0, 348, -1, -1, -1, -1, 353, -1, -1, -1, - -1, -1, -1, 13, 14, 15, 16, 17, 18, -1, - 20, 606, -1, -1, -1, 372, 26, 27, -1, 986, - -1, 988, -1, -1, 991, -1, -1, 37, 38, -1, - 40, 41, 42, 43, 44, -1, 393, -1, -1, -1, - 119, 398, 399, -1, 401, -1, 2, -1, 4, 5, - 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 674, - 90, -1, -1, -1, 441, 442, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 105, 52, -1, -1, -1, - 56, 458, -1, -1, -1, 115, -1, -1, 118, 119, - -1, -1, 469, -1, -1, -1, -1, -1, -1, -1, - 477, -1, -1, -1, -1, -1, 82, -1, 138, 139, - 487, 210, -1, -1, 144, 145, 146, 147, 148, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 519, 119, -1, -1, -1, -1, -1, -1, - -1, 528, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 542, 781, 544, -1, -1, - -1, -1, -1, 788, 789, 790, 553, -1, -1, -1, - -1, 796, -1, -1, -1, -1, -1, 802, 803, 288, - -1, -1, -1, 808, 809, -1, 295, 296, -1, -1, - -1, -1, -1, -1, 303, -1, -1, 822, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 834, - 835, -1, -1, -1, -1, -1, -1, 842, -1, 606, - -1, -1, -1, -1, 210, -1, -1, -1, -1, 854, - 855, -1, -1, -1, -1, -1, -1, -1, -1, 348, - -1, -1, -1, -1, 353, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 880, -1, -1, -1, -1, - 885, -1, -1, 372, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2, -1, 4, 908, 393, -1, -1, 674, -1, 398, - -1, -1, 401, 918, 919, -1, -1, 922, -1, -1, - -1, 926, 288, -1, -1, -1, -1, -1, -1, 295, - 296, -1, -1, -1, -1, -1, -1, 303, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, - 52, -1, 441, 442, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 458, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 469, 986, 348, 988, -1, -1, 991, 353, 477, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 487, 80, - 81, -1, -1, -1, -1, -1, 372, 88, 89, -1, - -1, -1, -1, -1, 781, -1, -1, 119, -1, -1, - 101, 788, 789, 790, -1, -1, -1, 393, -1, 796, - 519, -1, 398, 399, -1, 802, 803, -1, -1, 528, - -1, 808, 809, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, -1, 822, -1, -1, -1, -1, - -1, -1, -1, -1, 553, -1, -1, 834, 835, -1, - -1, -1, -1, -1, -1, 842, -1, 72, 73, 74, - 75, 76, 77, -1, -1, 80, 81, 854, 855, -1, - -1, -1, 458, 88, 89, -1, -1, -1, -1, -1, - -1, -1, -1, 469, -1, -1, 101, -1, 210, -1, - -1, 477, -1, 880, -1, -1, -1, -1, 885, -1, - -1, 487, -1, -1, -1, -1, -1, -1, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - -1, 908, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 918, 919, 519, -1, 922, -1, -1, -1, 926, - -1, -1, 528, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 542, -1, 544, -1, - -1, -1, -1, -1, -1, 674, 288, 553, -1, -1, - -1, -1, -1, 295, 296, -1, -1, 44, -1, -1, - -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 986, - -1, 988, -1, -1, 991, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, - 606, 88, 89, -1, -1, -1, 348, -1, -1, -1, - -1, 353, -1, -1, 101, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 372, -1, -1, -1, -1, 122, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, -1, -1, -1, - -1, 393, 781, -1, -1, 142, 398, -1, -1, 401, - 789, 790, -1, -1, -1, -1, -1, 796, 674, -1, - -1, -1, -1, 802, 803, -1, -1, -1, -1, 808, - 809, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 822, -1, -1, -1, -1, -1, 441, - 442, -1, -1, -1, -1, 834, 835, -1, -1, -1, - -1, -1, -1, 842, -1, -1, 458, -1, -1, -1, - -1, -1, -1, -1, -1, 854, 855, 469, -1, -1, - -1, -1, -1, -1, -1, 477, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 487, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 781, -1, 519, -1, 908, - -1, -1, 788, 789, -1, -1, 528, -1, -1, 918, - 919, -1, -1, 922, -1, -1, -1, 926, -1, -1, - -1, -1, 808, 809, -1, -1, -1, -1, -1, -1, - -1, 553, -1, -1, -1, -1, 822, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 834, 835, - -1, -1, -1, -1, -1, -1, 842, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 854, 855, - -1, -1, -1, -1, -1, -1, -1, 986, -1, 988, - -1, -1, 991, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 880, -1, -1, -1, -1, 885, - -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 13, 14, - 15, -1, 17, 18, -1, 20, -1, -1, -1, -1, - -1, 26, 918, 919, -1, -1, 922, -1, -1, -1, - 926, -1, 37, 38, -1, 40, 41, 42, 43, 44, - -1, -1, 674, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, - -1, -1, -1, 88, 89, 90, -1, 92, 93, -1, - 986, -1, 988, -1, -1, 991, 101, -1, -1, -1, - 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 115, -1, -1, 118, 119, -1, 121, 122, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - -1, -1, -1, 138, 139, 140, -1, 142, -1, -1, - 145, 146, 147, 148, -1, -1, -1, -1, -1, 781, - -1, -1, -1, -1, -1, -1, -1, 789, 790, -1, - -1, -1, 51, 52, 796, -1, 55, -1, -1, -1, - 802, 803, -1, -1, -1, -1, 808, 809, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, - 822, 80, 81, -1, -1, -1, -1, 86, 87, 88, - 89, -1, 834, 835, -1, -1, -1, -1, -1, -1, - 842, 100, 101, 102, -1, -1, -1, -1, -1, -1, - -1, -1, 854, 855, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, 135, 136, 72, 73, - 74, 75, 76, 77, 143, 144, 80, 81, -1, -1, - -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 908, 101, -1, -1, - -1, -1, -1, -1, -1, -1, 918, 919, -1, -1, - -1, -1, -1, -1, 926, -1, -1, -1, -1, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - -1, -1, -1, -1, -1, -1, 0, 1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, -1, -1, -1, -1, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, 986, 39, 988, -1, -1, 991, - -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, 100, -1, -1, -1, - 104, -1, 106, 107, 108, -1, 110, 111, 112, 0, - 114, 115, -1, -1, 118, 119, -1, -1, -1, -1, - -1, -1, 13, 14, 15, 16, 17, 18, -1, 20, - 134, 135, 136, -1, -1, -1, 27, 28, 29, -1, - -1, -1, 146, -1, 148, -1, 37, 38, -1, 40, - 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 57, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, -1, -1, -1, -1, 88, 89, 90, - -1, -1, 93, -1, -1, -1, -1, -1, 99, -1, - 101, -1, -1, -1, 105, -1, -1, -1, -1, -1, - -1, -1, 113, -1, 115, -1, -1, 118, 119, -1, - -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, -1, 0, -1, -1, 139, 140, - 141, 142, -1, -1, 145, 146, 147, 148, 13, 14, - 15, 16, 17, 18, -1, 20, -1, -1, -1, -1, - -1, 26, 27, 28, -1, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - -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, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, - -1, -1, -1, 88, 89, 90, -1, -1, 93, -1, - -1, -1, -1, -1, 99, -1, 101, -1, -1, -1, - 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 115, -1, -1, 118, 119, -1, -1, 122, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - -1, 0, -1, 138, 139, 140, 141, 142, -1, 144, - 145, 146, 147, 148, 13, 14, 15, 16, 17, 18, - -1, 20, -1, -1, -1, -1, -1, -1, 27, 28, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, - 89, 90, -1, 92, 93, -1, -1, -1, -1, -1, - 99, -1, 101, -1, -1, -1, 105, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 115, -1, -1, 118, - 119, -1, 121, 122, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, -1, 0, -1, -1, - 139, 140, 141, 142, -1, -1, 145, 146, 147, 148, - 13, 14, 15, 16, 17, 18, -1, 20, -1, -1, - -1, -1, -1, 26, 27, 28, -1, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, -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, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, -1, -1, -1, -1, 88, 89, 90, -1, -1, - 93, -1, -1, -1, -1, -1, 99, -1, 101, -1, - -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 115, -1, -1, 118, 119, -1, -1, 122, - -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, -1, -1, 0, -1, 138, 139, 140, 141, 142, - -1, 144, 145, 146, 147, 148, 13, 14, 15, 16, - 17, 18, -1, 20, -1, -1, -1, -1, -1, -1, - 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, -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, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, - -1, 88, 89, 90, -1, -1, 93, -1, -1, -1, - -1, -1, 99, -1, 101, -1, -1, -1, 105, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 115, -1, - -1, 118, 119, -1, -1, 122, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, -1, -1, 0, - -1, -1, 139, 140, 141, 142, -1, 144, 145, 146, - 147, 148, 13, 14, 15, -1, 17, 18, -1, 20, - -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, -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, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, -1, -1, -1, -1, 88, 89, 90, - -1, 92, 93, -1, -1, -1, -1, -1, -1, -1, - 101, -1, -1, -1, 105, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 115, -1, -1, 118, 119, -1, - 121, 122, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, -1, 0, -1, 138, 139, 140, - -1, 142, -1, -1, 145, 146, 147, 148, 13, 14, - 15, -1, 17, 18, -1, 20, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - -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, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, - -1, -1, -1, 88, 89, 90, -1, 92, 93, -1, - -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, - 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 115, -1, -1, 118, 119, -1, 121, 122, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - -1, 0, -1, -1, 139, 140, -1, 142, -1, -1, - 145, 146, 147, 148, 13, 14, 15, -1, 17, 18, - -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, -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, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, - 89, 90, -1, 92, 93, -1, -1, -1, -1, -1, - -1, -1, 101, -1, -1, -1, 105, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 115, -1, -1, 118, - 119, -1, 121, 122, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, -1, -1, -1, -1, - 139, 140, -1, 142, -1, -1, 145, 146, 147, 148, - 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, -1, -1, 18, 19, -1, - 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, - -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, 115, -1, -1, 118, 119, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 134, 135, 136, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 146, 1, 148, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - 15, -1, 17, 18, 19, -1, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, 100, -1, -1, -1, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - 115, -1, -1, 118, 119, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, - 135, 136, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 146, 1, 148, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, -1, -1, 15, -1, -1, 18, - 19, 20, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, - 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 134, 135, 136, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 146, 1, 148, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, 15, -1, -1, 18, 19, -1, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, - -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, - -1, 114, 115, -1, -1, 118, 119, 1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, 134, 135, 136, -1, 19, -1, 21, 22, 23, - 24, -1, -1, 146, -1, 148, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 84, 85, -1, -1, -1, -1, -1, 91, -1, -1, - 94, 95, -1, 97, 98, -1, 100, -1, -1, -1, - 104, -1, 106, 107, 108, -1, 110, 111, 112, -1, - 114, 115, -1, -1, 118, 119, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 134, 135, 136, -1, -1, 139, -1, -1, -1, -1, - -1, -1, 146, 1, 148, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, 14, 15, -1, -1, - -1, 19, -1, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, 100, -1, -1, -1, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, - 118, 119, 1, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, -1, -1, 134, 135, 136, -1, - 19, -1, 21, 22, 23, 24, -1, -1, 146, -1, - 148, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, - 119, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, -1, -1, 134, 135, 136, -1, 19, - -1, 21, 22, 23, 24, -1, 145, 146, -1, 148, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, 45, -1, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 84, 85, -1, -1, -1, -1, - -1, 91, -1, -1, 94, 95, -1, 97, 98, -1, - 100, -1, -1, -1, 104, -1, 106, 107, 108, -1, - 110, 111, 112, -1, 114, 115, -1, -1, 118, 119, - 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, -1, -1, 134, 135, 136, -1, 19, -1, - 21, 22, 23, 24, -1, 145, 146, -1, 148, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, - -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, 115, -1, -1, 118, 119, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 134, 135, 136, -1, -1, 139, -1, - -1, -1, -1, -1, -1, 146, 1, 148, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - 15, -1, -1, -1, 19, -1, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, 100, -1, -1, -1, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - 115, -1, -1, 118, 119, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, -1, -1, 134, - 135, 136, -1, 19, -1, 21, 22, 23, 24, -1, - -1, 146, -1, 148, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, - -1, -1, -1, -1, -1, 91, -1, -1, 94, 95, - -1, 97, 98, -1, 100, -1, -1, -1, 104, -1, - 106, 107, 108, -1, 110, 111, 112, -1, 114, 115, - -1, -1, 118, 119, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, -1, -1, 134, 135, - 136, -1, 19, -1, 21, 22, 23, 24, -1, -1, - 146, -1, 148, 30, 31, 32, 33, 34, 35, 36, - -1, -1, 39, -1, -1, -1, -1, -1, 45, -1, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, - 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, - -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, - 97, 98, -1, 100, -1, -1, -1, 104, -1, 106, - 107, 108, -1, 110, 111, 112, -1, 114, 115, -1, - -1, 118, 119, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, 134, 135, 136, - -1, 19, -1, 21, 22, 23, 24, -1, -1, 146, - -1, 148, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 95, -1, 97, - 98, -1, -1, -1, -1, -1, 104, -1, 106, 107, - 108, -1, 110, 111, 112, -1, 114, 115, -1, -1, - 118, 119, -1, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, -1, -1, 134, 135, 136, -1, - 19, -1, 21, 22, 23, 24, -1, -1, 146, -1, - 148, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, -1, -1, -1, -1, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, 115, -1, -1, 118, - 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 134, 135, 136, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 146, -1, 148, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, - -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, - -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, -1, 135, 136, -1, -1, -1, -1, -1, -1, - 143, 144, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, -1, -1, -1, -1, -1, -1, 19, -1, - 21, 22, 23, 24, -1, 26, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, - -1, 102, 103, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 134, 135, 136, -1, 138, -1, -1, - -1, -1, -1, 144, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, - 19, -1, 21, 22, 23, 24, -1, 26, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, 100, -1, 102, 103, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, -1, -1, -1, 134, 135, 136, 19, 138, - 21, 22, 23, 24, -1, 144, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, - 91, 92, -1, 94, 95, -1, 97, 98, -1, 100, - -1, 102, 103, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, - 121, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, 134, 135, 136, -1, 19, -1, 21, - 22, 23, 24, 144, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 84, 85, -1, -1, -1, -1, -1, 91, - 92, -1, 94, 95, -1, 97, 98, -1, 100, -1, - 102, 103, 104, -1, 106, 107, 108, -1, 110, 111, - 112, -1, 114, -1, -1, -1, -1, -1, -1, 121, - 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, - -1, -1, 134, 135, 136, -1, 19, -1, 21, 22, - 23, 24, 144, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, 100, -1, 102, - 103, 104, -1, 106, 107, 108, -1, 110, 111, 112, - -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, - -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, - -1, 144, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, 100, -1, 102, 103, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, - 135, 136, -1, -1, -1, -1, -1, -1, -1, 144, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, - -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, -1, -1, -1, -1, -1, - 63, -1, -1, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, - -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - -1, -1, -1, -1, 107, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, -1, 135, 136, -1, -1, -1, -1, -1, -1, - 143, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, - -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, -1, -1, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, - -1, -1, -1, -1, 86, 87, 88, 89, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, - 102, -1, -1, -1, -1, 107, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, -1, 135, 136, -1, -1, -1, -1, -1, - -1, 143, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, - -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, - 51, 52, -1, -1, 55, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, - 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, - 101, 102, -1, -1, -1, 106, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, 135, 136, -1, -1, -1, -1, - -1, -1, 143, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, - 50, 51, 52, -1, -1, 55, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, - 80, 81, -1, -1, -1, -1, 86, 87, 88, 89, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 100, 101, 102, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, -1, 135, 136, -1, -1, -1, - -1, -1, -1, 143, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, - 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, -1, -1, -1, -1, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, - -1, -1, -1, -1, 19, 134, 21, 22, 23, 24, - -1, -1, -1, 142, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, -1, -1, -1, -1, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, 19, 134, - 21, 22, 23, 24, -1, -1, -1, 142, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, - -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, -1, 134, 135, 136, 19, -1, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, - -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, - -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, - -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, 100, -1, 102, 103, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, -1, -1, -1, 134, - 135, 136, 19, -1, 21, 22, 23, 24, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, - -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, - 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, - -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, - 97, 98, -1, 100, -1, 102, 103, 104, -1, 106, - 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, - -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, -1, -1, -1, 134, 135, 136, - 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, 100, -1, 102, 103, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, -1, -1, -1, 134, 135, 136, 19, -1, - 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, - -1, 102, 103, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, - -1, -1, -1, 134, 135, 136, 19, -1, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, 100, -1, 102, - -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, - -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, - -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, -1, -1, 102, 103, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, -1, -1, -1, 134, - 135, 136, 19, -1, 21, 22, 23, 24, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, - -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, - 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, - -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, - 97, 98, -1, 100, -1, 102, -1, 104, -1, 106, - 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, - -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, -1, -1, -1, 134, 135, 136, - 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, -1, -1, 102, -1, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, -1, -1, -1, 134, 135, 136, 19, -1, - 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, 94, 95, -1, 97, 98, -1, 100, - -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, - -1, -1, -1, 134, 135, 136, 19, -1, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, - -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, - -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, - -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, 100, -1, -1, -1, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, -1, -1, -1, 134, - 135, 136, 19, -1, 21, 22, 23, 24, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, - -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, - 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, - -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, - 97, 98, -1, 100, -1, -1, -1, 104, -1, 106, - 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, - -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, -1, -1, -1, 134, 135, 136, - 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, -1, -1, -1, 134, 135, 136, 19, -1, - 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, -1, -1, -1, -1, -1, - 91, -1, -1, 94, 95, -1, 97, 98, -1, -1, - -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, - -1, -1, -1, 134, 135, 136, 19, -1, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, -1, -1, -1, - -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, - -1, 114, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, - -1, 134, 135, 136, 19, -1, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, -1, -1, -1, -1, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, -1, -1, -1, 134, - 135, 136, 19, -1, 21, 22, 23, 24, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, - -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, - 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 88, -1, -1, 91, -1, -1, 94, 95, -1, - 97, 98, -1, -1, -1, -1, -1, 104, -1, 106, - 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, - -1, -1, -1, -1, -1, -1, 19, 134, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, 100, -1, -1, - -1, 104, -1, 106, 107, 108, -1, 110, 111, 112, - -1, 114, -1, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, - 19, 134, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, -1, -1, 94, 95, -1, 97, 98, - -1, 100, -1, -1, -1, 104, -1, 106, 107, 108, - -1, 110, 111, 112, -1, 114, -1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, - -1, -1, -1, -1, 19, 134, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 91, -1, -1, 94, - 95, -1, 97, 98, -1, -1, -1, -1, -1, 104, - -1, 106, 107, 108, -1, 110, 111, 112, -1, 114, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, -1, -1, -1, -1, -1, -1, 19, 134, - 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 91, -1, -1, 94, 95, -1, 97, 98, -1, -1, - -1, -1, -1, 104, -1, 106, 107, 108, -1, 110, - 111, 112, -1, 114, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, - -1, -1, 19, 134, 21, 22, 23, 24, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, - -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, - -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, - 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 91, -1, -1, 94, 95, -1, - 97, 98, -1, -1, -1, -1, -1, 104, -1, 106, - 107, 108, -1, 110, 111, 112, -1, 114, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, - -1, -1, -1, -1, -1, -1, 19, 134, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, - -1, 94, 95, -1, 97, 98, -1, -1, 51, 52, - -1, 104, 55, 106, 107, 108, -1, 110, 111, 112, - -1, 114, -1, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, - -1, 134, -1, 86, 87, 88, 89, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, -1, 135, 136, 51, 52, -1, -1, 55, -1, - 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, 80, 81, -1, -1, -1, -1, 86, - 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, - 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, - 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, - 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, 135, 136, 51, 52, -1, -1, - 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, 80, 81, -1, -1, -1, - -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - 135, 136, 51, 52, -1, -1, 55, -1, 143, 144, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, - 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, 135, 136, 51, 52, - -1, -1, 55, -1, 143, 144, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, - -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, -1, 135, 136, 51, 52, -1, -1, 55, -1, - 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, 80, 81, -1, -1, -1, -1, 86, - 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, - 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, - 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, - 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, 135, 136, 51, 52, -1, -1, - 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, 80, 81, -1, -1, -1, - -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - 135, 136, 51, 52, -1, -1, 55, -1, 143, 144, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, - 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, 135, 136, 51, 52, - -1, -1, 55, -1, 143, 144, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, - -1, -1, -1, 86, 87, 88, 89, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, -1, 135, 136, 51, 52, -1, -1, 55, -1, - 143, 144, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, 80, 81, -1, -1, -1, -1, 86, - 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 100, 101, 102, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, -1, 135, 136, - 51, 52, -1, -1, 55, -1, 143, 144, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, - 81, -1, -1, -1, -1, 86, 87, 88, 89, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, - 101, 102, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, -1, 135, 136, 51, 52, -1, -1, - 55, -1, 143, 144, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, 80, 81, -1, -1, -1, - -1, 86, 87, 88, 89, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 100, 101, 102, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, -1, - 135, 136, 51, 52, -1, -1, 55, -1, 143, 144, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, 80, 81, -1, -1, -1, -1, 86, 87, 88, - 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 100, 101, 102, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, 135, 136, -1, -1, - -1, -1, -1, -1, 143, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, - -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 101, -1, -1, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 122, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, - -1, -1, -1, 88, 89, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 122, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, - -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, -1, -1, -1, -1, 88, 89, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 122, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, -1, -1, 148, -1, 88, - 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 122, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, -1, -1, -1, -1, -1, - -1, -1, -1, 142, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, -1, -1, -1, -1, - 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 122, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, -1, -1, -1, -1, - -1, -1, -1, -1, 142, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, - -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 101, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 122, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, -1, -1, -1, - -1, -1, -1, -1, -1, 142, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, - -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 101, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 122, -1, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, -1, -1, - -1, -1, -1, -1, -1, -1, 142, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, - -1, -1, -1, 88, 89, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 122, -1, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, -1, -1, -1, -1, 88, 89, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, 101, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, - -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, -1, -1, -1, -1, 88, 89, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 122, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, -1, -1, -1, -1, 88, - 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_int16 yystos[] = -{ - 0, 150, 151, 0, 1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 19, 21, 22, 23, 24, - 30, 31, 32, 33, 34, 35, 36, 39, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 58, 59, 60, 63, 66, 67, 69, 70, 71, 84, - 85, 91, 94, 95, 97, 98, 100, 104, 106, 107, - 108, 110, 111, 112, 114, 134, 135, 136, 152, 153, - 154, 159, 161, 163, 164, 165, 168, 169, 172, 173, - 175, 176, 177, 179, 180, 189, 203, 220, 241, 242, - 252, 253, 254, 258, 259, 260, 266, 267, 268, 270, - 271, 272, 273, 274, 275, 312, 325, 154, 21, 22, - 30, 31, 32, 39, 51, 55, 69, 88, 91, 94, - 134, 164, 165, 181, 182, 203, 220, 272, 275, 312, - 182, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 45, 46, 47, 48, 49, - 50, 51, 52, 55, 70, 71, 72, 73, 74, 75, - 76, 77, 80, 81, 86, 87, 88, 89, 100, 101, - 102, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 135, 136, 143, 144, 183, 187, 188, 274, 306, - 204, 91, 163, 164, 165, 167, 180, 189, 220, 272, - 273, 275, 167, 210, 212, 69, 91, 173, 180, 220, - 225, 272, 275, 33, 34, 35, 36, 48, 49, 50, - 51, 55, 106, 183, 184, 185, 268, 115, 118, 119, - 146, 148, 167, 262, 263, 264, 318, 322, 323, 324, - 51, 100, 102, 103, 135, 172, 189, 195, 198, 201, - 254, 309, 311, 195, 195, 144, 192, 193, 196, 197, - 325, 192, 196, 144, 319, 323, 184, 155, 138, 189, - 220, 189, 189, 189, 55, 1, 94, 157, 158, 159, - 174, 175, 325, 205, 207, 190, 201, 309, 325, 189, - 308, 309, 325, 91, 142, 179, 220, 272, 275, 208, - 53, 54, 56, 63, 107, 183, 269, 63, 64, 65, - 116, 117, 255, 256, 61, 255, 62, 255, 63, 255, - 63, 255, 58, 59, 168, 189, 189, 318, 324, 40, - 41, 42, 43, 44, 37, 38, 51, 53, 54, 55, - 56, 69, 94, 100, 101, 102, 103, 128, 131, 144, - 278, 279, 280, 281, 282, 285, 286, 287, 288, 290, - 291, 292, 293, 295, 296, 297, 300, 301, 302, 303, - 304, 325, 278, 280, 28, 239, 121, 142, 94, 100, - 176, 121, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 88, 89, 93, 101, 122, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 90, - 105, 140, 147, 316, 90, 316, 317, 26, 138, 243, - 254, 92, 92, 192, 196, 243, 163, 51, 55, 181, - 58, 59, 279, 125, 276, 90, 140, 316, 219, 307, - 90, 147, 315, 156, 157, 55, 278, 278, 16, 221, - 322, 121, 90, 140, 316, 92, 92, 221, 167, 167, - 55, 90, 140, 316, 25, 107, 142, 265, 318, 115, - 264, 20, 246, 322, 57, 310, 189, 189, 189, 93, - 142, 199, 200, 325, 310, 199, 200, 85, 194, 195, - 201, 309, 325, 195, 163, 318, 320, 163, 160, 138, - 157, 90, 316, 92, 159, 174, 145, 318, 324, 320, - 159, 320, 141, 200, 321, 324, 200, 321, 139, 321, - 55, 176, 177, 178, 142, 90, 140, 316, 144, 237, - 290, 63, 255, 257, 261, 262, 63, 256, 61, 62, - 63, 63, 101, 101, 154, 167, 167, 167, 167, 159, - 163, 163, 57, 121, 294, 85, 290, 295, 121, 156, - 189, 142, 305, 325, 51, 142, 305, 322, 142, 289, - 189, 142, 289, 51, 142, 289, 51, 121, 156, 240, - 100, 168, 189, 201, 202, 174, 142, 179, 142, 161, - 162, 168, 180, 189, 191, 202, 220, 275, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 51, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 51, 52, 55, 187, 192, - 313, 314, 194, 201, 51, 52, 55, 187, 192, 313, - 51, 55, 313, 245, 244, 162, 189, 191, 162, 191, - 99, 170, 217, 277, 216, 51, 55, 181, 313, 194, - 313, 156, 163, 166, 15, 13, 248, 325, 121, 121, - 157, 16, 51, 55, 194, 51, 55, 157, 27, 222, - 322, 222, 51, 55, 194, 51, 55, 214, 186, 157, - 246, 189, 201, 15, 261, 189, 189, 319, 100, 189, - 198, 309, 189, 311, 320, 145, 318, 200, 200, 320, - 145, 184, 152, 139, 191, 320, 159, 206, 309, 176, - 178, 51, 55, 194, 51, 55, 290, 209, 63, 157, - 262, 189, 189, 51, 100, 226, 295, 320, 320, 142, - 172, 189, 15, 51, 282, 287, 304, 288, 293, 300, - 302, 295, 297, 302, 51, 295, 172, 189, 15, 79, - 126, 231, 232, 325, 189, 200, 320, 178, 142, 44, - 121, 44, 90, 140, 316, 319, 92, 92, 192, 196, - 141, 200, 92, 92, 193, 196, 193, 196, 231, 231, - 171, 322, 167, 156, 141, 15, 320, 183, 189, 202, - 249, 325, 18, 224, 325, 17, 223, 224, 92, 92, - 141, 92, 92, 224, 211, 213, 141, 167, 184, 139, - 15, 200, 221, 261, 189, 199, 85, 309, 139, 320, - 321, 141, 234, 319, 29, 113, 238, 139, 142, 292, - 320, 142, 85, 44, 44, 305, 142, 289, 142, 289, - 142, 289, 142, 289, 289, 44, 44, 228, 230, 233, - 281, 283, 284, 287, 295, 296, 298, 299, 302, 304, - 156, 100, 189, 178, 159, 189, 51, 55, 194, 51, - 55, 57, 123, 162, 191, 168, 191, 170, 92, 162, - 191, 162, 191, 170, 243, 239, 156, 157, 231, 218, - 322, 15, 93, 250, 325, 157, 14, 251, 325, 167, - 15, 92, 15, 157, 157, 222, 189, 157, 320, 200, - 145, 146, 156, 157, 227, 142, 100, 320, 189, 189, - 295, 302, 295, 295, 189, 189, 234, 234, 91, 220, - 142, 305, 305, 142, 229, 220, 142, 229, 142, 229, - 15, 189, 141, 189, 189, 162, 191, 15, 139, 157, - 156, 91, 180, 220, 272, 275, 221, 157, 221, 15, - 15, 215, 224, 246, 247, 51, 235, 236, 291, 15, - 139, 295, 295, 142, 292, 289, 142, 289, 289, 289, - 126, 126, 55, 90, 283, 287, 142, 228, 229, 299, - 302, 295, 298, 302, 295, 139, 15, 55, 90, 140, - 316, 157, 157, 157, 142, 319, 142, 295, 142, 295, - 51, 55, 305, 142, 229, 142, 229, 142, 229, 142, - 229, 229, 51, 55, 194, 51, 55, 248, 223, 15, - 236, 295, 289, 295, 302, 295, 295, 141, 229, 142, - 229, 229, 229, 295, 229 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = -{ - 0, 149, 151, 150, 152, 153, 153, 153, 153, 154, - 155, 154, 156, 157, 158, 158, 158, 158, 160, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 162, 162, 162, 163, - 163, 163, 163, 163, 163, 164, 166, 165, 167, 168, - 168, 169, 169, 171, 170, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 173, 173, 174, 174, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 176, 176, 177, 177, 178, 178, 179, 179, 179, 179, - 179, 179, 179, 179, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 181, 181, 182, 182, 182, 183, 183, - 183, 183, 183, 184, 184, 185, 186, 185, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, - 190, 190, 190, 191, 191, 192, 192, 192, 193, 193, - 194, 194, 194, 194, 194, 195, 195, 195, 195, 195, - 197, 196, 198, 199, 199, 200, 200, 201, 201, 201, - 201, 202, 202, 202, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 204, 203, 205, 206, 203, 207, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 208, 209, 203, 203, 203, 210, 211, 203, - 212, 213, 203, 203, 203, 214, 215, 203, 216, 203, - 217, 218, 203, 219, 203, 203, 203, 203, 203, 203, - 203, 220, 221, 221, 221, 222, 222, 223, 223, 224, - 224, 225, 225, 226, 226, 226, 226, 226, 226, 226, - 226, 227, 226, 228, 228, 228, 228, 229, 229, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 231, 231, 233, 232, 232, 232, - 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, - 240, 239, 241, 241, 241, 241, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 244, 243, 245, 243, 246, - 247, 247, 248, 248, 249, 249, 249, 250, 250, 251, - 251, 252, 252, 252, 252, 253, 253, 254, 254, 254, - 254, 255, 255, 256, 257, 256, 256, 256, 258, 258, - 259, 259, 260, 261, 261, 262, 262, 263, 263, 264, - 265, 264, 266, 266, 267, 267, 268, 269, 269, 269, - 269, 269, 269, 270, 270, 271, 271, 271, 271, 272, - 272, 272, 272, 272, 273, 273, 274, 274, 274, 274, - 274, 274, 274, 274, 275, 275, 276, 277, 276, 278, - 278, 279, 279, 279, 280, 280, 281, 282, 282, 283, - 283, 284, 284, 285, 285, 286, 286, 287, 287, 288, - 288, 288, 288, 289, 289, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 291, 291, 291, 291, 291, 292, 292, 293, 294, 293, - 295, 295, 296, 297, 298, 299, 299, 300, 300, 301, - 301, 302, 302, 303, 303, 304, 305, 305, 306, 307, - 306, 308, 308, 309, 309, 310, 310, 311, 311, 311, - 311, 312, 312, 312, 313, 313, 313, 313, 314, 314, - 314, 315, 315, 316, 316, 317, 317, 318, 318, 319, - 319, 320, 321, 321, 321, 322, 322, 322, 323, 324, - 324, 325 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = -{ - 0, 2, 0, 2, 2, 1, 1, 3, 2, 1, - 0, 5, 4, 2, 1, 1, 3, 2, 0, 4, - 2, 3, 3, 3, 3, 3, 4, 1, 3, 3, - 3, 3, 3, 1, 3, 3, 6, 5, 5, 5, - 5, 4, 6, 4, 6, 3, 1, 3, 1, 1, - 3, 3, 3, 2, 1, 2, 0, 5, 1, 1, - 1, 1, 4, 0, 5, 2, 3, 4, 5, 4, - 5, 2, 2, 2, 2, 2, 1, 3, 1, 3, - 1, 2, 3, 5, 2, 4, 2, 4, 1, 3, - 1, 3, 2, 3, 1, 2, 1, 4, 3, 3, - 3, 3, 2, 1, 1, 4, 3, 3, 3, 3, - 2, 1, 1, 1, 1, 2, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 4, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 6, 5, 5, 5, 5, 4, 3, 3, 2, 2, - 3, 2, 2, 3, 3, 3, 3, 3, 3, 4, - 4, 2, 2, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, - 3, 3, 6, 6, 4, 6, 4, 6, 1, 1, - 2, 4, 2, 1, 3, 3, 5, 3, 1, 1, - 1, 2, 2, 4, 2, 1, 2, 2, 4, 1, - 0, 2, 2, 2, 1, 1, 3, 1, 2, 3, - 4, 3, 4, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 0, 0, 5, 0, 3, - 3, 3, 2, 3, 3, 1, 2, 4, 3, 2, - 1, 2, 0, 0, 5, 6, 6, 0, 0, 7, - 0, 0, 7, 5, 4, 0, 0, 9, 0, 6, - 0, 0, 8, 0, 5, 4, 4, 1, 1, 1, - 1, 1, 1, 1, 2, 1, 1, 1, 5, 1, - 2, 1, 1, 1, 4, 6, 3, 5, 2, 4, - 1, 0, 4, 4, 2, 2, 1, 2, 0, 6, - 8, 4, 6, 4, 3, 6, 2, 4, 6, 2, - 4, 2, 4, 1, 1, 1, 0, 4, 1, 4, - 1, 4, 1, 3, 1, 1, 4, 1, 3, 3, - 0, 5, 2, 4, 5, 5, 2, 4, 4, 3, - 3, 3, 2, 1, 4, 0, 5, 0, 5, 5, - 1, 1, 6, 1, 1, 1, 1, 2, 1, 2, - 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, - 3, 1, 2, 1, 0, 4, 1, 2, 2, 3, - 2, 3, 1, 1, 2, 1, 2, 1, 2, 1, - 0, 4, 2, 3, 1, 4, 2, 1, 1, 1, - 1, 1, 2, 2, 3, 1, 1, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 0, 4, 1, - 1, 3, 5, 3, 1, 2, 2, 2, 1, 2, - 1, 1, 3, 1, 3, 1, 1, 2, 1, 4, - 2, 2, 1, 2, 0, 6, 8, 4, 6, 4, - 6, 2, 4, 6, 2, 4, 2, 4, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, - 1, 3, 2, 2, 2, 1, 3, 1, 3, 1, - 1, 2, 1, 1, 1, 2, 2, 1, 1, 0, - 4, 1, 2, 1, 3, 1, 2, 3, 3, 3, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, - 2, 0 -}; - - -#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 (p, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif - - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, p); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, parser_state *p) -{ - FILE *yyoutput = yyo; - YYUSE (yyoutput); - YYUSE (p); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); -# endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ - -static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, parser_state *p) -{ - YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyo, yytype, yyvaluep, p); - YYFPRINTF (yyo, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *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) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule, parser_state *p) -{ - int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[+yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - , p); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule, p); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) -# else -/* Return the length of YYSTR. */ -static YYPTRDIFF_T -yystrlen (const char *yystr) -{ - YYPTRDIFF_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 -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -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 -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYPTRDIFF_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYPTRDIFF_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; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else - return yystrlen (yystr); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) -{ - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ - int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[+*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - 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]; - { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - 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_ - } - - { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - 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 /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_state *p) -{ - YYUSE (yyvaluep); - YYUSE (p); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (parser_state *p) -{ -/* The lookahead symbol. */ -int yychar; - - -/* The semantic value of the lookahead symbol. */ -/* Default value used for initialization, for pacifying older GCCs - or non-GCC compilers. */ -YY_INITIAL_VALUE (static YYSTYPE yyval_default;) -YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); - - /* Number of syntax errors so far. */ - int yynerrs; - - yy_state_fast_t yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYPTRDIFF_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - - -/*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | -`------------------------------------------------------------*/ -yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - -/*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END - - if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else - { - /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; - -# if defined yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - yy_state_t *yyss1 = yyss; - YYSTYPE *yyvs1 = yyvs; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; - } -# else /* defined YYSTACK_RELOCATE */ - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yy_state_t *yyss1 = yyss; - union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (&yylval, p); - } - - 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); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - 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; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -#line 1564 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_BEG; - if (!p->locals) p->locals = cons(0,0); - } -#line 6086 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 3: -#line 1569 "mrbgems/mruby-compiler/core/parse.y" - { - p->tree = new_scope(p, (yyvsp[0].nd)); - NODE_LINENO(p->tree, (yyvsp[0].nd)); - } -#line 6095 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 4: -#line 1576 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 6103 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 5: -#line 1582 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_begin(p, 0); - } -#line 6111 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 6: -#line 1586 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_begin(p, (yyvsp[0].nd)); - NODE_LINENO((yyval.nd), (yyvsp[0].nd)); - } -#line 6120 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 7: -#line 1591 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); - } -#line 6128 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 8: -#line 1595 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_begin(p, 0); - } -#line 6136 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 10: -#line 1602 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = local_switch(p); - nvars_block(p); - } -#line 6145 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 11: -#line 1607 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "BEGIN not supported"); - local_resume(p, (yyvsp[-3].nd)); - nvars_unnest(p); - (yyval.nd) = 0; - } -#line 6156 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 12: -#line 1619 "mrbgems/mruby-compiler/core/parse.y" - { - if ((yyvsp[-2].nd)) { - (yyval.nd) = new_rescue(p, (yyvsp[-3].nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); - NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); - } - else if ((yyvsp[-1].nd)) { - yywarning(p, "else without rescue is useless"); - (yyval.nd) = push((yyvsp[-3].nd), (yyvsp[-1].nd)); - } - else { - (yyval.nd) = (yyvsp[-3].nd); - } - if ((yyvsp[0].nd)) { - if ((yyval.nd)) { - (yyval.nd) = new_ensure(p, (yyval.nd), (yyvsp[0].nd)); - } - else { - (yyval.nd) = push((yyvsp[0].nd), new_nil(p)); - } - } - } -#line 6182 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 13: -#line 1643 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 6190 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 14: -#line 1649 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_begin(p, 0); - } -#line 6198 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 15: -#line 1653 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_begin(p, (yyvsp[0].nd)); - NODE_LINENO((yyval.nd), (yyvsp[0].nd)); - } -#line 6207 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 16: -#line 1658 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); - } -#line 6215 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 17: -#line 1662 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_begin(p, (yyvsp[0].nd)); - } -#line 6223 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 18: -#line 1667 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_FNAME;} -#line 6229 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 19: -#line 1668 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_alias(p, (yyvsp[-2].id), (yyvsp[0].id)); - } -#line 6237 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 20: -#line 1672 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 6245 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 21: -#line 1676 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_if(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); - } -#line 6253 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 22: -#line 1680 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_unless(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); - } -#line 6261 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 23: -#line 1684 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_while(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); - } -#line 6269 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 24: -#line 1688 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_until(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); - } -#line 6277 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 25: -#line 1692 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6285 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 26: -#line 1696 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "END not supported"); - (yyval.nd) = new_postexe(p, (yyvsp[-1].nd)); - } -#line 6294 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 28: -#line 1702 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6302 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 29: -#line 1706 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); - } -#line 6310 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 30: -#line 1710 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6318 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 31: -#line 1714 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); - } -#line 6326 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 32: -#line 1718 "mrbgems/mruby-compiler/core/parse.y" - { - node *lhs = new_lvar(p, (yyvsp[0].id)); - void_expr_error(p, (yyvsp[-2].nd)); - assignable(p, lhs); - (yyval.nd) = new_asgn(p, lhs, (yyvsp[-2].nd)); - } -#line 6337 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 34: -#line 1728 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6345 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 35: -#line 1732 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 6353 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 36: -#line 1736 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 6361 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 37: -#line 1740 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 6369 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 38: -#line 1744 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 6377 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 39: -#line 1748 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "constant re-assignment"); - (yyval.nd) = 0; - } -#line 6386 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 40: -#line 1753 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 6394 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 41: -#line 1757 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-3].nd); - endless_method_name(p, (yyvsp[-3].nd)); - void_expr_error(p, (yyvsp[0].nd)); - defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd)); - nvars_unnest(p); - p->in_def--; - } -#line 6407 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 42: -#line 1766 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-5].nd); - endless_method_name(p, (yyvsp[-5].nd)); - void_expr_error(p, (yyvsp[-2].nd)); - void_expr_error(p, (yyvsp[0].nd)); - defn_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd))); - nvars_unnest(p); - p->in_def--; - } -#line 6421 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 43: -#line 1776 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-3].nd); - void_expr_error(p, (yyvsp[0].nd)); - defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd)); - nvars_unnest(p); - p->in_def--; - p->in_single--; - } -#line 6434 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 44: -#line 1785 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-5].nd); - void_expr_error(p, (yyvsp[-2].nd)); - void_expr_error(p, (yyvsp[0].nd)); - defs_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd))); - nvars_unnest(p); - p->in_def--; - p->in_single--; - } -#line 6448 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 45: -#line 1795 "mrbgems/mruby-compiler/core/parse.y" - { - backref_error(p, (yyvsp[-2].nd)); - (yyval.nd) = new_begin(p, 0); - } -#line 6457 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 47: -#line 1803 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6465 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 50: -#line 1812 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6473 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 51: -#line 1816 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6481 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 52: -#line 1820 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); - } -#line 6489 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 53: -#line 1824 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); - } -#line 6497 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 55: -#line 1832 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_def(p, (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p)); - p->cmdarg_stack = 0; - p->in_def++; - nvars_block(p); - } -#line 6508 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 56: -#line 1841 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_FNAME; - } -#line 6516 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 57: -#line 1845 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_sdef(p, (yyvsp[-3].nd), (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p)); - p->cmdarg_stack = 0; - p->in_def++; - p->in_single++; - nvars_block(p); - p->lstate = EXPR_ENDFN; /* force for args */ - } -#line 6529 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 58: -#line 1856 "mrbgems/mruby-compiler/core/parse.y" - { - if (!(yyvsp[0].nd)) (yyval.nd) = new_nil(p); - else { - (yyval.nd) = (yyvsp[0].nd); - } - } -#line 6540 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 62: -#line 1870 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); - } -#line 6548 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 63: -#line 1876 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - nvars_nest(p); - } -#line 6557 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 64: -#line 1883 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_block(p, (yyvsp[-2].nd), (yyvsp[-1].nd)); - local_unnest(p); - nvars_unnest(p); - } -#line 6567 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 65: -#line 1891 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 6575 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 66: -#line 1895 "mrbgems/mruby-compiler/core/parse.y" - { - args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); - (yyval.nd) = new_fcall(p, (yyvsp[-2].id), (yyvsp[-1].nd)); - } -#line 6584 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 67: -#line 1900 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); - } -#line 6592 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 68: -#line 1904 "mrbgems/mruby-compiler/core/parse.y" - { - args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); - (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); - } -#line 6601 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 69: -#line 1909 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); - } -#line 6609 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 70: -#line 1913 "mrbgems/mruby-compiler/core/parse.y" - { - args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); - (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), tCOLON2); - } -#line 6618 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 71: -#line 1918 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_super(p, (yyvsp[0].nd)); - } -#line 6626 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 72: -#line 1922 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_yield(p, (yyvsp[0].nd)); - } -#line 6634 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 73: -#line 1926 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_return(p, ret_args(p, (yyvsp[0].nd))); - } -#line 6642 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 74: -#line 1930 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_break(p, ret_args(p, (yyvsp[0].nd))); - } -#line 6650 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 75: -#line 1934 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_next(p, ret_args(p, (yyvsp[0].nd))); - } -#line 6658 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 76: -#line 1940 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 6666 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 77: -#line 1944 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 6674 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 79: -#line 1951 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 6682 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 80: -#line 1957 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 6690 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 81: -#line 1961 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(push((yyvsp[-1].nd),(yyvsp[0].nd))); - } -#line 6698 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 82: -#line 1965 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list2((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6706 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 83: -#line 1969 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3((yyvsp[-4].nd), (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6714 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 84: -#line 1973 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list2((yyvsp[-1].nd), new_nil(p)); - } -#line 6722 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 85: -#line 1977 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3((yyvsp[-3].nd), new_nil(p), (yyvsp[0].nd)); - } -#line 6730 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 86: -#line 1981 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list2(0, (yyvsp[0].nd)); - } -#line 6738 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 87: -#line 1985 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3(0, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 6746 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 88: -#line 1989 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list2(0, new_nil(p)); - } -#line 6754 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 89: -#line 1993 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3(0, new_nil(p), (yyvsp[0].nd)); - } -#line 6762 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 91: -#line 2000 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_masgn(p, (yyvsp[-1].nd), NULL); - } -#line 6770 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 92: -#line 2006 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[-1].nd)); - } -#line 6778 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 93: -#line 2010 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[-1].nd)); - } -#line 6786 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 94: -#line 2016 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 6794 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 95: -#line 2020 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 6802 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 96: -#line 2026 "mrbgems/mruby-compiler/core/parse.y" - { - assignable(p, (yyvsp[0].nd)); - } -#line 6810 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 97: -#line 2030 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); - } -#line 6818 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 98: -#line 2034 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); - } -#line 6826 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 99: -#line 2038 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); - } -#line 6834 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 100: -#line 2042 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); - } -#line 6842 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 101: -#line 2046 "mrbgems/mruby-compiler/core/parse.y" - { - if (p->in_def || p->in_single) - yyerror(p, "dynamic constant assignment"); - (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); - } -#line 6852 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 102: -#line 2052 "mrbgems/mruby-compiler/core/parse.y" - { - if (p->in_def || p->in_single) - yyerror(p, "dynamic constant assignment"); - (yyval.nd) = new_colon3(p, (yyvsp[0].id)); - } -#line 6862 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 103: -#line 2058 "mrbgems/mruby-compiler/core/parse.y" - { - backref_error(p, (yyvsp[0].nd)); - (yyval.nd) = 0; - } -#line 6871 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 104: -#line 2065 "mrbgems/mruby-compiler/core/parse.y" - { - assignable(p, (yyvsp[0].nd)); - } -#line 6879 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 105: -#line 2069 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); - } -#line 6887 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 106: -#line 2073 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); - } -#line 6895 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 107: -#line 2077 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); - } -#line 6903 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 108: -#line 2081 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); - } -#line 6911 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 109: -#line 2085 "mrbgems/mruby-compiler/core/parse.y" - { - if (p->in_def || p->in_single) - yyerror(p, "dynamic constant assignment"); - (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); - } -#line 6921 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 110: -#line 2091 "mrbgems/mruby-compiler/core/parse.y" - { - if (p->in_def || p->in_single) - yyerror(p, "dynamic constant assignment"); - (yyval.nd) = new_colon3(p, (yyvsp[0].id)); - } -#line 6931 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 111: -#line 2097 "mrbgems/mruby-compiler/core/parse.y" - { - backref_error(p, (yyvsp[0].nd)); - (yyval.nd) = 0; - } -#line 6940 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 112: -#line 2102 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "can't assign to numbered parameter"); - } -#line 6948 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 113: -#line 2108 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "class/module name must be CONSTANT"); - } -#line 6956 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 115: -#line 2115 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(nint(1), nsym((yyvsp[0].id))); - } -#line 6964 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 116: -#line 2119 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(nint(0), nsym((yyvsp[0].id))); - } -#line 6972 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 117: -#line 2123 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[-2].nd)); - (yyval.nd) = cons((yyvsp[-2].nd), nsym((yyvsp[0].id))); - } -#line 6981 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 121: -#line 2133 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_ENDFN; - (yyval.id) = (yyvsp[0].id); - } -#line 6990 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 122: -#line 2138 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_ENDFN; - (yyval.id) = (yyvsp[0].id); - } -#line 6999 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 125: -#line 2149 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_undef(p, (yyvsp[0].id)); - } -#line 7007 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 126: -#line 2152 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_FNAME;} -#line 7013 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 127: -#line 2153 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-3].nd), nsym((yyvsp[0].id))); - } -#line 7021 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 128: -#line 2158 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(or); } -#line 7027 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 129: -#line 2159 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(xor); } -#line 7033 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 130: -#line 2160 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(and); } -#line 7039 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 131: -#line 2161 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(cmp); } -#line 7045 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 132: -#line 2162 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(eq); } -#line 7051 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 133: -#line 2163 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(eqq); } -#line 7057 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 134: -#line 2164 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(match); } -#line 7063 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 135: -#line 2165 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(nmatch); } -#line 7069 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 136: -#line 2166 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(gt); } -#line 7075 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 137: -#line 2167 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(ge); } -#line 7081 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 138: -#line 2168 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(lt); } -#line 7087 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 139: -#line 2169 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(le); } -#line 7093 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 140: -#line 2170 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(neq); } -#line 7099 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 141: -#line 2171 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(lshift); } -#line 7105 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 142: -#line 2172 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(rshift); } -#line 7111 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 143: -#line 2173 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(add); } -#line 7117 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 144: -#line 2174 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(sub); } -#line 7123 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 145: -#line 2175 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(mul); } -#line 7129 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 146: -#line 2176 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(mul); } -#line 7135 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 147: -#line 2177 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(div); } -#line 7141 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 148: -#line 2178 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(mod); } -#line 7147 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 149: -#line 2179 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(pow); } -#line 7153 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 150: -#line 2180 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(pow); } -#line 7159 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 151: -#line 2181 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(not); } -#line 7165 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 152: -#line 2182 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(neg); } -#line 7171 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 153: -#line 2183 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(plus); } -#line 7177 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 154: -#line 2184 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(minus); } -#line 7183 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 155: -#line 2185 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(aref); } -#line 7189 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 156: -#line 2186 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(aset); } -#line 7195 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 157: -#line 2187 "mrbgems/mruby-compiler/core/parse.y" - { (yyval.id) = intern_op(tick); } -#line 7201 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 198: -#line 2205 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7209 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 199: -#line 2209 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 7217 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 200: -#line 2213 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 7225 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 201: -#line 2217 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 7233 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 202: -#line 2221 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 7241 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 203: -#line 2225 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 7249 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 204: -#line 2229 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "constant re-assignment"); - (yyval.nd) = new_begin(p, 0); - } -#line 7258 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 205: -#line 2234 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "constant re-assignment"); - (yyval.nd) = new_begin(p, 0); - } -#line 7267 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 206: -#line 2239 "mrbgems/mruby-compiler/core/parse.y" - { - backref_error(p, (yyvsp[-2].nd)); - (yyval.nd) = new_begin(p, 0); - } -#line 7276 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 207: -#line 2244 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot2(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7284 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 208: -#line 2248 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot2(p, (yyvsp[-1].nd), new_nil(p)); - } -#line 7292 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 209: -#line 2252 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot2(p, new_nil(p), (yyvsp[0].nd)); - } -#line 7300 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 210: -#line 2256 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7308 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 211: -#line 2260 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot3(p, (yyvsp[-1].nd), new_nil(p)); - } -#line 7316 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 212: -#line 2264 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dot3(p, new_nil(p), (yyvsp[0].nd)); - } -#line 7324 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 213: -#line 2268 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd)); - } -#line 7332 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 214: -#line 2272 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd)); - } -#line 7340 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 215: -#line 2276 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd)); - } -#line 7348 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 216: -#line 2280 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd)); - } -#line 7356 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 217: -#line 2284 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd)); - } -#line 7364 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 218: -#line 2288 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)); - } -#line 7372 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 219: -#line 2292 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd))); - } -#line 7380 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 220: -#line 2296 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd))); - } -#line 7388 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 221: -#line 2300 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@"); - } -#line 7396 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 222: -#line 2304 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, (yyvsp[0].nd)); - } -#line 7404 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 223: -#line 2308 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd)); - } -#line 7412 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 224: -#line 2312 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd)); - } -#line 7420 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 225: -#line 2316 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd)); - } -#line 7428 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 226: -#line 2320 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd)); - } -#line 7436 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 227: -#line 2324 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd)); - } -#line 7444 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 228: -#line 2328 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd)); - } -#line 7452 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 229: -#line 2332 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd)); - } -#line 7460 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 230: -#line 2336 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd)); - } -#line 7468 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 231: -#line 2340 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd)); - } -#line 7476 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 232: -#line 2344 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd)); - } -#line 7484 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 233: -#line 2348 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd)); - } -#line 7492 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 234: -#line 2352 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd)); - } -#line 7500 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 235: -#line 2356 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd)); - } -#line 7508 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 236: -#line 2360 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); - } -#line 7516 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 237: -#line 2364 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~"); - } -#line 7524 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 238: -#line 2368 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd)); - } -#line 7532 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 239: -#line 2372 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd)); - } -#line 7540 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 240: -#line 2376 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7548 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 241: -#line 2380 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7556 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 242: -#line 2384 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); - } -#line 7564 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 243: -#line 2388 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); - } -#line 7572 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 244: -#line 2392 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-3].nd); - endless_method_name(p, (yyvsp[-3].nd)); - void_expr_error(p, (yyvsp[0].nd)); - defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd)); - nvars_unnest(p); - p->in_def--; - } -#line 7585 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 245: -#line 2401 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-5].nd); - endless_method_name(p, (yyvsp[-5].nd)); - void_expr_error(p, (yyvsp[-2].nd)); - void_expr_error(p, (yyvsp[0].nd)); - defn_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd))); - nvars_unnest(p); - p->in_def--; - } -#line 7599 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 246: -#line 2411 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-3].nd); - void_expr_error(p, (yyvsp[0].nd)); - defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd)); - nvars_unnest(p); - p->in_def--; - p->in_single--; - } -#line 7612 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 247: -#line 2420 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-5].nd); - void_expr_error(p, (yyvsp[-2].nd)); - void_expr_error(p, (yyvsp[0].nd)); - defs_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd))); - nvars_unnest(p); - p->in_def--; - p->in_single--; - } -#line 7626 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 248: -#line 2430 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 7634 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 250: -#line 2437 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); - } -#line 7643 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 251: -#line 2442 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))); - } -#line 7651 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 252: -#line 2446 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(new_kw_hash(p, (yyvsp[-1].nd)), 0); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); - } -#line 7660 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 253: -#line 2453 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 7668 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 254: -#line 2457 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[-2].nd)); - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7678 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 255: -#line 2465 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 7686 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 256: -#line 2469 "mrbgems/mruby-compiler/core/parse.y" - { -#if 1 - mrb_sym r = intern_op(mul); - mrb_sym b = intern_op(and); - (yyval.nd) = cons(push((yyvsp[-3].nd), new_splat(p, new_lvar(p, r))), - new_block_arg(p, new_lvar(p, b))); -#else - mrb_sym r = intern_op(mul); - mrb_sym k = intern_op(pow); - mrb_sym b = intern_op(and); - (yyval.nd) = cons(list2(push((yyvsp[-3].nd), new_splat(p, new_lvar(p, r))), - new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))), - new_block_arg(p, new_lvar(p, b))); -#endif - } -#line 7706 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 257: -#line 2485 "mrbgems/mruby-compiler/core/parse.y" - { -#if 1 - mrb_sym r = intern_op(mul); - mrb_sym b = intern_op(and); - if (local_var_p(p, r) && local_var_p(p, b)) { - (yyval.nd) = cons(list1(new_splat(p, new_lvar(p, r))), - new_block_arg(p, new_lvar(p, b))); - } -#else - mrb_sym r = intern_op(mul); - mrb_sym k = intern_op(pow); - mrb_sym b = intern_op(and); - if (local_var_p(p, r) && local_var_p(p, k) && local_var_p(p, b)) { - (yyval.nd) = cons(list2(new_splat(p, new_lvar(p, r)), - new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))), - new_block_arg(p, new_lvar(p, b))); - } -#endif - else { - yyerror(p, "unexpected argument forwarding ..."); - (yyval.nd) = 0; - } - } -#line 7734 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 262: -#line 2517 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons((yyvsp[-1].nd),0); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); - } -#line 7743 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 263: -#line 2522 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))), 0); - NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); - } -#line 7752 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 264: -#line 2527 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(list1(new_kw_hash(p, (yyvsp[-1].nd))), 0); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); - } -#line 7761 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 265: -#line 2534 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons(list1((yyvsp[0].nd)), 0); - NODE_LINENO((yyval.nd), (yyvsp[0].nd)); - } -#line 7771 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 266: -#line 2540 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons((yyvsp[-1].nd), (yyvsp[0].nd)); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); - } -#line 7780 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 267: -#line 2545 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(list1(new_kw_hash(p, (yyvsp[-1].nd))), (yyvsp[0].nd)); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); - } -#line 7789 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 268: -#line 2550 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))), (yyvsp[0].nd)); - NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); - } -#line 7798 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 269: -#line 2555 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(0, (yyvsp[0].nd)); - NODE_LINENO((yyval.nd), (yyvsp[0].nd)); - } -#line 7807 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 270: -#line 2561 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.stack) = p->cmdarg_stack; - CMDARG_PUSH(1); - } -#line 7816 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 271: -#line 2566 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmdarg_stack = (yyvsp[-1].stack); - (yyval.nd) = (yyvsp[0].nd); - } -#line 7825 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 272: -#line 2573 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_block_arg(p, (yyvsp[0].nd)); - } -#line 7833 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 273: -#line 2579 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 7841 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 274: -#line 2583 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 7849 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 277: -#line 2593 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons((yyvsp[0].nd), 0); - NODE_LINENO((yyval.nd), (yyvsp[0].nd)); - } -#line 7859 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 278: -#line 2599 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons(new_splat(p, (yyvsp[0].nd)), 0); - NODE_LINENO((yyval.nd), (yyvsp[0].nd)); - } -#line 7869 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 279: -#line 2605 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7878 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 280: -#line 2610 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); - } -#line 7887 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 281: -#line 2617 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 7896 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 282: -#line 2622 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); - } -#line 7905 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 283: -#line 2627 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); - } -#line 7914 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 291: -#line 2641 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_nvar(p, (yyvsp[0].num)); - } -#line 7922 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 292: -#line 2645 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0); - } -#line 7930 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 293: -#line 2649 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.stack) = p->cmdarg_stack; - p->cmdarg_stack = 0; - } -#line 7939 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 294: -#line 2655 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmdarg_stack = (yyvsp[-2].stack); - (yyval.nd) = (yyvsp[-1].nd); - } -#line 7948 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 295: -#line 2660 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.stack) = p->cmdarg_stack; - p->cmdarg_stack = 0; - } -#line 7957 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 296: -#line 2664 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_ENDARG;} -#line 7963 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 297: -#line 2665 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmdarg_stack = (yyvsp[-3].stack); - (yyval.nd) = (yyvsp[-2].nd); - } -#line 7972 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 298: -#line 2669 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_ENDARG;} -#line 7978 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 299: -#line 2670 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_nil(p); - } -#line 7986 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 300: -#line 2674 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 7994 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 301: -#line 2678 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); - } -#line 8002 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 302: -#line 2682 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_colon3(p, (yyvsp[0].id)); - } -#line 8010 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 303: -#line 2686 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_array(p, (yyvsp[-1].nd)); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); - } -#line 8019 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 304: -#line 2691 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_hash(p, (yyvsp[-1].nd)); - NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); - } -#line 8028 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 305: -#line 2696 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_return(p, 0); - } -#line 8036 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 306: -#line 2700 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_yield(p, (yyvsp[0].nd)); - } -#line 8044 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 307: -#line 2704 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!"); - } -#line 8052 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 308: -#line 2708 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = call_uni_op(p, new_nil(p), "!"); - } -#line 8060 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 309: -#line 2712 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_fcall(p, (yyvsp[-1].id), cons(0, (yyvsp[0].nd))); - } -#line 8068 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 311: -#line 2717 "mrbgems/mruby-compiler/core/parse.y" - { - call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); - (yyval.nd) = (yyvsp[-1].nd); - } -#line 8077 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 312: -#line 2722 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - (yyval.num) = p->lpar_beg; - p->lpar_beg = ++p->paren_nest; - } -#line 8087 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 313: -#line 2728 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.stack) = p->cmdarg_stack; - p->cmdarg_stack = 0; - } -#line 8096 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 314: -#line 2733 "mrbgems/mruby-compiler/core/parse.y" - { - p->lpar_beg = (yyvsp[-3].num); - (yyval.nd) = new_lambda(p, (yyvsp[-2].nd), (yyvsp[0].nd)); - local_unnest(p); - p->cmdarg_stack = (yyvsp[-1].stack); - CMDARG_LEXPOP(); - } -#line 8108 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 315: -#line 2744 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_if(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-5].num)); - } -#line 8117 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 316: -#line 2752 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_unless(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-5].num)); - } -#line 8126 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 317: -#line 2756 "mrbgems/mruby-compiler/core/parse.y" - {COND_PUSH(1);} -#line 8132 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 318: -#line 2756 "mrbgems/mruby-compiler/core/parse.y" - {COND_POP();} -#line 8138 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 319: -#line 2759 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_while(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-6].num)); - } -#line 8147 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 320: -#line 2763 "mrbgems/mruby-compiler/core/parse.y" - {COND_PUSH(1);} -#line 8153 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 321: -#line 2763 "mrbgems/mruby-compiler/core/parse.y" - {COND_POP();} -#line 8159 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 322: -#line 2766 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_until(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-6].num)); - } -#line 8168 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 323: -#line 2773 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_case(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); - } -#line 8176 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 324: -#line 2777 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_case(p, 0, (yyvsp[-1].nd)); - } -#line 8184 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 325: -#line 2781 "mrbgems/mruby-compiler/core/parse.y" - {COND_PUSH(1);} -#line 8190 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 326: -#line 2783 "mrbgems/mruby-compiler/core/parse.y" - {COND_POP();} -#line 8196 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 327: -#line 2786 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_for(p, (yyvsp[-7].nd), (yyvsp[-4].nd), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-8].num)); - } -#line 8205 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 328: -#line 2792 "mrbgems/mruby-compiler/core/parse.y" - { - if (p->in_def || p->in_single) - yyerror(p, "class definition in method body"); - (yyval.nd) = local_switch(p); - nvars_block(p); - } -#line 8216 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 329: -#line 2800 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_class(p, (yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-5].num)); - local_resume(p, (yyvsp[-2].nd)); - nvars_unnest(p); - } -#line 8227 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 330: -#line 2808 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.num) = p->in_def; - p->in_def = 0; - } -#line 8236 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 331: -#line 2813 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(local_switch(p), nint(p->in_single)); - nvars_block(p); - p->in_single = 0; - } -#line 8246 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 332: -#line 2820 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_sclass(p, (yyvsp[-5].nd), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-7].num)); - local_resume(p, (yyvsp[-2].nd)->car); - nvars_unnest(p); - p->in_def = (yyvsp[-4].num); - p->in_single = intn((yyvsp[-2].nd)->cdr); - } -#line 8259 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 333: -#line 2830 "mrbgems/mruby-compiler/core/parse.y" - { - if (p->in_def || p->in_single) - yyerror(p, "module definition in method body"); - (yyval.nd) = local_switch(p); - nvars_block(p); - } -#line 8270 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 334: -#line 2838 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_module(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-4].num)); - local_resume(p, (yyvsp[-2].nd)); - nvars_unnest(p); - } -#line 8281 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 335: -#line 2848 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-3].nd); - defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); - nvars_unnest(p); - p->in_def--; - } -#line 8292 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 336: -#line 2858 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-3].nd); - defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); - nvars_unnest(p); - p->in_def--; - p->in_single--; - } -#line 8304 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 337: -#line 2866 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_break(p, 0); - } -#line 8312 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 338: -#line 2870 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_next(p, 0); - } -#line 8320 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 339: -#line 2874 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_redo(p); - } -#line 8328 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 340: -#line 2878 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_retry(p); - } -#line 8336 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 341: -#line 2884 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - if (!(yyval.nd)) (yyval.nd) = new_nil(p); - } -#line 8345 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 348: -#line 2903 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8353 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 350: -#line 2910 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 8361 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 351: -#line 2916 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(list1((yyvsp[0].nd))); - } -#line 8369 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 353: -#line 2923 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3((yyvsp[0].nd),0,0); - } -#line 8377 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 354: -#line 2927 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0); - } -#line 8385 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 355: -#line 2931 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); - } -#line 8393 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 356: -#line 2935 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, 0); - (yyval.nd) = list3((yyvsp[-2].nd), nint(-1), 0); - } -#line 8402 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 357: -#line 2940 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3((yyvsp[-4].nd), nint(-1), (yyvsp[0].nd)); - } -#line 8410 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 358: -#line 2944 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0); - } -#line 8418 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 359: -#line 2948 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); - } -#line 8426 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 360: -#line 2952 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, 0); - (yyval.nd) = list3(0, nint(-1), 0); - } -#line 8435 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 361: -#line 2957 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, 0); - } -#line 8443 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 362: -#line 2961 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list3(0, nint(-1), (yyvsp[0].nd)); - } -#line 8451 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 363: -#line 2967 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); - } -#line 8459 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 364: -#line 2971 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); - } -#line 8467 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 365: -#line 2975 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); - } -#line 8475 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 366: -#line 2979 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); - } -#line 8483 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 367: -#line 2985 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 8491 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 368: -#line 2989 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, 0, 0); - } -#line 8499 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 369: -#line 2995 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 8507 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 370: -#line 2999 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8515 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 371: -#line 3003 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); - } -#line 8523 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 372: -#line 3007 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8531 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 373: -#line 3011 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 8539 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 374: -#line 3015 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); - } -#line 8547 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 375: -#line 3019 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8555 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 376: -#line 3023 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); - } -#line 8563 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 377: -#line 3027 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 8571 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 378: -#line 3031 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8579 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 379: -#line 3035 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); - } -#line 8587 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 380: -#line 3039 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8595 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 381: -#line 3043 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 8603 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 382: -#line 3047 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8611 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 383: -#line 3051 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); - } -#line 8619 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 384: -#line 3057 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_blk(p, 0); - (yyval.nd) = 0; - } -#line 8628 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 385: -#line 3062 "mrbgems/mruby-compiler/core/parse.y" - { - p->cmd_start = TRUE; - (yyval.nd) = (yyvsp[0].nd); - } -#line 8637 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 386: -#line 3068 "mrbgems/mruby-compiler/core/parse.y" - {local_add_blk(p, 0);} -#line 8643 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 387: -#line 3069 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 8651 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 388: -#line 3073 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_blk(p, 0); - (yyval.nd) = 0; - } -#line 8660 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 389: -#line 3078 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-2].nd); - } -#line 8668 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 390: -#line 3085 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 8676 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 391: -#line 3089 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 8684 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 394: -#line 3099 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, (yyvsp[0].id)); - new_bv(p, (yyvsp[0].id)); - } -#line 8693 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 396: -#line 3107 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-2].nd); - } -#line 8701 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 397: -#line 3111 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 8709 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 398: -#line 3117 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 8717 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 399: -#line 3121 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 8725 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 400: -#line 3127 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - nvars_nest(p); - } -#line 8734 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 401: -#line 3134 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); - local_unnest(p); - nvars_unnest(p); - } -#line 8744 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 402: -#line 3142 "mrbgems/mruby-compiler/core/parse.y" - { - if (typen((yyvsp[-1].nd)->car) == NODE_YIELD) { - yyerror(p, "block given to yield"); - } - else { - call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); - } - (yyval.nd) = (yyvsp[-1].nd); - } -#line 8758 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 403: -#line 3152 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); - } -#line 8766 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 404: -#line 3156 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); - call_with_block(p, (yyval.nd), (yyvsp[0].nd)); - } -#line 8775 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 405: -#line 3161 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); - call_with_block(p, (yyval.nd), (yyvsp[0].nd)); - } -#line 8784 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 406: -#line 3168 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); - } -#line 8792 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 407: -#line 3172 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); - } -#line 8800 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 408: -#line 3176 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); - } -#line 8808 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 409: -#line 3180 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); - } -#line 8816 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 410: -#line 3184 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num)); - } -#line 8824 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 411: -#line 3188 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2); - } -#line 8832 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 412: -#line 3192 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_super(p, (yyvsp[0].nd)); - } -#line 8840 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 413: -#line 3196 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_zsuper(p); - } -#line 8848 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 414: -#line 3200 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.'); - } -#line 8856 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 415: -#line 3206 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - nvars_nest(p); - (yyval.num) = p->lineno; - } -#line 8866 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 416: -#line 3213 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-3].num)); - local_unnest(p); - nvars_unnest(p); - } -#line 8877 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 417: -#line 3220 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - nvars_nest(p); - (yyval.num) = p->lineno; - } -#line 8887 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 418: -#line 3227 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-3].num)); - local_unnest(p); - nvars_unnest(p); - } -#line 8898 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 419: -#line 3238 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd)); - } -#line 8906 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 420: -#line 3244 "mrbgems/mruby-compiler/core/parse.y" - { - if ((yyvsp[0].nd)) { - (yyval.nd) = cons(cons(0, (yyvsp[0].nd)), 0); - } - else { - (yyval.nd) = 0; - } - } -#line 8919 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 422: -#line 3258 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(list3((yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd))); - if ((yyvsp[0].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[0].nd)); - } -#line 8928 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 424: -#line 3266 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 8936 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 427: -#line 3274 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 8944 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 429: -#line 3281 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 8952 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 436: -#line 3295 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8960 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 439: -#line 3303 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 8968 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 440: -#line 3307 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); - } -#line 8976 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 442: -#line 3314 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 8984 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 443: -#line 3320 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 8992 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 444: -#line 3324 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = p->lex_strterm; - p->lex_strterm = NULL; - } -#line 9001 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 445: -#line 3330 "mrbgems/mruby-compiler/core/parse.y" - { - p->lex_strterm = (yyvsp[-2].nd); - (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd)); - } -#line 9010 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 446: -#line 3335 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(new_literal_delim(p)); - } -#line 9018 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 447: -#line 3339 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1(new_literal_delim(p)); - } -#line 9026 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 448: -#line 3345 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 9034 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 449: -#line 3349 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dxstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); - } -#line 9042 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 450: -#line 3355 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 9050 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 451: -#line 3359 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 9058 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 455: -#line 3372 "mrbgems/mruby-compiler/core/parse.y" - { - parser_heredoc_info * inf = parsing_heredoc_inf(p); - inf->doc = push(inf->doc, new_str(p, "", 0)); - heredoc_end(p); - } -#line 9068 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 456: -#line 3378 "mrbgems/mruby-compiler/core/parse.y" - { - heredoc_end(p); - } -#line 9076 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 459: -#line 3388 "mrbgems/mruby-compiler/core/parse.y" - { - parser_heredoc_info * inf = parsing_heredoc_inf(p); - inf->doc = push(inf->doc, (yyvsp[0].nd)); - heredoc_treat_nextline(p); - } -#line 9086 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 460: -#line 3394 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = p->lex_strterm; - p->lex_strterm = NULL; - } -#line 9095 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 461: -#line 3400 "mrbgems/mruby-compiler/core/parse.y" - { - parser_heredoc_info * inf = parsing_heredoc_inf(p); - p->lex_strterm = (yyvsp[-2].nd); - inf->doc = push(push(inf->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd)); - } -#line 9105 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 462: -#line 3408 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_words(p, list1((yyvsp[0].nd))); - } -#line 9113 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 463: -#line 3412 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_words(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); - } -#line 9121 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 464: -#line 3419 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_ENDARG; - (yyval.nd) = new_sym(p, (yyvsp[0].id)); - } -#line 9130 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 465: -#line 3424 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_ENDARG; - (yyval.nd) = new_dsym(p, new_dstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd)))); - } -#line 9139 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 466: -#line 3431 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = (yyvsp[0].id); - } -#line 9147 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 471: -#line 3441 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = new_strsym(p, (yyvsp[0].nd)); - } -#line 9155 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 472: -#line 3445 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = new_strsym(p, (yyvsp[0].nd)); - } -#line 9163 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 473: -#line 3451 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); - } -#line 9171 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 474: -#line 3455 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_symbols(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); - } -#line 9179 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 477: -#line 3463 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, (yyvsp[0].nd)); - } -#line 9187 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 478: -#line 3467 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_negate(p, (yyvsp[0].nd)); - } -#line 9195 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 479: -#line 3473 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_lvar(p, (yyvsp[0].id)); - } -#line 9203 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 480: -#line 3477 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_ivar(p, (yyvsp[0].id)); - } -#line 9211 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 481: -#line 3481 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_gvar(p, (yyvsp[0].id)); - } -#line 9219 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 482: -#line 3485 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_cvar(p, (yyvsp[0].id)); - } -#line 9227 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 483: -#line 3489 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_const(p, (yyvsp[0].id)); - } -#line 9235 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 484: -#line 3495 "mrbgems/mruby-compiler/core/parse.y" - { - assignable(p, (yyvsp[0].nd)); - } -#line 9243 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 485: -#line 3499 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "can't assign to numbered parameter"); - } -#line 9251 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 486: -#line 3505 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = var_reference(p, (yyvsp[0].nd)); - } -#line 9259 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 487: -#line 3509 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_nil(p); - } -#line 9267 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 488: -#line 3513 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_self(p); - } -#line 9275 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 489: -#line 3517 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_true(p); - } -#line 9283 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 490: -#line 3521 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_false(p); - } -#line 9291 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 491: -#line 3525 "mrbgems/mruby-compiler/core/parse.y" - { - const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); - if (!fn) { - fn = "(null)"; - } - (yyval.nd) = new_str(p, fn, strlen(fn)); - } -#line 9303 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 492: -#line 3533 "mrbgems/mruby-compiler/core/parse.y" - { - char buf[16]; - - dump_int(p->lineno, buf); - (yyval.nd) = new_int(p, buf, 10, 0); - } -#line 9314 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 493: -#line 3540 "mrbgems/mruby-compiler/core/parse.y" - { -#ifdef MRB_UTF8_STRING - const char *enc = "UTF-8"; -#else - const char *enc = "ASCII-8BIT"; -#endif - (yyval.nd) = new_str(p, enc, strlen(enc)); - } -#line 9327 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 496: -#line 3555 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 9335 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 497: -#line 3559 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_BEG; - p->cmd_start = TRUE; - } -#line 9344 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 498: -#line 3564 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 9352 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 501: -#line 3580 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - p->lstate = EXPR_BEG; - p->cmd_start = TRUE; - } -#line 9362 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 502: -#line 3586 "mrbgems/mruby-compiler/core/parse.y" - { -#if 1 - /* til real keyword args implemented */ - mrb_sym r = intern_op(mul); - mrb_sym b = intern_op(and); - local_add_f(p, r); - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, r, 0, - new_args_tail(p, 0, 0, b)); -#else - mrb_sym r = intern_op(mul); - mrb_sym k = intern_op(pow); - mrb_sym b = intern_op(and); - local_add_f(p, r); local_add_f(p, k); - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, r, 0, - new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b)); -#endif - } -#line 9384 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 503: -#line 3604 "mrbgems/mruby-compiler/core/parse.y" - { -#if 1 - /* til real keyword args implemented */ - mrb_sym r = intern_op(mul); - mrb_sym b = intern_op(and); - local_add_f(p, r); - (yyval.nd) = new_args(p, 0, 0, r, 0, - new_args_tail(p, 0, 0, b)); -#else - mrb_sym r = intern_op(mul); - mrb_sym k = intern_op(pow); - mrb_sym b = intern_op(and); - local_add_f(p, r); local_add_f(p, k); - (yyval.nd) = new_args(p, 0, 0, r, 0, - new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b)); -#endif - } -#line 9406 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 505: -#line 3625 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 9414 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 506: -#line 3631 "mrbgems/mruby-compiler/core/parse.y" - { - local_nest(p); - } -#line 9422 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 507: -#line 3637 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); - local_unnest(p); - } -#line 9432 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 508: -#line 3643 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); - local_unnest(p); - } -#line 9441 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 509: -#line 3650 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); - local_unnest(p); - } -#line 9450 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 510: -#line 3655 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); - local_unnest(p); - } -#line 9459 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 511: -#line 3662 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 9467 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 512: -#line 3666 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 9475 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 513: -#line 3672 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 9483 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 514: -#line 3676 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 9491 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 517: -#line 3686 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_rest_args(p, nsym((yyvsp[0].id))); - } -#line 9499 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 518: -#line 3690 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_kw_rest_args(p, 0); - } -#line 9507 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 519: -#line 3696 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); - } -#line 9515 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 520: -#line 3700 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); - } -#line 9523 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 521: -#line 3704 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); - } -#line 9531 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 522: -#line 3708 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); - } -#line 9539 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 523: -#line 3714 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - } -#line 9547 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 524: -#line 3718 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args_tail(p, 0, 0, 0); - } -#line 9555 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 525: -#line 3724 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 9563 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 526: -#line 3728 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 9571 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 527: -#line 3732 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); - } -#line 9579 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 528: -#line 3736 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 9587 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 529: -#line 3740 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 9595 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 530: -#line 3744 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 9603 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 531: -#line 3748 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); - } -#line 9611 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 532: -#line 3752 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 9619 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 533: -#line 3756 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 9627 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 534: -#line 3760 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); - } -#line 9635 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 535: -#line 3764 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 9643 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 536: -#line 3768 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); - } -#line 9651 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 537: -#line 3772 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); - } -#line 9659 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 538: -#line 3776 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); - } -#line 9667 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 539: -#line 3780 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, intern_op(and)); - (yyval.nd) = new_args(p, 0, 0, 0, 0, 0); - } -#line 9676 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 540: -#line 3787 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "formal argument cannot be a constant"); - (yyval.nd) = 0; - } -#line 9685 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 541: -#line 3792 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "formal argument cannot be an instance variable"); - (yyval.nd) = 0; - } -#line 9694 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 542: -#line 3797 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "formal argument cannot be a global variable"); - (yyval.nd) = 0; - } -#line 9703 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 543: -#line 3802 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "formal argument cannot be a class variable"); - (yyval.nd) = 0; - } -#line 9712 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 544: -#line 3807 "mrbgems/mruby-compiler/core/parse.y" - { - yyerror(p, "formal argument cannot be a numbered parameter"); - (yyval.nd) = 0; - } -#line 9721 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 545: -#line 3814 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = 0; - } -#line 9729 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 546: -#line 3818 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, (yyvsp[0].id)); - (yyval.id) = (yyvsp[0].id); - } -#line 9738 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 547: -#line 3825 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_arg(p, (yyvsp[0].id)); - } -#line 9746 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 548: -#line 3829 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = local_switch(p); - } -#line 9754 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 549: -#line 3833 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car); - local_resume(p, (yyvsp[-2].nd)); - local_add_f(p, 0); - } -#line 9764 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 550: -#line 3841 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 9772 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 551: -#line 3845 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 9780 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 552: -#line 3851 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, (yyvsp[-1].id)); - local_nest(p); - (yyval.id) = (yyvsp[-1].id); - } -#line 9790 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 553: -#line 3859 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); - local_unnest(p); - } -#line 9800 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 554: -#line 3867 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); - local_unnest(p); - } -#line 9810 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 555: -#line 3875 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 9818 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 556: -#line 3879 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 9826 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 557: -#line 3885 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - } -#line 9834 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 558: -#line 3889 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 9842 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 561: -#line 3899 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, (yyvsp[0].id)); - (yyval.id) = (yyvsp[0].id); - } -#line 9851 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 562: -#line 3904 "mrbgems/mruby-compiler/core/parse.y" - { - local_add_f(p, intern_op(mul)); - (yyval.id) = -1; - } -#line 9860 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 565: -#line 3915 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = (yyvsp[0].id); - } -#line 9868 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 566: -#line 3921 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = (yyvsp[0].id); - } -#line 9876 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 567: -#line 3925 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.id) = 0; - } -#line 9884 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 568: -#line 3931 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[0].nd); - if (!(yyval.nd)) (yyval.nd) = new_nil(p); - } -#line 9893 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 569: -#line 3935 "mrbgems/mruby-compiler/core/parse.y" - {p->lstate = EXPR_BEG;} -#line 9899 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 570: -#line 3936 "mrbgems/mruby-compiler/core/parse.y" - { - if ((yyvsp[-1].nd) == 0) { - yyerror(p, "can't define singleton method for ()."); - } - else { - switch (typen((yyvsp[-1].nd)->car)) { - case NODE_STR: - case NODE_DSTR: - case NODE_XSTR: - case NODE_DXSTR: - case NODE_DREGX: - case NODE_MATCH: - case NODE_FLOAT: - case NODE_ARRAY: - case NODE_HEREDOC: - yyerror(p, "can't define singleton method for literals"); - default: - break; - } - } - (yyval.nd) = (yyvsp[-1].nd); - } -#line 9926 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 572: -#line 3962 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = (yyvsp[-1].nd); - } -#line 9934 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 573: -#line 3968 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = list1((yyvsp[0].nd)); - NODE_LINENO((yyval.nd), (yyvsp[0].nd)); - } -#line 9943 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 574: -#line 3973 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 9951 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 577: -#line 3983 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[-2].nd)); - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons((yyvsp[-2].nd), (yyvsp[0].nd)); - } -#line 9961 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 578: -#line 3989 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons(new_sym(p, (yyvsp[-2].id)), (yyvsp[0].nd)); - } -#line 9970 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 579: -#line 3994 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - if (typen((yyvsp[-2].nd)->car) == NODE_DSTR) { - (yyval.nd) = cons(new_dsym(p, (yyvsp[-2].nd)), (yyvsp[0].nd)); - } - else { - (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd)); - } - } -#line 9984 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 580: -#line 4004 "mrbgems/mruby-compiler/core/parse.y" - { - void_expr_error(p, (yyvsp[0].nd)); - (yyval.nd) = cons(new_kw_rest_args(p, 0), (yyvsp[0].nd)); - } -#line 9993 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 593: -#line 4031 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.num) = '.'; - } -#line 10001 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 594: -#line 4035 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.num) = 0; - } -#line 10009 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 596: -#line 4042 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.num) = tCOLON2; - } -#line 10017 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 605: -#line 4063 "mrbgems/mruby-compiler/core/parse.y" - {yyerrok;} -#line 10023 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 608: -#line 4069 "mrbgems/mruby-compiler/core/parse.y" - { - p->lineno += (yyvsp[0].num); - p->column = 0; - } -#line 10032 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 611: -#line 4080 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.nd) = 0; - } -#line 10040 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - -#line 10044 "mrbgems/mruby-compiler/core/y.tab.c" - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (p, 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 = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (p, yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval, p); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - 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; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp, p); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (p, YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval, p); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[+*yyssp], yyvsp, p); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} -#line 4084 "mrbgems/mruby-compiler/core/parse.y" - -#define pylval (*((YYSTYPE*)(p->ylval))) - -static void -yyerror(parser_state *p, const char *s) -{ - char* c; - size_t n; - - if (! p->capture_errors) { -#ifndef MRB_NO_STDIO - if (p->filename_sym) { - const char *filename = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); - fprintf(stderr, "%s:%d:%d: %s\n", filename, p->lineno, p->column, s); - } - else { - fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s); - } -#endif - } - else if (p->nerr < sizeof(p->error_buffer) / sizeof(p->error_buffer[0])) { - n = strlen(s); - c = (char *)parser_palloc(p, n + 1); - memcpy(c, s, n + 1); - p->error_buffer[p->nerr].message = c; - p->error_buffer[p->nerr].lineno = p->lineno; - p->error_buffer[p->nerr].column = p->column; - } - p->nerr++; -} - -static void -yyerror_c(parser_state *p, const char *msg, char c) -{ - char buf[256]; - - strncpy(buf, msg, sizeof(buf) - 2); - buf[sizeof(buf) - 2] = '\0'; - strncat(buf, &c, 1); - yyerror(p, buf); -} - -static void -yywarning(parser_state *p, const char *s) -{ - char* c; - size_t n; - - if (! p->capture_errors) { -#ifndef MRB_NO_STDIO - if (p->filename_sym) { - const char *filename = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); - fprintf(stderr, "%s:%d:%d: warning: %s\n", filename, p->lineno, p->column, s); - } - else { - fprintf(stderr, "line %d:%d: warning: %s\n", p->lineno, p->column, s); - } -#endif - } - else if (p->nwarn < sizeof(p->warn_buffer) / sizeof(p->warn_buffer[0])) { - n = strlen(s); - c = (char *)parser_palloc(p, n + 1); - memcpy(c, s, n + 1); - p->warn_buffer[p->nwarn].message = c; - p->warn_buffer[p->nwarn].lineno = p->lineno; - p->warn_buffer[p->nwarn].column = p->column; - } - p->nwarn++; -} - -static void -yywarning_s(parser_state *p, const char *msg, const char *s) -{ - char buf[256]; - - strncpy(buf, msg, sizeof(buf) - 1); - buf[sizeof(buf) - 1] = '\0'; - strncat(buf, ": ", sizeof(buf) - strlen(buf) - 1); - strncat(buf, s, sizeof(buf) - strlen(buf) - 1); - yywarning(p, buf); -} - -static void -backref_error(parser_state *p, node *n) -{ - int c; - - c = intn(n->car); - - if (c == NODE_NTH_REF) { - yyerror_c(p, "can't set variable $", (char)intn(n->cdr)+'0'); - } - else if (c == NODE_BACK_REF) { - yyerror_c(p, "can't set variable $", (char)intn(n->cdr)); - } - else { - mrb_bug(p->mrb, "Internal error in backref_error() : n=>car == %d", c); - } -} - -static void -void_expr_error(parser_state *p, node *n) -{ - int c; - - if (n == NULL) return; - c = intn(n->car); - switch (c) { - case NODE_BREAK: - case NODE_RETURN: - case NODE_NEXT: - case NODE_REDO: - case NODE_RETRY: - yyerror(p, "void value expression"); - break; - case NODE_AND: - case NODE_OR: - if (n->cdr) { - void_expr_error(p, n->cdr->car); - void_expr_error(p, n->cdr->cdr); - } - break; - case NODE_BEGIN: - if (n->cdr) { - while (n->cdr) { - n = n->cdr; - } - void_expr_error(p, n->car); - } - break; - default: - break; - } -} - -static void pushback(parser_state *p, int c); -static mrb_bool peeks(parser_state *p, const char *s); -static mrb_bool skips(parser_state *p, const char *s); - -static inline int -nextc0(parser_state *p) -{ - int c; - - if (p->s && p->s < p->send) { - c = (unsigned char)*p->s++; - } - else { -#ifndef MRB_NO_STDIO - if (p->f) { - c = fgetc(p->f); - if (feof(p->f)) return -1; - } - else -#endif - return -1; - } - return c; -} - -static inline int -nextc(parser_state *p) -{ - int c; - - if (p->pb) { - node *tmp; - - c = intn(p->pb->car); - tmp = p->pb; - p->pb = p->pb->cdr; - cons_free(tmp); - } - else { - c = nextc0(p); - if (c < 0) goto eof; - } - if (c >= 0) { - p->column++; - } - if (c == '\r') { - const int lf = nextc0(p); - if (lf == '\n') { - return '\n'; - } - if (lf > 0) pushback(p, lf); - } - return c; - - eof: - if (!p->cxt) return -1; - else { - if (p->cxt->partial_hook(p) < 0) - return -1; /* end of program(s) */ - return -2; /* end of a file in the program files */ - } -} - -static void -pushback(parser_state *p, int c) -{ - if (c >= 0) { - p->column--; - } - p->pb = cons(nint(c), p->pb); -} - -static void -skip(parser_state *p, char term) -{ - int c; - - for (;;) { - c = nextc(p); - if (c < 0) break; - if (c == term) break; - } -} - -static int -peekc_n(parser_state *p, int n) -{ - node *list = 0; - int c0; - - do { - c0 = nextc(p); - if (c0 == -1) return c0; /* do not skip partial EOF */ - if (c0 >= 0) --p->column; - list = push(list, nint(c0)); - } while(n--); - if (p->pb) { - p->pb = append(list, p->pb); - } - else { - p->pb = list; - } - return c0; -} - -static mrb_bool -peek_n(parser_state *p, int c, int n) -{ - return peekc_n(p, n) == c && c >= 0; -} -#define peek(p,c) peek_n((p), (c), 0) - -static mrb_bool -peeks(parser_state *p, const char *s) -{ - size_t len = strlen(s); - -#ifndef MRB_NO_STDIO - if (p->f) { - int n = 0; - while (*s) { - if (!peek_n(p, *s++, n++)) return FALSE; - } - return TRUE; - } - else -#endif - if (p->s && p->s + len <= p->send) { - if (memcmp(p->s, s, len) == 0) return TRUE; - } - return FALSE; -} - -static mrb_bool -skips(parser_state *p, const char *s) -{ - int c; - - for (;;) { - /* skip until first char */ - for (;;) { - c = nextc(p); - if (c < 0) return FALSE; - if (c == '\n') { - p->lineno++; - p->column = 0; - } - if (c == *s) break; - } - s++; - if (peeks(p, s)) { - size_t len = strlen(s); - - while (len--) { - if (nextc(p) == '\n') { - p->lineno++; - p->column = 0; - } - } - return TRUE; - } - else{ - s--; - } - } - return FALSE; -} - - -static int -newtok(parser_state *p) -{ - if (p->tokbuf != p->buf) { - mrb_free(p->mrb, p->tokbuf); - p->tokbuf = p->buf; - p->tsiz = MRB_PARSER_TOKBUF_SIZE; - } - p->tidx = 0; - return p->column - 1; -} - -static void -tokadd(parser_state *p, int32_t c) -{ - char utf8[4]; - int i, len; - - /* mrb_assert(-0x10FFFF <= c && c <= 0xFF); */ - if (c >= 0) { - /* Single byte from source or non-Unicode escape */ - utf8[0] = (char)c; - len = 1; - } - else { - /* Unicode character */ - c = -c; - if (c < 0x80) { - utf8[0] = (char)c; - len = 1; - } - else if (c < 0x800) { - utf8[0] = (char)(0xC0 | (c >> 6)); - utf8[1] = (char)(0x80 | (c & 0x3F)); - len = 2; - } - else if (c < 0x10000) { - utf8[0] = (char)(0xE0 | (c >> 12) ); - utf8[1] = (char)(0x80 | ((c >> 6) & 0x3F)); - utf8[2] = (char)(0x80 | ( c & 0x3F)); - len = 3; - } - else { - utf8[0] = (char)(0xF0 | (c >> 18) ); - utf8[1] = (char)(0x80 | ((c >> 12) & 0x3F)); - utf8[2] = (char)(0x80 | ((c >> 6) & 0x3F)); - utf8[3] = (char)(0x80 | ( c & 0x3F)); - len = 4; - } - } - if (p->tidx+len >= p->tsiz) { - if (p->tsiz >= MRB_PARSER_TOKBUF_MAX) { - p->tidx += len; - return; - } - p->tsiz *= 2; - if (p->tokbuf == p->buf) { - p->tokbuf = (char*)mrb_malloc(p->mrb, p->tsiz); - memcpy(p->tokbuf, p->buf, MRB_PARSER_TOKBUF_SIZE); - } - else { - p->tokbuf = (char*)mrb_realloc(p->mrb, p->tokbuf, p->tsiz); - } - } - for (i = 0; i < len; i++) { - p->tokbuf[p->tidx++] = utf8[i]; - } -} - -static int -toklast(parser_state *p) -{ - return p->tokbuf[p->tidx-1]; -} - -static void -tokfix(parser_state *p) -{ - if (p->tidx >= MRB_PARSER_TOKBUF_MAX) { - p->tidx = MRB_PARSER_TOKBUF_MAX-1; - yyerror(p, "string too long (truncated)"); - } - p->tokbuf[p->tidx] = '\0'; -} - -static const char* -tok(parser_state *p) -{ - return p->tokbuf; -} - -static int -toklen(parser_state *p) -{ - return p->tidx; -} - -#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG) -#define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN) -#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS) -#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c)) -#define IS_LABEL_POSSIBLE() ((p->lstate == EXPR_BEG && !cmd_state) || IS_ARG()) -#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1)) - -static int32_t -scan_oct(const int *start, int len, int *retlen) -{ - const int *s = start; - int32_t retval = 0; - - /* mrb_assert(len <= 3) */ - while (len-- && *s >= '0' && *s <= '7') { - retval <<= 3; - retval |= *s++ - '0'; - } - *retlen = (int)(s - start); - - return retval; -} - -static int32_t -scan_hex(parser_state *p, const int *start, int len, int *retlen) -{ - static const char hexdigit[] = "0123456789abcdef0123456789ABCDEF"; - const int *s = start; - uint32_t retval = 0; - char *tmp; - - /* mrb_assert(len <= 8) */ - while (len-- && *s && (tmp = (char*)strchr(hexdigit, *s))) { - retval <<= 4; - retval |= (tmp - hexdigit) & 15; - s++; - } - *retlen = (int)(s - start); - - return (int32_t)retval; -} - -static int32_t -read_escape_unicode(parser_state *p, int limit) -{ - int buf[9]; - int i; - int32_t hex; - - /* Look for opening brace */ - i = 0; - buf[0] = nextc(p); - if (buf[0] < 0) { - eof: - yyerror(p, "invalid escape character syntax"); - return -1; - } - if (ISXDIGIT(buf[0])) { - /* \uxxxx form */ - for (i=1; i<limit; i++) { - buf[i] = nextc(p); - if (buf[i] < 0) goto eof; - if (!ISXDIGIT(buf[i])) { - pushback(p, buf[i]); - break; - } - } - } - else { - pushback(p, buf[0]); - } - hex = scan_hex(p, buf, i, &i); - if (i == 0 || hex > 0x10FFFF || (hex & 0xFFFFF800) == 0xD800) { - yyerror(p, "invalid Unicode code point"); - return -1; - } - return hex; -} - -/* Return negative to indicate Unicode code point */ -static int32_t -read_escape(parser_state *p) -{ - int32_t c; - - switch (c = nextc(p)) { - case '\\':/* Backslash */ - return c; - - case 'n':/* newline */ - return '\n'; - - case 't':/* horizontal tab */ - return '\t'; - - case 'r':/* carriage-return */ - return '\r'; - - case 'f':/* form-feed */ - return '\f'; - - case 'v':/* vertical tab */ - return '\13'; - - case 'a':/* alarm(bell) */ - return '\007'; - - case 'e':/* escape */ - return 033; - - case '0': case '1': case '2': case '3': /* octal constant */ - case '4': case '5': case '6': case '7': - { - int buf[3]; - int i; - - buf[0] = c; - for (i=1; i<3; i++) { - buf[i] = nextc(p); - if (buf[i] < 0) goto eof; - if (buf[i] < '0' || '7' < buf[i]) { - pushback(p, buf[i]); - break; - } - } - c = scan_oct(buf, i, &i); - } - return c; - - case 'x': /* hex constant */ - { - int buf[2]; - int i; - - for (i=0; i<2; i++) { - buf[i] = nextc(p); - if (buf[i] < 0) goto eof; - if (!ISXDIGIT(buf[i])) { - pushback(p, buf[i]); - break; - } - } - if (i == 0) { - yyerror(p, "invalid hex escape"); - return -1; - } - return scan_hex(p, buf, i, &i); - } - - case 'u': /* Unicode */ - if (peek(p, '{')) { - /* \u{xxxxxxxx} form */ - nextc(p); - c = read_escape_unicode(p, 8); - if (c < 0) return 0; - if (nextc(p) != '}') goto eof; - } - else { - c = read_escape_unicode(p, 4); - if (c < 0) return 0; - } - return -c; - - case 'b':/* backspace */ - return '\010'; - - case 's':/* space */ - return ' '; - - case 'M': - if ((c = nextc(p)) != '-') { - yyerror(p, "Invalid escape character syntax"); - pushback(p, c); - return '\0'; - } - if ((c = nextc(p)) == '\\') { - return read_escape(p) | 0x80; - } - else if (c < 0) goto eof; - else { - return ((c & 0xff) | 0x80); - } - - case 'C': - if ((c = nextc(p)) != '-') { - yyerror(p, "Invalid escape character syntax"); - pushback(p, c); - return '\0'; - } - case 'c': - if ((c = nextc(p))== '\\') { - c = read_escape(p); - } - else if (c == '?') - return 0177; - else if (c < 0) goto eof; - return c & 0x9f; - - eof: - case -1: - case -2: /* end of a file */ - yyerror(p, "Invalid escape character syntax"); - return '\0'; - - default: - return c; - } -} - -static void -heredoc_count_indent(parser_heredoc_info *hinf, const char *str, size_t len, size_t spaces, size_t *offset) -{ - size_t indent = 0; - *offset = 0; - for (size_t i = 0; i < len; i++) { - size_t size; - if (str[i] == '\n') - break; - else if (str[i] == '\t') - size = 8; - else if (ISSPACE(str[i])) - size = 1; - else - break; - size_t nindent = indent + size; - if (nindent > spaces || nindent > hinf->indent) - break; - indent = nindent; - *offset += 1; - } -} - -static void -heredoc_remove_indent(parser_state *p, parser_heredoc_info *hinf) -{ - if (!hinf->remove_indent || hinf->indent == 0) - return; - node *indented, *n, *pair, *escaped, *nspaces; - const char *str; - size_t len, spaces, offset, start, end; - indented = hinf->indented; - while (indented) { - n = indented->car; - pair = n->car; - str = (char*)pair->car; - len = (size_t)pair->cdr; - escaped = n->cdr->car; - nspaces = n->cdr->cdr; - if (escaped) { - char *newstr = strndup(str, len); - size_t newlen = 0; - start = 0; - while (start < len) { - end = escaped ? (size_t)escaped->car : len; - if (end > len) end = len; - spaces = (size_t)nspaces->car; - size_t esclen = end - start; - heredoc_count_indent(hinf, str + start, esclen, spaces, &offset); - esclen -= offset; - memcpy(newstr + newlen, str + start + offset, esclen); - newlen += esclen; - start = end; - if (escaped) - escaped = escaped->cdr; - nspaces = nspaces->cdr; - } - if (newlen < len) - newstr[newlen] = '\0'; - pair->car = (node*)newstr; - pair->cdr = (node*)newlen; - } else { - spaces = (size_t)nspaces->car; - heredoc_count_indent(hinf, str, len, spaces, &offset); - pair->car = (node*)(str + offset); - pair->cdr = (node*)(len - offset); - } - indented = indented->cdr; - } -} - -static void -heredoc_push_indented(parser_state *p, parser_heredoc_info *hinf, node *pair, node *escaped, node *nspaces, mrb_bool empty_line) -{ - hinf->indented = push(hinf->indented, cons(pair, cons(escaped, nspaces))); - while (nspaces) { - size_t tspaces = (size_t)nspaces->car; - if ((hinf->indent == ~0U || tspaces < hinf->indent) && !empty_line) - hinf->indent = tspaces; - nspaces = nspaces->cdr; - } -} - -static int -parse_string(parser_state *p) -{ - int c; - string_type type = (string_type)(intptr_t)p->lex_strterm->car; - int nest_level = intn(p->lex_strterm->cdr->car); - int beg = intn(p->lex_strterm->cdr->cdr->car); - int end = intn(p->lex_strterm->cdr->cdr->cdr); - parser_heredoc_info *hinf = (type & STR_FUNC_HEREDOC) ? parsing_heredoc_inf(p) : NULL; - - mrb_bool unindent = hinf && hinf->remove_indent; - mrb_bool head = hinf && hinf->line_head; - mrb_bool empty = TRUE; - size_t spaces = 0; - size_t pos = -1; - node *escaped = NULL; - node *nspaces = NULL; - - if (beg == 0) beg = -3; /* should never happen */ - if (end == 0) end = -3; - newtok(p); - while ((c = nextc(p)) != end || nest_level != 0) { - pos++; - if (hinf && (c == '\n' || c < 0)) { - mrb_bool line_head; - tokadd(p, '\n'); - tokfix(p); - p->lineno++; - p->column = 0; - line_head = hinf->line_head; - hinf->line_head = TRUE; - if (line_head) { - /* check whether end of heredoc */ - const char *s = tok(p); - int len = toklen(p); - if (hinf->allow_indent) { - while (ISSPACE(*s) && len > 0) { - ++s; - --len; - } - } - if ((len-1 == hinf->term_len) && (strncmp(s, hinf->term, len-1) == 0)) { - heredoc_remove_indent(p, hinf); - return tHEREDOC_END; - } - } - if (c < 0) { - char buf[256]; - const char s1[] = "can't find heredoc delimiter \""; - const char s2[] = "\" anywhere before EOF"; - - if (sizeof(s1)+sizeof(s2)+strlen(hinf->term)+1 >= sizeof(buf)) { - yyerror(p, "can't find heredoc delimiter anywhere before EOF"); - } else { - strcpy(buf, s1); - strcat(buf, hinf->term); - strcat(buf, s2); - yyerror(p, buf); - } - return 0; - } - node *nd = new_str(p, tok(p), toklen(p)); - pylval.nd = nd; - if (unindent && head) { - nspaces = push(nspaces, nint(spaces)); - heredoc_push_indented(p, hinf, nd->cdr, escaped, nspaces, empty && line_head); - } - return tHD_STRING_MID; - } - if (unindent && empty) { - if (c == '\t') - spaces += 8; - else if (ISSPACE(c)) - ++spaces; - else - empty = FALSE; - } - if (c < 0) { - yyerror(p, "unterminated string meets end of file"); - return 0; - } - else if (c == beg) { - nest_level++; - p->lex_strterm->cdr->car = nint(nest_level); - } - else if (c == end) { - nest_level--; - p->lex_strterm->cdr->car = nint(nest_level); - } - else if (c == '\\') { - c = nextc(p); - if (type & STR_FUNC_EXPAND) { - if (c == end || c == beg) { - tokadd(p, c); - } - else if (c == '\n') { - p->lineno++; - p->column = 0; - if (unindent) { - nspaces = push(nspaces, nint(spaces)); - escaped = push(escaped, nint(pos)); - pos--; - empty = TRUE; - spaces = 0; - } - if (type & STR_FUNC_ARRAY) { - tokadd(p, '\n'); - } - } - else if (type & STR_FUNC_REGEXP) { - tokadd(p, '\\'); - tokadd(p, c); - } - else if (c == 'u' && peek(p, '{')) { - /* \u{xxxx xxxx xxxx} form */ - nextc(p); - while (1) { - do c = nextc(p); while (ISSPACE(c)); - if (c == '}') break; - pushback(p, c); - c = read_escape_unicode(p, 8); - if (c < 0) break; - tokadd(p, -c); - } - if (hinf) - hinf->line_head = FALSE; - } - else { - pushback(p, c); - tokadd(p, read_escape(p)); - if (hinf) - hinf->line_head = FALSE; - } - } - else { - if (c != beg && c != end) { - if (c == '\n') { - p->lineno++; - p->column = 0; - } - if (!(c == '\\' || ((type & STR_FUNC_ARRAY) && ISSPACE(c)))) { - tokadd(p, '\\'); - } - } - tokadd(p, c); - } - continue; - } - else if ((c == '#') && (type & STR_FUNC_EXPAND)) { - c = nextc(p); - if (c == '{') { - tokfix(p); - p->lstate = EXPR_BEG; - p->cmd_start = TRUE; - node *nd = new_str(p, tok(p), toklen(p)); - pylval.nd = nd; - if (hinf) { - if (unindent && head) { - nspaces = push(nspaces, nint(spaces)); - heredoc_push_indented(p, hinf, nd->cdr, escaped, nspaces, FALSE); - } - hinf->line_head = FALSE; - return tHD_STRING_PART; - } - return tSTRING_PART; - } - tokadd(p, '#'); - pushback(p, c); - continue; - } - if ((type & STR_FUNC_ARRAY) && ISSPACE(c)) { - if (toklen(p) == 0) { - do { - if (c == '\n') { - p->lineno++; - p->column = 0; - heredoc_treat_nextline(p); - if (p->parsing_heredoc != NULL) { - return tHD_LITERAL_DELIM; - } - } - c = nextc(p); - } while (ISSPACE(c)); - pushback(p, c); - return tLITERAL_DELIM; - } - else { - pushback(p, c); - tokfix(p); - pylval.nd = new_str(p, tok(p), toklen(p)); - return tSTRING_MID; - } - } - if (c == '\n') { - p->lineno++; - p->column = 0; - } - tokadd(p, c); - } - - tokfix(p); - p->lstate = EXPR_ENDARG; - end_strterm(p); - - if (type & STR_FUNC_XQUOTE) { - pylval.nd = new_xstr(p, tok(p), toklen(p)); - return tXSTRING; - } - - if (type & STR_FUNC_REGEXP) { - int f = 0; - int re_opt; - char *s = strndup(tok(p), toklen(p)); - char flags[3]; - char *flag = flags; - char enc = '\0'; - char *encp; - char *dup; - - newtok(p); - while (re_opt = nextc(p), re_opt >= 0 && ISALPHA(re_opt)) { - switch (re_opt) { - case 'i': f |= 1; break; - case 'x': f |= 2; break; - case 'm': f |= 4; break; - case 'u': f |= 16; break; - case 'n': f |= 32; break; - case 'o': break; - default: tokadd(p, re_opt); break; - } - } - pushback(p, re_opt); - if (toklen(p)) { - char msg[128]; - - strcpy(msg, "unknown regexp option"); - tokfix(p); - if (toklen(p) > 1) { - strcat(msg, "s"); - } - strcat(msg, " - "); - strncat(msg, tok(p), sizeof(msg) - strlen(msg) - 1); - yyerror(p, msg); - } - if (f != 0) { - if (f & 1) *flag++ = 'i'; - if (f & 2) *flag++ = 'x'; - if (f & 4) *flag++ = 'm'; - if (f & 16) enc = 'u'; - if (f & 32) enc = 'n'; - } - if (flag > flags) { - dup = strndup(flags, (size_t)(flag - flags)); - } - else { - dup = NULL; - } - if (enc) { - encp = strndup(&enc, 1); - } - else { - encp = NULL; - } - pylval.nd = new_regx(p, s, dup, encp); - - return tREGEXP; - } - pylval.nd = new_str(p, tok(p), toklen(p)); - - return tSTRING; -} - -static int -number_literal_suffix(parser_state *p) -{ - int c, result = 0; - node *list = 0; - int column = p->column; - int mask = NUM_SUFFIX_R|NUM_SUFFIX_I; - - while ((c = nextc(p)) != -1) { - list = push(list, nint(c)); - - if ((mask & NUM_SUFFIX_I) && c == 'i') { - result |= (mask & NUM_SUFFIX_I); - mask &= ~NUM_SUFFIX_I; - /* r after i, rational of complex is disallowed */ - mask &= ~NUM_SUFFIX_R; - continue; - } - if ((mask & NUM_SUFFIX_R) && c == 'r') { - result |= (mask & NUM_SUFFIX_R); - mask &= ~NUM_SUFFIX_R; - continue; - } - if (!ISASCII(c) || ISALPHA(c) || c == '_') { - p->column = column; - if (p->pb) { - p->pb = append(list, p->pb); - } - else { - p->pb = list; - } - return 0; - } - pushback(p, c); - break; - } - return result; -} - -static int -heredoc_identifier(parser_state *p) -{ - int c; - int type = str_heredoc; - mrb_bool indent = FALSE; - mrb_bool squiggly = FALSE; - mrb_bool quote = FALSE; - node *newnode; - parser_heredoc_info *info; - - c = nextc(p); - if (ISSPACE(c) || c == '=') { - pushback(p, c); - return 0; - } - if (c == '-' || c == '~') { - if (c == '-') - indent = TRUE; - if (c == '~') - squiggly = TRUE; - c = nextc(p); - } - if (c == '\'' || c == '"') { - int term = c; - if (c == '\'') - quote = TRUE; - newtok(p); - while ((c = nextc(p)) >= 0 && c != term) { - if (c == '\n') { - c = -1; - break; - } - tokadd(p, c); - } - if (c < 0) { - yyerror(p, "unterminated here document identifier"); - return 0; - } - } - else { - if (c < 0) { - return 0; /* missing here document identifier */ - } - if (! identchar(c)) { - pushback(p, c); - if (indent) pushback(p, '-'); - if (squiggly) pushback(p, '~'); - return 0; - } - newtok(p); - do { - tokadd(p, c); - } while ((c = nextc(p)) >= 0 && identchar(c)); - pushback(p, c); - } - tokfix(p); - newnode = new_heredoc(p); - info = (parser_heredoc_info*)newnode->cdr; - info->term = strndup(tok(p), toklen(p)); - info->term_len = toklen(p); - if (! quote) - type |= STR_FUNC_EXPAND; - info->type = (string_type)type; - info->allow_indent = indent || squiggly; - info->remove_indent = squiggly; - info->indent = ~0U; - info->indented = NULL; - info->line_head = TRUE; - info->doc = NULL; - p->heredocs_from_nextline = push(p->heredocs_from_nextline, newnode); - p->lstate = EXPR_END; - - pylval.nd = newnode; - return tHEREDOC_BEG; -} - -static int -arg_ambiguous(parser_state *p) -{ - yywarning(p, "ambiguous first argument; put parentheses or even spaces"); - return 1; -} - -#include "lex.def" - -static int -parser_yylex(parser_state *p) -{ - int32_t c; - int nlines = 1; - int space_seen = 0; - int cmd_state; - enum mrb_lex_state_enum last_state; - int token_column; - - if (p->lex_strterm) { - if (is_strterm_type(p, STR_FUNC_HEREDOC)) { - if (p->parsing_heredoc != NULL) - return parse_string(p); - } - else - return parse_string(p); - } - cmd_state = p->cmd_start; - p->cmd_start = FALSE; - retry: - last_state = p->lstate; - switch (c = nextc(p)) { - case '\004': /* ^D */ - case '\032': /* ^Z */ - case '\0': /* NUL */ - case -1: /* end of script. */ - if (p->heredocs_from_nextline) - goto maybe_heredoc; - return 0; - - /* white spaces */ - case ' ': case '\t': case '\f': case '\r': - case '\13': /* '\v' */ - space_seen = 1; - goto retry; - - case '#': /* it's a comment */ - skip(p, '\n'); - /* fall through */ - case -2: /* end of a file */ - case '\n': - maybe_heredoc: - heredoc_treat_nextline(p); - p->column = 0; - switch (p->lstate) { - case EXPR_BEG: - case EXPR_FNAME: - case EXPR_DOT: - case EXPR_CLASS: - case EXPR_VALUE: - p->lineno++; - if (p->parsing_heredoc != NULL) { - if (p->lex_strterm) { - return parse_string(p); - } - } - goto retry; - default: - break; - } - if (p->parsing_heredoc != NULL) { - pylval.num = nlines; - return '\n'; - } - while ((c = nextc(p))) { - switch (c) { - case ' ': case '\t': case '\f': case '\r': - case '\13': /* '\v' */ - space_seen = 1; - break; - case '#': /* comment as a whitespace */ - skip(p, '\n'); - nlines++; - break; - case '.': - if (!peek(p, '.')) { - pushback(p, '.'); - p->lineno+=nlines; nlines=1; - goto retry; - } - pushback(p, c); - goto normal_newline; - case '&': - if (peek(p, '.')) { - pushback(p, '&'); - p->lineno+=nlines; nlines=1; - goto retry; - } - pushback(p, c); - goto normal_newline; - case -1: /* EOF */ - case -2: /* end of a file */ - goto normal_newline; - default: - pushback(p, c); - goto normal_newline; - } - } - normal_newline: - p->cmd_start = TRUE; - p->lstate = EXPR_BEG; - pylval.num = nlines; - return '\n'; - - case '*': - if ((c = nextc(p)) == '*') { - if ((c = nextc(p)) == '=') { - pylval.id = intern_op(pow); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - pushback(p, c); - if (IS_SPCARG(c)) { - yywarning(p, "'**' interpreted as argument prefix"); - c = tDSTAR; - } - else if (IS_BEG()) { - c = tDSTAR; - } - else { - c = tPOW; /* "**", "argument prefix" */ - } - } - else { - if (c == '=') { - pylval.id = intern_op(mul); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - pushback(p, c); - if (IS_SPCARG(c)) { - yywarning(p, "'*' interpreted as argument prefix"); - c = tSTAR; - } - else if (IS_BEG()) { - c = tSTAR; - } - else { - c = '*'; - } - } - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - return c; - - case '!': - c = nextc(p); - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - if (c == '@') { - return '!'; - } - } - else { - p->lstate = EXPR_BEG; - } - if (c == '=') { - return tNEQ; - } - if (c == '~') { - return tNMATCH; - } - pushback(p, c); - return '!'; - - case '=': - if (p->column == 1) { - static const char begin[] = "begin"; - static const char end[] = "\n=end"; - if (peeks(p, begin)) { - c = peekc_n(p, sizeof(begin)-1); - if (c < 0 || ISSPACE(c)) { - do { - if (!skips(p, end)) { - yyerror(p, "embedded document meets end of file"); - return 0; - } - c = nextc(p); - } while (!(c < 0 || ISSPACE(c))); - if (c != '\n') skip(p, '\n'); - p->lineno+=nlines; nlines=1; - p->column = 0; - goto retry; - } - } - } - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - if ((c = nextc(p)) == '=') { - if ((c = nextc(p)) == '=') { - return tEQQ; - } - pushback(p, c); - return tEQ; - } - if (c == '~') { - return tMATCH; - } - else if (c == '>') { - return tASSOC; - } - pushback(p, c); - return '='; - - case '<': - c = nextc(p); - if (c == '<' && - p->lstate != EXPR_DOT && - p->lstate != EXPR_CLASS && - !IS_END() && - (!IS_ARG() || space_seen)) { - int token = heredoc_identifier(p); - if (token) - return token; - } - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - if (p->lstate == EXPR_CLASS) { - p->cmd_start = TRUE; - } - } - if (c == '=') { - if ((c = nextc(p)) == '>') { - return tCMP; - } - pushback(p, c); - return tLEQ; - } - if (c == '<') { - if ((c = nextc(p)) == '=') { - pylval.id = intern_op(lshift); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - pushback(p, c); - return tLSHFT; - } - pushback(p, c); - return '<'; - - case '>': - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - if ((c = nextc(p)) == '=') { - return tGEQ; - } - if (c == '>') { - if ((c = nextc(p)) == '=') { - pylval.id = intern_op(rshift); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - pushback(p, c); - return tRSHFT; - } - pushback(p, c); - return '>'; - - case '"': - p->lex_strterm = new_strterm(p, str_dquote, '"', 0); - return tSTRING_BEG; - - case '\'': - p->lex_strterm = new_strterm(p, str_squote, '\'', 0); - return parse_string(p); - - case '`': - if (p->lstate == EXPR_FNAME) { - p->lstate = EXPR_ENDFN; - return '`'; - } - if (p->lstate == EXPR_DOT) { - if (cmd_state) - p->lstate = EXPR_CMDARG; - else - p->lstate = EXPR_ARG; - return '`'; - } - p->lex_strterm = new_strterm(p, str_xquote, '`', 0); - return tXSTRING_BEG; - - case '?': - if (IS_END()) { - p->lstate = EXPR_VALUE; - return '?'; - } - c = nextc(p); - if (c < 0) { - yyerror(p, "incomplete character syntax"); - return 0; - } - if (ISSPACE(c)) { - if (!IS_ARG()) { - int c2; - switch (c) { - case ' ': - c2 = 's'; - break; - case '\n': - c2 = 'n'; - break; - case '\t': - c2 = 't'; - break; - case '\v': - c2 = 'v'; - break; - case '\r': - c2 = 'r'; - break; - case '\f': - c2 = 'f'; - break; - default: - c2 = 0; - break; - } - if (c2) { - char buf[256]; - char cc[] = { (char)c2, '\0' }; - - strcpy(buf, "invalid character syntax; use ?\\"); - strncat(buf, cc, 2); - yyerror(p, buf); - } - } - ternary: - pushback(p, c); - p->lstate = EXPR_VALUE; - return '?'; - } - newtok(p); - /* need support UTF-8 if configured */ - if ((ISALNUM(c) || c == '_')) { - int c2 = nextc(p); - pushback(p, c2); - if ((ISALNUM(c2) || c2 == '_')) { - goto ternary; - } - } - if (c == '\\') { - c = read_escape(p); - tokadd(p, c); - } - else { - tokadd(p, c); - } - tokfix(p); - pylval.nd = new_str(p, tok(p), toklen(p)); - p->lstate = EXPR_ENDARG; - return tCHAR; - - case '&': - if ((c = nextc(p)) == '&') { - p->lstate = EXPR_BEG; - if ((c = nextc(p)) == '=') { - pylval.id = intern_op(andand); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - pushback(p, c); - return tANDOP; - } - else if (c == '.') { - p->lstate = EXPR_DOT; - return tANDDOT; - } - else if (c == '=') { - pylval.id = intern_op(and); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - pushback(p, c); - if (IS_SPCARG(c)) { - yywarning(p, "'&' interpreted as argument prefix"); - c = tAMPER; - } - else if (IS_BEG()) { - c = tAMPER; - } - else { - c = '&'; - } - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - return c; - - case '|': - if ((c = nextc(p)) == '|') { - p->lstate = EXPR_BEG; - if ((c = nextc(p)) == '=') { - pylval.id = intern_op(oror); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - pushback(p, c); - return tOROP; - } - if (c == '=') { - pylval.id = intern_op(or); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - pushback(p, c); - return '|'; - - case '+': - c = nextc(p); - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - if (c == '@') { - return tUPLUS; - } - pushback(p, c); - return '+'; - } - if (c == '=') { - pylval.id = intern_op(add); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) { - p->lstate = EXPR_BEG; - pushback(p, c); - if (c >= 0 && ISDIGIT(c)) { - c = '+'; - goto start_num; - } - return tUPLUS; - } - p->lstate = EXPR_BEG; - pushback(p, c); - return '+'; - - case '-': - c = nextc(p); - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - if (c == '@') { - return tUMINUS; - } - pushback(p, c); - return '-'; - } - if (c == '=') { - pylval.id = intern_op(sub); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - if (c == '>') { - p->lstate = EXPR_ENDFN; - return tLAMBDA; - } - if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) { - p->lstate = EXPR_BEG; - pushback(p, c); - if (c >= 0 && ISDIGIT(c)) { - return tUMINUS_NUM; - } - return tUMINUS; - } - p->lstate = EXPR_BEG; - pushback(p, c); - return '-'; - - case '.': - { - int is_beg = IS_BEG(); - p->lstate = EXPR_BEG; - if ((c = nextc(p)) == '.') { - if ((c = nextc(p)) == '.') { - return is_beg ? tBDOT3 : tDOT3; - } - pushback(p, c); - return is_beg ? tBDOT2 : tDOT2; - } - pushback(p, c); - if (c >= 0 && ISDIGIT(c)) { - yyerror(p, "no .<digit> floating literal anymore; put 0 before dot"); - } - p->lstate = EXPR_DOT; - return '.'; - } - - start_num: - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - { - int is_float, seen_point, seen_e, nondigit; - int suffix = 0; - - is_float = seen_point = seen_e = nondigit = 0; - p->lstate = EXPR_ENDARG; - newtok(p); - if (c == '-' || c == '+') { - tokadd(p, c); - c = nextc(p); - } - if (c == '0') { -#define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0) - int start = toklen(p); - c = nextc(p); - if (c == 'x' || c == 'X') { - /* hexadecimal */ - c = nextc(p); - if (c >= 0 && ISXDIGIT(c)) { - do { - if (c == '_') { - if (nondigit) break; - nondigit = c; - continue; - } - if (!ISXDIGIT(c)) break; - nondigit = 0; - tokadd(p, tolower(c)); - } while ((c = nextc(p)) >= 0); - } - pushback(p, c); - tokfix(p); - if (toklen(p) == start) { - no_digits(); - } - else if (nondigit) goto trailing_uc; - suffix = number_literal_suffix(p); - pylval.nd = new_int(p, tok(p), 16, suffix); - return tINTEGER; - } - if (c == 'b' || c == 'B') { - /* binary */ - c = nextc(p); - if (c == '0' || c == '1') { - do { - if (c == '_') { - if (nondigit) break; - nondigit = c; - continue; - } - if (c != '0' && c != '1') break; - nondigit = 0; - tokadd(p, c); - } while ((c = nextc(p)) >= 0); - } - pushback(p, c); - tokfix(p); - if (toklen(p) == start) { - no_digits(); - } - else if (nondigit) goto trailing_uc; - suffix = number_literal_suffix(p); - pylval.nd = new_int(p, tok(p), 2, suffix); - return tINTEGER; - } - if (c == 'd' || c == 'D') { - /* decimal */ - c = nextc(p); - if (c >= 0 && ISDIGIT(c)) { - do { - if (c == '_') { - if (nondigit) break; - nondigit = c; - continue; - } - if (!ISDIGIT(c)) break; - nondigit = 0; - tokadd(p, c); - } while ((c = nextc(p)) >= 0); - } - pushback(p, c); - tokfix(p); - if (toklen(p) == start) { - no_digits(); - } - else if (nondigit) goto trailing_uc; - suffix = number_literal_suffix(p); - pylval.nd = new_int(p, tok(p), 10, suffix); - return tINTEGER; - } - if (c == '_') { - /* 0_0 */ - goto octal_number; - } - if (c == 'o' || c == 'O') { - /* prefixed octal */ - c = nextc(p); - if (c < 0 || c == '_' || !ISDIGIT(c)) { - no_digits(); - } - } - if (c >= '0' && c <= '7') { - /* octal */ - octal_number: - do { - if (c == '_') { - if (nondigit) break; - nondigit = c; - continue; - } - if (c < '0' || c > '9') break; - if (c > '7') goto invalid_octal; - nondigit = 0; - tokadd(p, c); - } while ((c = nextc(p)) >= 0); - - if (toklen(p) > start) { - pushback(p, c); - tokfix(p); - if (nondigit) goto trailing_uc; - suffix = number_literal_suffix(p); - pylval.nd = new_int(p, tok(p), 8, suffix); - return tINTEGER; - } - if (nondigit) { - pushback(p, c); - goto trailing_uc; - } - } - if (c > '7' && c <= '9') { - invalid_octal: - yyerror(p, "Invalid octal digit"); - } - else if (c == '.' || c == 'e' || c == 'E') { - tokadd(p, '0'); - } - else { - pushback(p, c); - suffix = number_literal_suffix(p); - pylval.nd = new_int(p, "0", 10, suffix); - return tINTEGER; - } - } - - for (;;) { - switch (c) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - nondigit = 0; - tokadd(p, c); - break; - - case '.': - if (nondigit) goto trailing_uc; - if (seen_point || seen_e) { - goto decode_num; - } - else { - int c0 = nextc(p); - if (c0 < 0 || !ISDIGIT(c0)) { - pushback(p, c0); - goto decode_num; - } - c = c0; - } - tokadd(p, '.'); - tokadd(p, c); - is_float++; - seen_point++; - nondigit = 0; - break; - - case 'e': - case 'E': - if (nondigit) { - pushback(p, c); - c = nondigit; - goto decode_num; - } - if (seen_e) { - goto decode_num; - } - tokadd(p, c); - seen_e++; - is_float++; - nondigit = c; - c = nextc(p); - if (c != '-' && c != '+') continue; - tokadd(p, c); - nondigit = c; - break; - - case '_': /* '_' in number just ignored */ - if (nondigit) goto decode_num; - nondigit = c; - break; - - default: - goto decode_num; - } - c = nextc(p); - } - - decode_num: - pushback(p, c); - if (nondigit) { - trailing_uc: - yyerror_c(p, "trailing non digit in number: ", (char)nondigit); - } - tokfix(p); - if (is_float) { -#ifdef MRB_NO_FLOAT - yywarning_s(p, "floating-point numbers are not supported", tok(p)); - pylval.nd = new_int(p, "0", 10, 0); - return tINTEGER; -#else - double d; - char *endp; - - errno = 0; - d = mrb_float_read(tok(p), &endp); - if (d == 0 && endp == tok(p)) { - yywarning_s(p, "corrupted float value", tok(p)); - } - else if (errno == ERANGE) { - yywarning_s(p, "float out of range", tok(p)); - errno = 0; - } - suffix = number_literal_suffix(p); - if (seen_e && (suffix & NUM_SUFFIX_R)) { - pushback(p, 'r'); - suffix &= ~NUM_SUFFIX_R; - } - pylval.nd = new_float(p, tok(p), suffix); - return tFLOAT; -#endif - } - suffix = number_literal_suffix(p); - pylval.nd = new_int(p, tok(p), 10, suffix); - return tINTEGER; - } - - case ')': - case ']': - p->paren_nest--; - /* fall through */ - case '}': - COND_LEXPOP(); - CMDARG_LEXPOP(); - if (c == ')') - p->lstate = EXPR_ENDFN; - else - p->lstate = EXPR_END; - return c; - - case ':': - c = nextc(p); - if (c == ':') { - if (IS_BEG() || p->lstate == EXPR_CLASS || IS_SPCARG(-1)) { - p->lstate = EXPR_BEG; - return tCOLON3; - } - p->lstate = EXPR_DOT; - return tCOLON2; - } - if (!space_seen && IS_END()) { - pushback(p, c); - p->lstate = EXPR_BEG; - return tLABEL_TAG; - } - if (IS_END() || ISSPACE(c) || c == '#') { - pushback(p, c); - p->lstate = EXPR_BEG; - return ':'; - } - pushback(p, c); - p->lstate = EXPR_FNAME; - return tSYMBEG; - - case '/': - if (IS_BEG()) { - p->lex_strterm = new_strterm(p, str_regexp, '/', 0); - return tREGEXP_BEG; - } - if ((c = nextc(p)) == '=') { - pylval.id = intern_op(div); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - pushback(p, c); - if (IS_SPCARG(c)) { - p->lex_strterm = new_strterm(p, str_regexp, '/', 0); - return tREGEXP_BEG; - } - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - return '/'; - - case '^': - if ((c = nextc(p)) == '=') { - pylval.id = intern_op(xor); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - pushback(p, c); - return '^'; - - case ';': - p->lstate = EXPR_BEG; - return ';'; - - case ',': - p->lstate = EXPR_BEG; - return ','; - - case '~': - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - if ((c = nextc(p)) != '@') { - pushback(p, c); - } - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - return '~'; - - case '(': - if (IS_BEG()) { - c = tLPAREN; - } - else if (IS_SPCARG(-1)) { - c = tLPAREN_ARG; - } - else if (p->lstate == EXPR_END && space_seen) { - c = tLPAREN_ARG; - } - p->paren_nest++; - COND_PUSH(0); - CMDARG_PUSH(0); - p->lstate = EXPR_BEG; - return c; - - case '[': - p->paren_nest++; - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - p->paren_nest--; - if ((c = nextc(p)) == ']') { - if ((c = nextc(p)) == '=') { - return tASET; - } - pushback(p, c); - return tAREF; - } - pushback(p, c); - return '['; - } - else if (IS_BEG()) { - c = tLBRACK; - } - else if (IS_ARG() && space_seen) { - c = tLBRACK; - } - p->lstate = EXPR_BEG; - COND_PUSH(0); - CMDARG_PUSH(0); - return c; - - case '{': - if (p->lpar_beg && p->lpar_beg == p->paren_nest) { - p->lstate = EXPR_BEG; - p->lpar_beg = 0; - p->paren_nest--; - COND_PUSH(0); - CMDARG_PUSH(0); - return tLAMBEG; - } - if (IS_ARG() || p->lstate == EXPR_END || p->lstate == EXPR_ENDFN) - c = '{'; /* block (primary) */ - else if (p->lstate == EXPR_ENDARG) - c = tLBRACE_ARG; /* block (expr) */ - else - c = tLBRACE; /* hash */ - COND_PUSH(0); - CMDARG_PUSH(0); - p->lstate = EXPR_BEG; - return c; - - case '\\': - c = nextc(p); - if (c == '\n') { - p->lineno+=nlines; nlines=1; - p->column = 0; - space_seen = 1; - goto retry; /* skip \\n */ - } - pushback(p, c); - return '\\'; - - case '%': - if (IS_BEG()) { - int term; - int paren; - - c = nextc(p); - quotation: - if (c < 0 || !ISALNUM(c)) { - term = c; - c = 'Q'; - } - else { - term = nextc(p); - if (ISALNUM(term)) { - yyerror(p, "unknown type of %string"); - return 0; - } - } - if (c < 0 || term < 0) { - yyerror(p, "unterminated quoted string meets end of file"); - return 0; - } - paren = term; - if (term == '(') term = ')'; - else if (term == '[') term = ']'; - else if (term == '{') term = '}'; - else if (term == '<') term = '>'; - else paren = 0; - - switch (c) { - case 'Q': - p->lex_strterm = new_strterm(p, str_dquote, term, paren); - return tSTRING_BEG; - - case 'q': - p->lex_strterm = new_strterm(p, str_squote, term, paren); - return parse_string(p); - - case 'W': - p->lex_strterm = new_strterm(p, str_dword, term, paren); - return tWORDS_BEG; - - case 'w': - p->lex_strterm = new_strterm(p, str_sword, term, paren); - return tWORDS_BEG; - - case 'x': - p->lex_strterm = new_strterm(p, str_xquote, term, paren); - return tXSTRING_BEG; - - case 'r': - p->lex_strterm = new_strterm(p, str_regexp, term, paren); - return tREGEXP_BEG; - - case 's': - p->lex_strterm = new_strterm(p, str_ssym, term, paren); - return tSYMBEG; - - case 'I': - p->lex_strterm = new_strterm(p, str_dsymbols, term, paren); - return tSYMBOLS_BEG; - - case 'i': - p->lex_strterm = new_strterm(p, str_ssymbols, term, paren); - return tSYMBOLS_BEG; - - default: - yyerror(p, "unknown type of %string"); - return 0; - } - } - if ((c = nextc(p)) == '=') { - pylval.id = intern_op(mod); - p->lstate = EXPR_BEG; - return tOP_ASGN; - } - if (IS_SPCARG(c)) { - goto quotation; - } - if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { - p->lstate = EXPR_ARG; - } - else { - p->lstate = EXPR_BEG; - } - pushback(p, c); - return '%'; - - case '$': - p->lstate = EXPR_END; - token_column = newtok(p); - c = nextc(p); - if (c < 0) { - yyerror(p, "incomplete global variable syntax"); - return 0; - } - switch (c) { - case '_': /* $_: last read line string */ - c = nextc(p); - if (c >= 0 && identchar(c)) { /* if there is more after _ it is a variable */ - tokadd(p, '$'); - tokadd(p, c); - break; - } - pushback(p, c); - c = '_'; - /* fall through */ - case '~': /* $~: match-data */ - case '*': /* $*: argv */ - case '$': /* $$: pid */ - case '?': /* $?: last status */ - case '!': /* $!: error string */ - case '@': /* $@: error position */ - case '/': /* $/: input record separator */ - case '\\': /* $\: output record separator */ - case ';': /* $;: field separator */ - case ',': /* $,: output field separator */ - case '.': /* $.: last read line number */ - case '=': /* $=: ignorecase */ - case ':': /* $:: load path */ - case '<': /* $<: reading filename */ - case '>': /* $>: default output handle */ - case '\"': /* $": already loaded files */ - tokadd(p, '$'); - tokadd(p, c); - tokfix(p); - pylval.id = intern(tok(p), toklen(p)); - return tGVAR; - - case '-': - tokadd(p, '$'); - tokadd(p, c); - c = nextc(p); - pushback(p, c); - gvar: - tokfix(p); - pylval.id = intern(tok(p), toklen(p)); - return tGVAR; - - case '&': /* $&: last match */ - case '`': /* $`: string before last match */ - case '\'': /* $': string after last match */ - case '+': /* $+: string matches last pattern */ - if (last_state == EXPR_FNAME) { - tokadd(p, '$'); - tokadd(p, c); - goto gvar; - } - pylval.nd = new_back_ref(p, c); - return tBACK_REF; - - case '1': case '2': case '3': - case '4': case '5': case '6': - case '7': case '8': case '9': - do { - tokadd(p, c); - c = nextc(p); - } while (c >= 0 && ISDIGIT(c)); - pushback(p, c); - if (last_state == EXPR_FNAME) goto gvar; - tokfix(p); - { - mrb_int n = mrb_int_read(tok(p), NULL, NULL); - if (n > INT32_MAX) { - yywarning(p, "capture group index too big; always nil"); - return keyword_nil; - } - pylval.nd = new_nth_ref(p, (int)n); - } - return tNTH_REF; - - default: - if (!identchar(c)) { - pushback(p, c); - return '$'; - } - /* fall through */ - case '0': - tokadd(p, '$'); - } - break; - - case '@': - c = nextc(p); - token_column = newtok(p); - tokadd(p, '@'); - if (c == '@') { - tokadd(p, '@'); - c = nextc(p); - } - if (c < 0) { - if (p->tidx == 1) { - yyerror(p, "incomplete instance variable syntax"); - } - else { - yyerror(p, "incomplete class variable syntax"); - } - return 0; - } - else if (ISDIGIT(c)) { - if (p->tidx == 1) { - yyerror_c(p, "wrong instance variable name: @", c); - } - else { - yyerror_c(p, "wrong class variable name: @@", c); - } - return 0; - } - if (!identchar(c)) { - pushback(p, c); - return '@'; - } - break; - - case '_': - token_column = newtok(p); - break; - - default: - if (!identchar(c)) { - char buf[36]; - const char s[] = "Invalid char in expression: 0x"; - const char hexdigits[] = "0123456789ABCDEF"; - - strcpy(buf, s); - buf[sizeof(s)-1] = hexdigits[(c & 0xf0) >> 4]; - buf[sizeof(s)] = hexdigits[(c & 0x0f)]; - buf[sizeof(s)+1] = 0; - yyerror(p, buf); - goto retry; - } - - token_column = newtok(p); - break; - } - - do { - tokadd(p, c); - c = nextc(p); - if (c < 0) break; - } while (identchar(c)); - if (token_column == 0 && toklen(p) == 7 && (c < 0 || c == '\n') && - strncmp(tok(p), "__END__", toklen(p)) == 0) - return -1; - - switch (tok(p)[0]) { - case '@': case '$': - pushback(p, c); - break; - default: - if ((c == '!' || c == '?') && !peek(p, '=')) { - tokadd(p, c); - } - else { - pushback(p, c); - } - } - tokfix(p); - { - int result = 0; - - switch (tok(p)[0]) { - case '$': - p->lstate = EXPR_END; - result = tGVAR; - break; - case '@': - p->lstate = EXPR_END; - if (tok(p)[1] == '@') - result = tCVAR; - else - result = tIVAR; - break; - - case '_': - if (p->lstate != EXPR_FNAME && toklen(p) == 2 && ISDIGIT(tok(p)[1]) && p->nvars) { - int n = tok(p)[1] - '0'; - int nvar; - - if (n > 0) { - node *nvars = p->nvars->cdr; - - while (nvars) { - nvar = intn(nvars->car); - if (nvar == -2) break; /* top of the scope */ - if (nvar > 0) { - yywarning(p, "numbered parameter used in outer block"); - break; - } - nvars->car = nint(-1); - nvars = nvars->cdr; - } - nvar = intn(p->nvars->car); - if (nvar == -1) { - yywarning(p, "numbered parameter used in inner block"); - } - if (nvar >= -1) { - pylval.num = n; - p->lstate = EXPR_END; - return tNUMPARAM; - } - else { - yywarning(p, "identifier for numbered parameter; consider another name"); - } - } - } - /* fall through */ - default: - if (toklast(p) == '!' || toklast(p) == '?') { - result = tFID; - } - else { - if (p->lstate == EXPR_FNAME) { - if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') && - (!peek(p, '=') || (peek_n(p, '>', 1)))) { - result = tIDENTIFIER; - tokadd(p, c); - tokfix(p); - } - else { - pushback(p, c); - } - if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') && - (!peek(p, '=') || (peek_n(p, '>', 1)))) { - result = tIDENTIFIER; - tokadd(p, c); - tokfix(p); - } - else { - pushback(p, c); - } - } - if (result == 0 && ISUPPER(tok(p)[0])) { - result = tCONSTANT; - } - else { - result = tIDENTIFIER; - } - } - - if (IS_LABEL_POSSIBLE()) { - if (IS_LABEL_SUFFIX(0)) { - p->lstate = EXPR_END; - tokfix(p); - pylval.id = intern(tok(p), toklen(p)); - return tIDENTIFIER; - } - } - if (p->lstate != EXPR_DOT) { - const struct kwtable *kw; - - /* See if it is a reserved word. */ - kw = mrb_reserved_word(tok(p), toklen(p)); - if (kw) { - enum mrb_lex_state_enum state = p->lstate; - pylval.num = p->lineno; - p->lstate = kw->state; - if (state == EXPR_FNAME) { - pylval.id = intern_cstr(kw->name); - return kw->id[0]; - } - if (p->lstate == EXPR_BEG) { - p->cmd_start = TRUE; - } - if (kw->id[0] == keyword_do) { - if (p->lpar_beg && p->lpar_beg == p->paren_nest) { - p->lpar_beg = 0; - p->paren_nest--; - return keyword_do_LAMBDA; - } - if (COND_P()) return keyword_do_cond; - if (CMDARG_P() && state != EXPR_CMDARG) - return keyword_do_block; - if (state == EXPR_ENDARG || state == EXPR_BEG) - return keyword_do_block; - return keyword_do; - } - if (state == EXPR_BEG || state == EXPR_VALUE) - return kw->id[0]; - else { - if (kw->id[0] != kw->id[1]) - p->lstate = EXPR_BEG; - return kw->id[1]; - } - } - } - - if (IS_BEG() || p->lstate == EXPR_DOT || IS_ARG()) { - if (cmd_state) { - p->lstate = EXPR_CMDARG; - } - else { - p->lstate = EXPR_ARG; - } - } - else if (p->lstate == EXPR_FNAME) { - p->lstate = EXPR_ENDFN; - } - else { - p->lstate = EXPR_END; - } - } - { - mrb_sym ident = intern(tok(p), toklen(p)); - - pylval.id = ident; - if (last_state != EXPR_DOT && ISLOWER(tok(p)[0]) && local_var_p(p, ident)) { - p->lstate = EXPR_END; - } - } - return result; - } -} - -static int -yylex(void *lval, parser_state *p) -{ - p->ylval = lval; - return parser_yylex(p); -} - -static void -parser_init_cxt(parser_state *p, mrbc_context *cxt) -{ - if (!cxt) return; - if (cxt->filename) mrb_parser_set_filename(p, cxt->filename); - if (cxt->lineno) p->lineno = cxt->lineno; - if (cxt->syms) { - int i; - - p->locals = cons(0,0); - for (i=0; i<cxt->slen; i++) { - local_add_f(p, cxt->syms[i]); - } - } - p->capture_errors = cxt->capture_errors; - p->no_optimize = cxt->no_optimize; - p->upper = cxt->upper; - if (cxt->partial_hook) { - p->cxt = cxt; - } -} - -static void -parser_update_cxt(parser_state *p, mrbc_context *cxt) -{ - node *n, *n0; - int i = 0; - - if (!cxt) return; - if (intn(p->tree->car) != NODE_SCOPE) return; - n0 = n = p->tree->cdr->car; - while (n) { - i++; - n = n->cdr; - } - cxt->syms = (mrb_sym *)mrb_realloc(p->mrb, cxt->syms, i*sizeof(mrb_sym)); - cxt->slen = i; - for (i=0, n=n0; n; i++,n=n->cdr) { - cxt->syms[i] = sym(n->car); - } -} - -void mrb_codedump_all(mrb_state*, struct RProc*); -void mrb_parser_dump(mrb_state *mrb, node *tree, int offset); - -MRB_API void -mrb_parser_parse(parser_state *p, mrbc_context *c) -{ - struct mrb_jmpbuf buf1; - p->jmp = &buf1; - - MRB_TRY(p->jmp) { - int n = 1; - - p->cmd_start = TRUE; - p->in_def = p->in_single = 0; - p->nerr = p->nwarn = 0; - p->lex_strterm = NULL; - - parser_init_cxt(p, c); - - if (p->mrb->jmp) { - n = yyparse(p); - } - else { - struct mrb_jmpbuf buf2; - - p->mrb->jmp = &buf2; - MRB_TRY(p->mrb->jmp) { - n = yyparse(p); - } - MRB_CATCH(p->mrb->jmp) { - p->nerr++; - } - MRB_END_EXC(p->mrb->jmp); - p->mrb->jmp = 0; - } - if (n != 0 || p->nerr > 0) { - p->tree = 0; - return; - } - if (!p->tree) { - p->tree = new_nil(p); - } - parser_update_cxt(p, c); - if (c && c->dump_result) { - mrb_parser_dump(p->mrb, p->tree, 0); - } - } - MRB_CATCH(p->jmp) { - yyerror(p, "memory allocation error"); - p->nerr++; - p->tree = 0; - return; - } - MRB_END_EXC(p->jmp); -} - -MRB_API parser_state* -mrb_parser_new(mrb_state *mrb) -{ - mrb_pool *pool; - parser_state *p; - static const parser_state parser_state_zero = { 0 }; - - pool = mrb_pool_open(mrb); - if (!pool) return NULL; - p = (parser_state *)mrb_pool_alloc(pool, sizeof(parser_state)); - if (!p) return NULL; - - *p = parser_state_zero; - p->mrb = mrb; - p->pool = pool; - - p->s = p->send = NULL; -#ifndef MRB_NO_STDIO - p->f = NULL; -#endif - - p->cmd_start = TRUE; - p->in_def = p->in_single = 0; - - p->capture_errors = FALSE; - p->lineno = 1; - p->column = 0; -#if defined(PARSER_TEST) || defined(PARSER_DEBUG) - yydebug = 1; -#endif - p->tsiz = MRB_PARSER_TOKBUF_SIZE; - p->tokbuf = p->buf; - - p->lex_strterm = NULL; - p->all_heredocs = p->parsing_heredoc = NULL; - p->lex_strterm_before_heredoc = NULL; - - p->current_filename_index = -1; - p->filename_table = NULL; - p->filename_table_length = 0; - - return p; -} - -MRB_API void -mrb_parser_free(parser_state *p) { - if (p->tokbuf != p->buf) { - mrb_free(p->mrb, p->tokbuf); - } - mrb_pool_close(p->pool); -} - -MRB_API mrbc_context* -mrbc_context_new(mrb_state *mrb) -{ - return (mrbc_context *)mrb_calloc(mrb, 1, sizeof(mrbc_context)); -} - -MRB_API void -mrbc_context_free(mrb_state *mrb, mrbc_context *cxt) -{ - mrb_free(mrb, cxt->filename); - mrb_free(mrb, cxt->syms); - mrb_free(mrb, cxt); -} - -MRB_API const char* -mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s) -{ - if (s) { - size_t len = strlen(s); - char *p = (char *)mrb_malloc(mrb, len + 1); - - memcpy(p, s, len + 1); - if (c->filename) { - mrb_free(mrb, c->filename); - } - c->filename = p; - } - return c->filename; -} - -MRB_API void -mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*func)(struct mrb_parser_state*), void *data) -{ - c->partial_hook = func; - c->partial_data = data; -} - -MRB_API void -mrbc_cleanup_local_variables(mrb_state *mrb, mrbc_context *c) -{ - if (c->syms) { - mrb_free(mrb, c->syms); - c->syms = NULL; - c->slen = 0; - } -} - -MRB_API void -mrb_parser_set_filename(struct mrb_parser_state *p, const char *f) -{ - mrb_sym sym; - uint16_t i; - mrb_sym* new_table; - - sym = mrb_intern_cstr(p->mrb, f); - p->filename_sym = sym; - p->lineno = (p->filename_table_length > 0)? 0 : 1; - - for (i = 0; i < p->filename_table_length; ++i) { - if (p->filename_table[i] == sym) { - p->current_filename_index = i; - return; - } - } - - if (p->filename_table_length == UINT16_MAX) { - yyerror(p, "too many files to compile"); - return; - } - p->current_filename_index = p->filename_table_length++; - - new_table = (mrb_sym*)parser_palloc(p, sizeof(mrb_sym) * p->filename_table_length); - if (p->filename_table) { - memmove(new_table, p->filename_table, sizeof(mrb_sym) * p->current_filename_index); - } - p->filename_table = new_table; - p->filename_table[p->filename_table_length - 1] = sym; -} - -MRB_API mrb_sym -mrb_parser_get_filename(struct mrb_parser_state* p, uint16_t idx) { - if (idx >= p->filename_table_length) return 0; - else { - return p->filename_table[idx]; - } -} - -#ifndef MRB_NO_STDIO -static struct mrb_parser_state * -mrb_parse_file_continue(mrb_state *mrb, FILE *f, const void *prebuf, size_t prebufsize, mrbc_context *c) -{ - parser_state *p; - - p = mrb_parser_new(mrb); - if (!p) return NULL; - if (prebuf) { - p->s = (const char *)prebuf; - p->send = (const char *)prebuf + prebufsize; - } - else { - p->s = p->send = NULL; - } - p->f = f; - - mrb_parser_parse(p, c); - return p; -} - -MRB_API parser_state* -mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c) -{ - return mrb_parse_file_continue(mrb, f, NULL, 0, c); -} -#endif - -MRB_API parser_state* -mrb_parse_nstring(mrb_state *mrb, const char *s, size_t len, mrbc_context *c) -{ - parser_state *p; - - p = mrb_parser_new(mrb); - if (!p) return NULL; - p->s = s; - p->send = s + len; - - mrb_parser_parse(p, c); - return p; -} - -MRB_API parser_state* -mrb_parse_string(mrb_state *mrb, const char *s, mrbc_context *c) -{ - return mrb_parse_nstring(mrb, s, strlen(s), c); -} - -MRB_API mrb_value -mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c) -{ - struct RClass *target = mrb->object_class; - struct RProc *proc; - mrb_value v; - mrb_int keep = 0; - - if (!p) { - return mrb_undef_value(); - } - if (!p->tree || p->nerr) { - if (c) c->parser_nerr = p->nerr; - if (p->capture_errors) { - char buf[256]; - - strcpy(buf, "line "); - dump_int(p->error_buffer[0].lineno, buf+5); - strcat(buf, ": "); - strncat(buf, p->error_buffer[0].message, sizeof(buf) - strlen(buf) - 1); - mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SYNTAX_ERROR, buf, strlen(buf))); - mrb_parser_free(p); - return mrb_undef_value(); - } - else { - if (mrb->exc == NULL) { - mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SYNTAX_ERROR, "syntax error")); - } - mrb_parser_free(p); - return mrb_undef_value(); - } - } - proc = mrb_generate_code(mrb, p); - mrb_parser_free(p); - if (proc == NULL) { - if (mrb->exc == NULL) { - mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SCRIPT_ERROR, "codegen error")); - } - return mrb_undef_value(); - } - if (c) { - if (c->dump_result) mrb_codedump_all(mrb, proc); - if (c->no_exec) return mrb_obj_value(proc); - if (c->target_class) { - target = c->target_class; - } - if (c->keep_lv) { - keep = c->slen + 1; - } - else { - c->keep_lv = TRUE; - } - } - MRB_PROC_SET_TARGET_CLASS(proc, target); - if (mrb->c->ci) { - mrb_vm_ci_target_class_set(mrb->c->ci, target); - } - v = mrb_top_run(mrb, proc, mrb_top_self(mrb), keep); - if (mrb->exc) return mrb_nil_value(); - return v; -} - -#ifndef MRB_NO_STDIO -MRB_API mrb_value -mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrbc_context *c) -{ - return mrb_load_exec(mrb, mrb_parse_file(mrb, f, c), c); -} - -MRB_API mrb_value -mrb_load_file(mrb_state *mrb, FILE *f) -{ - return mrb_load_file_cxt(mrb, f, NULL); -} - -#define DETECT_SIZE 64 - -/* - * In order to be recognized as a `.mrb` file, the following three points must be satisfied: - * - File starts with "RITE" - * - At least `sizeof(struct rite_binary_header)` bytes can be read - * - `NUL` is included in the first 64 bytes of the file - */ -MRB_API mrb_value -mrb_load_detect_file_cxt(mrb_state *mrb, FILE *fp, mrbc_context *c) -{ - union { - char b[DETECT_SIZE]; - struct rite_binary_header h; - } leading; - size_t bufsize; - - if (mrb == NULL || fp == NULL) { - return mrb_nil_value(); - } - - bufsize = fread(leading.b, sizeof(char), sizeof(leading), fp); - if (bufsize < sizeof(leading.h) || - memcmp(leading.h.binary_ident, RITE_BINARY_IDENT, sizeof(leading.h.binary_ident)) != 0 || - memchr(leading.b, '\0', bufsize) == NULL) { - return mrb_load_exec(mrb, mrb_parse_file_continue(mrb, fp, leading.b, bufsize, c), c); - } - else { - size_t binsize; - uint8_t *bin; - mrb_value bin_obj = mrb_nil_value(); /* temporary string object */ - mrb_value result; - - binsize = bin_to_uint32(leading.h.binary_size); - bin_obj = mrb_str_new(mrb, NULL, binsize); - bin = (uint8_t *)RSTRING_PTR(bin_obj); - memcpy(bin, leading.b, bufsize); - if (binsize > bufsize && - fread(bin + bufsize, binsize - bufsize, 1, fp) == 0) { - binsize = bufsize; - /* The error is reported by mrb_load_irep_buf_cxt() */ - } - - result = mrb_load_irep_buf_cxt(mrb, bin, binsize, c); - if (mrb_string_p(bin_obj)) mrb_str_resize(mrb, bin_obj, 0); - return result; - } -} -#endif - -MRB_API mrb_value -mrb_load_nstring_cxt(mrb_state *mrb, const char *s, size_t len, mrbc_context *c) -{ - return mrb_load_exec(mrb, mrb_parse_nstring(mrb, s, len, c), c); -} - -MRB_API mrb_value -mrb_load_nstring(mrb_state *mrb, const char *s, size_t len) -{ - return mrb_load_nstring_cxt(mrb, s, len, NULL); -} - -MRB_API mrb_value -mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *c) -{ - return mrb_load_nstring_cxt(mrb, s, strlen(s), c); -} - -MRB_API mrb_value -mrb_load_string(mrb_state *mrb, const char *s) -{ - return mrb_load_string_cxt(mrb, s, NULL); -} - -#ifndef MRB_NO_STDIO - -static void -dump_prefix(node *tree, int offset) -{ - printf("%05d ", tree->lineno); - while (offset--) { - putc(' ', stdout); - putc(' ', stdout); - } -} - -static void -dump_recur(mrb_state *mrb, node *tree, int offset) -{ - while (tree) { - mrb_parser_dump(mrb, tree->car, offset); - tree = tree->cdr; - } -} - -static void -dump_args(mrb_state *mrb, node *n, int offset) -{ - if (n->car) { - dump_prefix(n, offset+1); - printf("mandatory args:\n"); - dump_recur(mrb, n->car, offset+2); - } - n = n->cdr; - if (n->car) { - dump_prefix(n, offset+1); - printf("optional args:\n"); - { - node *n2 = n->car; - - while (n2) { - dump_prefix(n2, offset+2); - printf("%s=\n", mrb_sym_name(mrb, sym(n2->car->car))); - mrb_parser_dump(mrb, n2->car->cdr, offset+3); - n2 = n2->cdr; - } - } - } - n = n->cdr; - if (n->car) { - dump_prefix(n, offset+1); - printf("rest=*%s\n", mrb_sym_name(mrb, sym(n->car))); - } - n = n->cdr; - if (n->car) { - dump_prefix(n, offset+1); - printf("post mandatory args:\n"); - dump_recur(mrb, n->car, offset+2); - } - - n = n->cdr; - if (n) { - mrb_assert(intn(n->car) == NODE_ARGS_TAIL); - mrb_parser_dump(mrb, n, offset); - } -} - -/* - * This function restores the GC arena on return. - * For this reason, if a process that further generates an object is - * performed at the caller, the string pointer returned as the return - * value may become invalid. - */ -static const char* -str_dump(mrb_state *mrb, const char *str, int len) -{ - int ai = mrb_gc_arena_save(mrb); - mrb_value s; -# if INT_MAX > MRB_INT_MAX / 4 - /* check maximum length with "\xNN" character */ - if (len > MRB_INT_MAX / 4) { - len = MRB_INT_MAX / 4; - } -# endif - s = mrb_str_new(mrb, str, (mrb_int)len); - s = mrb_str_dump(mrb, s); - mrb_gc_arena_restore(mrb, ai); - return RSTRING_PTR(s); -} -#endif - -void -mrb_parser_dump(mrb_state *mrb, node *tree, int offset) -{ -#ifndef MRB_NO_STDIO - int nodetype; - - if (!tree) return; - again: - dump_prefix(tree, offset); - nodetype = intn(tree->car); - tree = tree->cdr; - switch (nodetype) { - case NODE_BEGIN: - printf("NODE_BEGIN:\n"); - dump_recur(mrb, tree, offset+1); - break; - - case NODE_RESCUE: - printf("NODE_RESCUE:\n"); - if (tree->car) { - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - } - tree = tree->cdr; - if (tree->car) { - node *n2 = tree->car; - - dump_prefix(n2, offset+1); - printf("rescue:\n"); - while (n2) { - node *n3 = n2->car; - if (n3->car) { - dump_prefix(n2, offset+2); - printf("handle classes:\n"); - dump_recur(mrb, n3->car, offset+3); - } - if (n3->cdr->car) { - dump_prefix(n3, offset+2); - printf("exc_var:\n"); - mrb_parser_dump(mrb, n3->cdr->car, offset+3); - } - if (n3->cdr->cdr->car) { - dump_prefix(n3, offset+2); - printf("rescue body:\n"); - mrb_parser_dump(mrb, n3->cdr->cdr->car, offset+3); - } - n2 = n2->cdr; - } - } - tree = tree->cdr; - if (tree->car) { - dump_prefix(tree, offset+1); - printf("else:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - } - break; - - case NODE_ENSURE: - printf("NODE_ENSURE:\n"); - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - dump_prefix(tree, offset+1); - printf("ensure:\n"); - mrb_parser_dump(mrb, tree->cdr->cdr, offset+2); - break; - - case NODE_LAMBDA: - printf("NODE_LAMBDA:\n"); - dump_prefix(tree, offset); - goto block; - - case NODE_BLOCK: - block: - printf("NODE_BLOCK:\n"); - tree = tree->cdr; - if (tree->car) { - dump_args(mrb, tree->car, offset+1); - } - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->cdr->car, offset+2); - break; - - case NODE_IF: - printf("NODE_IF:\n"); - dump_prefix(tree, offset+1); - printf("cond:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - dump_prefix(tree, offset+1); - printf("then:\n"); - mrb_parser_dump(mrb, tree->cdr->car, offset+2); - if (tree->cdr->cdr->car) { - dump_prefix(tree, offset+1); - printf("else:\n"); - mrb_parser_dump(mrb, tree->cdr->cdr->car, offset+2); - } - break; - - case NODE_AND: - printf("NODE_AND:\n"); - mrb_parser_dump(mrb, tree->car, offset+1); - mrb_parser_dump(mrb, tree->cdr, offset+1); - break; - - case NODE_OR: - printf("NODE_OR:\n"); - mrb_parser_dump(mrb, tree->car, offset+1); - mrb_parser_dump(mrb, tree->cdr, offset+1); - break; - - case NODE_CASE: - printf("NODE_CASE:\n"); - if (tree->car) { - mrb_parser_dump(mrb, tree->car, offset+1); - } - tree = tree->cdr; - while (tree) { - dump_prefix(tree, offset+1); - printf("case:\n"); - dump_recur(mrb, tree->car->car, offset+2); - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->car->cdr, offset+2); - tree = tree->cdr; - } - break; - - case NODE_WHILE: - printf("NODE_WHILE:\n"); - dump_prefix(tree, offset+1); - printf("cond:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->cdr, offset+2); - break; - - case NODE_UNTIL: - printf("NODE_UNTIL:\n"); - dump_prefix(tree, offset+1); - printf("cond:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->cdr, offset+2); - break; - - case NODE_FOR: - printf("NODE_FOR:\n"); - dump_prefix(tree, offset+1); - printf("var:\n"); - { - node *n2 = tree->car; - - if (n2->car) { - dump_prefix(n2, offset+2); - printf("pre:\n"); - dump_recur(mrb, n2->car, offset+3); - } - n2 = n2->cdr; - if (n2) { - if (n2->car) { - dump_prefix(n2, offset+2); - printf("rest:\n"); - mrb_parser_dump(mrb, n2->car, offset+3); - } - n2 = n2->cdr; - if (n2) { - if (n2->car) { - dump_prefix(n2, offset+2); - printf("post:\n"); - dump_recur(mrb, n2->car, offset+3); - } - } - } - } - tree = tree->cdr; - dump_prefix(tree, offset+1); - printf("in:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - tree = tree->cdr; - dump_prefix(tree, offset+1); - printf("do:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - break; - - case NODE_SCOPE: - printf("NODE_SCOPE:\n"); - { - node *n2 = tree->car; - mrb_bool first_lval = TRUE; - - if (n2 && (n2->car || n2->cdr)) { - dump_prefix(n2, offset+1); - printf("local variables:\n"); - dump_prefix(n2, offset+2); - while (n2) { - if (n2->car) { - if (!first_lval) printf(", "); - printf("%s", mrb_sym_name(mrb, sym(n2->car))); - first_lval = FALSE; - } - n2 = n2->cdr; - } - printf("\n"); - } - } - tree = tree->cdr; - offset++; - goto again; - - case NODE_FCALL: - case NODE_CALL: - case NODE_SCALL: - switch (nodetype) { - case NODE_FCALL: - printf("NODE_FCALL:\n"); break; - case NODE_CALL: - printf("NODE_CALL(.):\n"); break; - case NODE_SCALL: - printf("NODE_SCALL(&.):\n"); break; - default: - break; - } - mrb_parser_dump(mrb, tree->car, offset+1); - dump_prefix(tree, offset+1); - printf("method='%s' (%d)\n", - mrb_sym_dump(mrb, sym(tree->cdr->car)), - intn(tree->cdr->car)); - tree = tree->cdr->cdr->car; - if (tree) { - dump_prefix(tree, offset+1); - printf("args:\n"); - dump_recur(mrb, tree->car, offset+2); - if (tree->cdr) { - dump_prefix(tree, offset+1); - printf("block:\n"); - mrb_parser_dump(mrb, tree->cdr, offset+2); - } - } - break; - - case NODE_DOT2: - printf("NODE_DOT2:\n"); - mrb_parser_dump(mrb, tree->car, offset+1); - mrb_parser_dump(mrb, tree->cdr, offset+1); - break; - - case NODE_DOT3: - printf("NODE_DOT3:\n"); - mrb_parser_dump(mrb, tree->car, offset+1); - mrb_parser_dump(mrb, tree->cdr, offset+1); - break; - - case NODE_COLON2: - printf("NODE_COLON2:\n"); - mrb_parser_dump(mrb, tree->car, offset+1); - dump_prefix(tree, offset+1); - printf("::%s\n", mrb_sym_name(mrb, sym(tree->cdr))); - break; - - case NODE_COLON3: - printf("NODE_COLON3: ::%s\n", mrb_sym_name(mrb, sym(tree))); - break; - - case NODE_ARRAY: - printf("NODE_ARRAY:\n"); - dump_recur(mrb, tree, offset+1); - break; - - case NODE_HASH: - printf("NODE_HASH:\n"); - while (tree) { - dump_prefix(tree, offset+1); - printf("key:\n"); - mrb_parser_dump(mrb, tree->car->car, offset+2); - dump_prefix(tree, offset+1); - printf("value:\n"); - mrb_parser_dump(mrb, tree->car->cdr, offset+2); - tree = tree->cdr; - } - break; - - case NODE_KW_HASH: - printf("NODE_KW_HASH:\n"); - while (tree) { - dump_prefix(tree, offset+1); - printf("key:\n"); - mrb_parser_dump(mrb, tree->car->car, offset+2); - dump_prefix(tree, offset+1); - printf("value:\n"); - mrb_parser_dump(mrb, tree->car->cdr, offset+2); - tree = tree->cdr; - } - break; - - case NODE_SPLAT: - printf("NODE_SPLAT:\n"); - mrb_parser_dump(mrb, tree, offset+1); - break; - - case NODE_ASGN: - printf("NODE_ASGN:\n"); - dump_prefix(tree, offset+1); - printf("lhs:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - dump_prefix(tree, offset+1); - printf("rhs:\n"); - mrb_parser_dump(mrb, tree->cdr, offset+2); - break; - - case NODE_MASGN: - printf("NODE_MASGN:\n"); - dump_prefix(tree, offset+1); - printf("mlhs:\n"); - { - node *n2 = tree->car; - - if (n2->car) { - dump_prefix(tree, offset+2); - printf("pre:\n"); - dump_recur(mrb, n2->car, offset+3); - } - n2 = n2->cdr; - if (n2) { - if (n2->car) { - dump_prefix(n2, offset+2); - printf("rest:\n"); - if (n2->car == nint(-1)) { - dump_prefix(n2, offset+2); - printf("(empty)\n"); - } - else { - mrb_parser_dump(mrb, n2->car, offset+3); - } - } - n2 = n2->cdr; - if (n2) { - if (n2->car) { - dump_prefix(n2, offset+2); - printf("post:\n"); - dump_recur(mrb, n2->car, offset+3); - } - } - } - } - dump_prefix(tree, offset+1); - printf("rhs:\n"); - mrb_parser_dump(mrb, tree->cdr, offset+2); - break; - - case NODE_OP_ASGN: - printf("NODE_OP_ASGN:\n"); - dump_prefix(tree, offset+1); - printf("lhs:\n"); - mrb_parser_dump(mrb, tree->car, offset+2); - tree = tree->cdr; - dump_prefix(tree, offset+1); - printf("op='%s' (%d)\n", mrb_sym_name(mrb, sym(tree->car)), intn(tree->car)); - tree = tree->cdr; - mrb_parser_dump(mrb, tree->car, offset+1); - break; - - case NODE_SUPER: - printf("NODE_SUPER:\n"); - if (tree) { - dump_prefix(tree, offset+1); - printf("args:\n"); - dump_recur(mrb, tree->car, offset+2); - if (tree->cdr) { - dump_prefix(tree, offset+1); - printf("block:\n"); - mrb_parser_dump(mrb, tree->cdr, offset+2); - } - } - break; - - case NODE_ZSUPER: - printf("NODE_ZSUPER\n"); - break; - - case NODE_RETURN: - printf("NODE_RETURN:\n"); - mrb_parser_dump(mrb, tree, offset+1); - break; - - case NODE_YIELD: - printf("NODE_YIELD:\n"); - dump_recur(mrb, tree, offset+1); - break; - - case NODE_BREAK: - printf("NODE_BREAK:\n"); - mrb_parser_dump(mrb, tree, offset+1); - break; - - case NODE_NEXT: - printf("NODE_NEXT:\n"); - mrb_parser_dump(mrb, tree, offset+1); - break; - - case NODE_REDO: - printf("NODE_REDO\n"); - break; - - case NODE_RETRY: - printf("NODE_RETRY\n"); - break; - - case NODE_LVAR: - printf("NODE_LVAR %s\n", mrb_sym_name(mrb, sym(tree))); - break; - - case NODE_GVAR: - printf("NODE_GVAR %s\n", mrb_sym_name(mrb, sym(tree))); - break; - - case NODE_IVAR: - printf("NODE_IVAR %s\n", mrb_sym_name(mrb, sym(tree))); - break; - - case NODE_CVAR: - printf("NODE_CVAR %s\n", mrb_sym_name(mrb, sym(tree))); - break; - - case NODE_NVAR: - printf("NODE_NVAR %d\n", intn(tree)); - break; - - case NODE_CONST: - printf("NODE_CONST %s\n", mrb_sym_name(mrb, sym(tree))); - break; - - case NODE_MATCH: - printf("NODE_MATCH:\n"); - dump_prefix(tree, offset + 1); - printf("lhs:\n"); - mrb_parser_dump(mrb, tree->car, offset + 2); - dump_prefix(tree, offset + 1); - printf("rhs:\n"); - mrb_parser_dump(mrb, tree->cdr, offset + 2); - break; - - case NODE_BACK_REF: - printf("NODE_BACK_REF: $%c\n", intn(tree)); - break; - - case NODE_NTH_REF: - printf("NODE_NTH_REF: $%d\n", intn(tree)); - break; - - case NODE_ARG: - printf("NODE_ARG %s\n", mrb_sym_name(mrb, sym(tree))); - break; - - case NODE_BLOCK_ARG: - printf("NODE_BLOCK_ARG:\n"); - mrb_parser_dump(mrb, tree, offset+1); - break; - - case NODE_INT: - printf("NODE_INT %s base %d\n", (char*)tree->car, intn(tree->cdr->car)); - break; - - case NODE_FLOAT: - printf("NODE_FLOAT %s\n", (char*)tree); - break; - - case NODE_NEGATE: - printf("NODE_NEGATE:\n"); - mrb_parser_dump(mrb, tree, offset+1); - break; - - case NODE_STR: - printf("NODE_STR %s len %d\n", str_dump(mrb, (char*)tree->car, intn(tree->cdr)), intn(tree->cdr)); - break; - - case NODE_DSTR: - printf("NODE_DSTR:\n"); - dump_recur(mrb, tree, offset+1); - break; - - case NODE_XSTR: - printf("NODE_XSTR %s len %d\n", str_dump(mrb, (char*)tree->car, intn(tree->cdr)), intn(tree->cdr)); - break; - - case NODE_DXSTR: - printf("NODE_DXSTR:\n"); - dump_recur(mrb, tree, offset+1); - break; - - case NODE_REGX: - printf("NODE_REGX /%s/%s\n", (char*)tree->car, (char*)tree->cdr); - break; - - case NODE_DREGX: - printf("NODE_DREGX:\n"); - dump_recur(mrb, tree->car, offset+1); - dump_prefix(tree, offset); - printf("tail: %s\n", (char*)tree->cdr->cdr->car); - if (tree->cdr->cdr->cdr->car) { - dump_prefix(tree, offset); - printf("opt: %s\n", (char*)tree->cdr->cdr->cdr->car); - } - if (tree->cdr->cdr->cdr->cdr) { - dump_prefix(tree, offset); - printf("enc: %s\n", (char*)tree->cdr->cdr->cdr->cdr); - } - break; - - case NODE_SYM: - printf("NODE_SYM :%s (%d)\n", mrb_sym_dump(mrb, sym(tree)), - intn(tree)); - break; - - case NODE_DSYM: - printf("NODE_DSYM:\n"); - mrb_parser_dump(mrb, tree, offset+1); - break; - - case NODE_WORDS: - printf("NODE_WORDS:\n"); - dump_recur(mrb, tree, offset+1); - break; - - case NODE_SYMBOLS: - printf("NODE_SYMBOLS:\n"); - dump_recur(mrb, tree, offset+1); - break; - - case NODE_LITERAL_DELIM: - printf("NODE_LITERAL_DELIM\n"); - break; - - case NODE_SELF: - printf("NODE_SELF\n"); - break; - - case NODE_NIL: - printf("NODE_NIL\n"); - break; - - case NODE_TRUE: - printf("NODE_TRUE\n"); - break; - - case NODE_FALSE: - printf("NODE_FALSE\n"); - break; - - case NODE_ALIAS: - printf("NODE_ALIAS %s %s:\n", - mrb_sym_dump(mrb, sym(tree->car)), - mrb_sym_dump(mrb, sym(tree->cdr))); - break; - - case NODE_UNDEF: - printf("NODE_UNDEF"); - { - node *t = tree; - while (t) { - printf(" %s", mrb_sym_dump(mrb, sym(t->car))); - t = t->cdr; - } - } - printf(":\n"); - break; - - case NODE_CLASS: - printf("NODE_CLASS:\n"); - if (tree->car->car == nint(0)) { - dump_prefix(tree, offset+1); - printf(":%s\n", mrb_sym_name(mrb, sym(tree->car->cdr))); - } - else if (tree->car->car == nint(1)) { - dump_prefix(tree, offset+1); - printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr))); - } - else { - mrb_parser_dump(mrb, tree->car->car, offset+1); - dump_prefix(tree, offset+1); - printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr))); - } - if (tree->cdr->car) { - dump_prefix(tree, offset+1); - printf("super:\n"); - mrb_parser_dump(mrb, tree->cdr->car, offset+2); - } - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->cdr->cdr->car->cdr, offset+2); - break; - - case NODE_MODULE: - printf("NODE_MODULE:\n"); - if (tree->car->car == nint(0)) { - dump_prefix(tree, offset+1); - printf(":%s\n", mrb_sym_name(mrb, sym(tree->car->cdr))); - } - else if (tree->car->car == nint(1)) { - dump_prefix(tree, offset+1); - printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr))); - } - else { - mrb_parser_dump(mrb, tree->car->car, offset+1); - dump_prefix(tree, offset+1); - printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr))); - } - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->cdr->car->cdr, offset+2); - break; - - case NODE_SCLASS: - printf("NODE_SCLASS:\n"); - mrb_parser_dump(mrb, tree->car, offset+1); - dump_prefix(tree, offset+1); - printf("body:\n"); - mrb_parser_dump(mrb, tree->cdr->car->cdr, offset+2); - break; - - case NODE_DEF: - printf("NODE_DEF:\n"); - dump_prefix(tree, offset+1); - printf("%s\n", mrb_sym_dump(mrb, sym(tree->car))); - tree = tree->cdr; - { - node *n2 = tree->car; - mrb_bool first_lval = TRUE; - - if (n2 && (n2->car || n2->cdr)) { - dump_prefix(n2, offset+1); - printf("local variables:\n"); - dump_prefix(n2, offset+2); - while (n2) { - if (n2->car) { - if (!first_lval) printf(", "); - printf("%s", mrb_sym_name(mrb, sym(n2->car))); - first_lval = FALSE; - } - n2 = n2->cdr; - } - printf("\n"); - } - } - tree = tree->cdr; - if (tree->car) { - dump_args(mrb, tree->car, offset); - } - mrb_parser_dump(mrb, tree->cdr->car, offset+1); - break; - - case NODE_SDEF: - printf("NODE_SDEF:\n"); - mrb_parser_dump(mrb, tree->car, offset+1); - tree = tree->cdr; - dump_prefix(tree, offset+1); - printf(":%s\n", mrb_sym_dump(mrb, sym(tree->car))); - tree = tree->cdr->cdr; - if (tree->car) { - dump_args(mrb, tree->car, offset+1); - } - tree = tree->cdr; - mrb_parser_dump(mrb, tree->car, offset+1); - break; - - case NODE_POSTEXE: - printf("NODE_POSTEXE:\n"); - mrb_parser_dump(mrb, tree, offset+1); - break; - - case NODE_HEREDOC: - printf("NODE_HEREDOC (<<%s):\n", ((parser_heredoc_info*)tree)->term); - dump_recur(mrb, ((parser_heredoc_info*)tree)->doc, offset+1); - break; - - case NODE_ARGS_TAIL: - printf("NODE_ARGS_TAIL:\n"); - { - node *kws = tree->car; - - while (kws) { - mrb_parser_dump(mrb, kws->car, offset+1); - kws = kws->cdr; - } - } - tree = tree->cdr; - if (tree->car) { - mrb_assert(intn(tree->car->car) == NODE_KW_REST_ARGS); - mrb_parser_dump(mrb, tree->car, offset+1); - } - tree = tree->cdr; - if (tree->car) { - dump_prefix(tree, offset+1); - printf("block='%s'\n", mrb_sym_name(mrb, sym(tree->car))); - } - break; - - case NODE_KW_ARG: - printf("NODE_KW_ARG %s:\n", mrb_sym_name(mrb, sym(tree->car))); - mrb_parser_dump(mrb, tree->cdr->car, offset + 1); - break; - - case NODE_KW_REST_ARGS: - printf("NODE_KW_REST_ARGS %s\n", mrb_sym_name(mrb, sym(tree))); - break; - - default: - printf("node type: %d (0x%x)\n", nodetype, (unsigned)nodetype); - break; - } -#endif -} - -typedef mrb_bool mrb_parser_foreach_top_variable_func(mrb_state *mrb, mrb_sym sym, void *user); -void mrb_parser_foreach_top_variable(mrb_state *mrb, struct mrb_parser_state *p, mrb_parser_foreach_top_variable_func *func, void *user); - -void -mrb_parser_foreach_top_variable(mrb_state *mrb, struct mrb_parser_state *p, mrb_parser_foreach_top_variable_func *func, void *user) -{ - const mrb_ast_node *n = p->tree; - if ((intptr_t)n->car == NODE_SCOPE) { - n = n->cdr->car; - for (; n; n = n->cdr) { - mrb_sym sym = sym(n->car); - if (sym && !func(mrb, sym, user)) break; - } - } -} |
