X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fparser.tab.c;h=b9826cffafdb4b780f09c96e796815ce8c7f2c7d;hb=0fb1c17d65a058eb907be12af5e5b31d93a7b021;hp=accb0a53a4721d5592f6195c45c4062bac2c78f5;hpb=ec2bbbdb17f4d4e58e52beef98345bccbebd80df;p=swftools.git diff --git a/lib/as3/parser.tab.c b/lib/as3/parser.tab.c index accb0a5..b9826cf 100644 --- a/lib/as3/parser.tab.c +++ b/lib/as3/parser.tab.c @@ -64,13 +64,13 @@ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ -#define yyparse avm2_parse -#define yylex avm2_lex -#define yyerror avm2_error -#define yylval avm2_lval -#define yychar avm2_char -#define yydebug avm2_debug -#define yynerrs avm2_nerrs +#define yyparse a3_parse +#define yylex a3_lex +#define yyerror a3_error +#define yylval a3_lval +#define yychar a3_char +#define yydebug a3_debug +#define yynerrs a3_nerrs /* Copy the first part of user declarations. */ @@ -88,11 +88,14 @@ #include "registry.h" #include "code.h" #include "opcodes.h" +#include "compiler.h" + +extern int a3_lex(); /* Line 198 of skeleton.m4 */ -#line 96 "parser.tab.c" +#line 99 "parser.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -120,106 +123,108 @@ know about them. */ enum yytokentype { T_IDENTIFIER = 258, - T_STRING = 259, - T_REGEXP = 260, - T_EMPTY = 261, - T_INT = 262, - T_UINT = 263, - T_BYTE = 264, - T_SHORT = 265, - T_FLOAT = 266, - T_FOR = 267, - T_WHILE = 268, - T_DO = 269, - T_SWITCH = 270, - KW_IMPLEMENTS = 271, - KW_NAMESPACE = 272, - KW_PACKAGE = 273, - KW_PROTECTED = 274, - KW_PUBLIC = 275, - KW_PRIVATE = 276, - KW_USE = 277, - KW_INTERNAL = 278, - KW_NEW = 279, - KW_NATIVE = 280, - KW_FUNCTION = 281, - KW_FINALLY = 282, - KW_UNDEFINED = 283, - KW_CONTINUE = 284, - KW_CLASS = 285, - KW_CONST = 286, - KW_CATCH = 287, - KW_CASE = 288, - KW_SET = 289, - KW_VOID = 290, - KW_THROW = 291, - KW_STATIC = 292, - KW_WITH = 293, - KW_INSTANCEOF = 294, - KW_IMPORT = 295, - KW_RETURN = 296, - KW_TYPEOF = 297, - KW_INTERFACE = 298, - KW_NULL = 299, - KW_VAR = 300, - KW_DYNAMIC = 301, - KW_OVERRIDE = 302, - KW_FINAL = 303, - KW_EACH = 304, - KW_GET = 305, - KW_TRY = 306, - KW_SUPER = 307, - KW_EXTENDS = 308, - KW_FALSE = 309, - KW_TRUE = 310, - KW_BOOLEAN = 311, - KW_UINT = 312, - KW_INT = 313, - KW_NUMBER = 314, - KW_STRING = 315, - KW_DEFAULT = 316, - KW_DELETE = 317, - KW_IF = 318, - KW_ELSE = 319, - KW_BREAK = 320, - KW_IS = 321, - KW_IN = 322, - KW_AS = 323, - T_EQEQ = 324, - T_EQEQEQ = 325, - T_NE = 326, - T_NEE = 327, - T_LE = 328, - T_GE = 329, - T_ORBY = 330, - T_DIVBY = 331, - T_MODBY = 332, - T_MULBY = 333, - T_PLUSBY = 334, - T_MINUSBY = 335, - T_SHRBY = 336, - T_SHLBY = 337, - T_USHRBY = 338, - T_OROR = 339, - T_ANDAND = 340, - T_COLONCOLON = 341, - T_MINUSMINUS = 342, - T_PLUSPLUS = 343, - T_DOTDOT = 344, - T_DOTDOTDOT = 345, - T_SHL = 346, - T_USHR = 347, - T_SHR = 348, - prec_none = 349, - below_semicolon = 350, - below_assignment = 351, - below_minus = 354, - minusminus_prefix = 355, - plusplus_prefix = 356, - below_curly = 357, - above_identifier = 358, - below_else = 359, - above_function = 360 + T_NAMESPACE = 259, + T_STRING = 260, + T_REGEXP = 261, + T_EMPTY = 262, + T_INT = 263, + T_UINT = 264, + T_BYTE = 265, + T_SHORT = 266, + T_FLOAT = 267, + T_FOR = 268, + T_WHILE = 269, + T_DO = 270, + T_SWITCH = 271, + KW_IMPLEMENTS = 272, + KW_NAMESPACE = 273, + KW_PACKAGE = 274, + KW_PROTECTED = 275, + KW_PUBLIC = 276, + KW_PRIVATE = 277, + KW_USE = 278, + KW_INTERNAL = 279, + KW_NEW = 280, + KW_NATIVE = 281, + KW_FUNCTION = 282, + KW_FINALLY = 283, + KW_UNDEFINED = 284, + KW_CONTINUE = 285, + KW_CLASS = 286, + KW_CONST = 287, + KW_CATCH = 288, + KW_CASE = 289, + KW_SET = 290, + KW_VOID = 291, + KW_THROW = 292, + KW_STATIC = 293, + KW_WITH = 294, + KW_INSTANCEOF = 295, + KW_IMPORT = 296, + KW_RETURN = 297, + KW_TYPEOF = 298, + KW_INTERFACE = 299, + KW_NULL = 300, + KW_VAR = 301, + KW_DYNAMIC = 302, + KW_OVERRIDE = 303, + KW_FINAL = 304, + KW_EACH = 305, + KW_GET = 306, + KW_TRY = 307, + KW_SUPER = 308, + KW_EXTENDS = 309, + KW_FALSE = 310, + KW_TRUE = 311, + KW_BOOLEAN = 312, + KW_UINT = 313, + KW_INT = 314, + KW_NUMBER = 315, + KW_STRING = 316, + KW_DEFAULT = 317, + KW_DELETE = 318, + KW_IF = 319, + KW_ELSE = 320, + KW_BREAK = 321, + KW_IS = 322, + KW_IN = 323, + KW_AS = 324, + T_EQEQ = 325, + T_EQEQEQ = 326, + T_NE = 327, + T_NEE = 328, + T_LE = 329, + T_GE = 330, + T_ORBY = 331, + T_DIVBY = 332, + T_MODBY = 333, + T_MULBY = 334, + T_PLUSBY = 335, + T_MINUSBY = 336, + T_SHRBY = 337, + T_SHLBY = 338, + T_USHRBY = 339, + T_OROR = 340, + T_ANDAND = 341, + T_COLONCOLON = 342, + T_MINUSMINUS = 343, + T_PLUSPLUS = 344, + T_DOTDOT = 345, + T_DOTDOTDOT = 346, + T_SHL = 347, + T_USHR = 348, + T_SHR = 349, + prec_none = 350, + below_semicolon = 351, + below_assignment = 352, + below_minus = 355, + minusminus_prefix = 356, + plusplus_prefix = 357, + below_curly = 358, + new2 = 359, + above_identifier = 360, + below_else = 361, + above_function = 362 }; #endif @@ -228,12 +233,12 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union /* Line 223 of skeleton.m4 */ -#line 41 "parser.y" +#line 44 "parser.y" tokenunion { /* Line 223 of skeleton.m4 */ -#line 41 "parser.y" +#line 44 "parser.y" enum yytokentype token; int flags; @@ -264,7 +269,7 @@ tokenunion /* Line 223 of skeleton.m4 */ -#line 268 "parser.tab.c" +#line 273 "parser.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -275,15 +280,16 @@ tokenunion /* Copy the second part of user declarations. */ /* Line 273 of skeleton.m4 */ -#line 251 "parser.y" +#line 257 "parser.y" -static int yyerror(char*s) +static int a3_error(char*s) { syntaxerror("%s", s); return 0; //make gcc happy } + static char* concat2(const char* t1, const char* t2) { int l1 = strlen(t1); @@ -322,14 +328,24 @@ typedef struct _classstate { char has_constructor; } classstate_t; +DECLARE_LIST(methodstate); + typedef struct _methodstate { /* method data */ - memberinfo_t*info; + methodinfo_t*info; char late_binding; char is_constructor; char has_super; char is_global; + int variable_count; + + char inner; + abc_method_t*abc; + int var_index; // for inner methods + abc_exception_list_t*exceptions; + + methodstate_list_t*innerfunctions; } methodstate_t; typedef struct _state { @@ -340,6 +356,7 @@ typedef struct _state { import_list_t*wildcard_imports; dict_t*imports; char has_own_imports; + char new_vars; // e.g. transition between two functions classstate_t*cls; methodstate_t*method; @@ -352,8 +369,8 @@ typedef struct _state { typedef struct _global { abc_file_t*file; abc_script_t*init; - - int variable_count; + dict_t*token2info; + dict_t*file2token2info; } global_t; static global_t*global = 0; @@ -364,13 +381,15 @@ DECLARE_LIST(state); #define MULTINAME(m,x) \ multiname_t m;\ namespace_t m##_ns;\ - registry_fill_multiname(&m, &m##_ns, x); + (x)->package; \ + registry_fill_multiname(&m, &m##_ns, (slotinfo_t*)(x)); #define MEMBER_MULTINAME(m,f,n) \ multiname_t m;\ namespace_t m##_ns;\ if(f) { \ - m##_ns = flags2namespace(f->flags, ""); \ + m##_ns.access = (f)->access; \ + m##_ns.name = ""; \ m.type = QNAME; \ m.ns = &m##_ns; \ m.namespace_set = 0; \ @@ -456,7 +475,7 @@ static void old_state() state = state->old; - if(leaving->method && leaving->method != state->method) { + if(as3_pass>1 && leaving->method && leaving->method != state->method && !leaving->method->inner) { free(leaving->method); leaving->method=0; } @@ -468,37 +487,54 @@ static void old_state() state_destroy(leaving); } -void initialize_parser() -{ - global = rfx_calloc(sizeof(global_t)); - global->file = abc_file_new(); - global->file->flags &= ~ABCFILE_LAZY; - global->variable_count = 1; - global->init = abc_initscript(global->file); - code_t*c = global->init->method->body->code; - c = abc_getlocal_0(c); - c = abc_pushscope(c); - /*c = abc_findpropstrict(c, "[package]::trace"); - c = abc_pushstring(c, "[entering global init function]"); - c = abc_callpropvoid(c, "[package]::trace", 1);*/ - global->init->method->body->code = c; -} - +static char* internal_filename_package = 0; void initialize_file(char*filename) { + if(state) { + syntaxerror("invalid call to initialize_file during parsing of another file"); + } new_state(); - state->package = filename; - // needed for state->method->late_binding: + state->package = internal_filename_package = strdup(filename); + state->method = rfx_calloc(sizeof(methodstate_t)); + state->method->variable_count = 1; + + global->token2info = dict_lookup(global->file2token2info, + current_filename // use long version + ); + if(!global->token2info) { + global->token2info = dict_new2(&ptr_type); + dict_put(global->file2token2info, current_filename, global->token2info); + } } + void finish_file() { if(!state || state->level!=1) { - syntaxerror("unexpected end of file"); + syntaxerror("unexpected end of file in pass %d", as3_pass); } + free(state->method);state->method=0; + + //free(state->package);state->package=0; // used in registry + state_destroy(state);state=0; } +void initialize_parser() +{ + global = rfx_calloc(sizeof(global_t)); + global->file = abc_file_new(); + global->file->flags &= ~ABCFILE_LAZY; + global->file2token2info = dict_new(); + global->token2info = 0; + + global->init = abc_initscript(global->file); + code_t*c = global->init->method->body->code; + c = abc_getlocal_0(c); + c = abc_pushscope(c); + global->init->method->body->code = c; +} + void* finish_parser() { code_t*c = global->init->method->body->code; @@ -507,6 +543,11 @@ void* finish_parser() c = abc_callpropvoid(c, "[package]::trace", 1);*/ c = abc_returnvoid(c); global->init->method->body->code = c; + + dict_free_all(global->file2token2info, 1, (void*)dict_destroy); + + global->token2info=0; + return global->file; } @@ -557,6 +598,8 @@ static variable_t* find_variable(char*name) if(v) { return v; } + if(s->new_vars) + break; s = s->old; } return 0; @@ -573,16 +616,16 @@ static char variable_exists(char*name) return dict_lookup(state->vars, name)!=0; } code_t*defaultvalue(code_t*c, classinfo_t*type); -static int new_variable(char*name, classinfo_t*type, char init) +static int new_variable(const char*name, classinfo_t*type, char init) { NEW(variable_t, v); - v->index = global->variable_count; + v->index = state->method->variable_count; v->type = type; v->init = init; dict_put(state->vars, name, v); - return global->variable_count++; + return state->method->variable_count++; } #define TEMPVARNAME "__as3_temp__" static int gettempvar() @@ -637,6 +680,44 @@ code_t* var_block(code_t*body) return c; } +#define parserassert(b) {if(!(b)) parsererror(__FILE__, __LINE__,__func__);} + +static void parsererror(const char*file, int line, const char*f) +{ + syntaxerror("internal error in %s, %s:%d", f, file, line); +} + + +code_t* method_header() +{ + code_t*c = 0; + if(state->method->late_binding && !state->method->inner) { + c = abc_getlocal_0(c); + c = abc_pushscope(c); + } + /*if(state->method->innerfunctions) { + c = abc_newactivation(c); + c = abc_pushscope(c); + }*/ + if(state->method->is_constructor && !state->method->has_super) { + // call default constructor + c = abc_getlocal_0(c); + c = abc_constructsuper(c, 0); + } + methodstate_list_t*l = state->method->innerfunctions; + while(l) { + parserassert(l->methodstate->abc); + c = abc_newfunction(c, l->methodstate->abc); + c = abc_setlocal(c, l->methodstate->var_index); + free(l->methodstate);l->methodstate=0; + l = l->next; + } + list_free(state->method->innerfunctions); + state->method->innerfunctions = 0; + return c; +} + + static code_t* wrap_function(code_t*c,code_t*header, code_t*body) { c = code_append(c, header); @@ -655,7 +736,6 @@ static void startpackage(char*name) new_state(); /*printf("entering package \"%s\"\n", name);*/ state->package = strdup(name); - global->variable_count = 1; } static void endpackage() { @@ -667,27 +747,46 @@ static void endpackage() old_state(); } -void parserassert(int b) +#define FLAG_PUBLIC 256 +#define FLAG_PROTECTED 512 +#define FLAG_PRIVATE 1024 +#define FLAG_PACKAGEINTERNAL 2048 +#define FLAG_NAMESPACE 4096 + +static int flags2access(int flags) { - if(!b) syntaxerror("internal error: assertion failed"); + int access = 0; + if(flags&FLAG_PUBLIC) { + if(access&(FLAG_PRIVATE|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL)) + syntaxerror("invalid combination of access levels"); + access = ACCESS_PACKAGE; + } else if(flags&FLAG_PRIVATE) { + if(access&(FLAG_PUBLIC|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL)) + syntaxerror("invalid combination of access levels"); + access = ACCESS_PRIVATE; + } else if(flags&FLAG_PROTECTED) { + if(access&(FLAG_PUBLIC|FLAG_PRIVATE|FLAG_PACKAGEINTERNAL)) + syntaxerror("invalid combination of access levels"); + access = ACCESS_PROTECTED; + } else { + access = ACCESS_PACKAGEINTERNAL; + } + return access; } - char*as3_globalclass=0; -static void startclass(int flags, char*classname, classinfo_t*extends, classinfo_list_t*implements, char interface) +static void startclass(int flags, char*classname, classinfo_t*extends, classinfo_list_t*implements) { if(state->cls) { syntaxerror("inner classes now allowed"); } new_state(); - global->variable_count = 1; state->cls = rfx_calloc(sizeof(classstate_t)); - state->method = rfx_calloc(sizeof(methodstate_t)); // method state, for static constructor token_list_t*t=0; classinfo_list_t*mlist=0; - if(flags&~(FLAG_PACKAGEINTERNAL|FLAG_PUBLIC|FLAG_FINAL|FLAG_DYNAMIC)) + if(flags&~(FLAG_PACKAGEINTERNAL|FLAG_PUBLIC|FLAG_FINAL|FLAG_DYNAMIC|FLAG_INTERFACE)) syntaxerror("invalid modifier(s)"); if((flags&(FLAG_PUBLIC|FLAG_PACKAGEINTERNAL)) == (FLAG_PUBLIC|FLAG_PACKAGEINTERNAL)) @@ -697,34 +796,46 @@ static void startclass(int flags, char*classname, classinfo_t*extends, classinfo int access=0; char*package=0; - if(!(flags&FLAG_PUBLIC) && !state->package) { - access = ACCESS_PRIVATE; package = current_filename; - } else if(!(flags&FLAG_PUBLIC) && state->package) { + if(!(flags&FLAG_PUBLIC) && state->package==internal_filename_package) { + access = ACCESS_PRIVATE; package = internal_filename_package; + } else if(!(flags&FLAG_PUBLIC) && state->package!=internal_filename_package) { access = ACCESS_PACKAGEINTERNAL; package = state->package; - } else if(state->package) { + } else if(state->package!=internal_filename_package) { access = ACCESS_PACKAGE; package = state->package; } else { syntaxerror("public classes only allowed inside a package"); } if(as3_pass==1) { - if(registry_findclass(package, classname)) { + state->method = rfx_calloc(sizeof(methodstate_t)); // method state, for static constructor + state->method->variable_count = 1; + dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, state->method); + + if(registry_find(package, classname)) { syntaxerror("Package \"%s\" already contains a class called \"%s\"", package, classname); } /* build info struct */ int num_interfaces = (list_length(implements)); state->cls->info = classinfo_register(access, package, classname, num_interfaces); + state->cls->info->flags |= flags & (FLAG_DYNAMIC|FLAG_INTERFACE|FLAG_FINAL); } if(as3_pass == 2) { - state->cls->info = registry_findclass(package, classname); + state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount); + + state->cls->info = (classinfo_t*)registry_find(package, classname); parserassert((int)state->cls->info); + if(extends && (extends->flags & FLAG_FINAL)) + syntaxerror("Can't extend final class '%s'", extends->name); + /* fill out interfaces and extends (we couldn't resolve those during the first pass) */ state->cls->info->superclass = extends?extends:TYPE_OBJECT; int pos = 0; classinfo_list_t*l = implements; for(l=implements;l;l=l->next) { + if(!(l->classinfo->flags & FLAG_INTERFACE)) + syntaxerror("'%s' is not an interface", l->classinfo->name); state->cls->info->interfaces[pos++] = l->classinfo; } @@ -733,10 +844,9 @@ static void startclass(int flags, char*classname, classinfo_t*extends, classinfo multiname_t*extends2 = sig2mname(extends); state->cls->abc = abc_class_new(global->file, &classname2, extends2); - if(flags&FLAG_FINAL) abc_class_final(state->cls->abc); - if(!(flags&FLAG_DYNAMIC)) abc_class_sealed(state->cls->abc); - if(interface) { - state->cls->info->flags |= CLASS_INTERFACE; + if(state->cls->info->flags&FLAG_FINAL) abc_class_final(state->cls->abc); + if(!(state->cls->info->flags&FLAG_DYNAMIC)) abc_class_sealed(state->cls->abc); + if(state->cls->info->flags&FLAG_INTERFACE) { abc_class_interface(state->cls->abc); } @@ -799,7 +909,7 @@ static void startclass(int flags, char*classname, classinfo_t*extends, classinfo /* flash.display.MovieClip handling */ - if(!as3_globalclass && (flags&FLAG_PUBLIC) && classinfo_equals(registry_getMovieClip(),extends)) { + if(!as3_globalclass && (flags&FLAG_PUBLIC) && slotinfo_equals((slotinfo_t*)registry_getMovieClip(),(slotinfo_t*)extends)) { if(state->package && state->package[0]) { as3_globalclass = concat3(state->package, ".", classname); } else { @@ -812,7 +922,7 @@ static void startclass(int flags, char*classname, classinfo_t*extends, classinfo static void endclass() { if(as3_pass == 2) { - if(!state->cls->has_constructor && !(state->cls->info->flags&CLASS_INTERFACE)) { + if(!state->cls->has_constructor && !(state->cls->info->flags&FLAG_INTERFACE)) { code_t*c = 0; c = abc_getlocal_0(c); c = abc_constructsuper(c, 0); @@ -873,90 +983,153 @@ static void check_constant_against_type(classinfo_t*t, constant_t*c) } } - -static int flags2access(int flags) +static void check_override(memberinfo_t*m, int flags) { - int access = 0; - if(flags&FLAG_PUBLIC) { - if(access&(FLAG_PRIVATE|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL)) - syntaxerror("invalid combination of access levels"); - access = ACCESS_PACKAGE; - } else if(flags&FLAG_PRIVATE) { - if(access&(FLAG_PUBLIC|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL)) - syntaxerror("invalid combination of access levels"); - access = ACCESS_PRIVATE; - } else if(flags&FLAG_PROTECTED) { - if(access&(FLAG_PUBLIC|FLAG_PRIVATE|FLAG_PACKAGEINTERNAL)) - syntaxerror("invalid combination of access levels"); - access = ACCESS_PROTECTED; - } else { - access = ACCESS_PACKAGEINTERNAL; + if(!m) + return; + if(m->parent == state->cls->info) + syntaxerror("class '%s' already contains a method/slot '%s'", m->parent->name, m->name); + if(!m->parent) + syntaxerror("internal error: overriding method %s, which doesn't have parent", m->name); + if(m->access==ACCESS_PRIVATE) + return; + if(m->flags & FLAG_FINAL) + syntaxerror("can't override final member %s", m->name); + if((m->flags & FLAG_STATIC) && !(flags&FLAG_STATIC)) + syntaxerror("can't override static member %s", m->name); + if(!(m->flags & FLAG_STATIC) && (flags&FLAG_STATIC)) + syntaxerror("can't override non-static member %s with static declaration", m->name); + + if(!(flags&FLAG_OVERRIDE)) { + if(m->parent && !(m->parent->flags&FLAG_INTERFACE)) { + if(m->kind == INFOTYPE_METHOD) + syntaxerror("can't override without explicit 'override' declaration"); + else + syntaxerror("can't override '%s'", m->name); + } } - return access; } - -static memberinfo_t*registerfunction(enum yytokentype getset, int flags, char*name, params_t*params, classinfo_t*return_type, int slot) +static methodinfo_t*registerfunction(enum yytokentype getset, int flags, char*name, params_t*params, classinfo_t*return_type, int slot) { - memberinfo_t*minfo = 0; + methodinfo_t*minfo = 0; + U8 access = flags2access(flags); if(!state->cls) { //package method - minfo = memberinfo_register_global(flags2access(flags), state->package, name, MEMBER_METHOD); + minfo = methodinfo_register_global(access, state->package, name); minfo->return_type = return_type; } else if(getset != KW_GET && getset != KW_SET) { //class method - if((minfo = registry_findmember(state->cls->info, name, 0))) { - if(minfo->parent == state->cls->info) { - syntaxerror("class already contains a member/method called '%s'", name); - } else if(!minfo->parent) { - syntaxerror("internal error: overriding method %s, which doesn't have parent", name); - } else { - if(!(minfo->flags&(FLAG_STATIC|FLAG_PRIVATE))) - syntaxerror("function %s already exists in superclass. Did you forget the 'override' keyword?"); - } + memberinfo_t* m = registry_findmember(state->cls->info, name, 0); + if(m) { + syntaxerror("class already contains a %s '%s'", infotypename((slotinfo_t*)m), m->name); } - minfo = memberinfo_register(state->cls->info, name, MEMBER_METHOD); + minfo = methodinfo_register_onclass(state->cls->info, access, name); minfo->return_type = return_type; // getslot on a member slot only returns "undefined", so no need // to actually store these //state->minfo->slot = state->method->abc->method->trait->slot_id; } else { //class getter/setter - int gs = getset==KW_GET?MEMBER_GET:MEMBER_SET; + int gs = getset==KW_GET?SUBTYPE_GET:SUBTYPE_SET; classinfo_t*type=0; if(getset == KW_GET) type = return_type; - else if(params->list) + else if(params->list && params->list->param) type = params->list->param->type; // not sure wether to look into superclasses here, too - if((minfo=registry_findmember(state->cls->info, name, 0))) { - if(minfo->kind & ~(MEMBER_GET|MEMBER_SET)) - syntaxerror("class already contains a member or method called '%s'", name); - if(minfo->kind & gs) + minfo = (methodinfo_t*)registry_findmember(state->cls->info, name, 1); + if(minfo) { + if(minfo->kind!=INFOTYPE_SLOT) + syntaxerror("class already contains a method called '%s'", name); + if(!(minfo->subtype & (SUBTYPE_GETSET))) + syntaxerror("class already contains a field called '%s'", name); + if(minfo->subtype & gs) syntaxerror("getter/setter for '%s' already defined", name); /* make a setter or getter into a getset */ - minfo->kind |= gs; - if(!minfo->type) - minfo->type = type; - else - if(type && minfo->type != type) + minfo->subtype |= gs; + if(!minfo->return_type) { + minfo->return_type = type; + } else { + if(minfo && minfo->return_type != type) syntaxerror("different type in getter and setter"); + } } else { - minfo = memberinfo_register(state->cls->info, name, gs); - minfo->type = type; + minfo = methodinfo_register_onclass(state->cls->info, access, name); + minfo->kind = INFOTYPE_SLOT; //hack + minfo->subtype = gs; + minfo->return_type = type; } /* can't assign a slot as getter and setter might have different slots */ //minfo->slot = slot; } + if(flags&FLAG_FINAL) minfo->flags |= FLAG_FINAL; if(flags&FLAG_STATIC) minfo->flags |= FLAG_STATIC; - if(flags&FLAG_PUBLIC) minfo->flags |= FLAG_PUBLIC; - if(flags&FLAG_PRIVATE) minfo->flags |= FLAG_PRIVATE; - if(flags&FLAG_PROTECTED) minfo->flags |= FLAG_PROTECTED; - if(flags&FLAG_PACKAGEINTERNAL) minfo->flags |= FLAG_PACKAGEINTERNAL; if(flags&FLAG_OVERRIDE) minfo->flags |= FLAG_OVERRIDE; return minfo; } +static void function_initvars(params_t*params, int flags) +{ + if(state->method->inner) + new_variable("this", 0, 0); + else if(!state->method->is_global) + new_variable((flags&FLAG_STATIC)?"class":"this", state->cls->info, 0); + else + new_variable("globalscope", 0, 0); + + param_list_t*p=0; + for(p=params->list;p;p=p->next) { + new_variable(p->param->name, p->param->type, 0); + } + + methodstate_list_t*l = state->method->innerfunctions; + while(l) { + methodstate_t*m = l->methodstate; + m->var_index = new_variable(m->info->name, TYPE_FUNCTION(m->info), 0); + l = l->next; + } +} + +static void innerfunction(char*name, params_t*params, classinfo_t*return_type) +{ + parserassert(state->method && state->method->info); + + methodstate_t*parent_method = state->method; + + if(as3_pass==1) { + // not valid yet + params = 0; + return_type = 0; + } + + new_state(); + state->new_vars = 1; + + if(as3_pass == 1) { + state->method = rfx_calloc(sizeof(methodstate_t)); + state->method->inner = 1; + state->method->variable_count = 0; + state->method->abc = rfx_calloc(sizeof(abc_method_t)); + + NEW(methodinfo_t,minfo); + minfo->name = name; + state->method->info = minfo; + + list_append(parent_method->innerfunctions, state->method); + + dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, state->method); + } + + if(as3_pass == 2) { + state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount); + parserassert(state->method); + + state->method->info->return_type = return_type; + function_initvars(params, 0); + } +} + static void startfunction(token_t*ns, int flags, enum yytokentype getset, char*name, params_t*params, classinfo_t*return_type) { @@ -964,60 +1137,64 @@ static void startfunction(token_t*ns, int flags, enum yytokentype getset, char*n syntaxerror("not able to start another method scope"); } new_state(); - state->method = rfx_calloc(sizeof(methodstate_t)); - state->method->has_super = 0; + + if(as3_pass == 1) { + state->method = rfx_calloc(sizeof(methodstate_t)); + state->method->has_super = 0; + state->method->variable_count = 0; - if(state->cls) { - state->method->is_constructor = !strcmp(state->cls->info->name,name); - state->cls->has_constructor |= state->method->is_constructor; - } else { - state->method->is_global = 1; - state->method->late_binding = 1; // for global methods, always push local_0 on the scope stack - } - if(state->method->is_constructor) - name = "__as3_constructor__"; + if(state->cls) { + state->method->is_constructor = !strcmp(state->cls->info->name,name); + } else { + state->method->is_global = 1; + state->method->late_binding = 1; // for global methods, always push local_0 on the scope stack + } + if(state->method->is_constructor) + name = "__as3_constructor__"; - if(as3_pass == 1) { return_type = 0; state->method->info = registerfunction(getset, flags, name, params, return_type, 0); + + dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, state->method); } if(as3_pass == 2) { - /* retrieve the member info that we stored in the first pass. - TODO: better getter/setter support? */ - if(!state->cls) state->method->info = registry_findclass(state->package, name)->function; - else state->method->info = registry_findmember(state->cls->info, name, 0); - state->method->info->return_type = return_type; + state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount); + parserassert(state->method); - global->variable_count = 0; - /* state->vars is initialized by state_new */ - if(!state->method->is_global) - new_variable((flags&FLAG_STATIC)?"class":"this", state->cls->info, 0); - else - new_variable("globalscope", 0, 0); - param_list_t*p=0; - for(p=params->list;p;p=p->next) { - new_variable(p->param->name, p->param->type, 0); + if(state->cls) { + memberinfo_t*m = registry_findmember(state->cls->info, name, 2); + check_override(m, flags); } + + if(state->cls) { + state->cls->has_constructor |= state->method->is_constructor; + } + + state->method->info->return_type = return_type; + function_initvars(params, flags); } } -static void endfunction(token_t*ns, int flags, enum yytokentype getset, char*name, +static abc_method_t* endfunction(token_t*ns, int flags, enum yytokentype getset, char*name, params_t*params, classinfo_t*return_type, code_t*body) { if(as3_pass==1) { old_state(); - return; + return 0; } abc_method_t*f = 0; multiname_t*type2 = sig2mname(return_type); int slot = 0; - if(state->method->is_constructor) { + if(state->method->inner) { + f = state->method->abc; + abc_method_init(f, global->file, type2, 1); + } else if(state->method->is_constructor) { f = abc_class_getconstructor(state->cls->abc, type2); } else if(!state->method->is_global) { - namespace_t mname_ns = flags2namespace(flags, ""); + namespace_t mname_ns = {state->method->info->access, ""}; multiname_t mname = {QNAME, &mname_ns, 0, name}; if(flags&FLAG_STATIC) @@ -1026,7 +1203,7 @@ static void endfunction(token_t*ns, int flags, enum yytokentype getset, char*nam f = abc_class_method(state->cls->abc, type2, &mname); slot = f->trait->slot_id; } else { - namespace_t mname_ns = flags2namespace(flags, state->package); + namespace_t mname_ns = {state->method->info->access, state->package}; multiname_t mname = {QNAME, &mname_ns, 0, name}; f = abc_method_new(global->file, type2, 1); @@ -1067,10 +1244,9 @@ static void endfunction(token_t*ns, int flags, enum yytokentype getset, char*nam } old_state(); + return f; } - - char is_subtype_of(classinfo_t*type, classinfo_t*supertype) { return 1; // FIXME @@ -1168,6 +1344,8 @@ code_t*converttype(code_t*c, classinfo_t*from, classinfo_t*to) return c; if(TYPE_IS_CLASS(from) && TYPE_IS_CLASS(to)) return c; + if(TYPE_IS_NULL(from) && !IS_NUMBER_OR_INT(to)) + return c; syntaxerror("can't convert type %s to %s", from->name, to->name); return 0; // make gcc happy } @@ -1197,11 +1375,11 @@ char is_pushundefined(code_t*c) return (c && !c->prev && !c->next && c->opcode == OPCODE_PUSHUNDEFINED); } -static classinfo_t* find_class(char*name) +static slotinfo_t* find_class(char*name) { - classinfo_t*c=0; + slotinfo_t*c=0; - c = registry_findclass(state->package, name); + c = registry_find(state->package, name); if(c) return c; /* try explicit imports */ @@ -1209,7 +1387,7 @@ static classinfo_t* find_class(char*name) if(c) return c; while(e) { if(!strcmp(e->key, name)) { - c = (classinfo_t*)e->data; + c = (slotinfo_t*)e->data; if(c) return c; } e = e->next; @@ -1219,17 +1397,17 @@ static classinfo_t* find_class(char*name) import_list_t*l = state->wildcard_imports; while(l) { //printf("does package %s contain a class %s?\n", l->import->package, name); - c = registry_findclass(l->import->package, name); + c = registry_find(l->import->package, name); if(c) return c; l = l->next; } /* try global package */ - c = registry_findclass("", name); + c = registry_find("", name); if(c) return c; - + /* try local "filename" package */ - c = registry_findclass(current_filename_short, name); + c = registry_find(internal_filename_package, name); if(c) return c; return 0; @@ -1266,7 +1444,6 @@ static code_t* toreadwrite(code_t*in, code_t*middlepart, char justassign, char r [prefix code] ([dup]) [read instruction] [middlepart] [setvar] [write instruction] [getvar] */ - if(in && in->opcode == OPCODE_COERCE_A) { in = code_cutlast(in); } @@ -1386,6 +1563,7 @@ static code_t* toreadwrite(code_t*in, code_t*middlepart, char justassign, char r c = code_append(c, write); c = code_append(c, r); } else { + code_free(r);r=0; temp = gettempvar(); if(prefix) { c = code_append(c, prefix); @@ -1541,7 +1719,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar) /* Line 273 of skeleton.m4 */ -#line 1545 "parser.tab.c" +#line 1723 "parser.tab.c" #ifdef short # undef short @@ -1754,22 +1932,22 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 119 +#define YYFINAL 125 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2463 +#define YYLAST 3223 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 130 +#define YYNTOKENS 133 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 105 +#define YYNNTS 109 /* YYNRULES -- Number of rules. */ -#define YYNRULES 285 +#define YYNRULES 301 /* YYNRULES -- Number of states. */ -#define YYNSTATES 478 +#define YYNSTATES 512 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 360 +#define YYMAXUTOK 362 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1780,16 +1958,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 116, 2, 2, 2, 114, 106, 2, - 126, 129, 113, 111, 97, 110, 123, 112, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 103, 96, - 107, 99, 108, 102, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 117, 2, 2, 2, 115, 107, 2, + 121, 132, 114, 112, 98, 111, 126, 113, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 104, 97, + 108, 100, 109, 103, 127, 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, 120, 2, 121, 105, 2, 2, 2, 2, 2, + 2, 123, 2, 124, 106, 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, 122, 104, 128, 115, 2, 2, 2, + 2, 2, 2, 125, 105, 131, 116, 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, @@ -1812,8 +1990,8 @@ static const yytype_uint8 yytranslate[] = 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, 98, 100, 101, 109, 117, 118, 119, 124, 125, - 127 + 95, 96, 99, 101, 102, 110, 118, 119, 120, 122, + 128, 129, 130 }; #if YYDEBUG @@ -1822,158 +2000,168 @@ static const yytype_uint8 yytranslate[] = static const yytype_uint16 yyprhs[] = { 0, 0, 3, 5, 6, 8, 10, 13, 15, 17, - 19, 21, 23, 25, 27, 28, 30, 32, 35, 37, - 39, 41, 43, 45, 47, 49, 50, 53, 55, 57, - 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, - 79, 81, 83, 85, 87, 89, 91, 93, 97, 100, - 103, 105, 107, 110, 111, 114, 117, 119, 123, 127, - 128, 131, 132, 140, 141, 143, 145, 149, 151, 154, - 158, 167, 174, 175, 182, 183, 191, 193, 196, 198, - 201, 202, 204, 206, 209, 211, 214, 219, 223, 224, - 233, 234, 244, 245, 251, 253, 256, 258, 261, 263, - 264, 271, 274, 276, 282, 284, 286, 290, 292, 293, - 300, 301, 307, 310, 315, 316, 318, 320, 323, 325, - 327, 329, 331, 333, 335, 337, 339, 341, 342, 345, - 346, 349, 350, 353, 354, 364, 365, 374, 375, 377, - 379, 382, 384, 386, 388, 390, 391, 393, 395, 398, - 400, 403, 412, 414, 416, 422, 423, 426, 428, 430, - 432, 434, 436, 438, 440, 442, 443, 445, 448, 453, - 457, 459, 464, 467, 469, 471, 472, 473, 486, 488, - 489, 499, 501, 505, 507, 509, 511, 515, 517, 519, - 521, 524, 525, 526, 530, 531, 533, 535, 539, 543, - 548, 553, 556, 558, 561, 563, 565, 569, 571, 573, - 575, 577, 579, 581, 583, 585, 587, 589, 591, 593, - 595, 597, 599, 601, 603, 605, 609, 613, 617, 621, - 625, 629, 633, 637, 641, 645, 648, 651, 655, 659, - 663, 667, 671, 675, 679, 683, 687, 691, 695, 699, - 703, 707, 711, 716, 719, 721, 725, 728, 733, 737, - 738, 740, 744, 750, 754, 758, 762, 766, 770, 774, - 778, 782, 786, 790, 794, 800, 803, 806, 809, 812, - 816, 820, 822, 826, 832, 838 + 19, 21, 23, 25, 30, 32, 33, 35, 37, 40, + 42, 44, 46, 48, 50, 55, 57, 59, 60, 63, + 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, + 85, 87, 89, 91, 93, 95, 97, 99, 101, 106, + 108, 112, 115, 118, 120, 122, 126, 129, 130, 133, + 136, 138, 142, 146, 147, 150, 151, 159, 160, 162, + 164, 168, 170, 173, 177, 186, 193, 194, 201, 202, + 210, 212, 215, 217, 220, 221, 223, 225, 228, 230, + 233, 238, 242, 243, 252, 253, 263, 264, 270, 272, + 275, 277, 280, 282, 283, 290, 293, 295, 301, 303, + 305, 309, 311, 312, 319, 320, 326, 329, 334, 335, + 337, 339, 342, 344, 346, 348, 350, 352, 354, 356, + 358, 360, 362, 363, 366, 367, 370, 371, 374, 375, + 385, 386, 395, 396, 398, 400, 403, 405, 410, 412, + 414, 416, 417, 419, 421, 424, 426, 429, 438, 440, + 442, 448, 449, 452, 454, 456, 458, 460, 462, 464, + 466, 468, 470, 471, 473, 476, 481, 485, 487, 492, + 495, 497, 499, 500, 501, 514, 516, 517, 518, 529, + 531, 535, 537, 539, 541, 545, 547, 549, 551, 554, + 555, 556, 560, 561, 563, 565, 567, 570, 573, 574, + 579, 584, 589, 592, 594, 597, 599, 601, 605, 607, + 609, 611, 613, 615, 617, 619, 621, 623, 625, 627, + 629, 631, 633, 635, 637, 639, 641, 645, 649, 653, + 657, 661, 665, 669, 673, 677, 681, 684, 687, 691, + 695, 699, 703, 707, 711, 715, 719, 723, 727, 731, + 735, 739, 743, 747, 752, 755, 757, 761, 764, 769, + 773, 774, 776, 780, 786, 790, 794, 798, 802, 806, + 810, 814, 818, 822, 826, 830, 836, 839, 842, 845, + 848, 852, 855, 860, 866, 870, 876, 880, 882, 886, + 892, 898 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 131, 0, -1, 132, -1, -1, 133, -1, 134, -1, - 133, 134, -1, 180, -1, 192, -1, 190, -1, 208, - -1, 201, -1, 143, -1, 96, -1, -1, 136, -1, - 137, -1, 136, 137, -1, 192, -1, 190, -1, 208, - -1, 201, -1, 143, -1, 96, -1, 139, -1, -1, - 139, 141, -1, 141, -1, 183, -1, 154, -1, 155, - -1, 156, -1, 158, -1, 166, -1, 149, -1, 177, - -1, 174, -1, 227, -1, 96, -1, 140, -1, 145, - -1, 160, -1, 161, -1, 224, -1, 176, -1, 233, - -1, 234, -1, 122, 139, 128, -1, 122, 128, -1, - 141, 96, -1, 141, -1, 140, -1, 99, 225, -1, - -1, 45, 146, -1, 31, 146, -1, 147, -1, 146, - 97, 147, -1, 3, 217, 144, -1, -1, 64, 142, - -1, -1, 63, 126, 150, 226, 129, 142, 148, -1, - -1, 145, -1, 227, -1, 45, 3, 217, -1, 3, - -1, 12, 126, -1, 12, 49, 126, -1, 153, 151, - 96, 226, 96, 227, 129, 142, -1, 153, 152, 67, - 226, 129, 142, -1, -1, 13, 126, 157, 226, 129, - 142, -1, -1, 14, 159, 142, 13, 126, 226, 129, - -1, 65, -1, 65, 3, -1, 29, -1, 29, 3, - -1, -1, 163, -1, 165, -1, 163, 165, -1, 164, - -1, 163, 164, -1, 33, 228, 103, 138, -1, 61, - 103, 138, -1, -1, 15, 126, 167, 228, 129, 122, - 162, 128, -1, -1, 32, 126, 3, 217, 129, 169, - 122, 138, 128, -1, -1, 27, 122, 171, 138, 128, - -1, 168, -1, 172, 168, -1, 172, -1, 172, 170, - -1, 170, -1, -1, 51, 122, 175, 138, 128, 173, - -1, 36, 226, -1, 36, -1, 38, 126, 226, 129, - 142, -1, 3, -1, 18, -1, 179, 123, 178, -1, - 178, -1, -1, 18, 179, 122, 181, 135, 128, -1, - -1, 18, 122, 182, 135, 128, -1, 40, 214, -1, - 40, 179, 123, 113, -1, -1, 185, -1, 186, -1, - 185, 186, -1, 20, -1, 21, -1, 19, -1, 37, - -1, 46, -1, 48, -1, 47, -1, 25, -1, 23, - -1, -1, 53, 214, -1, -1, 53, 215, -1, -1, - 16, 215, -1, -1, 184, 30, 3, 187, 189, 122, - 191, 194, 128, -1, -1, 184, 43, 3, 188, 122, - 193, 197, 128, -1, -1, 195, -1, 196, -1, 195, - 196, -1, 96, -1, 201, -1, 208, -1, 140, -1, - -1, 198, -1, 199, -1, 198, 199, -1, 96, -1, - 45, 3, -1, 184, 26, 207, 3, 126, 204, 129, - 217, -1, 45, -1, 31, -1, 184, 200, 3, 217, - 144, -1, -1, 99, 203, -1, 9, -1, 7, -1, - 8, -1, 11, -1, 4, -1, 55, -1, 54, -1, - 44, -1, -1, 205, -1, 90, 206, -1, 205, 97, - 90, 206, -1, 205, 97, 206, -1, 206, -1, 3, - 103, 216, 202, -1, 3, 202, -1, 50, -1, 34, - -1, -1, -1, 184, 26, 207, 3, 126, 204, 129, - 217, 122, 209, 138, 128, -1, 3, -1, -1, 26, - 210, 126, 204, 129, 217, 122, 138, 128, -1, 3, - -1, 179, 123, 3, -1, 213, -1, 212, -1, 214, - -1, 215, 97, 214, -1, 214, -1, 113, -1, 35, - -1, 103, 216, -1, -1, -1, 126, 219, 129, -1, - -1, 220, -1, 225, -1, 220, 97, 225, -1, 24, - 212, 218, -1, 228, 126, 219, 129, -1, 52, 126, - 219, 129, -1, 62, 228, -1, 41, -1, 41, 226, - -1, 228, -1, 228, -1, 226, 97, 228, -1, 226, - -1, 211, -1, 229, -1, 232, -1, 221, -1, 223, - -1, 5, -1, 9, -1, 10, -1, 7, -1, 8, - -1, 11, -1, 4, -1, 28, -1, 55, -1, 54, - -1, 44, -1, 222, -1, 228, 107, 228, -1, 228, - 108, 228, -1, 228, 73, 228, -1, 228, 74, 228, - -1, 228, 69, 228, -1, 228, 70, 228, -1, 228, - 72, 228, -1, 228, 71, 228, -1, 228, 84, 228, - -1, 228, 85, 228, -1, 116, 228, -1, 115, 228, - -1, 228, 106, 228, -1, 228, 105, 228, -1, 228, - 104, 228, -1, 228, 93, 228, -1, 228, 92, 228, - -1, 228, 91, 228, -1, 228, 112, 228, -1, 228, - 114, 228, -1, 228, 111, 228, -1, 228, 110, 228, - -1, 228, 113, 228, -1, 228, 67, 228, -1, 228, - 68, 228, -1, 228, 39, 228, -1, 228, 66, 228, - -1, 42, 126, 228, 129, -1, 35, 228, -1, 35, - -1, 126, 226, 129, -1, 110, 228, -1, 228, 120, - 228, 121, -1, 120, 219, 121, -1, -1, 231, -1, - 225, 103, 225, -1, 231, 97, 225, 103, 225, -1, - 122, 230, 128, -1, 228, 78, 228, -1, 228, 77, - 228, -1, 228, 82, 228, -1, 228, 81, 228, -1, - 228, 83, 228, -1, 228, 76, 228, -1, 228, 75, - 228, -1, 228, 79, 228, -1, 228, 80, 228, -1, - 228, 99, 228, -1, 228, 102, 228, 103, 228, -1, - 228, 88, -1, 228, 87, -1, 88, 228, -1, 87, - 228, -1, 52, 123, 3, -1, 228, 123, 3, -1, - 3, -1, 184, 17, 3, -1, 184, 17, 3, 99, - 3, -1, 184, 17, 3, 99, 4, -1, 22, 17, + 134, 0, -1, 135, -1, -1, 136, -1, 137, -1, + 136, 137, -1, 184, -1, 196, -1, 194, -1, 212, + -1, 205, -1, 146, -1, 147, 125, 135, 131, -1, + 97, -1, -1, 139, -1, 140, -1, 139, 140, -1, + 196, -1, 194, -1, 212, -1, 205, -1, 146, -1, + 147, 125, 138, 131, -1, 97, -1, 142, -1, -1, + 142, 144, -1, 144, -1, 187, -1, 158, -1, 159, + -1, 160, -1, 162, -1, 170, -1, 153, -1, 181, + -1, 178, -1, 234, -1, 241, -1, 97, -1, 143, + -1, 149, -1, 164, -1, 165, -1, 231, -1, 180, + -1, 147, 125, 142, 131, -1, 240, -1, 125, 142, + 131, -1, 125, 131, -1, 144, 97, -1, 144, -1, + 143, -1, 3, 87, 3, -1, 100, 232, -1, -1, + 46, 150, -1, 32, 150, -1, 151, -1, 150, 98, + 151, -1, 3, 222, 148, -1, -1, 65, 145, -1, + -1, 64, 121, 154, 233, 132, 145, 152, -1, -1, + 149, -1, 234, -1, 46, 3, 222, -1, 3, -1, + 13, 121, -1, 13, 50, 121, -1, 157, 155, 97, + 233, 97, 234, 132, 145, -1, 157, 156, 68, 233, + 132, 145, -1, -1, 14, 121, 161, 233, 132, 145, + -1, -1, 15, 163, 145, 14, 121, 233, 132, -1, + 66, -1, 66, 3, -1, 30, -1, 30, 3, -1, + -1, 167, -1, 169, -1, 167, 169, -1, 168, -1, + 167, 168, -1, 34, 235, 104, 141, -1, 62, 104, + 141, -1, -1, 16, 121, 171, 235, 132, 125, 166, + 131, -1, -1, 33, 121, 3, 222, 132, 173, 125, + 141, 131, -1, -1, 28, 125, 175, 141, 131, -1, + 172, -1, 176, 172, -1, 176, -1, 176, 174, -1, + 174, -1, -1, 52, 125, 179, 141, 131, 177, -1, + 37, 233, -1, 37, -1, 39, 121, 233, 132, 145, + -1, 3, -1, 19, -1, 183, 126, 182, -1, 182, + -1, -1, 19, 183, 125, 185, 138, 131, -1, -1, + 19, 125, 186, 138, 131, -1, 41, 218, -1, 41, + 183, 126, 114, -1, -1, 189, -1, 190, -1, 189, + 190, -1, 21, -1, 22, -1, 20, -1, 38, -1, + 47, -1, 49, -1, 48, -1, 26, -1, 24, -1, + 4, -1, -1, 54, 219, -1, -1, 54, 220, -1, + -1, 17, 220, -1, -1, 188, 31, 3, 191, 193, + 125, 195, 198, 131, -1, -1, 188, 44, 3, 192, + 125, 197, 201, 131, -1, -1, 199, -1, 200, -1, + 199, 200, -1, 97, -1, 147, 125, 198, 131, -1, + 205, -1, 212, -1, 143, -1, -1, 202, -1, 203, + -1, 202, 203, -1, 97, -1, 46, 3, -1, 188, + 27, 211, 3, 121, 208, 132, 222, -1, 46, -1, + 32, -1, 188, 204, 3, 222, 148, -1, -1, 100, + 207, -1, 10, -1, 8, -1, 9, -1, 12, -1, + 5, -1, 56, -1, 55, -1, 45, -1, 3, -1, + -1, 209, -1, 91, 210, -1, 209, 98, 91, 210, + -1, 209, 98, 210, -1, 210, -1, 3, 104, 221, + 206, -1, 3, 206, -1, 51, -1, 35, -1, -1, + -1, 188, 27, 211, 3, 121, 208, 132, 222, 125, + 213, 141, 131, -1, 3, -1, -1, -1, 27, 214, + 121, 208, 132, 222, 125, 216, 141, 131, -1, 3, + -1, 183, 126, 3, -1, 218, -1, 217, -1, 219, + -1, 220, 98, 219, -1, 219, -1, 114, -1, 36, + -1, 104, 221, -1, -1, -1, 121, 224, 132, -1, + -1, 225, -1, 226, -1, 232, -1, 225, 98, -1, + 226, 232, -1, -1, 25, 235, 227, 223, -1, 235, + 121, 224, 132, -1, 53, 121, 224, 132, -1, 63, + 235, -1, 42, -1, 42, 233, -1, 235, -1, 235, + -1, 233, 98, 235, -1, 233, -1, 215, -1, 236, + -1, 239, -1, 228, -1, 230, -1, 229, -1, 6, + -1, 10, -1, 11, -1, 8, -1, 9, -1, 12, + -1, 5, -1, 29, -1, 56, -1, 55, -1, 45, + -1, 235, 108, 235, -1, 235, 109, 235, -1, 235, + 74, 235, -1, 235, 75, 235, -1, 235, 70, 235, + -1, 235, 71, 235, -1, 235, 73, 235, -1, 235, + 72, 235, -1, 235, 85, 235, -1, 235, 86, 235, + -1, 117, 235, -1, 116, 235, -1, 235, 107, 235, + -1, 235, 106, 235, -1, 235, 105, 235, -1, 235, + 94, 235, -1, 235, 93, 235, -1, 235, 92, 235, + -1, 235, 113, 235, -1, 235, 115, 235, -1, 235, + 112, 235, -1, 235, 111, 235, -1, 235, 114, 235, + -1, 235, 68, 235, -1, 235, 69, 235, -1, 235, + 40, 235, -1, 235, 67, 235, -1, 43, 121, 235, + 132, -1, 36, 235, -1, 36, -1, 121, 233, 132, + -1, 111, 235, -1, 235, 123, 235, 124, -1, 123, + 224, 124, -1, -1, 238, -1, 232, 104, 232, -1, + 238, 98, 232, 104, 232, -1, 125, 237, 131, -1, + 235, 79, 235, -1, 235, 78, 235, -1, 235, 83, + 235, -1, 235, 82, 235, -1, 235, 84, 235, -1, + 235, 77, 235, -1, 235, 76, 235, -1, 235, 80, + 235, -1, 235, 81, 235, -1, 235, 100, 235, -1, + 235, 103, 235, 104, 235, -1, 235, 89, -1, 235, + 88, -1, 89, 235, -1, 88, 235, -1, 53, 126, + 3, -1, 127, 3, -1, 235, 126, 127, 3, -1, + 235, 126, 3, 87, 3, -1, 235, 90, 3, -1, + 235, 126, 121, 235, 132, -1, 235, 126, 3, -1, + 3, -1, 188, 18, 3, -1, 188, 18, 3, 100, + 3, -1, 188, 18, 3, 100, 5, -1, 23, 18, 3, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 1519, 1519, 1521, 1521, 1522, 1523, 1525, 1526, 1527, - 1528, 1529, 1530, 1531, 1533, 1533, 1534, 1535, 1537, 1538, - 1539, 1540, 1541, 1542, 1544, 1545, 1547, 1548, 1551, 1552, - 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1563, 1564, - 1565, 1566, 1567, 1568, 1569, 1571, 1572, 1574, 1575, 1576, - 1577, 1581, 1588, 1589, 1593, 1594, 1596, 1597, 1599, 1640, - 1641, 1644, 1644, 1663, 1664, 1665, 1668, 1671, 1675, 1676, - 1678, 1698, 1741, 1741, 1760, 1760, 1775, 1778, 1781, 1784, - 1788, 1789, 1790, 1791, 1792, 1793, 1795, 1806, 1809, 1809, - 1838, 1838, 1858, 1858, 1875, 1876, 1877, 1878, 1886, 1895, - 1895, 1940, 1944, 1955, 1964, 1965, 1967, 1968, 1970, 1970, - 1972, 1972, 1975, 1983, 1993, 1994, 1995, 1996, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2011, - 2012, 2014, 2015, 2019, 2017, 2025, 2023, 2031, 2032, 2033, - 2034, 2035, 2036, 2037, 2039, 2045, 2046, 2047, 2048, 2049, - 2050, 2053, 2065, 2065, 2067, 2126, 2127, 2129, 2130, 2131, - 2132, 2133, 2135, 2136, 2137, 2142, 2145, 2150, 2155, 2162, - 2166, 2171, 2177, 2183, 2184, 2185, 2188, 2187, 2208, 2209, - 2210, 2218, 2226, 2234, 2235, 2237, 2238, 2240, 2241, 2242, - 2251, 2252, 2256, 2257, 2259, 2260, 2261, 2264, 2269, 2293, - 2341, 2361, 2382, 2385, 2392, 2393, 2394, 2400, 2406, 2408, - 2410, 2412, 2414, 2416, 2433, 2438, 2441, 2444, 2447, 2450, - 2453, 2456, 2459, 2462, 2466, 2467, 2470, 2473, 2476, 2479, - 2482, 2485, 2488, 2492, 2503, 2521, 2526, 2531, 2536, 2541, - 2546, 2550, 2554, 2559, 2563, 2567, 2576, 2585, 2595, 2600, - 2612, 2618, 2623, 2629, 2635, 2639, 2641, 2652, 2661, 2668, - 2669, 2671, 2677, 2686, 2693, 2705, 2711, 2717, 2723, 2729, - 2735, 2741, 2754, 2765, 2772, 2785, 2812, 2826, 2840, 2854, - 2869, 2903, 3001, 3002, 3003, 3005 + 0, 1698, 1698, 1700, 1700, 1701, 1702, 1704, 1705, 1706, + 1707, 1708, 1709, 1710, 1711, 1713, 1713, 1714, 1715, 1717, + 1718, 1719, 1720, 1721, 1722, 1723, 1725, 1726, 1728, 1729, + 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, + 1742, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1754, + 1756, 1757, 1758, 1759, 1763, 1770, 1774, 1775, 1779, 1780, + 1782, 1783, 1785, 1828, 1829, 1832, 1832, 1851, 1852, 1853, + 1856, 1859, 1863, 1864, 1866, 1886, 1929, 1929, 1948, 1948, + 1963, 1966, 1969, 1972, 1976, 1977, 1978, 1979, 1980, 1981, + 1983, 1994, 1997, 1997, 2026, 2026, 2046, 2046, 2063, 2064, + 2065, 2066, 2074, 2083, 2083, 2128, 2132, 2143, 2152, 2153, + 2155, 2156, 2158, 2158, 2160, 2160, 2163, 2177, 2193, 2194, + 2195, 2196, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, + 2206, 2207, 2209, 2210, 2212, 2213, 2215, 2216, 2220, 2218, + 2226, 2224, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, + 2241, 2247, 2248, 2249, 2250, 2251, 2252, 2255, 2268, 2268, + 2270, 2343, 2344, 2346, 2347, 2348, 2349, 2350, 2352, 2353, + 2354, 2355, 2364, 2368, 2374, 2380, 2388, 2393, 2399, 2407, + 2415, 2416, 2417, 2420, 2419, 2434, 2435, 2437, 2436, 2458, + 2467, 2480, 2481, 2483, 2484, 2486, 2487, 2488, 2497, 2498, + 2502, 2503, 2505, 2506, 2507, 2509, 2513, 2514, 2519, 2520, + 2556, 2602, 2623, 2644, 2647, 2654, 2655, 2656, 2662, 2668, + 2670, 2672, 2674, 2676, 2678, 2680, 2697, 2702, 2705, 2708, + 2711, 2714, 2717, 2720, 2723, 2726, 2730, 2733, 2736, 2739, + 2742, 2745, 2748, 2751, 2755, 2766, 2784, 2789, 2794, 2799, + 2804, 2809, 2813, 2817, 2822, 2826, 2830, 2839, 2848, 2858, + 2863, 2875, 2881, 2886, 2892, 2898, 2902, 2904, 2915, 2924, + 2931, 2932, 2934, 2940, 2949, 2956, 2968, 2974, 2980, 2986, + 2992, 2998, 3004, 3017, 3028, 3035, 3048, 3075, 3089, 3103, + 3117, 3132, 3139, 3146, 3153, 3160, 3171, 3205, 3307, 3308, + 3309, 3311 }; #endif @@ -1982,13 +2170,14 @@ static const yytype_uint16 yyrline[] = First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "T_IDENTIFIER", "T_STRING", "T_REGEXP", - "T_EMPTY", "T_INT", "T_UINT", "T_BYTE", "T_SHORT", "T_FLOAT", "\"for\"", - "\"while\"", "\"do\"", "\"switch\"", "\"implements\"", "\"namespace\"", - "\"package\"", "\"protected\"", "\"public\"", "\"private\"", "\"use\"", - "\"internal\"", "\"new\"", "\"native\"", "\"function\"", "\"finally\"", - "\"undefined\"", "\"continue\"", "\"class\"", "\"const\"", "\"catch\"", - "\"case\"", "\"set\"", "\"void\"", "\"throw\"", "\"static\"", "\"with\"", + "$end", "error", "$undefined", "T_IDENTIFIER", "T_NAMESPACE", + "T_STRING", "T_REGEXP", "T_EMPTY", "T_INT", "T_UINT", "T_BYTE", + "T_SHORT", "T_FLOAT", "\"for\"", "\"while\"", "\"do\"", "\"switch\"", + "\"implements\"", "\"namespace\"", "\"package\"", "\"protected\"", + "\"public\"", "\"private\"", "\"use\"", "\"internal\"", "\"new\"", + "\"native\"", "\"function\"", "\"finally\"", "\"undefined\"", + "\"continue\"", "\"class\"", "\"const\"", "\"catch\"", "\"case\"", + "\"set\"", "\"void\"", "\"throw\"", "\"static\"", "\"with\"", "\"instanceof\"", "\"import\"", "\"return\"", "\"typeof\"", "\"interface\"", "\"null\"", "\"var\"", "\"dynamic\"", "\"override\"", "\"final\"", "\"each\"", "\"get\"", "\"try\"", "\"super\"", @@ -2002,28 +2191,29 @@ static const char *const yytname[] = "';'", "','", "below_assignment", "'='", "\"&=\"", "\"^=\"", "'?'", "':'", "'|'", "'^'", "'&'", "'<'", "'>'", "below_minus", "'-'", "'+'", "'/'", "'*'", "'%'", "'~'", "'!'", "minusminus_prefix", - "plusplus_prefix", "below_curly", "'['", "']'", "'{'", "'.'", - "above_identifier", "below_else", "'('", "above_function", "'}'", "')'", - "$accept", "PROGRAM", "MAYBE_PROGRAM_CODE_LIST", "PROGRAM_CODE_LIST", - "PROGRAM_CODE", "MAYBE_INPACKAGE_CODE_LIST", "INPACKAGE_CODE_LIST", - "INPACKAGE_CODE", "MAYBECODE", "CODE", "CODE_STATEMENT", "CODEPIECE", - "CODEBLOCK", "PACKAGE_INITCODE", "MAYBEEXPRESSION", - "VARIABLE_DECLARATION", "VARIABLE_LIST", "ONE_VARIABLE", "MAYBEELSE", - "IF", "$@1", "FOR_INIT", "FOR_IN_INIT", "FOR_START", "FOR", "FOR_IN", - "WHILE", "$@2", "DO_WHILE", "$@3", "BREAK", "CONTINUE", - "MAYBE_CASE_LIST", "CASE_LIST", "CASE", "DEFAULT", "SWITCH", "$@4", - "CATCH", "$@5", "FINALLY", "$@6", "CATCH_LIST", "CATCH_FINALLY_LIST", - "TRY", "$@7", "THROW", "WITH", "X_IDENTIFIER", "PACKAGE", - "PACKAGE_DECLARATION", "$@8", "$@9", "IMPORT", "MAYBE_MODIFIERS", - "MODIFIER_LIST", "MODIFIER", "EXTENDS", "EXTENDS_LIST", - "IMPLEMENTS_LIST", "CLASS_DECLARATION", "$@10", "INTERFACE_DECLARATION", - "$@11", "MAYBE_CLASS_BODY", "CLASS_BODY", "CLASS_BODY_ITEM", - "MAYBE_INTERFACE_BODY", "INTERFACE_BODY", "IDECLARATION", "VARCONST", - "SLOT_DECLARATION", "MAYBESTATICCONSTANT", "STATICCONSTANT", - "MAYBE_PARAM_LIST", "PARAM_LIST", "PARAM", "GETSET", + "plusplus_prefix", "below_curly", "'('", "new2", "'['", "']'", "'{'", + "'.'", "'@'", "above_identifier", "below_else", "above_function", "'}'", + "')'", "$accept", "PROGRAM", "MAYBE_PROGRAM_CODE_LIST", + "PROGRAM_CODE_LIST", "PROGRAM_CODE", "MAYBE_INPACKAGE_CODE_LIST", + "INPACKAGE_CODE_LIST", "INPACKAGE_CODE", "MAYBECODE", "CODE", + "CODE_STATEMENT", "CODEPIECE", "CODEBLOCK", "PACKAGE_INITCODE", + "CONDITIONAL_COMPILATION", "MAYBEEXPRESSION", "VARIABLE_DECLARATION", + "VARIABLE_LIST", "ONE_VARIABLE", "MAYBEELSE", "IF", "$@1", "FOR_INIT", + "FOR_IN_INIT", "FOR_START", "FOR", "FOR_IN", "WHILE", "$@2", "DO_WHILE", + "$@3", "BREAK", "CONTINUE", "MAYBE_CASE_LIST", "CASE_LIST", "CASE", + "DEFAULT", "SWITCH", "$@4", "CATCH", "$@5", "FINALLY", "$@6", + "CATCH_LIST", "CATCH_FINALLY_LIST", "TRY", "$@7", "THROW", "WITH", + "X_IDENTIFIER", "PACKAGE", "PACKAGE_DECLARATION", "$@8", "$@9", "IMPORT", + "MAYBE_MODIFIERS", "MODIFIER_LIST", "MODIFIER", "EXTENDS", + "EXTENDS_LIST", "IMPLEMENTS_LIST", "CLASS_DECLARATION", "$@10", + "INTERFACE_DECLARATION", "$@11", "MAYBE_CLASS_BODY", "CLASS_BODY", + "CLASS_BODY_ITEM", "MAYBE_INTERFACE_BODY", "INTERFACE_BODY", + "IDECLARATION", "VARCONST", "SLOT_DECLARATION", "MAYBESTATICCONSTANT", + "STATICCONSTANT", "MAYBE_PARAM_LIST", "PARAM_LIST", "PARAM", "GETSET", "FUNCTION_DECLARATION", "$@12", "MAYBE_IDENTIFIER", "INNERFUNCTION", - "CLASS", "PACKAGEANDCLASS", "QNAME", "QNAME_LIST", "TYPE", "MAYBETYPE", - "MAYBE_PARAM_VALUES", "MAYBE_EXPRESSION_LIST", "EXPRESSION_LIST", "NEW", + "$@13", "CLASS", "PACKAGEANDCLASS", "CLASS_SPEC", "CLASS_SPEC_LIST", + "TYPE", "MAYBETYPE", "MAYBE_PARAM_VALUES", "MAYBE_EXPRESSION_LIST", + "EXPRESSION_LIST", "EXPRESSION_LIST_AND_COMMA", "XX", "NEW", "FUNCTIONCALL", "DELETE", "RETURN", "NONCOMMAEXPRESSION", "EXPRESSION", "VOIDEXPRESSION", "E", "CONSTANT", "MAYBE_EXPRPAIR_LIST", "EXPRPAIR_LIST", "VAR_READ", "NAMESPACE_DECLARATION", "USE_NAMESPACE", 0 @@ -2044,79 +2234,84 @@ static const yytype_uint16 yytoknum[] = 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, 59, 44, 351, 61, - 352, 353, 63, 58, 124, 94, 38, 60, 62, 354, - 45, 43, 47, 42, 37, 126, 33, 355, 356, 357, - 91, 93, 123, 46, 358, 359, 40, 360, 125, 41 + 345, 346, 347, 348, 349, 350, 351, 59, 44, 352, + 61, 353, 354, 63, 58, 124, 94, 38, 60, 62, + 355, 45, 43, 47, 42, 37, 126, 33, 356, 357, + 358, 40, 359, 91, 93, 123, 46, 64, 360, 361, + 362, 125, 41 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 130, 131, 132, 132, 133, 133, 134, 134, 134, - 134, 134, 134, 134, 135, 135, 136, 136, 137, 137, - 137, 137, 137, 137, 138, 138, 139, 139, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, - 142, 143, 144, 144, 145, 145, 146, 146, 147, 148, - 148, 150, 149, 151, 151, 151, 152, 152, 153, 153, - 154, 155, 157, 156, 159, 158, 160, 160, 161, 161, - 162, 162, 162, 162, 163, 163, 164, 165, 167, 166, - 169, 168, 171, 170, 172, 172, 173, 173, 173, 175, - 174, 176, 176, 177, 178, 178, 179, 179, 181, 180, - 182, 180, 183, 183, 184, 184, 185, 185, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 187, 187, 188, - 188, 189, 189, 191, 190, 193, 192, 194, 194, 195, - 195, 196, 196, 196, 196, 197, 197, 198, 198, 199, - 199, 199, 200, 200, 201, 202, 202, 203, 203, 203, - 203, 203, 203, 203, 203, 204, 204, 204, 204, 205, - 205, 206, 206, 207, 207, 207, 209, 208, 210, 210, - 211, 212, 213, 214, 214, 215, 215, 216, 216, 216, - 217, 217, 218, 218, 219, 219, 220, 220, 221, 222, - 222, 223, 224, 224, 225, 226, 226, 227, 228, 228, - 228, 228, 228, 228, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 230, - 230, 231, 231, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 232, 233, 233, 233, 234 + 0, 133, 134, 135, 135, 136, 136, 137, 137, 137, + 137, 137, 137, 137, 137, 138, 138, 139, 139, 140, + 140, 140, 140, 140, 140, 140, 141, 141, 142, 142, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 145, 145, 145, 145, 146, 147, 148, 148, 149, 149, + 150, 150, 151, 152, 152, 154, 153, 155, 155, 155, + 156, 156, 157, 157, 158, 159, 161, 160, 163, 162, + 164, 164, 165, 165, 166, 166, 166, 166, 167, 167, + 168, 169, 171, 170, 173, 172, 175, 174, 176, 176, + 177, 177, 177, 179, 178, 180, 180, 181, 182, 182, + 183, 183, 185, 184, 186, 184, 187, 187, 188, 188, + 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 191, 191, 192, 192, 193, 193, 195, 194, + 197, 196, 198, 198, 199, 199, 200, 200, 200, 200, + 200, 201, 201, 202, 202, 203, 203, 203, 204, 204, + 205, 206, 206, 207, 207, 207, 207, 207, 207, 207, + 207, 207, 208, 208, 208, 208, 209, 209, 210, 210, + 211, 211, 211, 213, 212, 214, 214, 216, 215, 217, + 218, 219, 219, 220, 220, 221, 221, 221, 222, 222, + 223, 223, 224, 224, 224, 225, 226, 225, 227, 228, + 229, 229, 230, 231, 231, 232, 233, 233, 234, 235, + 235, 235, 235, 235, 235, 235, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 237, 237, 238, 238, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 239, 240, 240, + 240, 241 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 0, 1, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, + 1, 1, 1, 4, 1, 0, 1, 1, 2, 1, + 1, 1, 1, 1, 4, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 2, 2, - 1, 1, 2, 0, 2, 2, 1, 3, 3, 0, - 2, 0, 7, 0, 1, 1, 3, 1, 2, 3, - 8, 6, 0, 6, 0, 7, 1, 2, 1, 2, - 0, 1, 1, 2, 1, 2, 4, 3, 0, 8, - 0, 9, 0, 5, 1, 2, 1, 2, 1, 0, - 6, 2, 1, 5, 1, 1, 3, 1, 0, 6, - 0, 5, 2, 4, 0, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, - 2, 0, 2, 0, 9, 0, 8, 0, 1, 1, - 2, 1, 1, 1, 1, 0, 1, 1, 2, 1, - 2, 8, 1, 1, 5, 0, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 2, 4, 3, - 1, 4, 2, 1, 1, 0, 0, 12, 1, 0, - 9, 1, 3, 1, 1, 1, 3, 1, 1, 1, - 2, 0, 0, 3, 0, 1, 1, 3, 3, 4, - 4, 2, 1, 2, 1, 1, 3, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, + 3, 2, 2, 1, 1, 3, 2, 0, 2, 2, + 1, 3, 3, 0, 2, 0, 7, 0, 1, 1, + 3, 1, 2, 3, 8, 6, 0, 6, 0, 7, + 1, 2, 1, 2, 0, 1, 1, 2, 1, 2, + 4, 3, 0, 8, 0, 9, 0, 5, 1, 2, + 1, 2, 1, 0, 6, 2, 1, 5, 1, 1, + 3, 1, 0, 6, 0, 5, 2, 4, 0, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 2, 0, 2, 0, 2, 0, 9, + 0, 8, 0, 1, 1, 2, 1, 4, 1, 1, + 1, 0, 1, 1, 2, 1, 2, 8, 1, 1, + 5, 0, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 2, 4, 3, 1, 4, 2, + 1, 1, 0, 0, 12, 1, 0, 0, 10, 1, + 3, 1, 1, 1, 3, 1, 1, 1, 2, 0, + 0, 3, 0, 1, 1, 1, 2, 2, 0, 4, + 4, 4, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 4, 2, 1, 3, 2, 4, 3, 0, - 1, 3, 5, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 5, 2, 2, 2, 2, 3, - 3, 1, 3, 5, 5, 3 + 3, 3, 3, 4, 2, 1, 3, 2, 4, 3, + 0, 1, 3, 5, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 5, 2, 2, 2, 2, + 3, 2, 4, 5, 3, 5, 3, 1, 3, 5, + 5, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -2124,647 +2319,807 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 114, 281, 219, 213, 216, 217, 214, 215, 218, 0, - 0, 74, 0, 0, 120, 118, 119, 126, 0, 125, - 179, 220, 254, 121, 0, 0, 0, 223, 122, 124, - 123, 0, 0, 222, 221, 0, 0, 0, 0, 13, - 0, 0, 0, 194, 259, 0, 0, 2, 114, 5, - 51, 12, 34, 63, 29, 30, 31, 32, 33, 36, - 35, 7, 28, 0, 115, 116, 9, 8, 11, 10, - 208, 211, 224, 212, 207, 37, 205, 209, 210, 0, - 68, 72, 114, 88, 104, 105, 110, 107, 0, 181, - 192, 178, 0, 253, 0, 181, 0, 184, 183, 112, - 0, 99, 0, 194, 201, 61, 278, 277, 256, 236, - 235, 0, 195, 196, 204, 0, 0, 260, 0, 1, - 6, 281, 0, 0, 64, 0, 0, 65, 175, 0, - 153, 0, 152, 0, 117, 0, 0, 0, 0, 0, + 118, 297, 131, 231, 225, 228, 229, 226, 227, 230, + 0, 0, 78, 0, 0, 124, 122, 123, 0, 130, + 0, 129, 186, 232, 265, 125, 0, 0, 0, 235, + 126, 128, 127, 0, 0, 234, 233, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 202, 270, 0, 0, + 2, 118, 5, 54, 12, 0, 36, 67, 31, 32, + 33, 34, 35, 38, 37, 7, 30, 0, 119, 120, + 9, 8, 11, 10, 219, 222, 224, 223, 218, 39, + 216, 220, 221, 40, 0, 0, 72, 76, 118, 92, + 108, 109, 114, 111, 0, 0, 297, 208, 185, 0, + 264, 0, 0, 116, 0, 103, 202, 0, 212, 65, + 289, 288, 267, 247, 246, 0, 0, 203, 204, 205, + 215, 0, 0, 271, 291, 1, 6, 118, 297, 0, + 0, 68, 0, 0, 69, 182, 0, 159, 0, 158, + 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 276, 275, 0, + 0, 0, 0, 0, 287, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 194, 69, 0, 0, - 78, 102, 202, 0, 76, 38, 114, 39, 50, 0, - 40, 41, 42, 44, 0, 43, 45, 46, 0, 114, - 108, 0, 194, 198, 165, 0, 0, 0, 25, 279, - 0, 0, 258, 0, 0, 263, 0, 255, 191, 55, - 56, 191, 54, 0, 0, 174, 173, 0, 127, 129, - 191, 206, 250, 251, 248, 249, 229, 230, 232, 231, - 227, 228, 270, 269, 265, 264, 271, 272, 267, 266, - 268, 233, 234, 242, 241, 240, 273, 0, 239, 238, - 237, 225, 226, 246, 245, 243, 247, 244, 0, 280, - 0, 0, 0, 79, 101, 203, 77, 48, 114, 27, - 205, 49, 0, 0, 0, 23, 0, 114, 16, 22, - 19, 18, 21, 20, 114, 106, 0, 155, 0, 0, - 166, 170, 114, 182, 113, 252, 0, 24, 200, 0, - 197, 261, 0, 0, 53, 0, 53, 0, 0, 0, - 0, 131, 0, 0, 53, 0, 257, 199, 114, 285, - 47, 26, 0, 282, 0, 111, 17, 0, 193, 0, - 0, 172, 167, 191, 0, 103, 0, 114, 0, 189, - 188, 0, 187, 190, 0, 58, 57, 0, 114, 165, - 128, 0, 0, 185, 130, 135, 154, 274, 73, 0, - 0, 80, 109, 161, 158, 159, 157, 160, 164, 163, - 162, 156, 155, 0, 0, 169, 0, 0, 94, 98, - 96, 100, 59, 262, 0, 52, 0, 71, 0, 132, - 133, 0, 114, 75, 283, 284, 0, 0, 0, 81, - 84, 82, 171, 25, 168, 92, 0, 95, 97, 114, - 62, 114, 191, 114, 186, 0, 149, 0, 0, 114, - 147, 0, 25, 89, 85, 83, 0, 25, 191, 60, - 70, 0, 141, 144, 0, 0, 114, 139, 142, 143, - 150, 175, 136, 148, 25, 87, 180, 0, 0, 176, - 134, 140, 0, 86, 93, 90, 25, 0, 0, 0, - 165, 25, 177, 0, 0, 191, 91, 151 + 0, 0, 202, 0, 0, 55, 73, 0, 82, 106, + 213, 0, 80, 41, 118, 42, 53, 0, 0, 43, + 44, 45, 47, 0, 46, 49, 0, 118, 112, 0, + 301, 200, 172, 0, 0, 0, 27, 0, 290, 0, + 266, 269, 206, 207, 0, 274, 0, 0, 199, 59, + 60, 199, 58, 0, 0, 181, 180, 0, 132, 134, + 199, 217, 261, 262, 259, 260, 240, 241, 243, 242, + 238, 239, 281, 280, 276, 275, 282, 283, 278, 277, + 279, 244, 245, 294, 253, 252, 251, 284, 0, 250, + 249, 248, 236, 237, 257, 256, 254, 258, 255, 0, + 0, 296, 0, 0, 0, 83, 105, 214, 81, 51, + 118, 29, 216, 52, 0, 118, 0, 0, 25, 0, + 118, 17, 23, 0, 20, 19, 22, 21, 118, 110, + 202, 209, 161, 0, 0, 173, 177, 118, 190, 117, + 263, 0, 26, 211, 0, 272, 0, 13, 0, 57, + 0, 57, 0, 0, 0, 0, 136, 0, 0, 57, + 0, 210, 268, 0, 0, 292, 118, 50, 28, 0, + 118, 298, 0, 115, 18, 118, 0, 0, 0, 0, + 179, 174, 199, 0, 107, 0, 118, 0, 189, 197, + 196, 0, 192, 191, 195, 198, 0, 62, 61, 0, + 118, 172, 133, 0, 0, 193, 135, 140, 160, 285, + 293, 295, 77, 0, 48, 0, 84, 0, 113, 201, + 171, 167, 164, 165, 163, 166, 170, 169, 168, 162, + 161, 0, 0, 176, 0, 0, 98, 102, 100, 104, + 63, 273, 0, 56, 0, 75, 0, 137, 138, 0, + 118, 79, 299, 300, 0, 0, 0, 85, 88, 86, + 24, 178, 187, 175, 96, 0, 99, 101, 118, 66, + 118, 199, 118, 194, 0, 155, 0, 0, 118, 153, + 0, 27, 93, 89, 87, 27, 27, 199, 64, 74, + 0, 146, 150, 0, 0, 0, 118, 144, 148, 149, + 156, 182, 141, 154, 27, 91, 0, 0, 0, 183, + 118, 139, 145, 0, 90, 188, 97, 94, 27, 0, + 0, 0, 0, 147, 172, 27, 184, 0, 0, 199, + 95, 157 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 46, 47, 48, 49, 286, 287, 288, 306, 307, - 187, 279, 189, 289, 355, 190, 222, 220, 420, 52, - 211, 125, 126, 53, 54, 55, 56, 178, 57, 82, - 191, 192, 408, 409, 410, 411, 58, 198, 388, 468, - 389, 437, 390, 391, 59, 208, 193, 60, 87, 351, - 61, 294, 199, 62, 194, 64, 65, 321, 323, 362, - 290, 423, 291, 402, 445, 446, 447, 428, 429, 430, - 133, 292, 341, 381, 299, 300, 301, 227, 293, 466, - 92, 70, 97, 98, 352, 364, 353, 314, 203, 111, - 112, 71, 72, 73, 195, 113, 74, 75, 76, 77, - 116, 117, 78, 196, 197 + -1, 49, 50, 51, 52, 299, 300, 301, 321, 322, + 195, 291, 197, 302, 198, 377, 199, 232, 230, 449, + 56, 219, 132, 133, 57, 58, 59, 60, 187, 61, + 88, 200, 201, 436, 437, 438, 439, 62, 206, 416, + 501, 417, 466, 418, 419, 63, 216, 202, 64, 93, + 371, 65, 308, 207, 66, 203, 68, 69, 336, 338, + 384, 304, 452, 305, 430, 475, 476, 477, 457, 458, + 459, 140, 306, 360, 409, 314, 315, 316, 237, 307, + 498, 99, 74, 465, 372, 373, 374, 386, 375, 329, + 311, 116, 117, 118, 211, 75, 76, 77, 204, 119, + 78, 79, 80, 81, 122, 123, 82, 205, 83 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -308 +#define YYPACT_NINF -348 static const yytype_int16 yypact[] = { - 349, -308, -308, -308, -308, -308, -308, -308, -308, -38, - -86, -308, -72, 35, -308, -308, -308, -308, 30, -308, - 97, -308, 52, -308, -14, 18, 36, -308, -308, -308, - -308, 57, 44, -308, -308, 1538, 40, 1538, 1538, -308, - 1538, 1538, 1538, 1538, 1538, 1538, 102, -308, 473, -308, - -308, -308, -308, 211, -308, -308, -308, -308, -308, -308, - -308, -308, -308, 275, 640, -308, -308, -308, -308, -308, - -308, -308, -308, -308, 96, -308, 1971, -308, -308, 82, - -308, -308, 1469, -308, -308, -308, -308, -308, -32, -308, - 83, -308, 84, 104, 1538, 88, 89, -308, -308, -308, - 1538, -308, 186, 1538, 104, -308, 104, 104, 163, 104, - 104, 108, 116, -308, 1971, 114, 105, 128, -88, -308, - -308, 165, 231, 233, -308, 144, 174, -308, -5, 240, - -308, 241, -308, 244, -308, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, -308, -308, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 245, 1538, -308, 1538, 232, - 255, 1538, 1538, 231, 256, -308, 593, -308, 164, 248, - -308, -308, -308, -308, 247, -308, -308, -308, 1538, 845, - -308, 90, 1538, -308, 9, -82, 68, 1599, 1349, -308, - 138, 1538, -308, 1538, 1538, -308, 1538, -308, 166, 171, - -308, 166, 171, 1538, 1538, -308, -308, 267, 219, 221, - 166, 1971, 962, 836, 836, 836, 2337, 2337, 2337, 2337, - 962, 962, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, - 1971, 2032, 2093, 340, 340, 340, 1971, 1727, 2154, 2215, - 2276, 962, 962, 163, 163, 104, 104, 104, 1788, -308, - 149, -62, 276, -308, 96, 96, -308, -308, 719, -308, - 1849, -308, 154, 278, 1663, -308, 156, 971, -308, -308, - -308, -308, -308, -308, 845, -308, 161, -69, 282, 167, - 195, -308, 1469, 88, -308, -308, 169, 1349, -308, -55, - -308, -308, 190, 63, 204, 231, -24, 86, 74, 178, - 18, 292, 18, 187, 204, 1538, -308, -308, 1469, -308, - -308, -308, 1538, 213, 188, -308, -308, 185, -308, 61, - 63, -308, -308, 166, 11, -308, 62, 1469, 1538, -308, - -308, 191, -308, -308, 1538, -308, -308, 1538, 1469, 9, - -308, 18, 194, -308, 220, -308, -308, 1971, -308, 76, - 182, 136, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, 224, 197, 282, -308, 202, 199, -308, -308, - 62, -308, 265, -308, 92, -308, 203, -308, 205, 220, - -308, 18, 394, -308, -308, -308, 1538, 235, 207, 136, - -308, -308, -308, 1349, -308, -308, 336, -308, -308, 1469, - -308, 1469, 166, 1097, -308, 337, -308, 316, 216, 529, - -308, 1910, 1349, -308, -308, -308, 218, 1349, 166, -308, - -308, 225, -308, -308, 66, 222, 1223, -308, -308, -308, - -308, -5, -308, -308, 1349, -308, -308, 223, 226, -308, - -308, -308, 345, -308, -308, -308, 1349, 239, 249, 238, - 9, 1349, -308, 246, 250, 166, -308, -308 + 1656, -44, -348, -348, -348, -348, -348, -348, -348, -348, + -31, -41, -348, -30, 7, -348, -348, -348, 82, -348, + 2221, -348, 100, -348, 336, -348, -1, 19, 13, -348, + -348, -348, -348, -2, -77, -348, -348, 2221, 38, 2221, + 2221, -348, 2221, 2221, 2221, 2221, 2221, 2221, 179, 196, + -348, 495, -348, -348, -348, 78, -348, 2128, -348, -348, + -348, -348, -348, -348, -348, -348, -348, 166, 240, -348, + -348, -348, -348, -348, -348, -348, -348, -348, 115, -348, + 2736, -348, -348, -348, 213, 102, -348, -348, 1906, -348, + -348, -348, -348, -348, -102, 222, -348, -4, -348, 109, + -25, 2221, 110, -348, 2221, -348, 2221, 237, -25, -348, + -25, -25, 305, -25, -25, -56, 118, 145, 2221, -348, + 2736, 141, 116, 150, -348, -348, -348, 1011, 181, 247, + 248, -348, 155, 190, -348, -10, 253, -348, 260, -348, + 262, -348, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, + 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, + 2221, 2221, 2221, 2221, -348, -348, 266, 2221, 2221, 2221, + 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, + 2221, 2221, 2221, 2221, 64, -348, -348, 2221, 273, 2221, + 2221, 247, 281, -348, 624, -348, 189, 271, 167, -348, + -348, -348, -348, 275, -348, -348, 2221, 1140, -348, 19, + -348, 173, 24, -38, 66, 2282, 1781, 163, -348, 2221, + -348, -348, -348, -348, 2221, -348, 2221, 165, 193, 200, + -348, 193, 200, 2221, 2221, -348, -348, 296, 252, 259, + 193, 2736, 998, 487, 487, 487, 3097, 3097, 3097, 3097, + 998, 998, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, + 2736, 2797, 2857, -348, 287, 287, 287, 2736, 2492, 2917, + 2977, 3037, 998, 998, 305, 305, -25, -25, -25, 175, + 2553, 227, 2221, 312, -28, -348, 115, 115, -348, -348, + 753, -348, 2614, -348, 195, 2031, 314, 2352, -348, 187, + 1269, -348, -348, 194, -348, -348, -348, -348, 1140, -348, + 2221, -348, 131, 317, 191, 223, -348, 1906, 198, -348, + -348, 197, 1781, -348, -27, -348, 218, -348, 12, 226, + 247, -39, 135, -14, 208, 89, 315, 89, 209, 226, + 2221, -348, -348, 332, 2422, -348, 1906, -348, -348, 2221, + 882, 236, 212, -348, -348, 1140, 207, 211, 69, 12, + -348, -348, 193, 25, -348, 60, 1906, 2221, 198, -348, + -348, 224, -348, -348, -348, -348, 2221, -348, -348, 2221, + 1906, 24, -348, 89, 228, -348, 251, -348, -348, 2736, + -348, -348, -348, -11, -348, 178, 11, 220, -348, -348, + -348, -348, -348, -348, -348, -348, -348, -348, -348, -348, + 258, 234, 317, -348, 241, 231, -348, -348, 60, -348, + 297, -348, 202, -348, 235, -348, 238, 251, -348, 89, + 180, -348, -348, -348, 2221, 264, 242, 11, -348, -348, + -348, -348, -348, -348, -348, 368, -348, -348, 1906, -348, + 1906, 193, 1398, -348, 375, -348, 352, 249, 233, -348, + 2675, 1781, -348, -348, -348, 1781, 1781, 193, -348, -348, + 257, -348, -348, 261, 188, 254, 1527, -348, -348, -348, + -348, -10, -348, -348, 1781, -348, 256, 265, 272, -348, + 1398, -348, -348, 380, -348, -348, -348, -348, 1781, 274, + 263, 278, 276, -348, 24, 1781, -348, 277, 280, 193, + -348, -348 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -308, -308, -308, -308, 328, 85, -308, 93, -209, 196, - 1, -76, -244, 16, 59, 332, 268, 77, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -15, -11, -308, -308, 15, -308, - 17, -308, -308, -308, -308, -308, -308, -308, -193, 19, - -308, -308, -308, -308, 0, -308, 335, -308, -308, -308, - 31, -308, 39, -308, -308, -308, -40, -308, -308, -21, - -308, 2, 27, -308, -307, -308, -271, -41, 3, -308, - -308, -308, 398, -308, -20, 60, 78, -184, -308, -93, - -308, -308, -308, -308, -308, -26, -17, -46, -18, -308, - -308, -308, -308, -308, -308 + -348, -348, 270, -348, 337, -287, -348, 90, -193, -178, + 1, -76, -271, 6, 2, 67, 355, 285, 85, -348, + -348, -348, -348, -348, -348, -348, -348, -348, -348, -348, + -348, -348, -348, -348, -348, -21, -20, -348, -348, 14, + -348, 15, -348, -348, -348, -348, -348, -348, -348, -200, + 75, -348, -348, -348, -348, 0, -348, 353, -348, -348, + -348, 59, -348, 62, -348, -68, -348, -53, -348, -348, + -29, -348, 3, 26, -348, -347, -348, -305, -47, 4, + -348, -348, -348, -348, -348, 408, -317, 54, 79, -184, + -348, -99, -348, -348, -348, -348, -348, -348, -348, -36, + 5, -52, -7, -348, -348, -348, -348, -348, -348 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -205 +#define YYTABLE_NINF -216 static const yytype_int16 yytable[] = { - 63, 50, 68, 69, 93, 99, 188, 127, 295, 135, - 210, 79, 297, 295, 297, 135, 51, 104, 115, 106, - 107, 95, 108, 109, 110, 114, 114, 342, 118, 225, - 339, 66, 88, 89, 340, 135, 85, 316, 84, 67, - 81, 217, 135, -66, 96, 226, 324, 302, 63, 50, - 68, 69, 398, 85, 83, 1, 2, 3, 345, 4, - 5, 6, 7, 8, 51, 373, 95, 328, 374, 375, - 376, 303, 377, 385, 347, 354, 18, 205, 20, 66, - 21, 85, 207, 270, 368, 114, 85, 67, 80, 386, - 200, 201, 128, 84, 387, 303, 27, 130, 349, 298, - 91, 384, 119, 392, 32, 378, 33, 34, 85, 296, - 85, 132, 94, 414, 397, 379, 380, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 37, - 38, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 86, 114, 383, - 115, 271, 100, 473, 274, 275, 105, 102, 280, 406, - 103, 135, 43, 135, 44, 439, 350, 440, 45, 101, - 284, 304, 357, 135, 114, 404, 405, 310, 311, 209, - 312, 157, 158, 135, 309, 114, 114, 407, 114, 63, - 50, 295, 331, 358, 436, 403, 317, 318, 177, 202, - 204, -104, 206, 213, 121, 2, 3, 214, 4, 5, - 6, 7, 8, 455, 174, 216, 188, 175, 457, 212, - 176, 331, -67, 215, 218, 18, 221, 20, 441, 21, - 223, 224, 122, 228, 229, 463, 22, 230, 269, 272, - 157, 158, 188, 26, 458, 27, 123, 469, 273, 276, - 281, 282, 474, 32, 283, 33, 34, 308, 315, 313, - 319, 188, 320, 35, 322, 171, 172, 173, 327, 329, - 332, 333, 188, 174, 335, 297, 175, 63, 50, 176, - 338, 477, 344, 348, 63, 50, 343, 346, 37, 38, - 360, 128, 363, 354, 359, 129, 130, 367, 361, 365, - 371, 396, 370, 372, 394, 369, 400, 401, 131, 413, - 132, 40, 393, 339, 415, 416, 41, 42, 395, 419, - 114, 43, 421, 44, 422, 433, 114, 45, 432, 438, - 450, 363, 451, 188, 452, 188, 456, 459, 467, -3, - 460, 464, 1, 2, 3, 465, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 470, 472, 13, 14, 15, - 16, 471, 17, 18, 19, 475, 120, 21, 476, 337, - 336, 424, 278, 366, 22, 124, 23, 24, 431, 25, - 219, 26, 356, 27, 434, 28, 29, 30, 435, 134, - 31, 32, 427, 33, 34, 417, 461, 418, 453, 412, - 462, 35, 36, 14, 15, 16, 90, 17, 382, 19, - 0, 399, 0, 444, 443, 448, 449, 157, 158, 427, - 0, 23, 0, 0, 0, 0, 37, 38, 0, 425, - 28, 29, 30, 0, 0, 39, 444, 443, 448, 449, - 169, 170, 171, 172, 173, 0, 0, 0, 0, 40, - 174, 0, 0, 175, 41, 42, 176, 0, 0, 43, - 0, 44, 0, -4, 0, 45, 1, 2, 3, 0, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, - 426, 13, 14, 15, 16, 0, 17, 18, 19, 0, - 0, 21, 0, 0, 0, 0, 0, 0, 22, 0, - 23, 24, 0, 25, 0, 26, 0, 27, 0, 28, - 29, 30, -145, 0, 31, 32, 0, 33, 34, 0, - 0, 0, 0, 0, 0, 35, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, - 16, 0, 17, 0, 19, 0, 0, 0, 0, 0, - 37, 38, 0, 0, 0, 0, 23, 0, 0, 39, - 0, 0, 0, 0, 425, 28, 29, 30, 0, 0, - 0, 0, 0, 40, 0, 0, 0, 0, 41, 42, - 0, 0, 0, 43, 0, 44, 1, 2, 3, 45, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, - 0, 0, 14, 15, 16, 179, 17, 18, 19, 20, - 0, 21, 180, 0, 122, 426, 0, 0, 22, 181, - 23, 24, 0, 25, 182, 26, 0, 27, 183, 28, - 29, 30, 0, 0, 31, 32, 0, 33, 34, 0, - 0, 0, 0, 0, 0, 35, 36, -146, 184, 14, - 15, 16, 0, 17, 0, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, - 37, 38, 0, 0, 0, 0, 28, 29, 30, 185, + 67, 53, 55, 72, 73, 134, 54, 217, 361, 309, + 90, 121, 196, 97, 309, 368, 290, 100, 382, 85, + 385, 356, 90, 208, 209, 235, 91, 312, 312, -70, + 108, 91, 110, 111, 426, 112, 113, 114, 91, 120, + 120, 236, 142, 84, 106, 434, 364, 331, 369, 107, + 115, 67, 53, 55, 72, 73, 339, 54, 413, 70, + 142, 376, 71, 164, 165, 166, 385, 281, 397, 318, + 142, 142, 400, 435, 401, 392, 220, 402, 403, 404, + 87, 405, 223, 279, 142, 91, 166, 142, 414, 94, + 86, 89, 368, 415, 317, 420, 182, 215, 183, 120, + 95, 184, 102, 98, 346, 366, 213, 443, 91, 425, + 70, 120, 453, 71, 406, 313, 412, 350, 380, 183, + 101, 431, 184, 105, 407, 408, 370, 67, 53, 55, + 72, 73, 92, 54, 104, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 507, 121, 109, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 120, 280, 468, 411, 469, + 319, 432, 124, 433, 2, 282, 70, 292, 325, 71, + 326, 283, 284, 135, 286, 287, 125, 136, 137, 297, + 15, 16, 17, 127, 19, 318, 21, 67, 53, 303, + 138, 357, 139, 142, 348, 135, 185, 120, 25, 120, + 137, 91, 309, 186, 324, 210, 454, 30, 31, 32, + 212, 358, 379, 142, 139, 359, 214, 2, 332, 333, + 218, 196, 221, 222, 2, 224, 348, 225, 226, -71, + 228, 231, 233, 15, 16, 17, 238, 19, 234, 21, + 15, 16, 17, 239, 19, 240, 21, 470, 485, 263, + 196, 25, 486, 487, 348, 344, 285, 455, 25, 454, + 30, 31, 32, 488, 288, 294, 293, 30, 31, 32, + 196, 494, 295, 296, 310, 323, 327, 328, 330, 334, + 67, 53, 303, 120, 196, 502, 335, 341, 67, 53, + 303, -151, 508, 337, 343, 345, 349, 351, 353, 355, + 312, 363, 367, 362, -108, 511, 376, 424, 365, 381, + 455, 421, 383, 389, 387, 390, 395, 396, 398, 96, + 423, 3, 4, 399, 5, 6, 7, 8, 9, 429, + 422, 440, 445, 428, 393, 67, 53, 303, 358, 442, + 120, 20, 448, 22, -152, 23, 444, 450, 461, 120, + 451, 467, 196, 462, 196, 164, 165, 166, 480, 481, + 482, 29, 489, 500, 504, 491, 490, 495, 126, 34, + 354, 35, 36, 164, 165, 166, 496, 227, 177, 178, + 179, 180, 181, 505, 497, 503, 388, 506, 182, 509, + 183, 510, 131, 184, 229, 378, 463, 464, 179, 180, + 181, 141, 499, 492, 39, 40, 182, 460, 183, 483, + 456, 184, 446, 447, 493, 103, 441, 427, 410, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 474, 472, 473, 478, 479, 45, 456, 46, + 0, 47, 0, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 474, 472, 473, 478, + 479, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 474, 472, 473, 478, 479, -4, 0, 0, 1, 2, + 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 14, 15, 16, 17, 18, 19, + 20, 21, 0, 0, 23, 0, 0, 143, 0, 0, + 0, 24, 0, 25, 26, 0, 27, 0, 28, 0, + 29, 0, 30, 31, 32, 0, 0, 33, 34, 0, + 35, 36, 0, 0, -216, -216, -216, 0, 37, 38, + 0, 151, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 165, 166, 0, 167, + 168, 169, 0, 39, 40, 0, 0, 0, 0, 0, + 0, 0, 41, 0, 0, 175, 176, 0, 177, 178, + 179, 180, 181, 0, 0, 0, 42, 0, 182, 0, + 183, 43, 44, 184, 0, 0, 45, 0, 46, 0, + 47, 0, 48, 0, 0, 0, -4, 1, 2, 3, + 4, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 15, 16, 17, 18, 19, 20, + 21, 22, 0, 23, 188, 0, 129, 0, 0, 0, + 24, 189, 25, 26, 0, 27, 190, 28, 0, 29, + 191, 30, 31, 32, 0, 0, 33, 34, 0, 35, + 36, 0, 0, 0, 0, 0, 0, 37, 38, 0, + 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, + 43, 44, 0, 0, 0, 45, 0, 46, 0, 47, + 0, 48, 0, 0, 0, 289, 1, 2, 3, 4, + 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, + 22, 0, 23, 188, 0, 129, 0, 0, 0, 24, + 189, 25, 26, 0, 27, 190, 28, 0, 29, 191, + 30, 31, 32, 0, 0, 33, 34, 0, 35, 36, + 0, 0, 0, 0, 0, 0, 37, 38, 0, 192, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 40, 0, 0, 0, 0, 0, 0, 0, + 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, + 44, 0, 0, 0, 45, 0, 46, 0, 47, 0, + 48, 0, 0, 0, 347, 1, 2, 3, 4, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, + 0, 23, 188, 0, 129, 0, 0, 0, 24, 189, + 25, 26, 0, 27, 190, 28, 0, 29, 191, 30, + 31, 32, 0, 0, 33, 34, 0, 35, 36, 0, + 0, 0, 0, 0, 0, 37, 38, 0, 192, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 39, 40, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, + 0, 0, 0, 45, 0, 46, 0, 47, 0, 48, + 0, 0, 0, 394, 1, 2, 3, 4, 0, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, + 14, 15, 16, 17, 18, 19, 20, 21, -216, 0, + 23, 0, 0, 0, 0, 0, 0, 24, 0, 25, + 26, 0, 27, 0, 28, 0, 29, 0, 30, 31, + 32, 0, 0, 33, 34, 0, 35, 36, 0, 0, + 0, 0, -216, -216, 37, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 164, 165, 166, 0, + 167, 168, 169, 0, 0, 0, 0, 0, 0, 39, + 40, 0, 0, 0, 0, 0, -216, -216, 41, 177, + 178, 179, 180, 181, 0, 0, 0, 0, 0, 182, + 0, 183, 42, 0, 184, 0, 0, 43, 44, 0, + 0, 0, 45, 0, 46, 0, 47, 0, 48, 0, + 0, 0, -3, 1, 2, 3, 4, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 15, 16, 17, 18, 19, 20, 21, 0, 0, 23, + 0, 0, 0, 0, 0, 0, 24, 0, 25, 26, + 0, 27, 0, 28, 0, 29, 0, 30, 31, 32, + 0, 0, 33, 34, 0, 35, 36, 0, 0, 0, + 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 40, 0, 0, 0, 0, 41, 42, - 0, 0, 0, 43, 0, 44, 0, 0, 0, 45, - 0, 277, 1, 2, 3, 0, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 0, 0, 0, 14, 15, - 16, 179, 17, 18, 19, 20, 0, 21, 180, 0, - 122, 0, 0, 0, 22, 181, 23, 24, 0, 25, - 182, 26, 0, 27, 183, 28, 29, 30, 0, 0, - 31, 32, 0, 33, 34, 0, 0, 0, 0, 0, - 0, 35, 36, 0, 184, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, - 0, 0, 0, 0, 0, 185, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, - 0, 0, 0, 0, 41, 42, 0, 0, 0, 43, - 0, 44, 0, 0, 0, 45, 0, 330, 1, 2, - 3, 0, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 0, 0, 0, 14, 15, 16, 0, 17, 18, - 19, 0, 0, 21, 0, 136, 0, 0, 0, 0, - 22, 0, 23, 24, 0, 25, 0, 26, 0, 27, - 0, 28, 29, 30, 0, 0, 31, 32, 0, 33, - 34, 0, -205, -205, -205, 0, 0, 35, 36, 144, - 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 157, 158, 0, 0, 159, 160, 161, + 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, + 0, 45, 0, 46, 0, 47, 0, 48, 0, 0, + 0, -15, 1, 2, 3, 4, 0, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 0, 0, 0, 15, + 16, 17, 18, 19, 20, 21, 0, 0, 23, 0, + 0, 0, 0, 0, 0, 24, 0, 25, 26, 0, + 27, 0, 28, 0, 29, 0, 30, 31, 32, 0, + 0, 33, 34, 0, 35, 36, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, - 0, 285, 0, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 0, 0, 40, 174, 0, 0, 175, - 41, 42, 176, 0, 0, 43, 0, 44, 0, 0, - 0, 45, 0, -14, 1, 2, 3, 0, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, - 14, 15, 16, 0, 17, 18, 19, 0, 0, 21, - 0, -205, 0, 0, 0, 0, 22, 0, 23, 24, - 0, 25, 0, 26, 0, 27, 0, 28, 29, 30, - 0, 0, 31, 32, 0, 33, 34, 0, 0, 0, - 0, 0, 0, 35, 36, -205, -205, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, - 158, 0, 0, 159, 160, 161, 0, 0, 37, 38, - 0, 0, 0, 0, 0, 0, 0, 285, 0, -205, - -205, 0, 169, 170, 171, 172, 173, 0, 0, 0, - 0, 40, 174, 0, 0, 175, 41, 42, 176, 0, - 0, 43, 0, 44, 0, 0, 0, 45, 0, -15, - 1, 2, 3, 0, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 0, 0, 0, 14, 15, 16, 0, - 17, 18, 19, 0, 0, 21, 0, 0, 0, 0, - 0, 0, 22, 0, 23, 24, 0, 25, 0, 26, - 0, 27, 0, 28, 29, 30, 0, 0, 31, 32, - 0, 33, 34, 0, 0, 0, 0, 0, 0, 35, - 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, - 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, - 0, 0, 41, 42, 0, 0, 0, 43, 0, 44, - 0, 0, 0, 45, 0, -137, 1, 2, 3, 0, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, - 0, 0, 14, 15, 16, 0, 17, 18, 19, 0, - 0, 21, 0, 0, 0, 0, 0, 0, 22, 0, - 23, 24, 0, 25, 0, 26, 0, 27, 0, 28, - 29, 30, 0, 0, 31, 32, 0, 33, 34, 0, - 0, 0, 0, 0, 0, 35, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, + 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, + 45, 0, 46, 0, 47, 0, 48, 0, 0, 0, + -16, 1, 2, 3, 4, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 15, 16, + 17, 18, 19, 20, 21, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 24, 0, 25, 26, 0, 27, + 0, 28, 0, 29, 0, 30, 31, 32, 0, 0, + 33, 34, 0, 35, 36, 0, 0, 0, 0, 0, + 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 38, 0, 0, 0, 0, 0, 0, 0, 442, + 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, + 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, + 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, + 0, 46, 0, 47, 0, 48, 0, 0, 0, -142, + 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 0, 0, 0, 15, 16, 17, + 18, 19, 20, 21, 0, 0, 23, 0, 0, 0, + 0, 0, 0, 24, 0, 25, 26, 0, 27, 0, + 28, 0, 29, 0, 30, 31, 32, 0, 0, 33, + 34, 0, 35, 36, 0, 0, 0, 0, 0, 0, + 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 40, 0, 0, 0, 0, 41, 42, - 0, 0, 0, 43, 0, 44, 0, 0, 0, 45, - 0, -138, 1, 2, 3, 0, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 0, -114, 0, 14, 15, - 16, 179, 17, 18, 19, 20, 0, 21, 180, 0, - 122, 0, 0, 0, 22, 181, 23, 24, 0, 25, - 182, 26, 0, 27, 183, 28, 29, 30, 0, 0, - 31, 32, 0, 33, 34, 0, 0, 0, 0, 0, - 0, 35, 36, 0, 184, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, + 0, 0, 0, 0, 471, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, + 0, 0, 0, 43, 44, 0, 0, 0, 45, 0, + 46, 0, 47, 0, 48, 0, -3, 0, -143, 1, + 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 14, 15, 16, 17, 18, + 19, 20, 21, 0, 0, 23, 0, 0, 0, 0, + 0, 0, 24, 0, 25, 26, 0, 27, 0, 28, + 0, 29, 0, 30, 31, 32, 0, 0, 33, 34, + 0, 35, 36, 0, 0, 0, 0, 0, 0, 37, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, - 0, 0, 0, 0, 0, 185, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, - 0, 0, 0, 0, 41, 42, 0, 0, 0, 43, - 0, 44, 1, 2, 3, 45, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 0, 0, 0, 14, 15, - 16, 179, 17, 18, 19, 20, 0, 21, 180, 0, - 122, 0, 0, 0, 22, 181, 23, 24, 0, 25, - 182, 26, 0, 27, 183, 28, 29, 30, 0, 0, - 31, 32, 0, 33, 34, 0, 0, 0, 0, 0, - 0, 35, 36, 0, 184, 0, 0, 0, 0, 0, - 0, 1, 2, 3, 0, 4, 5, 6, 7, 8, - 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, - 0, 0, 18, 0, 20, 185, 21, 0, 0, 0, - 0, 0, 0, 22, 0, 0, 0, 0, 0, 40, - 26, 0, 27, 0, 41, 42, 0, 0, 0, 43, - 32, 186, 33, 34, 0, 45, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, + 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, + 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, + 0, 47, 0, 48, 1, 2, 3, 4, 0, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 0, -118, + 0, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 23, 188, 0, 129, 0, 0, 0, 24, 189, 25, + 26, 0, 27, 190, 28, 0, 29, 191, 30, 31, + 32, 0, 0, 33, 34, 0, 35, 36, 0, 0, + 0, 0, 0, 0, 37, 38, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, - 0, 0, 0, 41, 42, 0, 0, 0, 43, 0, - 44, 0, 0, 0, 45, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 0, 157, 158, 0, 0, - 159, 160, 161, 0, 0, 0, 0, 0, 162, 0, - 0, 163, 136, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 0, 0, 0, 174, - 0, 0, 175, 0, 0, 176, 0, 0, 305, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 0, - 157, 158, 0, 0, 159, 160, 161, 0, 0, 0, - 0, 0, 162, 0, 0, 163, 136, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 0, 0, 0, 174, 0, 0, 175, 0, 0, 176, - 0, 0, 334, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 0, 157, 158, 0, 0, 159, 160, - 161, 0, 0, 0, 0, 0, 162, 136, 0, 163, - 325, 164, 165, 166, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 0, 0, 0, 174, 0, 0, - 175, 0, 0, 176, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 0, 157, 158, 0, 0, 159, - 160, 161, 0, 0, 0, 0, 0, 162, 136, 0, - 163, 0, 164, 165, 166, 167, 168, 0, 169, 170, - 171, 172, 173, 0, 0, 0, 0, 0, 174, 326, - 0, 175, 0, 0, 176, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 0, 157, 158, 0, 0, - 159, 160, 161, 0, 0, 0, 0, 0, 162, 136, - 0, 163, -204, 164, 165, 166, 167, 168, 0, 169, - 170, 171, 172, 173, 0, 0, 0, 0, 0, 174, - 0, 0, 175, 0, 0, 176, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 0, 157, 158, 0, - 0, 159, 160, 161, 0, 0, 0, 0, 0, 162, - 136, 0, 163, 454, 164, 165, 166, 167, 168, 0, - 169, 170, 171, 172, 173, 0, 0, 0, 0, 0, - 174, 0, 0, 175, 0, 0, 176, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 0, 157, 158, - 0, 0, 159, 160, 161, 0, 0, 0, 0, 0, - 162, 136, 0, 163, 0, 164, 165, 166, 167, 168, - 0, 169, 170, 171, 172, 173, 0, 0, 0, 0, - 0, 174, 0, 0, 175, 0, 0, 176, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 156, 0, 157, - 158, 0, 0, 159, 160, 161, 0, 0, 0, 0, - 0, 0, 136, 0, 0, 0, 164, 165, 166, 167, - 168, 0, 169, 170, 171, 172, 173, 0, 0, 0, - 0, 0, 174, 0, 0, 175, 0, 0, 176, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, + 0, 0, 45, 0, 46, 0, 47, 0, 48, 1, + 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 15, 16, 17, 18, + 19, 20, 21, 22, 0, 23, 188, 0, 129, 0, + 0, 0, 24, 189, 25, 26, 0, 27, 190, 28, + 0, 29, 191, 30, 31, 32, 0, 0, 33, 34, + 0, 35, 36, 0, 0, 0, 0, 0, 0, 37, + 38, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 157, 158, 0, 0, 159, 160, 161, 0, 0, 0, - 0, 0, 0, 136, 0, 0, 0, 164, 165, 166, - 167, 168, 0, 169, 170, 171, 172, 173, 0, 0, - 0, 0, 0, 174, 0, 0, 175, 0, 0, 176, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 0, + 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, + 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, + 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, + 0, 194, 0, 48, 1, 2, 3, 4, 0, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, + 0, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 23, 188, 0, 129, 0, 0, 0, 24, 189, 25, + 26, 0, 27, 190, 28, 0, 29, 191, 30, 31, + 32, 0, 0, 33, 34, 0, 35, 36, 0, 0, + 0, 0, 0, 0, 37, 38, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 157, 158, 0, 0, 159, 160, 161, 0, 0, - 0, 0, 0, 0, 136, 0, 0, 0, 0, 165, - 166, 167, 168, 0, 169, 170, 171, 172, 173, 0, - 0, 0, 0, 0, 174, 0, 0, 175, 0, 0, - 176, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 128, 0, 3, 4, 0, 5, 6, 7, 8, + 9, 0, 42, 0, 0, 0, 0, 43, 44, 0, + 0, 0, 45, 20, 46, 22, 47, 23, 48, 0, + 129, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 0, 28, 0, 29, 130, 0, 0, 0, 0, 0, + 0, 34, 0, 35, 36, 0, 0, 0, 0, 0, + 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 157, 158, 0, 0, 159, 160, 161, 0, - 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, - 0, 166, 167, 168, 0, 169, 170, 171, 172, 173, - 0, 0, 0, 0, 0, 174, 0, 0, 175, 0, - 0, 176, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 157, 158, 0, 0, 159, 160, 161, - 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, - 0, 0, -205, 167, 168, 0, 169, 170, 171, 172, - 173, 0, 0, 0, 0, 0, 174, 0, 0, 175, - 0, 0, 176, 137, 138, 139, -205, -205, -205, -205, - 144, 145, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 157, 158, 0, 0, 159, 160, - 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 167, 168, 0, 169, 170, 171, - 172, 173, 0, 0, 0, 0, 0, 174, 0, 0, - 175, 0, 0, 176 + 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, + 0, 0, 0, 0, 96, 0, 3, 4, 0, 5, + 6, 7, 8, 9, 0, 0, 0, 0, 0, 42, + 0, 0, 0, 0, 43, 44, 20, 0, 22, 45, + 23, 46, 0, 47, 0, 48, 0, 24, 0, 0, + 0, 0, 0, 0, 28, 0, 29, 0, 0, 0, + 0, 0, 0, 0, 34, 0, 35, 36, 0, 0, + 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, + 0, 0, 45, 0, 46, 0, 47, 0, 48, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 0, + 164, 165, 166, 0, 167, 168, 169, 0, 0, 0, + 0, 0, 170, 0, 0, 171, 0, 172, 173, 174, + 175, 176, 143, 177, 178, 179, 180, 181, 0, 0, + 0, 0, 0, 182, 0, 183, 0, 0, 184, 0, + 0, 0, 0, 0, 320, 0, 0, 0, 0, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 0, + 164, 165, 166, 0, 167, 168, 169, 0, 0, 0, + 0, 0, 170, 0, 0, 171, 0, 172, 173, 174, + 175, 176, 143, 177, 178, 179, 180, 181, 0, 0, + 0, 0, 0, 182, 0, 183, 0, 0, 184, 0, + 0, 0, 0, 0, 352, 0, 0, 0, 0, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 0, + 164, 165, 166, 0, 167, 168, 169, 0, 0, 0, + 0, 0, 170, 0, 0, 171, 0, 172, 173, 174, + 175, 176, 143, 177, 178, 179, 180, 181, 0, 0, + 0, 0, 0, 182, 0, 183, 0, 0, 184, 0, + 0, 0, 0, 0, 391, 0, 0, 0, 0, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 0, + 164, 165, 166, 0, 167, 168, 169, 0, 0, 0, + 0, 0, 170, 143, 0, 171, 340, 172, 173, 174, + 175, 176, 0, 177, 178, 179, 180, 181, 0, 0, + 0, 0, 0, 182, 0, 183, 0, 0, 184, 0, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 0, 164, 165, 166, 0, 167, 168, 169, 0, 0, + 0, 0, 0, 170, 143, 0, 171, 0, 172, 173, + 174, 175, 176, 0, 177, 178, 179, 180, 181, 0, + 0, 0, 0, 0, 182, 0, 183, 342, 0, 184, + 0, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 0, 164, 165, 166, 0, 167, 168, 169, 0, + 0, 0, 0, 0, 170, 143, 0, 171, -215, 172, + 173, 174, 175, 176, 0, 177, 178, 179, 180, 181, + 0, 0, 0, 0, 0, 182, 0, 183, 0, 0, + 184, 0, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 0, 164, 165, 166, 0, 167, 168, 169, + 0, 0, 0, 0, 0, 170, 143, 0, 171, 484, + 172, 173, 174, 175, 176, 0, 177, 178, 179, 180, + 181, 0, 0, 0, 0, 0, 182, 0, 183, 0, + 0, 184, 0, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 0, 164, 165, 166, 0, 167, 168, + 169, 0, 0, 0, 0, 0, 170, 143, 0, 171, + 0, 172, 173, 174, 175, 176, 0, 177, 178, 179, + 180, 181, 0, 0, 0, 0, 0, 182, 0, 183, + 0, 0, 184, 0, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 163, 0, 164, 165, 166, 0, 167, + 168, 169, 0, 0, 0, 0, 0, 143, 0, 0, + 0, 0, 172, 173, 174, 175, 176, 0, 177, 178, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 183, 0, 0, 184, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 165, 166, 0, 167, + 168, 169, 0, 0, 0, 0, 0, 143, 0, 0, + 0, 0, 172, 173, 174, 175, 176, 0, 177, 178, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 183, 0, 0, 184, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 165, 166, 0, 167, + 168, 169, 0, 0, 0, 0, 0, 143, 0, 0, + 0, 0, 0, 173, 174, 175, 176, 0, 177, 178, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 183, 0, 0, 184, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 165, 166, 0, 167, + 168, 169, 0, 0, 0, 0, 0, 143, 0, 0, + 0, 0, 0, 0, 174, 175, 176, 0, 177, 178, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 183, 0, 0, 184, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 165, 166, 0, 167, + 168, 169, 0, 0, 0, 0, 0, 143, 0, 0, + 0, 0, 0, 0, -216, 175, 176, 0, 177, 178, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 183, 0, 0, 184, 144, 145, 146, -216, -216, -216, + -216, 151, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 164, 165, 166, 0, 167, + 168, 169, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 175, 176, 0, 177, 178, + 179, 180, 181, 0, 0, 0, 0, 0, 182, 0, + 183, 0, 0, 184 }; static const yytype_int16 yycheck[] = { - 0, 0, 0, 0, 22, 25, 82, 53, 201, 97, - 103, 49, 3, 206, 3, 97, 0, 35, 44, 37, - 38, 3, 40, 41, 42, 43, 44, 298, 45, 34, - 99, 0, 13, 3, 103, 97, 18, 221, 3, 0, - 126, 129, 97, 67, 25, 50, 230, 129, 48, 48, - 48, 48, 359, 18, 126, 3, 4, 5, 302, 7, - 8, 9, 10, 11, 48, 4, 3, 129, 7, 8, - 9, 3, 11, 344, 129, 99, 24, 94, 26, 48, - 28, 18, 100, 176, 328, 103, 18, 48, 126, 27, - 122, 123, 26, 3, 32, 3, 44, 31, 35, 90, - 3, 90, 0, 347, 52, 44, 54, 55, 18, 202, - 18, 45, 126, 384, 358, 54, 55, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 87, - 88, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 122, 176, 343, - 186, 178, 126, 470, 181, 182, 126, 123, 186, 33, - 126, 97, 120, 97, 122, 419, 113, 421, 126, 122, - 198, 113, 96, 97, 202, 3, 4, 213, 214, 3, - 216, 87, 88, 97, 211, 213, 214, 61, 216, 199, - 199, 394, 278, 129, 413, 129, 223, 224, 126, 126, - 126, 123, 123, 97, 3, 4, 5, 103, 7, 8, - 9, 10, 11, 432, 120, 97, 302, 123, 437, 121, - 126, 307, 67, 128, 3, 24, 3, 26, 422, 28, - 96, 67, 31, 3, 3, 454, 35, 3, 3, 17, - 87, 88, 328, 42, 438, 44, 45, 466, 3, 3, - 96, 13, 471, 52, 17, 54, 55, 129, 97, 103, - 3, 347, 53, 62, 53, 112, 113, 114, 129, 3, - 126, 3, 358, 120, 128, 3, 123, 287, 287, 126, - 129, 475, 97, 103, 294, 294, 129, 128, 87, 88, - 320, 26, 322, 99, 126, 30, 31, 325, 16, 122, - 122, 357, 99, 128, 123, 332, 122, 97, 43, 122, - 45, 110, 348, 99, 122, 126, 115, 116, 354, 64, - 348, 120, 129, 122, 129, 128, 354, 126, 103, 3, - 3, 361, 26, 419, 128, 421, 128, 122, 3, 0, - 128, 128, 3, 4, 5, 129, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 126, 128, 18, 19, 20, - 21, 122, 23, 24, 25, 129, 48, 28, 128, 294, - 287, 401, 186, 324, 35, 53, 37, 38, 406, 40, - 122, 42, 315, 44, 409, 46, 47, 48, 409, 64, - 51, 52, 402, 54, 55, 390, 446, 390, 429, 382, - 451, 62, 63, 19, 20, 21, 18, 23, 340, 25, - -1, 361, -1, 423, 423, 423, 423, 87, 88, 429, - -1, 37, -1, -1, -1, -1, 87, 88, -1, 45, - 46, 47, 48, -1, -1, 96, 446, 446, 446, 446, - 110, 111, 112, 113, 114, -1, -1, -1, -1, 110, - 120, -1, -1, 123, 115, 116, 126, -1, -1, 120, - -1, 122, -1, 0, -1, 126, 3, 4, 5, -1, - 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, - 96, 18, 19, 20, 21, -1, 23, 24, 25, -1, - -1, 28, -1, -1, -1, -1, -1, -1, 35, -1, - 37, 38, -1, 40, -1, 42, -1, 44, -1, 46, - 47, 48, 128, -1, 51, 52, -1, 54, 55, -1, - -1, -1, -1, -1, -1, 62, 63, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, - 21, -1, 23, -1, 25, -1, -1, -1, -1, -1, - 87, 88, -1, -1, -1, -1, 37, -1, -1, 96, - -1, -1, -1, -1, 45, 46, 47, 48, -1, -1, - -1, -1, -1, 110, -1, -1, -1, -1, 115, 116, - -1, -1, -1, 120, -1, 122, 3, 4, 5, 126, - 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, - -1, -1, 19, 20, 21, 22, 23, 24, 25, 26, - -1, 28, 29, -1, 31, 96, -1, -1, 35, 36, - 37, 38, -1, 40, 41, 42, -1, 44, 45, 46, - 47, 48, -1, -1, 51, 52, -1, 54, 55, -1, - -1, -1, -1, -1, -1, 62, 63, 128, 65, 19, - 20, 21, -1, 23, -1, 25, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, - 87, 88, -1, -1, -1, -1, 46, 47, 48, 96, + 0, 0, 0, 0, 0, 57, 0, 106, 313, 209, + 3, 47, 88, 20, 214, 3, 194, 24, 335, 50, + 337, 308, 3, 125, 126, 35, 19, 3, 3, 68, + 37, 19, 39, 40, 381, 42, 43, 44, 19, 46, + 47, 51, 98, 87, 121, 34, 317, 231, 36, 126, + 45, 51, 51, 51, 51, 51, 240, 51, 363, 0, + 98, 100, 0, 88, 89, 90, 383, 3, 355, 3, + 98, 98, 3, 62, 5, 346, 132, 8, 9, 10, + 121, 12, 118, 182, 98, 19, 90, 98, 28, 14, + 121, 121, 3, 33, 132, 366, 121, 104, 123, 106, + 18, 126, 27, 3, 132, 132, 101, 412, 19, 380, + 51, 118, 429, 51, 45, 91, 91, 295, 132, 123, + 121, 132, 126, 125, 55, 56, 114, 127, 127, 127, + 127, 127, 125, 127, 121, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 504, 194, 121, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 448, 362, 450, + 114, 3, 3, 5, 4, 121, 127, 194, 224, 127, + 226, 127, 187, 27, 189, 190, 0, 31, 32, 206, + 20, 21, 22, 125, 24, 3, 26, 207, 207, 207, + 44, 310, 46, 98, 290, 27, 3, 224, 38, 226, + 32, 19, 422, 121, 219, 3, 46, 47, 48, 49, + 121, 100, 97, 98, 46, 104, 126, 4, 233, 234, + 3, 317, 124, 98, 4, 104, 322, 131, 98, 68, + 3, 3, 97, 20, 21, 22, 3, 24, 68, 26, + 20, 21, 22, 3, 24, 3, 26, 451, 461, 3, + 346, 38, 465, 466, 350, 282, 3, 97, 38, 46, + 47, 48, 49, 467, 3, 14, 97, 47, 48, 49, + 366, 484, 125, 18, 121, 132, 131, 104, 98, 3, + 300, 300, 300, 310, 380, 498, 54, 132, 308, 308, + 308, 131, 505, 54, 87, 3, 121, 3, 131, 125, + 3, 98, 104, 132, 126, 509, 100, 379, 131, 121, + 97, 367, 17, 340, 125, 3, 100, 125, 131, 3, + 376, 5, 6, 132, 8, 9, 10, 11, 12, 98, + 126, 131, 121, 125, 349, 355, 355, 355, 100, 125, + 367, 25, 65, 27, 131, 29, 125, 132, 104, 376, + 132, 3, 448, 131, 450, 88, 89, 90, 3, 27, + 131, 45, 125, 3, 121, 131, 125, 131, 51, 53, + 300, 55, 56, 88, 89, 90, 131, 127, 111, 112, + 113, 114, 115, 125, 132, 131, 339, 131, 121, 132, + 123, 131, 57, 126, 129, 330, 437, 437, 113, 114, + 115, 68, 490, 476, 88, 89, 121, 434, 123, 458, + 430, 126, 418, 418, 481, 27, 410, 383, 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 110, -1, -1, -1, -1, 115, 116, - -1, -1, -1, 120, -1, 122, -1, -1, -1, 126, - -1, 128, 3, 4, 5, -1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, -1, -1, -1, 19, 20, - 21, 22, 23, 24, 25, 26, -1, 28, 29, -1, - 31, -1, -1, -1, 35, 36, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, -1, - 51, 52, -1, 54, 55, -1, -1, -1, -1, -1, - -1, 62, 63, -1, 65, -1, -1, -1, -1, -1, + -1, -1, 452, 452, 452, 452, 452, 121, 458, 123, + -1, 125, -1, 127, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 476, 476, 476, 476, + 476, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 490, 490, 490, 490, 490, 0, -1, -1, 3, 4, + 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, + 15, 16, -1, -1, 19, 20, 21, 22, 23, 24, + 25, 26, -1, -1, 29, -1, -1, 40, -1, -1, + -1, 36, -1, 38, 39, -1, 41, -1, 43, -1, + 45, -1, 47, 48, 49, -1, -1, 52, 53, -1, + 55, 56, -1, -1, 67, 68, 69, -1, 63, 64, + -1, 74, 75, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, -1, 92, + 93, 94, -1, 88, 89, -1, -1, -1, -1, -1, + -1, -1, 97, -1, -1, 108, 109, -1, 111, 112, + 113, 114, 115, -1, -1, -1, 111, -1, 121, -1, + 123, 116, 117, 126, -1, -1, 121, -1, 123, -1, + 125, -1, 127, -1, -1, -1, 131, 3, 4, 5, + 6, -1, 8, 9, 10, 11, 12, 13, 14, 15, + 16, -1, -1, -1, 20, 21, 22, 23, 24, 25, + 26, 27, -1, 29, 30, -1, 32, -1, -1, -1, + 36, 37, 38, 39, -1, 41, 42, 43, -1, 45, + 46, 47, 48, 49, -1, -1, 52, 53, -1, 55, + 56, -1, -1, -1, -1, -1, -1, 63, 64, -1, + 66, -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, 87, 88, -1, -1, - -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, - -1, -1, -1, -1, 115, 116, -1, -1, -1, 120, - -1, 122, -1, -1, -1, 126, -1, 128, 3, 4, - 5, -1, 7, 8, 9, 10, 11, 12, 13, 14, - 15, -1, -1, -1, 19, 20, 21, -1, 23, 24, - 25, -1, -1, 28, -1, 39, -1, -1, -1, -1, - 35, -1, 37, 38, -1, 40, -1, 42, -1, 44, - -1, 46, 47, 48, -1, -1, 51, 52, -1, 54, - 55, -1, 66, 67, 68, -1, -1, 62, 63, 73, - 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 87, 88, -1, -1, 91, 92, 93, - -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, - -1, 96, -1, 107, 108, -1, 110, 111, 112, 113, - 114, -1, -1, -1, -1, 110, 120, -1, -1, 123, - 115, 116, 126, -1, -1, 120, -1, 122, -1, -1, - -1, 126, -1, 128, 3, 4, 5, -1, 7, 8, - 9, 10, 11, 12, 13, 14, 15, -1, -1, -1, - 19, 20, 21, -1, 23, 24, 25, -1, -1, 28, - -1, 39, -1, -1, -1, -1, 35, -1, 37, 38, - -1, 40, -1, 42, -1, 44, -1, 46, 47, 48, - -1, -1, 51, 52, -1, 54, 55, -1, -1, -1, - -1, -1, -1, 62, 63, 73, 74, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, - 88, -1, -1, 91, 92, 93, -1, -1, 87, 88, - -1, -1, -1, -1, -1, -1, -1, 96, -1, 107, - 108, -1, 110, 111, 112, 113, 114, -1, -1, -1, - -1, 110, 120, -1, -1, 123, 115, 116, 126, -1, - -1, 120, -1, 122, -1, -1, -1, 126, -1, 128, - 3, 4, 5, -1, 7, 8, 9, 10, 11, 12, - 13, 14, 15, -1, -1, -1, 19, 20, 21, -1, - 23, 24, 25, -1, -1, 28, -1, -1, -1, -1, - -1, -1, 35, -1, 37, 38, -1, 40, -1, 42, - -1, 44, -1, 46, 47, 48, -1, -1, 51, 52, - -1, 54, 55, -1, -1, -1, -1, -1, -1, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, + -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, + 116, 117, -1, -1, -1, 121, -1, 123, -1, 125, + -1, 127, -1, -1, -1, 131, 3, 4, 5, 6, + -1, 8, 9, 10, 11, 12, 13, 14, 15, 16, + -1, -1, -1, 20, 21, 22, 23, 24, 25, 26, + 27, -1, 29, 30, -1, 32, -1, -1, -1, 36, + 37, 38, 39, -1, 41, 42, 43, -1, 45, 46, + 47, 48, 49, -1, -1, 52, 53, -1, 55, 56, + -1, -1, -1, -1, -1, -1, 63, 64, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, - -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, - -1, -1, 115, 116, -1, -1, -1, 120, -1, 122, - -1, -1, -1, 126, -1, 128, 3, 4, 5, -1, - 7, 8, 9, 10, 11, 12, 13, 14, 15, -1, - -1, -1, 19, 20, 21, -1, 23, 24, 25, -1, - -1, 28, -1, -1, -1, -1, -1, -1, 35, -1, - 37, 38, -1, 40, -1, 42, -1, 44, -1, 46, - 47, 48, -1, -1, 51, 52, -1, 54, 55, -1, - -1, -1, -1, -1, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 88, 89, -1, -1, -1, -1, -1, -1, -1, + 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 111, -1, -1, -1, -1, 116, + 117, -1, -1, -1, 121, -1, 123, -1, 125, -1, + 127, -1, -1, -1, 131, 3, 4, 5, 6, -1, + 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, + -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, + -1, 29, 30, -1, 32, -1, -1, -1, 36, 37, + 38, 39, -1, 41, 42, 43, -1, 45, 46, 47, + 48, 49, -1, -1, 52, 53, -1, 55, 56, -1, + -1, -1, -1, -1, -1, 63, 64, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 87, 88, -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 110, -1, -1, -1, -1, 115, 116, - -1, -1, -1, 120, -1, 122, -1, -1, -1, 126, - -1, 128, 3, 4, 5, -1, 7, 8, 9, 10, - 11, 12, 13, 14, 15, -1, 17, -1, 19, 20, - 21, 22, 23, 24, 25, 26, -1, 28, 29, -1, - 31, -1, -1, -1, 35, 36, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, -1, - 51, 52, -1, 54, 55, -1, -1, -1, -1, -1, - -1, 62, 63, -1, 65, -1, -1, -1, -1, -1, + 88, 89, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 87, 88, -1, -1, - -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, - -1, -1, -1, -1, 115, 116, -1, -1, -1, 120, - -1, 122, 3, 4, 5, 126, 7, 8, 9, 10, - 11, 12, 13, 14, 15, -1, -1, -1, 19, 20, - 21, 22, 23, 24, 25, 26, -1, 28, 29, -1, - 31, -1, -1, -1, 35, 36, 37, 38, -1, 40, - 41, 42, -1, 44, 45, 46, 47, 48, -1, -1, - 51, 52, -1, 54, 55, -1, -1, -1, -1, -1, - -1, 62, 63, -1, 65, -1, -1, -1, -1, -1, - -1, 3, 4, 5, -1, 7, 8, 9, 10, 11, - -1, -1, -1, -1, -1, -1, 87, 88, -1, -1, - -1, -1, 24, -1, 26, 96, 28, -1, -1, -1, - -1, -1, -1, 35, -1, -1, -1, -1, -1, 110, - 42, -1, 44, -1, 115, 116, -1, -1, -1, 120, - 52, 122, 54, 55, -1, 126, -1, -1, -1, -1, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 111, -1, -1, -1, -1, 116, 117, + -1, -1, -1, 121, -1, 123, -1, 125, -1, 127, + -1, -1, -1, 131, 3, 4, 5, 6, -1, 8, + 9, 10, 11, 12, 13, 14, 15, 16, -1, -1, + 19, 20, 21, 22, 23, 24, 25, 26, 40, -1, + 29, -1, -1, -1, -1, -1, -1, 36, -1, 38, + 39, -1, 41, -1, 43, -1, 45, -1, 47, 48, + 49, -1, -1, 52, 53, -1, 55, 56, -1, -1, + -1, -1, 74, 75, 63, 64, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 88, 89, 90, -1, + 92, 93, 94, -1, -1, -1, -1, -1, -1, 88, + 89, -1, -1, -1, -1, -1, 108, 109, 97, 111, + 112, 113, 114, 115, -1, -1, -1, -1, -1, 121, + -1, 123, 111, -1, 126, -1, -1, 116, 117, -1, + -1, -1, 121, -1, 123, -1, 125, -1, 127, -1, + -1, -1, 131, 3, 4, 5, 6, -1, 8, 9, + 10, 11, 12, 13, 14, 15, 16, -1, -1, -1, + 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, + -1, -1, -1, -1, -1, -1, 36, -1, 38, 39, + -1, 41, -1, 43, -1, 45, -1, 47, 48, 49, + -1, -1, 52, 53, -1, 55, 56, -1, -1, -1, + -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 87, 88, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, - -1, -1, -1, 115, 116, -1, -1, -1, 120, -1, - 122, -1, -1, -1, 126, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, -1, 87, 88, -1, -1, - 91, 92, 93, -1, -1, -1, -1, -1, 99, -1, - -1, 102, 39, 104, 105, 106, 107, 108, -1, 110, - 111, 112, 113, 114, -1, -1, -1, -1, -1, 120, - -1, -1, 123, -1, -1, 126, -1, -1, 129, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, - 87, 88, -1, -1, 91, 92, 93, -1, -1, -1, - -1, -1, 99, -1, -1, 102, 39, 104, 105, 106, - 107, 108, -1, 110, 111, 112, 113, 114, -1, -1, - -1, -1, -1, 120, -1, -1, 123, -1, -1, 126, - -1, -1, 129, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, -1, 87, 88, -1, -1, 91, 92, - 93, -1, -1, -1, -1, -1, 99, 39, -1, 102, - 103, 104, 105, 106, 107, 108, -1, 110, 111, 112, - 113, 114, -1, -1, -1, -1, -1, 120, -1, -1, - 123, -1, -1, 126, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, -1, 87, 88, -1, -1, 91, - 92, 93, -1, -1, -1, -1, -1, 99, 39, -1, - 102, -1, 104, 105, 106, 107, 108, -1, 110, 111, - 112, 113, 114, -1, -1, -1, -1, -1, 120, 121, - -1, 123, -1, -1, 126, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, -1, 87, 88, -1, -1, - 91, 92, 93, -1, -1, -1, -1, -1, 99, 39, - -1, 102, 103, 104, 105, 106, 107, 108, -1, 110, - 111, 112, 113, 114, -1, -1, -1, -1, -1, 120, - -1, -1, 123, -1, -1, 126, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, -1, 87, 88, -1, - -1, 91, 92, 93, -1, -1, -1, -1, -1, 99, - 39, -1, 102, 103, 104, 105, 106, 107, 108, -1, - 110, 111, 112, 113, 114, -1, -1, -1, -1, -1, - 120, -1, -1, 123, -1, -1, 126, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, -1, 87, 88, - -1, -1, 91, 92, 93, -1, -1, -1, -1, -1, - 99, 39, -1, 102, -1, 104, 105, 106, 107, 108, - -1, 110, 111, 112, 113, 114, -1, -1, -1, -1, - -1, 120, -1, -1, 123, -1, -1, 126, 66, 67, - 68, 69, 70, 71, 72, 73, 74, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 85, -1, 87, - 88, -1, -1, 91, 92, 93, -1, -1, -1, -1, - -1, -1, 39, -1, -1, -1, 104, 105, 106, 107, - 108, -1, 110, 111, 112, 113, 114, -1, -1, -1, - -1, -1, 120, -1, -1, 123, -1, -1, 126, 66, - 67, 68, 69, 70, 71, 72, 73, 74, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, + -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 111, -1, -1, -1, -1, 116, 117, -1, -1, + -1, 121, -1, 123, -1, 125, -1, 127, -1, -1, + -1, 131, 3, 4, 5, 6, -1, 8, 9, 10, + 11, 12, 13, 14, 15, 16, -1, -1, -1, 20, + 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, + -1, -1, -1, -1, -1, 36, -1, 38, 39, -1, + 41, -1, 43, -1, 45, -1, 47, 48, 49, -1, + -1, 52, 53, -1, 55, 56, -1, -1, -1, -1, + -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 88, 89, -1, + -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 87, 88, -1, -1, 91, 92, 93, -1, -1, -1, - -1, -1, -1, 39, -1, -1, -1, 104, 105, 106, - 107, 108, -1, 110, 111, 112, 113, 114, -1, -1, - -1, -1, -1, 120, -1, -1, 123, -1, -1, 126, - 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, + 111, -1, -1, -1, -1, 116, 117, -1, -1, -1, + 121, -1, 123, -1, 125, -1, 127, -1, -1, -1, + 131, 3, 4, 5, 6, -1, 8, 9, 10, 11, + 12, 13, 14, 15, 16, -1, -1, -1, 20, 21, + 22, 23, 24, 25, 26, -1, -1, 29, -1, -1, + -1, -1, -1, -1, 36, -1, 38, 39, -1, 41, + -1, 43, -1, 45, -1, 47, 48, 49, -1, -1, + 52, 53, -1, 55, 56, -1, -1, -1, -1, -1, + -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 87, 88, -1, -1, 91, 92, 93, -1, -1, - -1, -1, -1, -1, 39, -1, -1, -1, -1, 105, - 106, 107, 108, -1, 110, 111, 112, 113, 114, -1, - -1, -1, -1, -1, 120, -1, -1, 123, -1, -1, - 126, 66, 67, 68, 69, 70, 71, 72, 73, 74, + -1, -1, -1, -1, -1, -1, 88, 89, -1, -1, + -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, + -1, -1, -1, -1, 116, 117, -1, -1, -1, 121, + -1, 123, -1, 125, -1, 127, -1, -1, -1, 131, + 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, + 13, 14, 15, 16, -1, -1, -1, 20, 21, 22, + 23, 24, 25, 26, -1, -1, 29, -1, -1, -1, + -1, -1, -1, 36, -1, 38, 39, -1, 41, -1, + 43, -1, 45, -1, 47, 48, 49, -1, -1, 52, + 53, -1, 55, 56, -1, -1, -1, -1, -1, -1, + 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 87, 88, -1, -1, 91, 92, 93, -1, - -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, - -1, 106, 107, 108, -1, 110, 111, 112, 113, 114, - -1, -1, -1, -1, -1, 120, -1, -1, 123, -1, - -1, 126, 66, 67, 68, 69, 70, 71, 72, 73, - 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 87, 88, -1, -1, 91, 92, 93, - -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, - -1, -1, 106, 107, 108, -1, 110, 111, 112, 113, - 114, -1, -1, -1, -1, -1, 120, -1, -1, 123, - -1, -1, 126, 66, 67, 68, 69, 70, 71, 72, - 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 87, 88, -1, -1, 91, 92, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 107, 108, -1, 110, 111, 112, - 113, 114, -1, -1, -1, -1, -1, 120, -1, -1, + -1, -1, -1, -1, -1, 88, 89, -1, -1, -1, + -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, + -1, -1, -1, 116, 117, -1, -1, -1, 121, -1, + 123, -1, 125, -1, 127, -1, 0, -1, 131, 3, + 4, 5, 6, -1, 8, 9, 10, 11, 12, 13, + 14, 15, 16, -1, -1, 19, 20, 21, 22, 23, + 24, 25, 26, -1, -1, 29, -1, -1, -1, -1, + -1, -1, 36, -1, 38, 39, -1, 41, -1, 43, + -1, 45, -1, 47, 48, 49, -1, -1, 52, 53, + -1, 55, 56, -1, -1, -1, -1, -1, -1, 63, + 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, + -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, + -1, -1, 116, 117, -1, -1, -1, 121, -1, 123, + -1, 125, -1, 127, 3, 4, 5, 6, -1, 8, + 9, 10, 11, 12, 13, 14, 15, 16, -1, 18, + -1, 20, 21, 22, 23, 24, 25, 26, 27, -1, + 29, 30, -1, 32, -1, -1, -1, 36, 37, 38, + 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, + 49, -1, -1, 52, 53, -1, 55, 56, -1, -1, + -1, -1, -1, -1, 63, 64, -1, 66, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, + 89, -1, -1, -1, -1, -1, -1, -1, 97, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 111, -1, -1, -1, -1, 116, 117, -1, + -1, -1, 121, -1, 123, -1, 125, -1, 127, 3, + 4, 5, 6, -1, 8, 9, 10, 11, 12, 13, + 14, 15, 16, -1, -1, -1, 20, 21, 22, 23, + 24, 25, 26, 27, -1, 29, 30, -1, 32, -1, + -1, -1, 36, 37, 38, 39, -1, 41, 42, 43, + -1, 45, 46, 47, 48, 49, -1, -1, 52, 53, + -1, 55, 56, -1, -1, -1, -1, -1, -1, 63, + 64, -1, 66, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, + -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, + -1, -1, 116, 117, -1, -1, -1, 121, -1, 123, + -1, 125, -1, 127, 3, 4, 5, 6, -1, 8, + 9, 10, 11, 12, 13, 14, 15, 16, -1, -1, + -1, 20, 21, 22, 23, 24, 25, 26, 27, -1, + 29, 30, -1, 32, -1, -1, -1, 36, 37, 38, + 39, -1, 41, 42, 43, -1, 45, 46, 47, 48, + 49, -1, -1, 52, 53, -1, 55, 56, -1, -1, + -1, -1, -1, -1, 63, 64, -1, 66, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, + 89, -1, -1, -1, -1, -1, -1, -1, 97, -1, + -1, 3, -1, 5, 6, -1, 8, 9, 10, 11, + 12, -1, 111, -1, -1, -1, -1, 116, 117, -1, + -1, -1, 121, 25, 123, 27, 125, 29, 127, -1, + 32, -1, -1, -1, 36, -1, -1, -1, -1, -1, + -1, 43, -1, 45, 46, -1, -1, -1, -1, -1, + -1, 53, -1, 55, 56, -1, -1, -1, -1, -1, + -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 88, 89, -1, -1, + -1, -1, -1, -1, 3, -1, 5, 6, -1, 8, + 9, 10, 11, 12, -1, -1, -1, -1, -1, 111, + -1, -1, -1, -1, 116, 117, 25, -1, 27, 121, + 29, 123, -1, 125, -1, 127, -1, 36, -1, -1, + -1, -1, -1, -1, 43, -1, 45, -1, -1, -1, + -1, -1, -1, -1, 53, -1, 55, 56, -1, -1, + -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, + 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 111, -1, -1, -1, -1, 116, 117, -1, + -1, -1, 121, -1, 123, -1, 125, -1, 127, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, -1, + 88, 89, 90, -1, 92, 93, 94, -1, -1, -1, + -1, -1, 100, -1, -1, 103, -1, 105, 106, 107, + 108, 109, 40, 111, 112, 113, 114, 115, -1, -1, + -1, -1, -1, 121, -1, 123, -1, -1, 126, -1, + -1, -1, -1, -1, 132, -1, -1, -1, -1, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, -1, + 88, 89, 90, -1, 92, 93, 94, -1, -1, -1, + -1, -1, 100, -1, -1, 103, -1, 105, 106, 107, + 108, 109, 40, 111, 112, 113, 114, 115, -1, -1, + -1, -1, -1, 121, -1, 123, -1, -1, 126, -1, + -1, -1, -1, -1, 132, -1, -1, -1, -1, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, -1, + 88, 89, 90, -1, 92, 93, 94, -1, -1, -1, + -1, -1, 100, -1, -1, 103, -1, 105, 106, 107, + 108, 109, 40, 111, 112, 113, 114, 115, -1, -1, + -1, -1, -1, 121, -1, 123, -1, -1, 126, -1, + -1, -1, -1, -1, 132, -1, -1, -1, -1, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, -1, + 88, 89, 90, -1, 92, 93, 94, -1, -1, -1, + -1, -1, 100, 40, -1, 103, 104, 105, 106, 107, + 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, + -1, -1, -1, 121, -1, 123, -1, -1, 126, -1, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + -1, 88, 89, 90, -1, 92, 93, 94, -1, -1, + -1, -1, -1, 100, 40, -1, 103, -1, 105, 106, + 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, + -1, -1, -1, -1, 121, -1, 123, 124, -1, 126, + -1, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, -1, 88, 89, 90, -1, 92, 93, 94, -1, + -1, -1, -1, -1, 100, 40, -1, 103, 104, 105, + 106, 107, 108, 109, -1, 111, 112, 113, 114, 115, + -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, + 126, -1, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, -1, 88, 89, 90, -1, 92, 93, 94, + -1, -1, -1, -1, -1, 100, 40, -1, 103, 104, + 105, 106, 107, 108, 109, -1, 111, 112, 113, 114, + 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, + -1, 126, -1, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, -1, 88, 89, 90, -1, 92, 93, + 94, -1, -1, -1, -1, -1, 100, 40, -1, 103, + -1, 105, 106, 107, 108, 109, -1, 111, 112, 113, + 114, 115, -1, -1, -1, -1, -1, 121, -1, 123, + -1, -1, 126, -1, 67, 68, 69, 70, 71, 72, + 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 86, -1, 88, 89, 90, -1, 92, + 93, 94, -1, -1, -1, -1, -1, 40, -1, -1, + -1, -1, 105, 106, 107, 108, 109, -1, 111, 112, + 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, + 123, -1, -1, 126, 67, 68, 69, 70, 71, 72, + 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, -1, 92, + 93, 94, -1, -1, -1, -1, -1, 40, -1, -1, + -1, -1, 105, 106, 107, 108, 109, -1, 111, 112, + 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, + 123, -1, -1, 126, 67, 68, 69, 70, 71, 72, + 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, -1, 92, + 93, 94, -1, -1, -1, -1, -1, 40, -1, -1, + -1, -1, -1, 106, 107, 108, 109, -1, 111, 112, + 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, + 123, -1, -1, 126, 67, 68, 69, 70, 71, 72, + 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, -1, 92, + 93, 94, -1, -1, -1, -1, -1, 40, -1, -1, + -1, -1, -1, -1, 107, 108, 109, -1, 111, 112, + 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, + 123, -1, -1, 126, 67, 68, 69, 70, 71, 72, + 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, -1, 92, + 93, 94, -1, -1, -1, -1, -1, 40, -1, -1, + -1, -1, -1, -1, 107, 108, 109, -1, 111, 112, + 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, + 123, -1, -1, 126, 67, 68, 69, 70, 71, 72, + 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 88, 89, 90, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 108, 109, -1, 111, 112, + 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, 126 }; @@ -2772,54 +3127,58 @@ static const yytype_int16 yycheck[] = symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 3, 4, 5, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 18, 19, 20, 21, 23, 24, 25, - 26, 28, 35, 37, 38, 40, 42, 44, 46, 47, - 48, 51, 52, 54, 55, 62, 63, 87, 88, 96, - 110, 115, 116, 120, 122, 126, 131, 132, 133, 134, - 140, 143, 149, 153, 154, 155, 156, 158, 166, 174, - 177, 180, 183, 184, 185, 186, 190, 192, 201, 208, - 211, 221, 222, 223, 226, 227, 228, 229, 232, 49, - 126, 126, 159, 126, 3, 18, 122, 178, 179, 3, - 212, 3, 210, 228, 126, 3, 179, 212, 213, 214, - 126, 122, 123, 126, 228, 126, 228, 228, 228, 228, - 228, 219, 220, 225, 228, 225, 230, 231, 226, 0, - 134, 3, 31, 45, 145, 151, 152, 227, 26, 30, - 31, 43, 45, 200, 186, 97, 39, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 87, 88, 91, - 92, 93, 99, 102, 104, 105, 106, 107, 108, 110, - 111, 112, 113, 114, 120, 123, 126, 126, 157, 22, - 29, 36, 41, 45, 65, 96, 122, 140, 141, 142, - 145, 160, 161, 176, 184, 224, 233, 234, 167, 182, - 122, 123, 126, 218, 126, 226, 123, 228, 175, 3, - 219, 150, 121, 97, 103, 128, 97, 129, 3, 146, - 147, 3, 146, 96, 67, 34, 50, 207, 3, 3, - 3, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 3, - 219, 226, 17, 3, 226, 226, 3, 128, 139, 141, - 228, 96, 13, 17, 228, 96, 135, 136, 137, 143, - 190, 192, 201, 208, 181, 178, 219, 3, 90, 204, - 205, 206, 129, 3, 113, 129, 138, 139, 129, 226, - 225, 225, 225, 103, 217, 97, 217, 226, 226, 3, - 53, 187, 53, 188, 217, 103, 121, 129, 129, 3, - 128, 141, 126, 3, 129, 128, 137, 135, 129, 99, - 103, 202, 206, 129, 97, 142, 128, 129, 103, 35, - 113, 179, 214, 216, 99, 144, 147, 96, 129, 126, - 214, 16, 189, 214, 215, 122, 144, 228, 142, 226, - 99, 122, 128, 4, 7, 8, 9, 11, 44, 54, - 55, 203, 216, 217, 90, 206, 27, 32, 168, 170, - 172, 173, 142, 225, 123, 225, 227, 142, 204, 215, - 122, 97, 193, 129, 3, 4, 33, 61, 162, 163, - 164, 165, 202, 122, 206, 122, 126, 168, 170, 64, - 148, 129, 129, 191, 214, 45, 96, 184, 197, 198, - 199, 228, 103, 128, 164, 165, 138, 171, 3, 142, - 142, 217, 96, 140, 184, 194, 195, 196, 201, 208, - 3, 26, 128, 199, 103, 138, 128, 138, 217, 122, - 128, 196, 207, 138, 128, 129, 209, 3, 169, 138, - 126, 122, 128, 204, 138, 129, 128, 217 + 0, 3, 4, 5, 6, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 29, 36, 38, 39, 41, 43, 45, + 47, 48, 49, 52, 53, 55, 56, 63, 64, 88, + 89, 97, 111, 116, 117, 121, 123, 125, 127, 134, + 135, 136, 137, 143, 146, 147, 153, 157, 158, 159, + 160, 162, 170, 178, 181, 184, 187, 188, 189, 190, + 194, 196, 205, 212, 215, 228, 229, 230, 233, 234, + 235, 236, 239, 241, 87, 50, 121, 121, 163, 121, + 3, 19, 125, 182, 183, 18, 3, 235, 3, 214, + 235, 121, 183, 218, 121, 125, 121, 126, 235, 121, + 235, 235, 235, 235, 235, 233, 224, 225, 226, 232, + 235, 232, 237, 238, 3, 0, 137, 125, 3, 32, + 46, 149, 155, 156, 234, 27, 31, 32, 44, 46, + 204, 190, 98, 40, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 88, 89, 90, 92, 93, 94, + 100, 103, 105, 106, 107, 108, 109, 111, 112, 113, + 114, 115, 121, 123, 126, 3, 121, 161, 30, 37, + 42, 46, 66, 97, 125, 143, 144, 145, 147, 149, + 164, 165, 180, 188, 231, 240, 171, 186, 125, 126, + 3, 227, 121, 233, 126, 235, 179, 224, 3, 154, + 132, 124, 98, 232, 104, 131, 98, 135, 3, 150, + 151, 3, 150, 97, 68, 35, 51, 211, 3, 3, + 3, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 3, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 224, + 235, 3, 121, 127, 233, 3, 233, 233, 3, 131, + 142, 144, 235, 97, 14, 125, 18, 235, 97, 138, + 139, 140, 146, 147, 194, 196, 205, 212, 185, 182, + 121, 223, 3, 91, 208, 209, 210, 132, 3, 114, + 132, 141, 142, 132, 233, 232, 232, 131, 104, 222, + 98, 222, 233, 233, 3, 54, 191, 54, 192, 222, + 104, 132, 124, 87, 235, 3, 132, 131, 144, 121, + 142, 3, 132, 131, 140, 125, 138, 224, 100, 104, + 206, 210, 132, 98, 145, 131, 132, 104, 3, 36, + 114, 183, 217, 218, 219, 221, 100, 148, 151, 97, + 132, 121, 219, 17, 193, 219, 220, 125, 148, 235, + 3, 132, 145, 233, 131, 100, 125, 138, 131, 132, + 3, 5, 8, 9, 10, 12, 45, 55, 56, 207, + 221, 222, 91, 210, 28, 33, 172, 174, 176, 177, + 145, 232, 126, 232, 234, 145, 208, 220, 125, 98, + 197, 132, 3, 5, 34, 62, 166, 167, 168, 169, + 131, 206, 125, 210, 125, 121, 172, 174, 65, 152, + 132, 132, 195, 219, 46, 97, 188, 201, 202, 203, + 235, 104, 131, 168, 169, 216, 175, 3, 145, 145, + 222, 97, 143, 147, 188, 198, 199, 200, 205, 212, + 3, 27, 131, 203, 104, 141, 141, 141, 222, 125, + 125, 131, 200, 211, 141, 131, 131, 132, 213, 198, + 3, 173, 141, 131, 121, 125, 131, 208, 141, 132, + 131, 222 }; #define yyerrok (yyerrstatus = 0) @@ -3631,132 +3990,132 @@ yyreduce: switch (yyn) { - case 24: + case 26: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1544 "parser.y" +#line 1725 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; - case 25: + case 27: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1545 "parser.y" +#line 1726 "parser.y" {(yyval.code)=code_new();} } break; - case 26: + case 28: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1547 "parser.y" +#line 1728 "parser.y" {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));} } break; - case 27: + case 29: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1548 "parser.y" +#line 1729 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; - case 38: + case 41: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1563 "parser.y" +#line 1745 "parser.y" {(yyval.code)=0;} } break; - case 45: + case 48: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1571 "parser.y" - {/*TODO*/(yyval.code)=0;} +#line 1752 "parser.y" + {(yyval.code)=(yyvsp[(3) - (4)].code);} } break; - case 46: + case 49: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1572 "parser.y" +#line 1754 "parser.y" {/*TODO*/(yyval.code)=0;} } break; - case 47: + case 50: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1574 "parser.y" +#line 1756 "parser.y" {(yyval.code)=(yyvsp[(2) - (3)].code);} } break; - case 48: + case 51: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1575 "parser.y" +#line 1757 "parser.y" {(yyval.code)=0;} } break; - case 49: + case 52: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1576 "parser.y" +#line 1758 "parser.y" {(yyval.code)=(yyvsp[(1) - (2)].code);} } break; - case 50: + case 53: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1577 "parser.y" +#line 1759 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; - case 51: + case 54: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1581 "parser.y" +#line 1763 "parser.y" { code_t**cc = &global->init->method->body->code; *cc = code_append(*cc, (yyvsp[(1) - (1)].code)); @@ -3766,22 +4125,22 @@ yyreduce: - case 52: + case 56: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1588 "parser.y" +#line 1774 "parser.y" {(yyval.value)=(yyvsp[(2) - (2)].value);} } break; - case 53: + case 57: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1589 "parser.y" +#line 1775 "parser.y" {(yyval.value).c=abc_pushundefined(0); (yyval.value).t=TYPE_ANY; } @@ -3790,55 +4149,55 @@ yyreduce: - case 54: + case 58: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1593 "parser.y" +#line 1779 "parser.y" {(yyval.code)=(yyvsp[(2) - (2)].code);} } break; - case 55: + case 59: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1594 "parser.y" +#line 1780 "parser.y" {(yyval.code)=(yyvsp[(2) - (2)].code);} } break; - case 56: + case 60: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1596 "parser.y" +#line 1782 "parser.y" {(yyval.code) = (yyvsp[(1) - (1)].code);} } break; - case 57: + case 61: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1597 "parser.y" +#line 1783 "parser.y" {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} } break; - case 58: + case 62: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1600 "parser.y" +#line 1786 "parser.y" { if(variable_exists((yyvsp[(1) - (3)].id))) syntaxerror("Variable %s already defined", (yyvsp[(1) - (3)].id)); @@ -3856,6 +4215,7 @@ yyreduce: (yyval.code) = converttype((yyval.code), (yyvsp[(3) - (3)].value).t, (yyvsp[(2) - (3)].classinfo)); (yyval.code) = abc_setlocal((yyval.code), index); } else { + code_free((yyvsp[(3) - (3)].value).c); (yyval.code) = defaultvalue(0, (yyvsp[(2) - (3)].classinfo)); (yyval.code) = abc_setlocal((yyval.code), index); } @@ -3865,6 +4225,7 @@ yyreduce: (yyval.code) = abc_coerce_a((yyval.code)); (yyval.code) = abc_setlocal((yyval.code), index); } else { + code_free((yyvsp[(3) - (3)].value).c); (yyval.code) = code_new(); } } @@ -3881,44 +4242,44 @@ yyreduce: - case 59: + case 63: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1640 "parser.y" +#line 1828 "parser.y" {(yyval.code) = code_new();} } break; - case 60: + case 64: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1641 "parser.y" +#line 1829 "parser.y" {(yyval.code)=(yyvsp[(2) - (2)].code);} } break; - case 61: + case 65: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1644 "parser.y" +#line 1832 "parser.y" {new_state();} } break; - case 62: + case 66: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1644 "parser.y" +#line 1832 "parser.y" { (yyval.code) = code_new(); @@ -3942,22 +4303,22 @@ yyreduce: - case 63: + case 67: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1663 "parser.y" +#line 1851 "parser.y" {(yyval.code)=code_new();} } break; - case 66: + case 70: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1668 "parser.y" +#line 1856 "parser.y" { (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1); } @@ -3966,11 +4327,11 @@ yyreduce: - case 67: + case 71: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1671 "parser.y" +#line 1859 "parser.y" { (yyval.id)=(yyvsp[(1) - (1)].id); } @@ -3979,33 +4340,33 @@ yyreduce: - case 68: + case 72: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1675 "parser.y" +#line 1863 "parser.y" {new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;} } break; - case 69: + case 73: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1676 "parser.y" +#line 1864 "parser.y" {new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;} } break; - case 70: + case 74: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1678 "parser.y" +#line 1866 "parser.y" { if((yyvsp[(1) - (8)].for_start).each) syntaxerror("invalid syntax: ; not allowed in for each statement"); (yyval.code) = code_new(); @@ -4030,11 +4391,11 @@ yyreduce: - case 71: + case 75: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1698 "parser.y" +#line 1886 "parser.y" { variable_t*var = find_variable((yyvsp[(2) - (6)].id)); char*tmp1name = concat2((yyvsp[(2) - (6)].id), "__tmp1__"); @@ -4082,22 +4443,22 @@ yyreduce: - case 72: + case 76: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1741 "parser.y" +#line 1929 "parser.y" {new_state();} } break; - case 73: + case 77: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1741 "parser.y" +#line 1929 "parser.y" { (yyval.code) = code_new(); @@ -4121,22 +4482,22 @@ yyreduce: - case 74: + case 78: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1760 "parser.y" +#line 1948 "parser.y" {new_state();} } break; - case 75: + case 79: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1760 "parser.y" +#line 1948 "parser.y" { (yyval.code) = code_new(); code_t*loopstart = (yyval.code) = abc_label((yyval.code)); @@ -4156,11 +4517,11 @@ yyreduce: - case 76: + case 80: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1775 "parser.y" +#line 1963 "parser.y" { (yyval.code) = abc___break__(0, ""); } @@ -4169,11 +4530,11 @@ yyreduce: - case 77: + case 81: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1778 "parser.y" +#line 1966 "parser.y" { (yyval.code) = abc___break__(0, (yyvsp[(2) - (2)].id)); } @@ -4182,11 +4543,11 @@ yyreduce: - case 78: + case 82: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1781 "parser.y" +#line 1969 "parser.y" { (yyval.code) = abc___continue__(0, ""); } @@ -4195,11 +4556,11 @@ yyreduce: - case 79: + case 83: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1784 "parser.y" +#line 1972 "parser.y" { (yyval.code) = abc___continue__(0, (yyvsp[(2) - (2)].id)); } @@ -4208,77 +4569,77 @@ yyreduce: - case 80: + case 84: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1788 "parser.y" +#line 1976 "parser.y" {(yyval.code)=0;} } break; - case 81: + case 85: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1789 "parser.y" +#line 1977 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; - case 82: + case 86: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1790 "parser.y" +#line 1978 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; - case 83: + case 87: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1791 "parser.y" +#line 1979 "parser.y" {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));} } break; - case 84: + case 88: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1792 "parser.y" +#line 1980 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; - case 85: + case 89: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1793 "parser.y" +#line 1981 "parser.y" {(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));} } break; - case 86: + case 90: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1795 "parser.y" +#line 1983 "parser.y" { (yyval.code) = abc_dup(0); (yyval.code) = code_append((yyval.code), (yyvsp[(2) - (4)].value).c); @@ -4295,11 +4656,11 @@ yyreduce: - case 87: + case 91: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1806 "parser.y" +#line 1994 "parser.y" { (yyval.code) = (yyvsp[(3) - (3)].code); } @@ -4308,22 +4669,22 @@ yyreduce: - case 88: + case 92: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1809 "parser.y" +#line 1997 "parser.y" {new_state();} } break; - case 89: + case 93: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1809 "parser.y" +#line 1997 "parser.y" { (yyval.code)=(yyvsp[(4) - (8)].value).c; (yyval.code) = code_append((yyval.code), (yyvsp[(7) - (8)].code)); @@ -4355,22 +4716,22 @@ yyreduce: - case 90: + case 94: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1838 "parser.y" +#line 2026 "parser.y" {new_state();state->exception_name=(yyvsp[(3) - (5)].id);new_variable((yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].classinfo), 0);} } break; - case 91: + case 95: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1839 "parser.y" +#line 2027 "parser.y" { namespace_t name_ns = {ACCESS_PACKAGE, ""}; multiname_t name = {QNAME, &name_ns, 0, (yyvsp[(3) - (9)].id)}; @@ -4395,22 +4756,22 @@ yyreduce: - case 92: + case 96: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1858 "parser.y" +#line 2046 "parser.y" {new_state();state->exception_name=0;} } break; - case 93: + case 97: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1858 "parser.y" +#line 2046 "parser.y" { (yyvsp[(4) - (5)].code) = var_block((yyvsp[(4) - (5)].code)); if(!(yyvsp[(4) - (5)].code)) { @@ -4432,44 +4793,44 @@ yyreduce: - case 94: + case 98: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1875 "parser.y" +#line 2063 "parser.y" {(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));} } break; - case 95: + case 99: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1876 "parser.y" +#line 2064 "parser.y" {(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));} } break; - case 96: + case 100: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1877 "parser.y" +#line 2065 "parser.y" {(yyval.catch_list)=(yyvsp[(1) - (1)].catch_list);} } break; - case 97: + case 101: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1878 "parser.y" +#line 2066 "parser.y" { (yyval.catch_list) = (yyvsp[(1) - (2)].catch_list); (yyval.catch_list).finally = 0; @@ -4483,11 +4844,11 @@ yyreduce: - case 98: + case 102: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1886 "parser.y" +#line 2074 "parser.y" { (yyval.catch_list).l=list_new(); (yyval.catch_list).finally = 0; @@ -4501,22 +4862,22 @@ yyreduce: - case 99: + case 103: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1895 "parser.y" +#line 2083 "parser.y" {new_state();} } break; - case 100: + case 104: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1895 "parser.y" +#line 2083 "parser.y" { code_t*out = abc_nop(0); @@ -4564,11 +4925,11 @@ yyreduce: - case 101: + case 105: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1940 "parser.y" +#line 2128 "parser.y" { (yyval.code)=(yyvsp[(2) - (2)].value).c; (yyval.code)=abc_throw((yyval.code)); @@ -4578,11 +4939,11 @@ yyreduce: - case 102: + case 106: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1944 "parser.y" +#line 2132 "parser.y" { if(!state->exception_name) syntaxerror("re-throw only possible within a catch block"); @@ -4596,11 +4957,11 @@ yyreduce: - case 103: + case 107: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1955 "parser.y" +#line 2143 "parser.y" { (yyval.code) = (yyvsp[(3) - (5)].value).c; (yyval.code) = abc_pushscope((yyval.code)); @@ -4612,89 +4973,95 @@ yyreduce: - case 105: + case 109: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1965 "parser.y" +#line 2153 "parser.y" {PASS12 (yyval.id)="package";} } break; - case 106: + case 110: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1967 "parser.y" +#line 2155 "parser.y" {PASS12 (yyval.id) = concat3((yyvsp[(1) - (3)].id),".",(yyvsp[(3) - (3)].id));free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0;} } break; - case 107: + case 111: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1968 "parser.y" +#line 2156 "parser.y" {PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));} } break; - case 108: + case 112: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1970 "parser.y" +#line 2158 "parser.y" {PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;} } break; - case 109: + case 113: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1971 "parser.y" +#line 2159 "parser.y" {PASS12 endpackage();(yyval.code)=0;} } break; - case 110: + case 114: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1972 "parser.y" +#line 2160 "parser.y" {PASS12 startpackage("");} } break; - case 111: + case 115: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1973 "parser.y" +#line 2161 "parser.y" {PASS12 endpackage();(yyval.code)=0;} } break; - case 112: + case 116: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1975 "parser.y" +#line 2163 "parser.y" { + PASS1 + if(!registry_find((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name)) { + as3_schedule_class((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name); + } + + PASS2 classinfo_t*c = (yyvsp[(2) - (2)].classinfo); if(!c) syntaxerror("Couldn't import class\n"); @@ -4707,12 +5074,18 @@ yyreduce: - case 113: + case 117: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1983 "parser.y" +#line 2177 "parser.y" { + PASS1 + if(strncmp("flash.", (yyvsp[(2) - (4)].id), 6)) { + as3_schedule_package((yyvsp[(2) - (4)].id)); + } + + PASS2 NEW(import_t,i); i->package = (yyvsp[(2) - (4)].id); state_has_imports(); @@ -4724,264 +5097,275 @@ yyreduce: - case 114: + case 118: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1993 "parser.y" +#line 2193 "parser.y" {PASS12 (yyval.flags)=0;} } break; - case 115: + case 119: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1994 "parser.y" +#line 2194 "parser.y" {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);} } break; - case 116: + case 120: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1995 "parser.y" +#line 2195 "parser.y" {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].token);} } break; - case 117: + case 121: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1996 "parser.y" +#line 2196 "parser.y" {PASS12 (yyval.flags)=(yyvsp[(1) - (2)].flags)|(yyvsp[(2) - (2)].token);} } break; - case 118: + case 122: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1998 "parser.y" +#line 2198 "parser.y" {PASS12 (yyval.token)=FLAG_PUBLIC;} } break; - case 119: + case 123: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 1999 "parser.y" +#line 2199 "parser.y" {PASS12 (yyval.token)=FLAG_PRIVATE;} } break; - case 120: + case 124: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2000 "parser.y" +#line 2200 "parser.y" {PASS12 (yyval.token)=FLAG_PROTECTED;} } break; - case 121: + case 125: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2001 "parser.y" +#line 2201 "parser.y" {PASS12 (yyval.token)=FLAG_STATIC;} } break; - case 122: + case 126: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2002 "parser.y" +#line 2202 "parser.y" {PASS12 (yyval.token)=FLAG_DYNAMIC;} } break; - case 123: + case 127: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2003 "parser.y" +#line 2203 "parser.y" {PASS12 (yyval.token)=FLAG_FINAL;} } break; - case 124: + case 128: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2004 "parser.y" +#line 2204 "parser.y" {PASS12 (yyval.token)=FLAG_OVERRIDE;} } break; - case 125: + case 129: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2005 "parser.y" +#line 2205 "parser.y" {PASS12 (yyval.token)=FLAG_NATIVE;} } break; - case 126: + case 130: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2006 "parser.y" +#line 2206 "parser.y" {PASS12 (yyval.token)=FLAG_PACKAGEINTERNAL;} } break; - case 127: + case 131: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2008 "parser.y" +#line 2207 "parser.y" + {PASS12 (yyval.token)=FLAG_NAMESPACE;} + } + break; + + + + case 132: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2209 "parser.y" {(yyval.classinfo)=registry_getobjectclass();} } break; - case 128: + case 133: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2009 "parser.y" +#line 2210 "parser.y" {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);} } break; - case 129: + case 134: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2011 "parser.y" +#line 2212 "parser.y" {PASS12 (yyval.classinfo_list)=list_new();} } break; - case 130: + case 135: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2012 "parser.y" +#line 2213 "parser.y" {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);} } break; - case 131: + case 136: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2014 "parser.y" +#line 2215 "parser.y" {PASS12 (yyval.classinfo_list)=list_new();} } break; - case 132: + case 137: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2015 "parser.y" +#line 2216 "parser.y" {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);} } break; - case 133: + case 138: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2019 "parser.y" - {PASS12 startclass((yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list), 0);} +#line 2220 "parser.y" + {PASS12 startclass((yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list));} } break; - case 134: + case 139: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2021 "parser.y" +#line 2222 "parser.y" {PASS12 endclass();(yyval.code)=0;} } break; - case 135: + case 140: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2025 "parser.y" - {PASS12 startclass((yyvsp[(1) - (5)].flags),(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list),1);} +#line 2226 "parser.y" + {PASS12 startclass((yyvsp[(1) - (5)].flags)|FLAG_INTERFACE,(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list));} } break; - case 136: + case 141: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2027 "parser.y" +#line 2228 "parser.y" {PASS12 endclass();(yyval.code)=0;} } break; - case 144: + case 150: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2039 "parser.y" +#line 2241 "parser.y" { code_t*c = state->cls->static_init; c = code_append(c, (yyvsp[(1) - (1)].code)); @@ -4992,11 +5376,11 @@ yyreduce: - case 150: + case 156: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2050 "parser.y" +#line 2252 "parser.y" { syntaxerror("variable declarations not allowed in interfaces"); } @@ -5005,11 +5389,11 @@ yyreduce: - case 151: + case 157: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2053 "parser.y" +#line 2255 "parser.y" { PASS12 (yyvsp[(1) - (8)].flags) |= FLAG_PUBLIC; @@ -5018,28 +5402,43 @@ yyreduce: } startfunction(0,(yyvsp[(1) - (8)].flags),(yyvsp[(3) - (8)].token),(yyvsp[(4) - (8)].id),&(yyvsp[(6) - (8)].params),(yyvsp[(8) - (8)].classinfo)); endfunction(0,(yyvsp[(1) - (8)].flags),(yyvsp[(3) - (8)].token),(yyvsp[(4) - (8)].id),&(yyvsp[(6) - (8)].params),(yyvsp[(8) - (8)].classinfo), 0); + list_deep_free((yyvsp[(6) - (8)].params).list); } } break; - case 154: + case 160: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2067 "parser.y" +#line 2270 "parser.y" { int flags = (yyvsp[(1) - (5)].flags); - memberinfo_t* info = state->cls? - memberinfo_register(state->cls->info, (yyvsp[(3) - (5)].id), MEMBER_SLOT): - memberinfo_register_global(flags2access((yyvsp[(1) - (5)].flags)), state->package, (yyvsp[(3) - (5)].id), MEMBER_SLOT); + U8 access = flags2access((yyvsp[(1) - (5)].flags)); + + varinfo_t* info = 0; + if(state->cls) { + memberinfo_t*i = registry_findmember(state->cls->info, (yyvsp[(3) - (5)].id), 1); + if(i) { + check_override(i, flags); + } + + info = varinfo_register_onclass(state->cls->info, access, (yyvsp[(3) - (5)].id)); + } else { + slotinfo_t*i = registry_find(state->package, (yyvsp[(3) - (5)].id)); + if(i) { + syntaxerror("package %s already contains '%s'", state->package, (yyvsp[(3) - (5)].id)); + } + info = varinfo_register_global(access, state->package, (yyvsp[(3) - (5)].id)); + } info->type = (yyvsp[(4) - (5)].classinfo); info->flags = flags; /* slot name */ - namespace_t mname_ns = {flags2access(flags), ""}; + namespace_t mname_ns = {access, ""}; multiname_t mname = {QNAME, &mname_ns, 0, (yyvsp[(3) - (5)].id)}; trait_list_t**traits; @@ -5090,122 +5489,138 @@ yyreduce: - case 155: + case 161: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2126 "parser.y" +#line 2343 "parser.y" {(yyval.constant)=0;} } break; - case 156: + case 162: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2127 "parser.y" +#line 2344 "parser.y" {(yyval.constant)=(yyvsp[(2) - (2)].constant);} } break; - case 157: + case 163: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2129 "parser.y" +#line 2346 "parser.y" {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_uint));} } break; - case 158: + case 164: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2130 "parser.y" +#line 2347 "parser.y" {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));} } break; - case 159: + case 165: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2131 "parser.y" +#line 2348 "parser.y" {(yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));} } break; - case 160: + case 166: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2132 "parser.y" +#line 2349 "parser.y" {(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));} } break; - case 161: + case 167: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2133 "parser.y" - {(yyval.constant) = constant_new_string2((yyvsp[(1) - (1)].str).str,(yyvsp[(1) - (1)].str).len);} +#line 2350 "parser.y" + {(yyval.constant) = constant_new_string2((yyvsp[(1) - (1)].str).str,(yyvsp[(1) - (1)].str).len);free((char*)(yyvsp[(1) - (1)].str).str);} } break; - case 162: + case 168: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2135 "parser.y" +#line 2352 "parser.y" {(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));} } break; - case 163: + case 169: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2136 "parser.y" +#line 2353 "parser.y" {(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));} } break; - case 164: + case 170: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2137 "parser.y" +#line 2354 "parser.y" {(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));} } break; - case 165: + case 171: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2142 "parser.y" +#line 2355 "parser.y" { + // TODO + as3_warning("Couldn't resolve %s", (yyvsp[(1) - (1)].id)); + (yyval.constant) = constant_new_null((yyvsp[(1) - (1)].id)); +} + } + break; + + + + case 172: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2364 "parser.y" + { + PASS12 memset(&(yyval.params),0,sizeof((yyval.params))); } } @@ -5213,12 +5628,13 @@ yyreduce: - case 166: + case 173: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2145 "parser.y" +#line 2368 "parser.y" { + PASS12 (yyval.params)=(yyvsp[(1) - (1)].params); } } @@ -5226,12 +5642,13 @@ yyreduce: - case 167: + case 174: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2150 "parser.y" +#line 2374 "parser.y" { + PASS12 memset(&(yyval.params),0,sizeof((yyval.params))); (yyval.params).varargs=1; list_append((yyval.params).list, (yyvsp[(2) - (2)].param)); @@ -5241,12 +5658,13 @@ yyreduce: - case 168: + case 175: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2155 "parser.y" +#line 2380 "parser.y" { + PASS12 (yyval.params) =(yyvsp[(1) - (4)].params); (yyval.params).varargs=1; list_append((yyval.params).list, (yyvsp[(4) - (4)].param)); @@ -5256,12 +5674,13 @@ yyreduce: - case 169: + case 176: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2162 "parser.y" +#line 2388 "parser.y" { + PASS12 (yyval.params) = (yyvsp[(1) - (3)].params); list_append((yyval.params).list, (yyvsp[(3) - (3)].param)); } @@ -5270,12 +5689,13 @@ yyreduce: - case 170: + case 177: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2166 "parser.y" +#line 2393 "parser.y" { + PASS12 memset(&(yyval.params),0,sizeof((yyval.params))); list_append((yyval.params).list, (yyvsp[(1) - (1)].param)); } @@ -5284,12 +5704,14 @@ yyreduce: - case 171: + case 178: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2171 "parser.y" +#line 2399 "parser.y" { + PASS1 (yyval.param)=0; + PASS2 (yyval.param) = malloc(sizeof(param_t)); (yyval.param)->name=(yyvsp[(1) - (4)].id); (yyval.param)->type = (yyvsp[(3) - (4)].classinfo); @@ -5300,12 +5722,14 @@ yyreduce: - case 172: + case 179: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2177 "parser.y" +#line 2407 "parser.y" { + PASS1 (yyval.param)=0; + PASS2 (yyval.param) = malloc(sizeof(param_t)); (yyval.param)->name=(yyvsp[(1) - (2)].id); (yyval.param)->type = TYPE_ANY; @@ -5316,71 +5740,65 @@ yyreduce: - case 173: + case 180: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2183 "parser.y" +#line 2415 "parser.y" {(yyval.token)=(yyvsp[(1) - (1)].token);} } break; - case 174: + case 181: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2184 "parser.y" +#line 2416 "parser.y" {(yyval.token)=(yyvsp[(1) - (1)].token);} } break; - case 175: + case 182: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2185 "parser.y" +#line 2417 "parser.y" {(yyval.token)=0;} } break; - case 176: + case 183: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2188 "parser.y" +#line 2420 "parser.y" {PASS12 startfunction(0,(yyvsp[(1) - (9)].flags),(yyvsp[(3) - (9)].token),(yyvsp[(4) - (9)].id),&(yyvsp[(6) - (9)].params),(yyvsp[(8) - (9)].classinfo));} } break; - case 177: + case 184: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2189 "parser.y" +#line 2421 "parser.y" { - PASS1 old_state(); + PASS1 old_state();list_deep_free((yyvsp[(6) - (12)].params).list); PASS2 - code_t*c = 0; - if(state->method->late_binding) { - c = abc_getlocal_0(c); - c = abc_pushscope(c); - } - if(state->method->is_constructor && !state->method->has_super) { - // call default constructor - c = abc_getlocal_0(c); - c = abc_constructsuper(c, 0); - } + if(!state->method->info) syntaxerror("internal error"); + + code_t*c = method_header(); c = wrap_function(c, 0, (yyvsp[(11) - (12)].code)); endfunction(0,(yyvsp[(1) - (12)].flags),(yyvsp[(3) - (12)].token),(yyvsp[(4) - (12)].id),&(yyvsp[(6) - (12)].params),(yyvsp[(8) - (12)].classinfo),c); + list_deep_free((yyvsp[(6) - (12)].params).list); (yyval.code)=0; } } @@ -5388,179 +5806,209 @@ yyreduce: - case 179: + case 186: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2209 "parser.y" - {(yyval.id)=0;} +#line 2435 "parser.y" + {PASS12 (yyval.id)=0;} } break; - case 180: + case 187: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2211 "parser.y" +#line 2437 "parser.y" + {PASS12 innerfunction((yyvsp[(2) - (7)].id),&(yyvsp[(4) - (7)].params),(yyvsp[(6) - (7)].classinfo));} + } + break; + + + + case 188: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2438 "parser.y" { - syntaxerror("nested functions not supported yet"); + PASS1 old_state();list_deep_free((yyvsp[(4) - (10)].params).list); + PASS2 + methodinfo_t*f = state->method->info; + if(!f) syntaxerror("internal error"); + + code_t*c = method_header(); + c = wrap_function(c, 0, (yyvsp[(9) - (10)].code)); + + int index = state->method->var_index; + endfunction(0,0,0,(yyvsp[(2) - (10)].id),&(yyvsp[(4) - (10)].params),(yyvsp[(6) - (10)].classinfo),c); + list_deep_free((yyvsp[(4) - (10)].params).list); + + (yyval.value).c = abc_getlocal(0, index); + (yyval.value).t = TYPE_FUNCTION(f); } } break; - case 181: + case 189: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2218 "parser.y" +#line 2458 "parser.y" { PASS1 (yyval.classinfo)=0; PASS2 /* try current package */ - (yyval.classinfo) = find_class((yyvsp[(1) - (1)].id)); - if(!(yyval.classinfo)) syntaxerror("Could not find class %s\n", (yyvsp[(1) - (1)].id)); + slotinfo_t*s = find_class((yyvsp[(1) - (1)].id)); + if(!s) syntaxerror("Could not find class/method %s\n", (yyvsp[(1) - (1)].id)); + (yyval.classinfo) = (classinfo_t*)s; } } break; - case 182: + case 190: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2226 "parser.y" +#line 2467 "parser.y" { - PASS1 (yyval.classinfo)=0; + PASS1 static classinfo_t c; + memset(&c, 0, sizeof(c)); + c.package = (yyvsp[(1) - (3)].id); + c.name = (yyvsp[(3) - (3)].id); + (yyval.classinfo)=&c; PASS2 - (yyval.classinfo) = registry_findclass((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); - if(!(yyval.classinfo)) syntaxerror("Couldn't find class %s.%s\n", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); + slotinfo_t*s = registry_find((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); + if(!s) syntaxerror("Couldn't find class/method %s.%s\n", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0; + (yyval.classinfo) = (classinfo_t*)s; } } break; - case 185: + case 193: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2237 "parser.y" +#line 2483 "parser.y" {PASS12 (yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));} } break; - case 186: + case 194: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2238 "parser.y" +#line 2484 "parser.y" {PASS12 (yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));} } break; - case 187: + case 195: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2240 "parser.y" +#line 2486 "parser.y" {(yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);} } break; - case 188: + case 196: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2241 "parser.y" +#line 2487 "parser.y" {(yyval.classinfo)=registry_getanytype();} } break; - case 189: + case 197: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2242 "parser.y" +#line 2488 "parser.y" {(yyval.classinfo)=registry_getanytype();} } break; - case 190: + case 198: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2251 "parser.y" +#line 2497 "parser.y" {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);} } break; - case 191: + case 199: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2252 "parser.y" +#line 2498 "parser.y" {(yyval.classinfo)=0;} } break; - case 192: + case 200: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2256 "parser.y" +#line 2502 "parser.y" {(yyval.value_list).cc=0;(yyval.value_list).len=0;} } break; - case 193: + case 201: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2257 "parser.y" +#line 2503 "parser.y" {(yyval.value_list)=(yyvsp[(2) - (3)].value_list);} } break; - case 194: + case 202: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2259 "parser.y" +#line 2505 "parser.y" {(yyval.value_list).cc=0;(yyval.value_list).len=0;} } break; - case 196: + case 205: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2261 "parser.y" +#line 2509 "parser.y" {(yyval.value_list).len=1; (yyval.value_list).cc = (yyvsp[(1) - (1)].value).c; } @@ -5569,54 +6017,77 @@ yyreduce: - case 197: + case 206: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2264 "parser.y" +#line 2513 "parser.y" + {(yyval.value_list) = (yyvsp[(1) - (2)].value_list);} + } + break; + + + + case 207: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2514 "parser.y" { - (yyval.value_list).len= (yyvsp[(1) - (3)].value_list).len+1; - (yyval.value_list).cc = code_append((yyvsp[(1) - (3)].value_list).cc, (yyvsp[(3) - (3)].value).c); + (yyval.value_list).len= (yyvsp[(1) - (2)].value_list).len+1; + (yyval.value_list).cc = code_append((yyvsp[(1) - (2)].value_list).cc, (yyvsp[(2) - (2)].value).c); } } - break; - - - - case 198: - if(as3_pass==2) { - -/* Line 1464 of skeleton.m4 */ -#line 2269 "parser.y" - { - MULTINAME(m, (yyvsp[(2) - (3)].classinfo)); - (yyval.value).c = code_new(); - - if((yyvsp[(2) - (3)].classinfo)->slot) { - (yyval.value).c = abc_getglobalscope((yyval.value).c); - (yyval.value).c = abc_getslot((yyval.value).c, (yyvsp[(2) - (3)].classinfo)->slot); + break; + + + + case 209: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2520 "parser.y" + { + (yyval.value).c = (yyvsp[(2) - (4)].value).c; + if((yyval.value).c->opcode == OPCODE_COERCE_A) (yyval.value).c = code_cutlast((yyval.value).c); + + code_t*paramcode = (yyvsp[(4) - (4)].value_list).cc; + if((yyval.value).c->opcode == OPCODE_GETPROPERTY) { + multiname_t*name = (yyval.value).c->data[0];(yyval.value).c->data[0]=0; + (yyval.value).c = code_cutlast((yyval.value).c); + (yyval.value).c = code_append((yyval.value).c, paramcode); + (yyval.value).c = abc_constructprop2((yyval.value).c, name, (yyvsp[(4) - (4)].value_list).len); + multiname_destroy(name); + } else if((yyval.value).c->opcode == OPCODE_GETSLOT) { + int slot = (int)(ptroff_t)(yyval.value).c->data[0]; + trait_t*t = abc_class_find_slotid(state->cls->abc,slot);//FIXME + multiname_t*name = t->name; + (yyval.value).c = code_cutlast((yyval.value).c); + (yyval.value).c = code_append((yyval.value).c, paramcode); + (yyval.value).c = abc_constructprop2((yyval.value).c, name, (yyvsp[(4) - (4)].value_list).len); + } else { + (yyval.value).c = code_append((yyval.value).c, paramcode); + (yyval.value).c = abc_construct((yyval.value).c, (yyvsp[(4) - (4)].value_list).len); + } + + (yyval.value).t = TYPE_ANY; + if(TYPE_IS_CLASS((yyvsp[(2) - (4)].value).t) && (yyvsp[(2) - (4)].value).t->data) { + (yyval.value).t = (yyvsp[(2) - (4)].value).t->data; } else { - (yyval.value).c = abc_findpropstrict2((yyval.value).c, &m); + (yyval.value).c = abc_coerce_a((yyval.value).c); + (yyval.value).t = TYPE_ANY; } - - (yyval.value).c = code_append((yyval.value).c, (yyvsp[(3) - (3)].value_list).cc); - - if((yyvsp[(2) - (3)].classinfo)->slot) - (yyval.value).c = abc_construct((yyval.value).c, (yyvsp[(3) - (3)].value_list).len); - else - (yyval.value).c = abc_constructprop2((yyval.value).c, &m, (yyvsp[(3) - (3)].value_list).len); - (yyval.value).t = (yyvsp[(2) - (3)].classinfo); } } break; - case 199: + case 210: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2293 "parser.y" +#line 2556 "parser.y" { (yyval.value).c = (yyvsp[(1) - (4)].value).c; @@ -5650,31 +6121,28 @@ yyreduce: (yyval.value).c = abc_callsuper2((yyval.value).c, name, (yyvsp[(3) - (4)].value_list).len); multiname_destroy(name); } else { - (yyval.value).c = abc_getlocal_0((yyval.value).c); + (yyval.value).c = abc_getglobalscope((yyval.value).c); (yyval.value).c = code_append((yyval.value).c, paramcode); (yyval.value).c = abc_call((yyval.value).c, (yyvsp[(3) - (4)].value_list).len); } - memberinfo_t*f = 0; - - if(TYPE_IS_FUNCTION((yyvsp[(1) - (4)].value).t) && (yyvsp[(1) - (4)].value).t->function) { - (yyval.value).t = (yyvsp[(1) - (4)].value).t->function->return_type; + if(TYPE_IS_FUNCTION((yyvsp[(1) - (4)].value).t) && (yyvsp[(1) - (4)].value).t->data) { + (yyval.value).t = ((methodinfo_t*)((yyvsp[(1) - (4)].value).t->data))->return_type; } else { (yyval.value).c = abc_coerce_a((yyval.value).c); (yyval.value).t = TYPE_ANY; } - } } break; - case 200: + case 211: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2341 "parser.y" +#line 2602 "parser.y" { if(!state->cls) syntaxerror("super() not allowed outside of a class"); if(!state->method) syntaxerror("super() not allowed outside of a function"); @@ -5690,6 +6158,7 @@ yyreduce: syntaxerror("constructor may call super() only once"); */ state->method->has_super = 1; + (yyval.value).c = abc_constructsuper((yyval.value).c, (yyvsp[(3) - (4)].value_list).len); (yyval.value).c = abc_pushundefined((yyval.value).c); (yyval.value).t = TYPE_ANY; @@ -5699,11 +6168,11 @@ yyreduce: - case 201: + case 212: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2361 "parser.y" +#line 2623 "parser.y" { (yyval.value).c = (yyvsp[(2) - (2)].value).c; if((yyval.value).c->opcode == OPCODE_COERCE_A) { @@ -5729,11 +6198,11 @@ yyreduce: - case 202: + case 213: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2382 "parser.y" +#line 2644 "parser.y" { (yyval.code) = abc_returnvoid(0); } @@ -5742,11 +6211,11 @@ yyreduce: - case 203: + case 214: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2385 "parser.y" +#line 2647 "parser.y" { (yyval.code) = (yyvsp[(2) - (2)].value).c; (yyval.code) = abc_returnvalue((yyval.code)); @@ -5756,33 +6225,33 @@ yyreduce: - case 204: + case 215: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2392 "parser.y" +#line 2654 "parser.y" {(yyval.value)=(yyvsp[(1) - (1)].value);} } break; - case 205: + case 216: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2393 "parser.y" +#line 2655 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; - case 206: + case 217: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2394 "parser.y" +#line 2656 "parser.y" { (yyval.value).c = (yyvsp[(1) - (3)].value).c; (yyval.value).c = cut_last_push((yyval.value).c); @@ -5794,11 +6263,11 @@ yyreduce: - case 207: + case 218: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2400 "parser.y" +#line 2662 "parser.y" { (yyval.code)=cut_last_push((yyvsp[(1) - (1)].value).c); } @@ -5807,55 +6276,55 @@ yyreduce: - case 208: + case 219: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2406 "parser.y" +#line 2668 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; - case 210: + case 221: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2410 "parser.y" +#line 2672 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; - case 211: + case 222: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2412 "parser.y" +#line 2674 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; - case 212: + case 223: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2414 "parser.y" +#line 2676 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; - case 213: + case 225: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2416 "parser.y" +#line 2680 "parser.y" { (yyval.value).c = 0; namespace_t ns = {ACCESS_PACKAGE, ""}; @@ -5877,11 +6346,11 @@ yyreduce: - case 214: + case 226: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2433 "parser.y" +#line 2697 "parser.y" {(yyval.value).c = abc_pushbyte(0, (yyvsp[(1) - (1)].number_uint)); //MULTINAME(m, registry_getintclass()); //$$.c = abc_coerce2($$.c, &m); // FIXME @@ -5892,11 +6361,11 @@ yyreduce: - case 215: + case 227: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2438 "parser.y" +#line 2702 "parser.y" {(yyval.value).c = abc_pushshort(0, (yyvsp[(1) - (1)].number_uint)); (yyval.value).t = TYPE_INT; } @@ -5905,11 +6374,11 @@ yyreduce: - case 216: + case 228: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2441 "parser.y" +#line 2705 "parser.y" {(yyval.value).c = abc_pushint(0, (yyvsp[(1) - (1)].number_int)); (yyval.value).t = TYPE_INT; } @@ -5918,11 +6387,11 @@ yyreduce: - case 217: + case 229: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2444 "parser.y" +#line 2708 "parser.y" {(yyval.value).c = abc_pushuint(0, (yyvsp[(1) - (1)].number_uint)); (yyval.value).t = TYPE_UINT; } @@ -5931,11 +6400,11 @@ yyreduce: - case 218: + case 230: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2447 "parser.y" +#line 2711 "parser.y" {(yyval.value).c = abc_pushdouble(0, (yyvsp[(1) - (1)].number_float)); (yyval.value).t = TYPE_FLOAT; } @@ -5944,12 +6413,12 @@ yyreduce: - case 219: + case 231: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2450 "parser.y" - {(yyval.value).c = abc_pushstring2(0, &(yyvsp[(1) - (1)].str)); +#line 2714 "parser.y" + {(yyval.value).c = abc_pushstring2(0, &(yyvsp[(1) - (1)].str));free((char*)(yyvsp[(1) - (1)].str).str); (yyval.value).t = TYPE_STRING; } } @@ -5957,11 +6426,11 @@ yyreduce: - case 220: + case 232: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2453 "parser.y" +#line 2717 "parser.y" {(yyval.value).c = abc_pushundefined(0); (yyval.value).t = TYPE_ANY; } @@ -5970,11 +6439,11 @@ yyreduce: - case 221: + case 233: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2456 "parser.y" +#line 2720 "parser.y" {(yyval.value).c = abc_pushtrue(0); (yyval.value).t = TYPE_BOOLEAN; } @@ -5983,11 +6452,11 @@ yyreduce: - case 222: + case 234: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2459 "parser.y" +#line 2723 "parser.y" {(yyval.value).c = abc_pushfalse(0); (yyval.value).t = TYPE_BOOLEAN; } @@ -5996,11 +6465,11 @@ yyreduce: - case 223: + case 235: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2462 "parser.y" +#line 2726 "parser.y" {(yyval.value).c = abc_pushnull(0); (yyval.value).t = TYPE_NULL; } @@ -6009,11 +6478,11 @@ yyreduce: - case 225: + case 236: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2467 "parser.y" +#line 2730 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterequals((yyval.value).c);(yyval.value).c=abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6022,11 +6491,11 @@ yyreduce: - case 226: + case 237: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2470 "parser.y" +#line 2733 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterthan((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6035,11 +6504,11 @@ yyreduce: - case 227: + case 238: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2473 "parser.y" +#line 2736 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterthan((yyval.value).c);(yyval.value).c=abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6048,11 +6517,11 @@ yyreduce: - case 228: + case 239: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2476 "parser.y" +#line 2739 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterequals((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6061,11 +6530,11 @@ yyreduce: - case 229: + case 240: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2479 "parser.y" +#line 2742 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_equals((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6074,11 +6543,11 @@ yyreduce: - case 230: + case 241: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2482 "parser.y" +#line 2745 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_strictequals((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6087,11 +6556,11 @@ yyreduce: - case 231: + case 242: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2485 "parser.y" +#line 2748 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_strictequals((yyval.value).c);(yyval.value).c = abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6100,11 +6569,11 @@ yyreduce: - case 232: + case 243: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2488 "parser.y" +#line 2751 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_equals((yyval.value).c);(yyval.value).c = abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6113,11 +6582,11 @@ yyreduce: - case 233: + case 244: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2492 "parser.y" +#line 2755 "parser.y" {(yyval.value).t = join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'O'); (yyval.value).c = (yyvsp[(1) - (3)].value).c; (yyval.value).c = converttype((yyval.value).c, (yyvsp[(1) - (3)].value).t, (yyval.value).t); @@ -6134,11 +6603,11 @@ yyreduce: - case 234: + case 245: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2503 "parser.y" +#line 2766 "parser.y" { (yyval.value).t = join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'A'); /*printf("%08x:\n",$1.t); @@ -6161,11 +6630,11 @@ yyreduce: - case 235: + case 246: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2521 "parser.y" +#line 2784 "parser.y" {(yyval.value).c=(yyvsp[(2) - (2)].value).c; (yyval.value).c = abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; @@ -6175,11 +6644,11 @@ yyreduce: - case 236: + case 247: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2526 "parser.y" +#line 2789 "parser.y" {(yyval.value).c=(yyvsp[(2) - (2)].value).c; (yyval.value).c = abc_bitnot((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -6189,11 +6658,11 @@ yyreduce: - case 237: + case 248: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2531 "parser.y" +#line 2794 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_bitand((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -6203,11 +6672,11 @@ yyreduce: - case 238: + case 249: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2536 "parser.y" +#line 2799 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_bitxor((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -6217,11 +6686,11 @@ yyreduce: - case 239: + case 250: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2541 "parser.y" +#line 2804 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_bitor((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -6231,11 +6700,11 @@ yyreduce: - case 240: + case 251: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2546 "parser.y" +#line 2809 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_rshift((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -6245,11 +6714,11 @@ yyreduce: - case 241: + case 252: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2550 "parser.y" +#line 2813 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_urshift((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -6259,11 +6728,11 @@ yyreduce: - case 242: + case 253: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2554 "parser.y" +#line 2817 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_lshift((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -6273,11 +6742,11 @@ yyreduce: - case 243: + case 254: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2559 "parser.y" +#line 2822 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_divide((yyval.value).c); (yyval.value).t = TYPE_NUMBER; @@ -6287,11 +6756,11 @@ yyreduce: - case 244: + case 255: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2563 "parser.y" +#line 2826 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_modulo((yyval.value).c); (yyval.value).t = TYPE_NUMBER; @@ -6301,11 +6770,11 @@ yyreduce: - case 245: + case 256: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2567 "parser.y" +#line 2830 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); if(BOTH_INT((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t)) { (yyval.value).c = abc_add_i((yyval.value).c); @@ -6320,11 +6789,11 @@ yyreduce: - case 246: + case 257: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2576 "parser.y" +#line 2839 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) { (yyval.value).c = abc_subtract_i((yyval.value).c); @@ -6339,11 +6808,11 @@ yyreduce: - case 247: + case 258: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2585 "parser.y" +#line 2848 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) { (yyval.value).c = abc_multiply_i((yyval.value).c); @@ -6358,11 +6827,11 @@ yyreduce: - case 248: + case 259: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2595 "parser.y" +#line 2858 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_in((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; @@ -6372,16 +6841,16 @@ yyreduce: - case 249: + case 260: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2600 "parser.y" +#line 2863 "parser.y" {char use_astype=0; // flash player's astype works differently than astypelate - if(use_astype && TYPE_IS_CLASS((yyvsp[(3) - (3)].value).t)) { - MULTINAME(m,(yyvsp[(3) - (3)].value).t->cls); + if(use_astype && TYPE_IS_CLASS((yyvsp[(3) - (3)].value).t) && (yyvsp[(3) - (3)].value).t->data) { + MULTINAME(m, (classinfo_t*)((yyvsp[(3) - (3)].value).t->data)); (yyval.value).c = abc_astype2((yyvsp[(1) - (3)].value).c, &m); - (yyval.value).t = (yyvsp[(3) - (3)].value).t->cls; + (yyval.value).t = (yyvsp[(3) - (3)].value).t->data; } else { (yyval.value).c = code_append((yyvsp[(1) - (3)].value).c, (yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_astypelate((yyval.value).c); @@ -6393,11 +6862,11 @@ yyreduce: - case 250: + case 261: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2613 "parser.y" +#line 2876 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c, (yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_instanceof((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; @@ -6407,11 +6876,11 @@ yyreduce: - case 251: + case 262: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2618 "parser.y" +#line 2881 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c, (yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_istypelate((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; @@ -6421,11 +6890,11 @@ yyreduce: - case 252: + case 263: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2623 "parser.y" +#line 2886 "parser.y" { (yyval.value).c = (yyvsp[(3) - (4)].value).c; (yyval.value).c = abc_typeof((yyval.value).c); @@ -6436,11 +6905,11 @@ yyreduce: - case 253: + case 264: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2629 "parser.y" +#line 2892 "parser.y" { (yyval.value).c = cut_last_push((yyvsp[(2) - (2)].value).c); (yyval.value).c = abc_pushundefined((yyval.value).c); @@ -6451,11 +6920,11 @@ yyreduce: - case 254: + case 265: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2635 "parser.y" +#line 2898 "parser.y" { (yyval.value).c = abc_pushundefined(0); (yyval.value).t = TYPE_ANY; } @@ -6464,22 +6933,22 @@ yyreduce: - case 255: + case 266: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2639 "parser.y" +#line 2902 "parser.y" {(yyval.value)=(yyvsp[(2) - (3)].value);} } break; - case 256: + case 267: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2641 "parser.y" +#line 2904 "parser.y" { (yyval.value)=(yyvsp[(2) - (2)].value); if(IS_INT((yyvsp[(2) - (2)].value).t)) { @@ -6495,11 +6964,11 @@ yyreduce: - case 257: + case 268: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2652 "parser.y" +#line 2915 "parser.y" { (yyval.value).c = (yyvsp[(1) - (4)].value).c; (yyval.value).c = code_append((yyval.value).c, (yyvsp[(3) - (4)].value).c); @@ -6513,11 +6982,11 @@ yyreduce: - case 258: + case 269: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2661 "parser.y" +#line 2924 "parser.y" { (yyval.value).c = code_new(); (yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc); @@ -6529,33 +6998,33 @@ yyreduce: - case 259: + case 270: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2668 "parser.y" +#line 2931 "parser.y" {(yyval.value_list).cc=0;(yyval.value_list).len=0;} } break; - case 260: + case 271: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2669 "parser.y" +#line 2932 "parser.y" {(yyval.value_list)=(yyvsp[(1) - (1)].value_list);} } break; - case 261: + case 272: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2671 "parser.y" +#line 2934 "parser.y" { (yyval.value_list).cc = 0; (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(1) - (3)].value).c); @@ -6567,11 +7036,11 @@ yyreduce: - case 262: + case 273: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2677 "parser.y" +#line 2940 "parser.y" { (yyval.value_list).cc = (yyvsp[(1) - (5)].value_list).cc; (yyval.value_list).len = (yyvsp[(1) - (5)].value_list).len+2; @@ -6583,11 +7052,11 @@ yyreduce: - case 263: + case 274: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2686 "parser.y" +#line 2949 "parser.y" { (yyval.value).c = code_new(); (yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc); @@ -6599,11 +7068,11 @@ yyreduce: - case 264: + case 275: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2693 "parser.y" +#line 2956 "parser.y" { code_t*c = (yyvsp[(3) - (3)].value).c; if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) { @@ -6620,11 +7089,11 @@ yyreduce: - case 265: + case 276: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2705 "parser.y" +#line 2968 "parser.y" { code_t*c = abc_modulo((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '%'), (yyvsp[(1) - (3)].value).t); @@ -6636,11 +7105,11 @@ yyreduce: - case 266: + case 277: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2711 "parser.y" +#line 2974 "parser.y" { code_t*c = abc_lshift((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '<'), (yyvsp[(1) - (3)].value).t); @@ -6652,11 +7121,11 @@ yyreduce: - case 267: + case 278: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2717 "parser.y" +#line 2980 "parser.y" { code_t*c = abc_rshift((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '>'), (yyvsp[(1) - (3)].value).t); @@ -6668,11 +7137,11 @@ yyreduce: - case 268: + case 279: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2723 "parser.y" +#line 2986 "parser.y" { code_t*c = abc_urshift((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'U'), (yyvsp[(1) - (3)].value).t); @@ -6684,11 +7153,11 @@ yyreduce: - case 269: + case 280: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2729 "parser.y" +#line 2992 "parser.y" { code_t*c = abc_divide((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '/'), (yyvsp[(1) - (3)].value).t); @@ -6700,11 +7169,11 @@ yyreduce: - case 270: + case 281: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2735 "parser.y" +#line 2998 "parser.y" { code_t*c = abc_bitor((yyvsp[(3) - (3)].value).c); c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t); @@ -6716,11 +7185,11 @@ yyreduce: - case 271: + case 282: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2741 "parser.y" +#line 3004 "parser.y" { code_t*c = (yyvsp[(3) - (3)].value).c; @@ -6739,11 +7208,11 @@ yyreduce: - case 272: + case 283: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2754 "parser.y" +#line 3017 "parser.y" { code_t*c = (yyvsp[(3) - (3)].value).c; if(TYPE_IS_INT((yyvsp[(1) - (3)].value).t)) { c=abc_subtract_i(c); @@ -6760,11 +7229,11 @@ yyreduce: - case 273: + case 284: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2765 "parser.y" +#line 3028 "parser.y" { code_t*c = 0; c = code_append(c, (yyvsp[(3) - (3)].value).c); c = converttype(c, (yyvsp[(3) - (3)].value).t, (yyvsp[(1) - (3)].value).t); @@ -6776,11 +7245,11 @@ yyreduce: - case 274: + case 285: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2772 "parser.y" +#line 3035 "parser.y" { (yyval.value).t = join_types((yyvsp[(3) - (5)].value).t,(yyvsp[(5) - (5)].value).t,'?'); (yyval.value).c = (yyvsp[(1) - (5)].value).c; @@ -6798,11 +7267,11 @@ yyreduce: - case 275: + case 286: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2785 "parser.y" +#line 3048 "parser.y" { code_t*c = 0; classinfo_t*type = (yyvsp[(1) - (2)].value).t; if((is_getlocal((yyvsp[(1) - (2)].value).c) && TYPE_IS_INT((yyvsp[(1) - (2)].value).t)) || TYPE_IS_NUMBER((yyvsp[(1) - (2)].value).t)) { @@ -6833,11 +7302,11 @@ yyreduce: - case 276: + case 287: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2812 "parser.y" +#line 3075 "parser.y" { code_t*c = 0; classinfo_t*type = (yyvsp[(1) - (2)].value).t; if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) { @@ -6856,11 +7325,11 @@ yyreduce: - case 277: + case 288: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2826 "parser.y" +#line 3089 "parser.y" { code_t*c = 0; classinfo_t*type = (yyvsp[(2) - (2)].value).t; if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) { @@ -6879,11 +7348,11 @@ yyreduce: - case 278: + case 289: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2840 "parser.y" +#line 3103 "parser.y" { code_t*c = 0; classinfo_t*type = (yyvsp[(2) - (2)].value).t; if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) { @@ -6902,39 +7371,119 @@ yyreduce: - case 279: + case 290: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2855 "parser.y" +#line 3118 "parser.y" { if(!state->cls->info) syntaxerror("super keyword not allowed outside a class"); classinfo_t*t = state->cls->info->superclass; if(!t) t = TYPE_OBJECT; memberinfo_t*f = registry_findmember(t, (yyvsp[(3) - (3)].id), 1); - namespace_t ns = flags2namespace(f->flags, ""); + namespace_t ns = {f->access, ""}; MEMBER_MULTINAME(m, f, (yyvsp[(3) - (3)].id)); (yyval.value).c = 0; (yyval.value).c = abc_getlocal_0((yyval.value).c); (yyval.value).c = abc_getsuper2((yyval.value).c, &m); - (yyval.value).t = memberinfo_gettype(f); + (yyval.value).t = slotinfo_gettype((slotinfo_t*)f); } } break; - case 280: + case 291: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3132 "parser.y" + { + // attribute TODO + (yyval.value).c = abc_pushundefined(0); + (yyval.value).t = 0; + as3_warning("ignored @ operator"); + } + } + break; + + + + case 292: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3139 "parser.y" + { + // child attribute TODO + (yyval.value).c = abc_pushundefined(0); + (yyval.value).t = 0; + as3_warning("ignored .@ operator"); + } + } + break; + + + + case 293: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3146 "parser.y" + { + // namespace declaration TODO + (yyval.value).c = abc_pushundefined(0); + (yyval.value).t = 0; + as3_warning("ignored :: operator"); + } + } + break; + + + + case 294: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3153 "parser.y" + { + // descendants TODO + (yyval.value).c = abc_pushundefined(0); + (yyval.value).t = 0; + as3_warning("ignored .. operator"); + } + } + break; + + + + case 295: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3160 "parser.y" + { + // filter TODO + (yyval.value).c = abc_pushundefined(0); + (yyval.value).t = 0; + as3_warning("ignored .() operator"); + } + } + break; + + + + case 296: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2870 "parser.y" +#line 3172 "parser.y" {(yyval.value).c = (yyvsp[(1) - (3)].value).c; classinfo_t*t = (yyvsp[(1) - (3)].value).t; char is_static = 0; - if(TYPE_IS_CLASS(t) && t->cls) { - t = t->cls; + if(TYPE_IS_CLASS(t) && t->data) { + t = t->data; is_static = 1; } if(t) { @@ -6949,7 +7498,7 @@ yyreduce: (yyval.value).c = abc_getproperty2((yyval.value).c, &m); } /* determine type */ - (yyval.value).t = memberinfo_gettype(f); + (yyval.value).t = slotinfo_gettype((slotinfo_t*)f); if(!(yyval.value).t) (yyval.value).c = abc_coerce_a((yyval.value).c); } else { @@ -6967,15 +7516,15 @@ yyreduce: - case 281: + case 297: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2903 "parser.y" +#line 3205 "parser.y" { (yyval.value).t = 0; (yyval.value).c = 0; - classinfo_t*a = 0; + slotinfo_t*a = 0; memberinfo_t*f = 0; variable_t*v; @@ -6995,7 +7544,7 @@ yyreduce: // $1 is a function in this class int var_is_static = (f->flags&FLAG_STATIC); - if(f->kind == MEMBER_METHOD) { + if(f->kind == INFOTYPE_METHOD) { (yyval.value).t = TYPE_FUNCTION(f); } else { (yyval.value).t = f->type; @@ -7007,7 +7556,7 @@ yyreduce: static properties of a class */ state->method->late_binding = 1; (yyval.value).t = f->type; - namespace_t ns = {flags2access(f->flags), ""}; + namespace_t ns = {f->access, ""}; multiname_t m = {QNAME, &ns, 0, (yyvsp[(1) - (1)].id)}; (yyval.value).c = abc_findpropstrict2((yyval.value).c, &m); (yyval.value).c = abc_getproperty2((yyval.value).c, &m); @@ -7017,7 +7566,7 @@ yyreduce: (yyval.value).c = abc_getslot((yyval.value).c, f->slot); break; } else { - namespace_t ns = {flags2access(f->flags), ""}; + namespace_t ns = {f->access, ""}; multiname_t m = {QNAME, &ns, 0, (yyvsp[(1) - (1)].id)}; (yyval.value).c = abc_getlocal_0((yyval.value).c); (yyval.value).c = abc_getproperty2((yyval.value).c, &m); @@ -7027,32 +7576,41 @@ yyreduce: /* look at actual classes, in the current package and imported */ if((a = find_class((yyvsp[(1) - (1)].id)))) { - if(a->flags & FLAG_METHOD) { + if(a->access == ACCESS_PACKAGEINTERNAL && + strcmp(a->package, state->package) && + strcmp(a->package, internal_filename_package) + ) + syntaxerror("Can't access internal %s %s in package '%s' from package '%s'", + infotypename(a),(yyvsp[(1) - (1)].id), a->package, state->package); + + if(a->kind != INFOTYPE_CLASS) { MULTINAME(m, a); (yyval.value).c = abc_findpropstrict2((yyval.value).c, &m); (yyval.value).c = abc_getproperty2((yyval.value).c, &m); - if(a->function->kind == MEMBER_METHOD) { - (yyval.value).t = TYPE_FUNCTION(a->function); + if(a->kind == INFOTYPE_METHOD) { + methodinfo_t*f = (methodinfo_t*)a; + (yyval.value).t = TYPE_FUNCTION(f); } else { - (yyval.value).t = a->function->type; + varinfo_t*v = (varinfo_t*)a; + (yyval.value).t = v->type; } } else { - if(a->slot) { + classinfo_t*c = (classinfo_t*)a; + if(c->slot) { (yyval.value).c = abc_getglobalscope((yyval.value).c); - (yyval.value).c = abc_getslot((yyval.value).c, a->slot); + (yyval.value).c = abc_getslot((yyval.value).c, c->slot); } else { - MULTINAME(m, a); + MULTINAME(m, c); (yyval.value).c = abc_getlex2((yyval.value).c, &m); } - (yyval.value).t = TYPE_CLASS(a); + (yyval.value).t = TYPE_CLASS(c); } break; } /* unknown object, let the avm2 resolve it */ if(1) { - if(strcmp((yyvsp[(1) - (1)].id),"trace")) - as3_softwarning("Couldn't resolve '%s', doing late binding", (yyvsp[(1) - (1)].id)); + as3_softwarning("Couldn't resolve '%s', doing late binding", (yyvsp[(1) - (1)].id)); state->method->late_binding = 1; multiname_t m = {MULTINAME, 0, &nopackage_namespace_set, (yyvsp[(1) - (1)].id)}; @@ -7067,45 +7625,49 @@ yyreduce: - case 282: + case 298: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3001 "parser.y" +#line 3307 "parser.y" {(yyval.code)=0;} } break; - case 283: + case 299: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3002 "parser.y" +#line 3308 "parser.y" {(yyval.code)=0;} } break; - case 284: + case 300: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3003 "parser.y" +#line 3309 "parser.y" {(yyval.code)=0;} } break; - case 285: + case 301: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3005 "parser.y" - {(yyval.token)=0;} +#line 3311 "parser.y" + { + PASS12 + tokenizer_register_namespace((yyvsp[(3) - (3)].id)); + (yyval.code)=0; +} } break; @@ -7113,7 +7675,7 @@ yyreduce: /* Line 1464 of skeleton.m4 */ -#line 7117 "parser.tab.c" +#line 7679 "parser.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);