X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fparser.tab.c;h=b9826cffafdb4b780f09c96e796815ce8c7f2c7d;hb=a5b36820121471188e8418567cb8e0f4cba32c75;hp=f0079b17eff6afde496daaf4470a68fab9e45909;hpb=15983c1c1825073cd732196122da30c1157cf215;p=swftools.git diff --git a/lib/as3/parser.tab.c b/lib/as3/parser.tab.c index f0079b1..b9826cf 100644 --- a/lib/as3/parser.tab.c +++ b/lib/as3/parser.tab.c @@ -49,7 +49,7 @@ #define YYBISON_VERSION "2.4" /* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" +#define YYSKELETON_NAME "./skeleton.m4" /* Pure parsers. */ #define YYPURE 0 @@ -64,18 +64,18 @@ #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. */ -/* Line 189 of yacc.c */ +/* Line 198 of skeleton.m4 */ #line 23 "parser.y" #include @@ -88,11 +88,14 @@ #include "registry.h" #include "code.h" #include "opcodes.h" +#include "compiler.h" +extern int a3_lex(); -/* Line 189 of yacc.c */ -#line 96 "parser.tab.c" + +/* Line 198 of skeleton.m4 */ +#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 @@ -227,13 +232,13 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union -/* Line 214 of yacc.c */ -#line 41 "parser.y" +/* Line 223 of skeleton.m4 */ +#line 44 "parser.y" tokenunion { -/* Line 214 of yacc.c */ -#line 41 "parser.y" +/* Line 223 of skeleton.m4 */ +#line 44 "parser.y" enum yytokentype token; int flags; @@ -263,8 +268,8 @@ tokenunion -/* Line 214 of yacc.c */ -#line 268 "parser.tab.c" +/* Line 223 of skeleton.m4 */ +#line 273 "parser.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -274,16 +279,17 @@ tokenunion /* Copy the second part of user declarations. */ -/* Line 264 of yacc.c */ -#line 251 "parser.y" +/* Line 273 of skeleton.m4 */ +#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; \ @@ -455,40 +474,67 @@ static void old_state() state_t*leaving = state; state = state->old; + + if(as3_pass>1 && leaving->method && leaving->method != state->method && !leaving->method->inner) { + free(leaving->method); + leaving->method=0; + } + if(leaving->cls && leaving->cls != state->cls) { + free(leaving->cls); + leaving->cls=0; + } + 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; @@ -497,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; } @@ -547,6 +598,8 @@ static variable_t* find_variable(char*name) if(v) { return v; } + if(s->new_vars) + break; s = s->old; } return 0; @@ -563,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() @@ -627,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); @@ -645,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() { @@ -657,21 +747,46 @@ static void endpackage() old_state(); } +#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) +{ + 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)) @@ -681,141 +796,156 @@ 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(registry_findclass(package, classname)) { - syntaxerror("Package \"%s\" already contains a class called \"%s\"", package, classname); - } - + if(as3_pass==1) { + 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); - /* build info struct */ - int num_interfaces = (list_length(implements)); - state->cls->info = classinfo_register(access, package, classname, num_interfaces); - state->cls->info->superclass = extends?extends:TYPE_OBJECT; - int pos = 0; - classinfo_list_t*l = implements; - for(l=implements;l;l=l->next) { - state->cls->info->interfaces[pos++] = l->classinfo; + 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); } - multiname_t*extends2 = sig2mname(extends); + if(as3_pass == 2) { + 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; + } - MULTINAME(classname2,state->cls->info); + /* generate the abc code for this class */ + MULTINAME(classname2,state->cls->info); + multiname_t*extends2 = sig2mname(extends); - /*if(extends) { - state->cls_init = abc_getlocal_0(state->cls_init); - state->cls_init = abc_constructsuper(state->cls_init, 0); - }*/ + state->cls->abc = abc_class_new(global->file, &classname2, extends2); + 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); + } - 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; - abc_class_interface(state->cls->abc); - } + abc_class_protectedNS(state->cls->abc, classname); - abc_class_protectedNS(state->cls->abc, classname); + for(mlist=implements;mlist;mlist=mlist->next) { + MULTINAME(m, mlist->classinfo); + abc_class_add_interface(state->cls->abc, &m); + } - for(mlist=implements;mlist;mlist=mlist->next) { - MULTINAME(m, mlist->classinfo); - abc_class_add_interface(state->cls->abc, &m); - } + /* write the construction code for this class to the global init + function */ + int slotindex = abc_initscript_addClassTrait(global->init, &classname2, state->cls->abc); - /* now write the construction code for this class */ - int slotindex = abc_initscript_addClassTrait(global->init, &classname2, state->cls->abc); + abc_method_body_t*m = global->init->method->body; + __ getglobalscope(m); + classinfo_t*s = extends; - abc_method_body_t*m = global->init->method->body; - __ getglobalscope(m); - classinfo_t*s = extends; + int count=0; + + while(s) { + //TODO: take a look at the current scope stack, maybe + // we can re-use something + s = s->superclass; + if(!s) + break; + + multiname_t*s2 = sig2mname(s); + __ getlex2(m, s2); + multiname_destroy(s2); - int count=0; - - while(s) { - //TODO: take a look at the current scope stack, maybe - // we can re-use something - s = s->superclass; - if(!s) - break; - - multiname_t*s2 = sig2mname(s); - __ getlex2(m, s2); - multiname_destroy(s2); - - __ pushscope(m); count++; - m->code = m->code->prev->prev; // invert - } - /* continue appending after last op end */ - while(m->code && m->code->next) m->code = m->code->next; - - /* TODO: if this is one of *our* classes, we can also - do a getglobalscope/getslot (which references - the init function's slots) */ - if(extends2) { - __ getlex2(m, extends2); - __ dup(m); - /* notice: we get a Verify Error #1107 if the top elemnt on the scope - stack is not the superclass */ - __ pushscope(m);count++; - } else { - __ pushnull(m); - /* notice: we get a verify error #1107 if the top element on the scope - stack is not the global object */ - __ getlocal_0(m); - __ pushscope(m);count++; - } - __ newclass(m,state->cls->abc); - while(count--) { - __ popscope(m); - } - __ setslot(m, slotindex); - - /* flash.display.MovieClip handling */ - if(!as3_globalclass && (flags&FLAG_PUBLIC) && classinfo_equals(registry_getMovieClip(),extends)) { - if(state->package && state->package[0]) { - as3_globalclass = concat3(state->package, ".", classname); + __ pushscope(m); count++; + m->code = m->code->prev->prev; // invert + } + /* continue appending after last op end */ + while(m->code && m->code->next) m->code = m->code->next; + + /* TODO: if this is one of *our* classes, we can also + do a getglobalscope/getslot (which references + the init function's slots) */ + if(extends2) { + __ getlex2(m, extends2); + __ dup(m); + /* notice: we get a Verify Error #1107 if the top elemnt on the scope + stack is not the superclass */ + __ pushscope(m);count++; } else { - as3_globalclass = strdup(classname); + __ pushnull(m); + /* notice: we get a verify error #1107 if the top element on the scope + stack is not the global object */ + __ getlocal_0(m); + __ pushscope(m);count++; + } + __ newclass(m,state->cls->abc); + while(count--) { + __ popscope(m); + } + __ setslot(m, slotindex); + multiname_destroy(extends2); + + /* flash.display.MovieClip handling */ + + 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 { + as3_globalclass = strdup(classname); + } } } - multiname_destroy(extends2); } static void endclass() { - if(!state->cls->has_constructor && !(state->cls->info->flags&CLASS_INTERFACE)) { - code_t*c = 0; - c = abc_getlocal_0(c); - c = abc_constructsuper(c, 0); - state->cls->init = code_append(state->cls->init, c); - } - if(!state->method->late_binding) { - // class initialization code uses late binding - code_t*c = 0; - c = abc_getlocal_0(c); - c = abc_pushscope(c); - state->cls->static_init = code_append(c, state->cls->static_init); - } + if(as3_pass == 2) { + 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); + state->cls->init = code_append(state->cls->init, c); + } + if(!state->method->late_binding) { + // class initialization code uses late binding + code_t*c = 0; + c = abc_getlocal_0(c); + c = abc_pushscope(c); + state->cls->static_init = code_append(c, state->cls->static_init); + } - if(state->cls->init) { - abc_method_t*m = abc_class_getconstructor(state->cls->abc, 0); - m->body->code = wrap_function(0, state->cls->init, m->body->code); - } - if(state->cls->static_init) { - abc_method_t*m = abc_class_getstaticconstructor(state->cls->abc, 0); - m->body->code = wrap_function(0, state->cls->static_init, m->body->code); + if(state->cls->init) { + abc_method_t*m = abc_class_getconstructor(state->cls->abc, 0); + m->body->code = wrap_function(0, state->cls->init, m->body->code); + } + if(state->cls->static_init) { + abc_method_t*m = abc_class_getstaticconstructor(state->cls->abc, 0); + m->body->code = wrap_function(0, state->cls->static_init, m->body->code); + } } - free(state->cls);state->cls=0; - free(state->method);state->method=0; old_state(); } @@ -853,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) { @@ -944,44 +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(); - global->variable_count = 0; - 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; - - new_variable((flags&FLAG_STATIC)?"class":"this", state->cls->info, 0); - } else { - state->method->is_global = 1; - state->method->late_binding = 1; // for global methods, always push local_0 on the scope stack + 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__"; - new_variable("globalscope", 0, 0); + 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); } - /* state->vars is initialized by state_new */ + if(as3_pass == 2) { + state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount); + parserassert(state->method); - param_list_t*p=0; - for(p=params->list;p;p=p->next) { - new_variable(p->param->name, p->param->type, 0); - } - if(state->method->is_constructor) - name = "__as3_constructor__"; - state->method->info = registerfunction(getset, flags, name, params, return_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 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) @@ -990,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); @@ -1030,12 +1243,10 @@ static void endfunction(token_t*ns, int flags, enum yytokentype getset, char*nam syntaxerror("interface methods can't have a method body"); } - free(state->method);state->method=0; old_state(); + return f; } - - char is_subtype_of(classinfo_t*type, classinfo_t*supertype) { return 1; // FIXME @@ -1133,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 } @@ -1162,16 +1375,11 @@ char is_pushundefined(code_t*c) return (c && !c->prev && !c->next && c->opcode == OPCODE_PUSHUNDEFINED); } -void parserassert(int b) -{ - if(!b) syntaxerror("internal error: assertion failed"); -} - -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 */ @@ -1179,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; @@ -1189,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, name); + c = registry_find(internal_filename_package, name); if(c) return c; return 0; @@ -1236,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); } @@ -1356,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); @@ -1502,10 +1710,16 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar) } } +#define PASS1 }} if(as3_pass == 1) {{ +#define PASS1END }} if(as3_pass == 2) {{ +#define PASS2 }} if(as3_pass == 2) {{ +#define PASS12 }} {{ +#define PASS12END }} if(as3_pass == 2) {{ + -/* Line 264 of yacc.c */ -#line 1509 "parser.tab.c" +/* Line 273 of skeleton.m4 */ +#line 1723 "parser.tab.c" #ifdef short # undef short @@ -1718,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) @@ -1744,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, @@ -1776,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 @@ -1786,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, 1484, 1484, 1486, 1486, 1487, 1488, 1490, 1491, 1492, - 1493, 1494, 1495, 1496, 1498, 1498, 1499, 1500, 1502, 1503, - 1504, 1505, 1506, 1507, 1509, 1510, 1512, 1513, 1516, 1517, - 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1528, 1529, - 1530, 1531, 1532, 1533, 1534, 1536, 1537, 1539, 1540, 1541, - 1542, 1546, 1553, 1554, 1558, 1559, 1561, 1562, 1564, 1605, - 1606, 1609, 1609, 1628, 1629, 1630, 1633, 1636, 1640, 1641, - 1643, 1663, 1706, 1706, 1725, 1725, 1740, 1743, 1746, 1749, - 1753, 1754, 1755, 1756, 1757, 1758, 1760, 1771, 1774, 1774, - 1803, 1803, 1823, 1823, 1840, 1841, 1842, 1843, 1851, 1860, - 1860, 1905, 1909, 1920, 1929, 1930, 1932, 1933, 1935, 1935, - 1936, 1936, 1938, 1946, 1956, 1957, 1958, 1959, 1961, 1962, - 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1971, 1972, 1974, - 1975, 1977, 1978, 1982, 1980, 1988, 1986, 1994, 1995, 1996, - 1997, 1998, 1999, 2000, 2002, 2008, 2009, 2010, 2011, 2012, - 2013, 2016, 2027, 2027, 2029, 2087, 2088, 2090, 2091, 2092, - 2093, 2094, 2096, 2097, 2098, 2103, 2106, 2111, 2116, 2123, - 2127, 2132, 2138, 2144, 2145, 2146, 2149, 2148, 2166, 2167, - 2168, 2176, 2183, 2189, 2190, 2192, 2193, 2195, 2196, 2197, - 2206, 2207, 2211, 2212, 2214, 2215, 2216, 2219, 2224, 2248, - 2296, 2316, 2337, 2340, 2347, 2348, 2349, 2355, 2361, 2363, - 2365, 2367, 2369, 2371, 2388, 2393, 2396, 2399, 2402, 2405, - 2408, 2411, 2414, 2417, 2421, 2422, 2425, 2428, 2431, 2434, - 2437, 2440, 2443, 2447, 2458, 2476, 2481, 2486, 2491, 2496, - 2501, 2505, 2509, 2514, 2518, 2522, 2531, 2540, 2550, 2555, - 2567, 2573, 2578, 2584, 2590, 2594, 2596, 2607, 2616, 2623, - 2624, 2626, 2632, 2641, 2648, 2660, 2666, 2672, 2678, 2684, - 2690, 2696, 2709, 2720, 2727, 2740, 2767, 2781, 2795, 2809, - 2824, 2858, 2956, 2957, 2958, 2960 + 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 @@ -1946,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\"", @@ -1966,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 @@ -2008,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 @@ -2088,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, 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, 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, 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, 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, -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, + 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, - 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, 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, 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, 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, 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, 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, + 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, 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, 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, - 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, 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, 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, -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, -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, 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 }; @@ -2736,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) @@ -3594,141 +3989,215 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 24: + + case 26: + if(as3_pass==2) { -/* Line 1455 of yacc.c */ -#line 1509 "parser.y" - {(yyval.code)=(yyvsp[(1) - (1)].code);;} +/* Line 1464 of skeleton.m4 */ +#line 1725 "parser.y" + {(yyval.code)=(yyvsp[(1) - (1)].code);} + } break; - case 25: - -/* Line 1455 of yacc.c */ -#line 1510 "parser.y" - {(yyval.code)=code_new();;} - break; - case 26: + + case 27: + if(as3_pass==2) { -/* Line 1455 of yacc.c */ -#line 1512 "parser.y" - {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));;} +/* Line 1464 of skeleton.m4 */ +#line 1726 "parser.y" + {(yyval.code)=code_new();} + } break; - case 27: -/* Line 1455 of yacc.c */ -#line 1513 "parser.y" - {(yyval.code)=(yyvsp[(1) - (1)].code);;} - break; + + case 28: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1728 "parser.y" + {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));} + } + break; + + + + case 29: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1729 "parser.y" + {(yyval.code)=(yyvsp[(1) - (1)].code);} + } + break; + - case 38: + + case 41: + if(as3_pass==2) { -/* Line 1455 of yacc.c */ -#line 1528 "parser.y" - {(yyval.code)=0;;} +/* Line 1464 of skeleton.m4 */ +#line 1745 "parser.y" + {(yyval.code)=0;} + } break; - case 45: -/* Line 1455 of yacc.c */ -#line 1536 "parser.y" - {/*TODO*/(yyval.code)=0;;} + + case 48: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1752 "parser.y" + {(yyval.code)=(yyvsp[(3) - (4)].code);} + } break; - case 46: -/* Line 1455 of yacc.c */ -#line 1537 "parser.y" - {/*TODO*/(yyval.code)=0;;} + + case 49: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1754 "parser.y" + {/*TODO*/(yyval.code)=0;} + } break; - case 47: -/* Line 1455 of yacc.c */ -#line 1539 "parser.y" - {(yyval.code)=(yyvsp[(2) - (3)].code);;} + + case 50: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1756 "parser.y" + {(yyval.code)=(yyvsp[(2) - (3)].code);} + } break; - case 48: -/* Line 1455 of yacc.c */ -#line 1540 "parser.y" - {(yyval.code)=0;;} + + case 51: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1757 "parser.y" + {(yyval.code)=0;} + } break; - case 49: -/* Line 1455 of yacc.c */ -#line 1541 "parser.y" - {(yyval.code)=(yyvsp[(1) - (2)].code);;} + + case 52: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1758 "parser.y" + {(yyval.code)=(yyvsp[(1) - (2)].code);} + } break; - case 50: -/* Line 1455 of yacc.c */ -#line 1542 "parser.y" - {(yyval.code)=(yyvsp[(1) - (1)].code);;} + + case 53: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1759 "parser.y" + {(yyval.code)=(yyvsp[(1) - (1)].code);} + } break; - case 51: -/* Line 1455 of yacc.c */ -#line 1546 "parser.y" + + case 54: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1763 "parser.y" { code_t**cc = &global->init->method->body->code; *cc = code_append(*cc, (yyvsp[(1) - (1)].code)); -;} +} + } break; - case 52: -/* Line 1455 of yacc.c */ -#line 1553 "parser.y" - {(yyval.value)=(yyvsp[(2) - (2)].value);;} + + case 56: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1774 "parser.y" + {(yyval.value)=(yyvsp[(2) - (2)].value);} + } break; - case 53: -/* Line 1455 of yacc.c */ -#line 1554 "parser.y" + + case 57: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1775 "parser.y" {(yyval.value).c=abc_pushundefined(0); (yyval.value).t=TYPE_ANY; - ;} + } + } break; - case 54: -/* Line 1455 of yacc.c */ -#line 1558 "parser.y" - {(yyval.code)=(yyvsp[(2) - (2)].code);;} + + case 58: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1779 "parser.y" + {(yyval.code)=(yyvsp[(2) - (2)].code);} + } break; - case 55: -/* Line 1455 of yacc.c */ -#line 1559 "parser.y" - {(yyval.code)=(yyvsp[(2) - (2)].code);;} + + case 59: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1780 "parser.y" + {(yyval.code)=(yyvsp[(2) - (2)].code);} + } break; - case 56: -/* Line 1455 of yacc.c */ -#line 1561 "parser.y" - {(yyval.code) = (yyvsp[(1) - (1)].code);;} + + case 60: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1782 "parser.y" + {(yyval.code) = (yyvsp[(1) - (1)].code);} + } break; - case 57: -/* Line 1455 of yacc.c */ -#line 1562 "parser.y" - {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));;} + + case 61: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1783 "parser.y" + {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} + } break; - case 58: -/* Line 1455 of yacc.c */ -#line 1565 "parser.y" + + case 62: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1786 "parser.y" { if(variable_exists((yyvsp[(1) - (3)].id))) syntaxerror("Variable %s already defined", (yyvsp[(1) - (3)].id)); @@ -3746,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); } @@ -3755,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(); } } @@ -3765,34 +4236,50 @@ yyreduce: state->method->initcode = abc_setlocal(state->method->initcode, index); }*/ //printf("variable %s -> %d (%s)\n", $2->text, index, $4.t?$4.t->name:""); -;} +} + } break; - case 59: -/* Line 1455 of yacc.c */ -#line 1605 "parser.y" - {(yyval.code) = code_new();;} + + case 63: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1828 "parser.y" + {(yyval.code) = code_new();} + } break; - case 60: -/* Line 1455 of yacc.c */ -#line 1606 "parser.y" - {(yyval.code)=(yyvsp[(2) - (2)].code);;} + + case 64: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1829 "parser.y" + {(yyval.code)=(yyvsp[(2) - (2)].code);} + } break; - case 61: -/* Line 1455 of yacc.c */ -#line 1609 "parser.y" - {new_state();;} + + case 65: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1832 "parser.y" + {new_state();} + } break; - case 62: -/* Line 1455 of yacc.c */ -#line 1609 "parser.y" + + case 66: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1832 "parser.y" { (yyval.code) = code_new(); @@ -3810,52 +4297,76 @@ yyreduce: } (yyval.code) = var_block((yyval.code)); old_state(); -;} +} + } break; - case 63: -/* Line 1455 of yacc.c */ -#line 1628 "parser.y" - {(yyval.code)=code_new();;} + + case 67: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1851 "parser.y" + {(yyval.code)=code_new();} + } break; - case 66: -/* Line 1455 of yacc.c */ -#line 1633 "parser.y" + + case 70: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1856 "parser.y" { (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1); -;} +} + } break; - case 67: -/* Line 1455 of yacc.c */ -#line 1636 "parser.y" + + case 71: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1859 "parser.y" { (yyval.id)=(yyvsp[(1) - (1)].id); -;} +} + } break; - case 68: -/* Line 1455 of yacc.c */ -#line 1640 "parser.y" - {new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;;} + + case 72: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1863 "parser.y" + {new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;} + } break; - case 69: -/* Line 1455 of yacc.c */ -#line 1641 "parser.y" - {new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;;} + + case 73: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1864 "parser.y" + {new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;} + } break; - case 70: -/* Line 1455 of yacc.c */ -#line 1643 "parser.y" + + case 74: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1866 "parser.y" { if((yyvsp[(1) - (8)].for_start).each) syntaxerror("invalid syntax: ; not allowed in for each statement"); (yyval.code) = code_new(); @@ -3874,13 +4385,17 @@ yyreduce: (yyval.code) = var_block((yyval.code)); old_state(); -;} +} + } break; - case 71: -/* Line 1455 of yacc.c */ -#line 1663 "parser.y" + + case 75: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1886 "parser.y" { variable_t*var = find_variable((yyvsp[(2) - (6)].id)); char*tmp1name = concat2((yyvsp[(2) - (6)].id), "__tmp1__"); @@ -3922,20 +4437,28 @@ yyreduce: free(tmp1name); free(tmp2name); -;} +} + } break; - case 72: -/* Line 1455 of yacc.c */ -#line 1706 "parser.y" - {new_state();;} + + case 76: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1929 "parser.y" + {new_state();} + } break; - case 73: -/* Line 1455 of yacc.c */ -#line 1706 "parser.y" + + case 77: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1929 "parser.y" { (yyval.code) = code_new(); @@ -3953,20 +4476,28 @@ yyreduce: (yyval.code) = var_block((yyval.code)); old_state(); -;} +} + } break; - case 74: -/* Line 1455 of yacc.c */ -#line 1725 "parser.y" - {new_state();;} + + case 78: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1948 "parser.y" + {new_state();} + } break; - case 75: -/* Line 1455 of yacc.c */ -#line 1725 "parser.y" + + case 79: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1948 "parser.y" { (yyval.code) = code_new(); code_t*loopstart = (yyval.code) = abc_label((yyval.code)); @@ -3980,91 +4511,135 @@ yyreduce: (yyval.code) = var_block((yyval.code)); old_state(); -;} +} + } break; - case 76: -/* Line 1455 of yacc.c */ -#line 1740 "parser.y" + + case 80: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1963 "parser.y" { (yyval.code) = abc___break__(0, ""); -;} +} + } break; - case 77: -/* Line 1455 of yacc.c */ -#line 1743 "parser.y" + + case 81: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1966 "parser.y" { (yyval.code) = abc___break__(0, (yyvsp[(2) - (2)].id)); -;} +} + } break; - case 78: -/* Line 1455 of yacc.c */ -#line 1746 "parser.y" + + case 82: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1969 "parser.y" { (yyval.code) = abc___continue__(0, ""); -;} +} + } break; - case 79: -/* Line 1455 of yacc.c */ -#line 1749 "parser.y" + + case 83: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1972 "parser.y" { (yyval.code) = abc___continue__(0, (yyvsp[(2) - (2)].id)); -;} +} + } break; - case 80: -/* Line 1455 of yacc.c */ -#line 1753 "parser.y" - {(yyval.code)=0;;} + + case 84: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1976 "parser.y" + {(yyval.code)=0;} + } break; - case 81: -/* Line 1455 of yacc.c */ -#line 1754 "parser.y" - {(yyval.code)=(yyvsp[(1) - (1)].code);;} + + case 85: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1977 "parser.y" + {(yyval.code)=(yyvsp[(1) - (1)].code);} + } break; - case 82: -/* Line 1455 of yacc.c */ -#line 1755 "parser.y" - {(yyval.code)=(yyvsp[(1) - (1)].code);;} + + case 86: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1978 "parser.y" + {(yyval.code)=(yyvsp[(1) - (1)].code);} + } break; - case 83: -/* Line 1455 of yacc.c */ -#line 1756 "parser.y" - {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));;} + + case 87: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1979 "parser.y" + {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));} + } break; - case 84: -/* Line 1455 of yacc.c */ -#line 1757 "parser.y" + + case 88: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1980 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} + } break; - case 85: -/* Line 1455 of yacc.c */ -#line 1758 "parser.y" - {(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));;} + + case 89: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1981 "parser.y" + {(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));} + } break; - case 86: -/* Line 1455 of yacc.c */ -#line 1760 "parser.y" + + case 90: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1983 "parser.y" { (yyval.code) = abc_dup(0); (yyval.code) = code_append((yyval.code), (yyvsp[(2) - (4)].value).c); @@ -4075,29 +4650,41 @@ yyreduce: } code_t*e = (yyval.code) = abc_nop((yyval.code)); j->branch = e; -;} +} + } break; - case 87: -/* Line 1455 of yacc.c */ -#line 1771 "parser.y" + + case 91: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1994 "parser.y" { (yyval.code) = (yyvsp[(3) - (3)].code); -;} +} + } break; - case 88: -/* Line 1455 of yacc.c */ -#line 1774 "parser.y" - {new_state();;} + + case 92: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1997 "parser.y" + {new_state();} + } break; - case 89: -/* Line 1455 of yacc.c */ -#line 1774 "parser.y" + + case 93: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 1997 "parser.y" { (yyval.code)=(yyvsp[(4) - (8)].value).c; (yyval.code) = code_append((yyval.code), (yyvsp[(7) - (8)].code)); @@ -4123,20 +4710,28 @@ yyreduce: (yyval.code) = var_block((yyval.code)); old_state(); -;} +} + } break; - case 90: -/* Line 1455 of yacc.c */ -#line 1803 "parser.y" - {new_state();state->exception_name=(yyvsp[(3) - (5)].id);new_variable((yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].classinfo), 0);;} + + case 94: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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: -/* Line 1455 of yacc.c */ -#line 1804 "parser.y" + + case 95: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2027 "parser.y" { namespace_t name_ns = {ACCESS_PACKAGE, ""}; multiname_t name = {QNAME, &name_ns, 0, (yyvsp[(3) - (9)].id)}; @@ -4155,20 +4750,28 @@ yyreduce: c = var_block(c); old_state(); -;} +} + } break; - case 92: -/* Line 1455 of yacc.c */ -#line 1823 "parser.y" - {new_state();state->exception_name=0;;} + + case 96: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2046 "parser.y" + {new_state();state->exception_name=0;} + } break; - case 93: -/* Line 1455 of yacc.c */ -#line 1823 "parser.y" + + case 97: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2046 "parser.y" { (yyvsp[(4) - (5)].code) = var_block((yyvsp[(4) - (5)].code)); if(!(yyvsp[(4) - (5)].code)) { @@ -4184,34 +4787,50 @@ yyreduce: old_state(); (yyval.exception) = e; } -;} +} + } break; - case 94: -/* Line 1455 of yacc.c */ -#line 1840 "parser.y" - {(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));;} + + case 98: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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: -/* Line 1455 of yacc.c */ -#line 1841 "parser.y" - {(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));;} + + case 99: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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: -/* Line 1455 of yacc.c */ -#line 1842 "parser.y" + + case 100: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2065 "parser.y" {(yyval.catch_list)=(yyvsp[(1) - (1)].catch_list);} + } break; - case 97: -/* Line 1455 of yacc.c */ -#line 1843 "parser.y" + + case 101: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2066 "parser.y" { (yyval.catch_list) = (yyvsp[(1) - (2)].catch_list); (yyval.catch_list).finally = 0; @@ -4219,13 +4838,17 @@ yyreduce: list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception)); (yyval.catch_list).finally = (yyvsp[(2) - (2)].exception)->to;(yyvsp[(2) - (2)].exception)->to=0; } -;} +} + } break; - case 98: -/* Line 1455 of yacc.c */ -#line 1851 "parser.y" + + case 102: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2074 "parser.y" { (yyval.catch_list).l=list_new(); (yyval.catch_list).finally = 0; @@ -4233,20 +4856,28 @@ yyreduce: list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception)); (yyval.catch_list).finally = (yyvsp[(1) - (1)].exception)->to;(yyvsp[(1) - (1)].exception)->to=0; } -;} +} + } break; - case 99: -/* Line 1455 of yacc.c */ -#line 1860 "parser.y" - {new_state();;} + + case 103: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2083 "parser.y" + {new_state();} + } break; - case 100: -/* Line 1455 of yacc.c */ -#line 1860 "parser.y" + + case 104: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2083 "parser.y" { code_t*out = abc_nop(0); @@ -4288,23 +4919,31 @@ yyreduce: (yyval.code) = var_block((yyval.code)); old_state(); -;} +} + } break; - case 101: -/* Line 1455 of yacc.c */ -#line 1905 "parser.y" + + case 105: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2128 "parser.y" { (yyval.code)=(yyvsp[(2) - (2)].value).c; (yyval.code)=abc_throw((yyval.code)); -;} +} + } break; - case 102: -/* Line 1455 of yacc.c */ -#line 1909 "parser.y" + + case 106: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2132 "parser.y" { if(!state->exception_name) syntaxerror("re-throw only possible within a catch block"); @@ -4312,313 +4951,501 @@ yyreduce: (yyval.code)=code_new(); (yyval.code)=abc_getlocal((yyval.code), v->index); (yyval.code)=abc_throw((yyval.code)); -;} +} + } break; - case 103: -/* Line 1455 of yacc.c */ -#line 1920 "parser.y" + + case 107: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2143 "parser.y" { (yyval.code) = (yyvsp[(3) - (5)].value).c; (yyval.code) = abc_pushscope((yyval.code)); (yyval.code) = code_append((yyval.code), (yyvsp[(5) - (5)].code)); (yyval.code) = abc_popscope((yyval.code)); -;} +} + } break; - case 105: -/* Line 1455 of yacc.c */ -#line 1930 "parser.y" - {(yyval.id)="package";;} + + case 109: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2153 "parser.y" + {PASS12 (yyval.id)="package";} + } break; - case 106: -/* Line 1455 of yacc.c */ -#line 1932 "parser.y" - {(yyval.id) = concat3((yyvsp[(1) - (3)].id),".",(yyvsp[(3) - (3)].id));free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0;;} + + case 110: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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: -/* Line 1455 of yacc.c */ -#line 1933 "parser.y" - {(yyval.id)=strdup((yyvsp[(1) - (1)].id));;} + + case 111: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2156 "parser.y" + {PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));} + } break; - case 108: -/* Line 1455 of yacc.c */ -#line 1935 "parser.y" - {startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;;} + + case 112: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2158 "parser.y" + {PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;} + } break; - case 109: -/* Line 1455 of yacc.c */ -#line 1935 "parser.y" - {endpackage();(yyval.code)=0;;} + + case 113: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2159 "parser.y" + {PASS12 endpackage();(yyval.code)=0;} + } break; - case 110: -/* Line 1455 of yacc.c */ -#line 1936 "parser.y" - {startpackage("");} + + case 114: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2160 "parser.y" + {PASS12 startpackage("");} + } break; - case 111: -/* Line 1455 of yacc.c */ -#line 1936 "parser.y" - {endpackage();(yyval.code)=0;;} + + case 115: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2161 "parser.y" + {PASS12 endpackage();(yyval.code)=0;} + } break; - case 112: -/* Line 1455 of yacc.c */ -#line 1938 "parser.y" - { + + case 116: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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"); state_has_imports(); dict_put(state->imports, c->name, c); (yyval.code)=0; -;} +} + } break; - case 113: -/* Line 1455 of yacc.c */ -#line 1946 "parser.y" + + case 117: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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(); list_append(state->wildcard_imports, i); (yyval.code)=0; -;} +} + } break; - case 114: -/* Line 1455 of yacc.c */ -#line 1956 "parser.y" - {(yyval.flags)=0;;} + + case 118: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2193 "parser.y" + {PASS12 (yyval.flags)=0;} + } break; - case 115: -/* Line 1455 of yacc.c */ -#line 1957 "parser.y" - {(yyval.flags)=(yyvsp[(1) - (1)].flags);} + + case 119: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2194 "parser.y" + {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);} + } break; - case 116: -/* Line 1455 of yacc.c */ -#line 1958 "parser.y" - {(yyval.flags)=(yyvsp[(1) - (1)].token);;} + + case 120: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2195 "parser.y" + {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].token);} + } break; - case 117: -/* Line 1455 of yacc.c */ -#line 1959 "parser.y" - {(yyval.flags)=(yyvsp[(1) - (2)].flags)|(yyvsp[(2) - (2)].token);;} + + case 121: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2196 "parser.y" + {PASS12 (yyval.flags)=(yyvsp[(1) - (2)].flags)|(yyvsp[(2) - (2)].token);} + } break; - case 118: -/* Line 1455 of yacc.c */ -#line 1961 "parser.y" - {(yyval.token)=FLAG_PUBLIC;;} + + case 122: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2198 "parser.y" + {PASS12 (yyval.token)=FLAG_PUBLIC;} + } break; - case 119: -/* Line 1455 of yacc.c */ -#line 1962 "parser.y" - {(yyval.token)=FLAG_PRIVATE;;} + + case 123: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2199 "parser.y" + {PASS12 (yyval.token)=FLAG_PRIVATE;} + } break; - case 120: -/* Line 1455 of yacc.c */ -#line 1963 "parser.y" - {(yyval.token)=FLAG_PROTECTED;;} + + case 124: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2200 "parser.y" + {PASS12 (yyval.token)=FLAG_PROTECTED;} + } break; - case 121: -/* Line 1455 of yacc.c */ -#line 1964 "parser.y" - {(yyval.token)=FLAG_STATIC;;} + + case 125: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2201 "parser.y" + {PASS12 (yyval.token)=FLAG_STATIC;} + } break; - case 122: -/* Line 1455 of yacc.c */ -#line 1965 "parser.y" - {(yyval.token)=FLAG_DYNAMIC;;} + + case 126: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2202 "parser.y" + {PASS12 (yyval.token)=FLAG_DYNAMIC;} + } break; - case 123: -/* Line 1455 of yacc.c */ -#line 1966 "parser.y" - {(yyval.token)=FLAG_FINAL;;} + + case 127: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2203 "parser.y" + {PASS12 (yyval.token)=FLAG_FINAL;} + } break; - case 124: -/* Line 1455 of yacc.c */ -#line 1967 "parser.y" - {(yyval.token)=FLAG_OVERRIDE;;} + + case 128: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2204 "parser.y" + {PASS12 (yyval.token)=FLAG_OVERRIDE;} + } break; - case 125: -/* Line 1455 of yacc.c */ -#line 1968 "parser.y" - {(yyval.token)=FLAG_NATIVE;;} + + case 129: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2205 "parser.y" + {PASS12 (yyval.token)=FLAG_NATIVE;} + } break; - case 126: -/* Line 1455 of yacc.c */ -#line 1969 "parser.y" - {(yyval.token)=FLAG_PACKAGEINTERNAL;;} + + case 130: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2206 "parser.y" + {PASS12 (yyval.token)=FLAG_PACKAGEINTERNAL;} + } break; - case 127: -/* Line 1455 of yacc.c */ -#line 1971 "parser.y" - {(yyval.classinfo)=registry_getobjectclass();;} + + case 131: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2207 "parser.y" + {PASS12 (yyval.token)=FLAG_NAMESPACE;} + } break; - case 128: -/* Line 1455 of yacc.c */ -#line 1972 "parser.y" - {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);;} + + case 132: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2209 "parser.y" + {(yyval.classinfo)=registry_getobjectclass();} + } break; - case 129: -/* Line 1455 of yacc.c */ -#line 1974 "parser.y" - {(yyval.classinfo_list)=list_new();;} + + case 133: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2210 "parser.y" + {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);} + } break; - case 130: -/* Line 1455 of yacc.c */ -#line 1975 "parser.y" - {(yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);;} + + case 134: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2212 "parser.y" + {PASS12 (yyval.classinfo_list)=list_new();} + } break; - case 131: -/* Line 1455 of yacc.c */ -#line 1977 "parser.y" - {(yyval.classinfo_list)=list_new();;} + + case 135: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2213 "parser.y" + {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);} + } break; - case 132: -/* Line 1455 of yacc.c */ -#line 1978 "parser.y" - {(yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);;} + + case 136: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2215 "parser.y" + {PASS12 (yyval.classinfo_list)=list_new();} + } break; - case 133: -/* Line 1455 of yacc.c */ -#line 1982 "parser.y" - {startclass((yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list), 0);;} + + case 137: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2216 "parser.y" + {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);} + } break; - case 134: -/* Line 1455 of yacc.c */ -#line 1984 "parser.y" - {endclass();(yyval.code)=0;;} + + case 138: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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 135: -/* Line 1455 of yacc.c */ -#line 1988 "parser.y" - {startclass((yyvsp[(1) - (5)].flags),(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list),1);;} + + case 139: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2222 "parser.y" + {PASS12 endclass();(yyval.code)=0;} + } break; - case 136: -/* Line 1455 of yacc.c */ -#line 1990 "parser.y" - {endclass();(yyval.code)=0;;} + + case 140: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2226 "parser.y" + {PASS12 startclass((yyvsp[(1) - (5)].flags)|FLAG_INTERFACE,(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list));} + } break; - case 144: -/* Line 1455 of yacc.c */ -#line 2002 "parser.y" + + case 141: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2228 "parser.y" + {PASS12 endclass();(yyval.code)=0;} + } + break; + + + + case 150: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2241 "parser.y" { code_t*c = state->cls->static_init; c = code_append(c, (yyvsp[(1) - (1)].code)); state->cls->static_init = c; -;} +} + } break; - case 150: -/* Line 1455 of yacc.c */ -#line 2013 "parser.y" + + case 156: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2252 "parser.y" { syntaxerror("variable declarations not allowed in interfaces"); -;} +} + } break; - case 151: -/* Line 1455 of yacc.c */ -#line 2016 "parser.y" + + case 157: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2255 "parser.y" { + PASS12 (yyvsp[(1) - (8)].flags) |= FLAG_PUBLIC; if((yyvsp[(1) - (8)].flags)&(FLAG_PRIVATE|FLAG_PACKAGEINTERNAL|FLAG_PROTECTED)) { syntaxerror("invalid method modifiers: interface methods always need to be public"); } 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: -/* Line 1455 of yacc.c */ -#line 2029 "parser.y" + + case 160: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; code_t**code; if(!state->cls) { // global variable + mname_ns.name = state->package; traits = &global->init->traits; code = &global->init->method->body->code; } else if(flags&FLAG_STATIC) { @@ -4656,369 +5483,611 @@ yyreduce: } (yyval.code)=0; -;} +} + } break; - case 155: -/* Line 1455 of yacc.c */ -#line 2087 "parser.y" - {(yyval.constant)=0;;} + + case 161: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2343 "parser.y" + {(yyval.constant)=0;} + } break; - case 156: -/* Line 1455 of yacc.c */ -#line 2088 "parser.y" - {(yyval.constant)=(yyvsp[(2) - (2)].constant);;} + + case 162: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2344 "parser.y" + {(yyval.constant)=(yyvsp[(2) - (2)].constant);} + } + break; + + + + case 163: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2346 "parser.y" + {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_uint));} + } break; - case 157: -/* Line 1455 of yacc.c */ -#line 2090 "parser.y" - {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_uint));;} + + case 164: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2347 "parser.y" + {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));} + } break; - case 158: -/* Line 1455 of yacc.c */ -#line 2091 "parser.y" - {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));;} + + case 165: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2348 "parser.y" + {(yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));} + } break; - case 159: -/* Line 1455 of yacc.c */ -#line 2092 "parser.y" - {(yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));;} + + case 166: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2349 "parser.y" + {(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));} + } break; - case 160: -/* Line 1455 of yacc.c */ -#line 2093 "parser.y" - {(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));;} + + case 167: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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 161: -/* Line 1455 of yacc.c */ -#line 2094 "parser.y" - {(yyval.constant) = constant_new_string2((yyvsp[(1) - (1)].str).str,(yyvsp[(1) - (1)].str).len);;} + + case 168: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2352 "parser.y" + {(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));} + } break; - case 162: -/* Line 1455 of yacc.c */ -#line 2096 "parser.y" - {(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));;} + + case 169: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2353 "parser.y" + {(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));} + } break; - case 163: -/* Line 1455 of yacc.c */ -#line 2097 "parser.y" - {(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));;} + + case 170: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2354 "parser.y" + {(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));} + } break; - case 164: -/* Line 1455 of yacc.c */ -#line 2098 "parser.y" - {(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));;} + + case 171: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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 165: -/* Line 1455 of yacc.c */ -#line 2103 "parser.y" + + case 172: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2364 "parser.y" { + PASS12 memset(&(yyval.params),0,sizeof((yyval.params))); -;} +} + } break; - case 166: -/* Line 1455 of yacc.c */ -#line 2106 "parser.y" + + case 173: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2368 "parser.y" { + PASS12 (yyval.params)=(yyvsp[(1) - (1)].params); -;} +} + } break; - case 167: -/* Line 1455 of yacc.c */ -#line 2111 "parser.y" + + case 174: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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)); -;} +} + } break; - case 168: -/* Line 1455 of yacc.c */ -#line 2116 "parser.y" + + case 175: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2380 "parser.y" { + PASS12 (yyval.params) =(yyvsp[(1) - (4)].params); (yyval.params).varargs=1; list_append((yyval.params).list, (yyvsp[(4) - (4)].param)); -;} +} + } break; - case 169: -/* Line 1455 of yacc.c */ -#line 2123 "parser.y" + + case 176: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2388 "parser.y" { + PASS12 (yyval.params) = (yyvsp[(1) - (3)].params); list_append((yyval.params).list, (yyvsp[(3) - (3)].param)); -;} +} + } break; - case 170: -/* Line 1455 of yacc.c */ -#line 2127 "parser.y" + + case 177: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2393 "parser.y" { + PASS12 memset(&(yyval.params),0,sizeof((yyval.params))); list_append((yyval.params).list, (yyvsp[(1) - (1)].param)); -;} +} + } break; - case 171: -/* Line 1455 of yacc.c */ -#line 2132 "parser.y" + + case 178: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); (yyval.param)->value = (yyvsp[(4) - (4)].constant); -;} +} + } break; - case 172: -/* Line 1455 of yacc.c */ -#line 2138 "parser.y" + + case 179: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; (yyval.param)->value = (yyvsp[(2) - (2)].constant); -;} +} + } break; - case 173: -/* Line 1455 of yacc.c */ -#line 2144 "parser.y" - {(yyval.token)=(yyvsp[(1) - (1)].token);;} + + case 180: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2415 "parser.y" + {(yyval.token)=(yyvsp[(1) - (1)].token);} + } break; - case 174: -/* Line 1455 of yacc.c */ -#line 2145 "parser.y" - {(yyval.token)=(yyvsp[(1) - (1)].token);;} + + case 181: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2416 "parser.y" + {(yyval.token)=(yyvsp[(1) - (1)].token);} + } break; - case 175: -/* Line 1455 of yacc.c */ -#line 2146 "parser.y" - {(yyval.token)=0;;} + + case 182: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2417 "parser.y" + {(yyval.token)=0;} + } break; - case 176: -/* Line 1455 of yacc.c */ -#line 2149 "parser.y" - {startfunction(0,(yyvsp[(1) - (9)].flags),(yyvsp[(3) - (9)].token),(yyvsp[(4) - (9)].id),&(yyvsp[(6) - (9)].params),(yyvsp[(8) - (9)].classinfo));} + + case 183: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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: -/* Line 1455 of yacc.c */ -#line 2150 "parser.y" + + case 184: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2421 "parser.y" { - 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); - } + PASS1 old_state();list_deep_free((yyvsp[(6) - (12)].params).list); + PASS2 + 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; -;} +} + } break; - case 179: -/* Line 1455 of yacc.c */ -#line 2167 "parser.y" - {(yyval.id)=0;;} + + case 186: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2435 "parser.y" + {PASS12 (yyval.id)=0;} + } break; - case 180: -/* Line 1455 of yacc.c */ -#line 2169 "parser.y" - { - syntaxerror("nested functions not supported yet"); -;} + + case 187: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2437 "parser.y" + {PASS12 innerfunction((yyvsp[(2) - (7)].id),&(yyvsp[(4) - (7)].params),(yyvsp[(6) - (7)].classinfo));} + } break; - case 181: -/* Line 1455 of yacc.c */ -#line 2176 "parser.y" + + case 188: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2438 "parser.y" { + 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 189: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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: -/* Line 1455 of yacc.c */ -#line 2183 "parser.y" + + case 190: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2467 "parser.y" { - (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)); + 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 + 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: -/* Line 1455 of yacc.c */ -#line 2192 "parser.y" - {(yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));;} + + case 193: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2483 "parser.y" + {PASS12 (yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));} + } break; - case 186: -/* Line 1455 of yacc.c */ -#line 2193 "parser.y" - {(yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));;} + + case 194: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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: -/* Line 1455 of yacc.c */ -#line 2195 "parser.y" - {(yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);;} + + case 195: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2486 "parser.y" + {(yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);} + } break; - case 188: -/* Line 1455 of yacc.c */ -#line 2196 "parser.y" - {(yyval.classinfo)=registry_getanytype();;} + + case 196: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2487 "parser.y" + {(yyval.classinfo)=registry_getanytype();} + } break; - case 189: -/* Line 1455 of yacc.c */ -#line 2197 "parser.y" - {(yyval.classinfo)=registry_getanytype();;} + + case 197: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2488 "parser.y" + {(yyval.classinfo)=registry_getanytype();} + } break; - case 190: -/* Line 1455 of yacc.c */ -#line 2206 "parser.y" - {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);;} + + case 198: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2497 "parser.y" + {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);} + } break; - case 191: -/* Line 1455 of yacc.c */ -#line 2207 "parser.y" - {(yyval.classinfo)=0;;} + + case 199: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2498 "parser.y" + {(yyval.classinfo)=0;} + } break; - case 192: -/* Line 1455 of yacc.c */ -#line 2211 "parser.y" - {(yyval.value_list).cc=0;(yyval.value_list).len=0;;} + + case 200: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2502 "parser.y" + {(yyval.value_list).cc=0;(yyval.value_list).len=0;} + } break; - case 193: -/* Line 1455 of yacc.c */ -#line 2212 "parser.y" + + case 201: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2503 "parser.y" {(yyval.value_list)=(yyvsp[(2) - (3)].value_list);} + } break; - case 194: -/* Line 1455 of yacc.c */ -#line 2214 "parser.y" - {(yyval.value_list).cc=0;(yyval.value_list).len=0;;} + + case 202: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2505 "parser.y" + {(yyval.value_list).cc=0;(yyval.value_list).len=0;} + } break; - case 196: -/* Line 1455 of yacc.c */ -#line 2216 "parser.y" + + case 205: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2509 "parser.y" {(yyval.value_list).len=1; (yyval.value_list).cc = (yyvsp[(1) - (1)].value).c; - ;} + } + } break; - case 197: -/* Line 1455 of yacc.c */ -#line 2219 "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); - ;} + + case 206: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2513 "parser.y" + {(yyval.value_list) = (yyvsp[(1) - (2)].value_list);} + } break; - case 198: -/* Line 1455 of yacc.c */ -#line 2224 "parser.y" - { - MULTINAME(m, (yyvsp[(2) - (3)].classinfo)); - (yyval.value).c = code_new(); + + case 207: + if(as3_pass==2) { - 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); - } else { - (yyval.value).c = abc_findpropstrict2((yyval.value).c, &m); +/* Line 1464 of skeleton.m4 */ +#line 2514 "parser.y" + { + (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; - (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); -;} + + 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_coerce_a((yyval.value).c); + (yyval.value).t = TYPE_ANY; + } +} + } break; - case 199: -/* Line 1455 of yacc.c */ -#line 2248 "parser.y" + + case 210: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2556 "parser.y" { (yyval.value).c = (yyvsp[(1) - (4)].value).c; @@ -5052,27 +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: -/* Line 1455 of yacc.c */ -#line 2296 "parser.y" + + case 211: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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"); @@ -5088,16 +6158,21 @@ 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; -;} +} + } break; - case 201: -/* Line 1455 of yacc.c */ -#line 2316 "parser.y" + + case 212: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2623 "parser.y" { (yyval.value).c = (yyvsp[(2) - (2)].value).c; if((yyval.value).c->opcode == OPCODE_COERCE_A) { @@ -5117,95 +6192,139 @@ yyreduce: (yyval.value).c = abc_deleteproperty2((yyval.value).c, &m); } (yyval.value).t = TYPE_BOOLEAN; -;} +} + } break; - case 202: -/* Line 1455 of yacc.c */ -#line 2337 "parser.y" + + case 213: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2644 "parser.y" { (yyval.code) = abc_returnvoid(0); -;} +} + } break; - case 203: -/* Line 1455 of yacc.c */ -#line 2340 "parser.y" + + case 214: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2647 "parser.y" { (yyval.code) = (yyvsp[(2) - (2)].value).c; (yyval.code) = abc_returnvalue((yyval.code)); -;} +} + } break; - case 204: -/* Line 1455 of yacc.c */ -#line 2347 "parser.y" - {(yyval.value)=(yyvsp[(1) - (1)].value);;} + + case 215: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2654 "parser.y" + {(yyval.value)=(yyvsp[(1) - (1)].value);} + } break; - case 205: -/* Line 1455 of yacc.c */ -#line 2348 "parser.y" - {(yyval.value) = (yyvsp[(1) - (1)].value);;} + + case 216: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2655 "parser.y" + {(yyval.value) = (yyvsp[(1) - (1)].value);} + } break; - case 206: -/* Line 1455 of yacc.c */ -#line 2349 "parser.y" + + case 217: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2656 "parser.y" { (yyval.value).c = (yyvsp[(1) - (3)].value).c; (yyval.value).c = cut_last_push((yyval.value).c); (yyval.value).c = code_append((yyval.value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).t = (yyvsp[(3) - (3)].value).t; -;} +} + } break; - case 207: -/* Line 1455 of yacc.c */ -#line 2355 "parser.y" + + case 218: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2662 "parser.y" { (yyval.code)=cut_last_push((yyvsp[(1) - (1)].value).c); -;} +} + } break; - case 208: -/* Line 1455 of yacc.c */ -#line 2361 "parser.y" - {(yyval.value) = (yyvsp[(1) - (1)].value);;} + + case 219: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2668 "parser.y" + {(yyval.value) = (yyvsp[(1) - (1)].value);} + } break; - case 210: -/* Line 1455 of yacc.c */ -#line 2365 "parser.y" - {(yyval.value) = (yyvsp[(1) - (1)].value);;} + + case 221: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2672 "parser.y" + {(yyval.value) = (yyvsp[(1) - (1)].value);} + } break; - case 211: -/* Line 1455 of yacc.c */ -#line 2367 "parser.y" - {(yyval.value) = (yyvsp[(1) - (1)].value);;} + + case 222: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2674 "parser.y" + {(yyval.value) = (yyvsp[(1) - (1)].value);} + } break; - case 212: -/* Line 1455 of yacc.c */ -#line 2369 "parser.y" - {(yyval.value) = (yyvsp[(1) - (1)].value);;} + + case 223: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2676 "parser.y" + {(yyval.value) = (yyvsp[(1) - (1)].value);} + } break; - case 213: -/* Line 1455 of yacc.c */ -#line 2371 "parser.y" + + case 225: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2680 "parser.y" { (yyval.value).c = 0; namespace_t ns = {ACCESS_PACKAGE, ""}; @@ -5221,177 +6340,253 @@ yyreduce: (yyval.value).c = abc_construct((yyval.value).c, 2); } (yyval.value).t = TYPE_REGEXP; -;} +} + } break; - case 214: -/* Line 1455 of yacc.c */ -#line 2388 "parser.y" + + case 226: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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 (yyval.value).t = TYPE_INT; - ;} + } + } break; - case 215: -/* Line 1455 of yacc.c */ -#line 2393 "parser.y" + + case 227: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2702 "parser.y" {(yyval.value).c = abc_pushshort(0, (yyvsp[(1) - (1)].number_uint)); (yyval.value).t = TYPE_INT; - ;} + } + } break; - case 216: -/* Line 1455 of yacc.c */ -#line 2396 "parser.y" + + case 228: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2705 "parser.y" {(yyval.value).c = abc_pushint(0, (yyvsp[(1) - (1)].number_int)); (yyval.value).t = TYPE_INT; - ;} + } + } break; - case 217: -/* Line 1455 of yacc.c */ -#line 2399 "parser.y" + + case 229: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2708 "parser.y" {(yyval.value).c = abc_pushuint(0, (yyvsp[(1) - (1)].number_uint)); (yyval.value).t = TYPE_UINT; - ;} + } + } break; - case 218: -/* Line 1455 of yacc.c */ -#line 2402 "parser.y" + + case 230: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2711 "parser.y" {(yyval.value).c = abc_pushdouble(0, (yyvsp[(1) - (1)].number_float)); (yyval.value).t = TYPE_FLOAT; - ;} + } + } break; - case 219: -/* Line 1455 of yacc.c */ -#line 2405 "parser.y" - {(yyval.value).c = abc_pushstring2(0, &(yyvsp[(1) - (1)].str)); + + case 231: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 220: -/* Line 1455 of yacc.c */ -#line 2408 "parser.y" + + case 232: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2717 "parser.y" {(yyval.value).c = abc_pushundefined(0); (yyval.value).t = TYPE_ANY; - ;} + } + } break; - case 221: -/* Line 1455 of yacc.c */ -#line 2411 "parser.y" + + case 233: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2720 "parser.y" {(yyval.value).c = abc_pushtrue(0); (yyval.value).t = TYPE_BOOLEAN; - ;} + } + } break; - case 222: -/* Line 1455 of yacc.c */ -#line 2414 "parser.y" + + case 234: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2723 "parser.y" {(yyval.value).c = abc_pushfalse(0); (yyval.value).t = TYPE_BOOLEAN; - ;} + } + } break; - case 223: -/* Line 1455 of yacc.c */ -#line 2417 "parser.y" + + case 235: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2726 "parser.y" {(yyval.value).c = abc_pushnull(0); (yyval.value).t = TYPE_NULL; - ;} + } + } break; - case 225: -/* Line 1455 of yacc.c */ -#line 2422 "parser.y" + + case 236: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 226: -/* Line 1455 of yacc.c */ -#line 2425 "parser.y" + + case 237: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 227: -/* Line 1455 of yacc.c */ -#line 2428 "parser.y" + + case 238: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 228: -/* Line 1455 of yacc.c */ -#line 2431 "parser.y" + + case 239: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 229: -/* Line 1455 of yacc.c */ -#line 2434 "parser.y" + + case 240: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 230: -/* Line 1455 of yacc.c */ -#line 2437 "parser.y" + + case 241: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 231: -/* Line 1455 of yacc.c */ -#line 2440 "parser.y" + + case 242: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 232: -/* Line 1455 of yacc.c */ -#line 2443 "parser.y" + + case 243: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 233: -/* Line 1455 of yacc.c */ -#line 2447 "parser.y" + + case 244: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); @@ -5402,13 +6597,17 @@ yyreduce: (yyval.value).c = converttype((yyval.value).c, (yyvsp[(3) - (3)].value).t, (yyval.value).t); code_t*label = (yyval.value).c = abc_label((yyval.value).c); jmp->branch = label; - ;} + } + } break; - case 234: -/* Line 1455 of yacc.c */ -#line 2458 "parser.y" + + case 245: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); @@ -5425,113 +6624,157 @@ yyreduce: (yyval.value).c = converttype((yyval.value).c, (yyvsp[(3) - (3)].value).t, (yyval.value).t); code_t*label = (yyval.value).c = abc_label((yyval.value).c); jmp->branch = label; - ;} + } + } break; - case 235: -/* Line 1455 of yacc.c */ -#line 2476 "parser.y" + + case 246: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 236: -/* Line 1455 of yacc.c */ -#line 2481 "parser.y" + + case 247: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 237: -/* Line 1455 of yacc.c */ -#line 2486 "parser.y" + + case 248: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 238: -/* Line 1455 of yacc.c */ -#line 2491 "parser.y" + + case 249: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 239: -/* Line 1455 of yacc.c */ -#line 2496 "parser.y" + + case 250: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 240: -/* Line 1455 of yacc.c */ -#line 2501 "parser.y" + + case 251: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 241: -/* Line 1455 of yacc.c */ -#line 2505 "parser.y" + + case 252: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 242: -/* Line 1455 of yacc.c */ -#line 2509 "parser.y" + + case 253: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 243: -/* Line 1455 of yacc.c */ -#line 2514 "parser.y" + + case 254: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 244: -/* Line 1455 of yacc.c */ -#line 2518 "parser.y" + + case 255: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 245: -/* Line 1455 of yacc.c */ -#line 2522 "parser.y" + + case 256: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); @@ -5540,13 +6783,17 @@ yyreduce: (yyval.value).c = abc_add((yyval.value).c); (yyval.value).t = join_types((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t,'+'); } - ;} + } + } break; - case 246: -/* Line 1455 of yacc.c */ -#line 2531 "parser.y" + + case 257: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); @@ -5555,13 +6802,17 @@ yyreduce: (yyval.value).c = abc_subtract((yyval.value).c); (yyval.value).t = TYPE_NUMBER; } - ;} + } + } break; - case 247: -/* Line 1455 of yacc.c */ -#line 2540 "parser.y" + + case 258: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); @@ -5570,98 +6821,134 @@ yyreduce: (yyval.value).c = abc_multiply((yyval.value).c); (yyval.value).t = TYPE_NUMBER; } - ;} + } + } break; - case 248: -/* Line 1455 of yacc.c */ -#line 2550 "parser.y" + + case 259: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 249: -/* Line 1455 of yacc.c */ -#line 2555 "parser.y" + + case 260: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); (yyval.value).t = TYPE_ANY; } - ;} + } + } break; - case 250: -/* Line 1455 of yacc.c */ -#line 2568 "parser.y" + + case 261: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 251: -/* Line 1455 of yacc.c */ -#line 2573 "parser.y" + + case 262: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; - ;} + } + } break; - case 252: -/* Line 1455 of yacc.c */ -#line 2578 "parser.y" + + case 263: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2886 "parser.y" { (yyval.value).c = (yyvsp[(3) - (4)].value).c; (yyval.value).c = abc_typeof((yyval.value).c); (yyval.value).t = TYPE_STRING; - ;} + } + } break; - case 253: -/* Line 1455 of yacc.c */ -#line 2584 "parser.y" + + case 264: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2892 "parser.y" { (yyval.value).c = cut_last_push((yyvsp[(2) - (2)].value).c); (yyval.value).c = abc_pushundefined((yyval.value).c); (yyval.value).t = TYPE_ANY; - ;} + } + } break; - case 254: -/* Line 1455 of yacc.c */ -#line 2590 "parser.y" + + case 265: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2898 "parser.y" { (yyval.value).c = abc_pushundefined(0); (yyval.value).t = TYPE_ANY; - ;} + } + } break; - case 255: -/* Line 1455 of yacc.c */ -#line 2594 "parser.y" - {(yyval.value)=(yyvsp[(2) - (3)].value);;} + + case 266: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2902 "parser.y" + {(yyval.value)=(yyvsp[(2) - (3)].value);} + } break; - case 256: -/* Line 1455 of yacc.c */ -#line 2596 "parser.y" + + case 267: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2904 "parser.y" { (yyval.value)=(yyvsp[(2) - (2)].value); if(IS_INT((yyvsp[(2) - (2)].value).t)) { @@ -5671,89 +6958,121 @@ yyreduce: (yyval.value).c=abc_negate((yyval.value).c); (yyval.value).t = TYPE_NUMBER; } -;} +} + } break; - case 257: -/* Line 1455 of yacc.c */ -#line 2607 "parser.y" + + case 268: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); - + MULTINAME_LATE(m, (yyvsp[(1) - (4)].value).t?(yyvsp[(1) - (4)].value).t->access:ACCESS_PACKAGE, ""); (yyval.value).c = abc_getproperty2((yyval.value).c, &m); (yyval.value).t = 0; // array elements have unknown type -;} +} + } break; - case 258: -/* Line 1455 of yacc.c */ -#line 2616 "parser.y" + + case 269: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2924 "parser.y" { (yyval.value).c = code_new(); (yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc); (yyval.value).c = abc_newarray((yyval.value).c, (yyvsp[(2) - (3)].value_list).len); (yyval.value).t = registry_getarrayclass(); -;} +} + } break; - case 259: -/* Line 1455 of yacc.c */ -#line 2623 "parser.y" - {(yyval.value_list).cc=0;(yyval.value_list).len=0;;} + + case 270: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2931 "parser.y" + {(yyval.value_list).cc=0;(yyval.value_list).len=0;} + } break; - case 260: -/* Line 1455 of yacc.c */ -#line 2624 "parser.y" + + case 271: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2932 "parser.y" {(yyval.value_list)=(yyvsp[(1) - (1)].value_list);} + } break; - case 261: -/* Line 1455 of yacc.c */ -#line 2626 "parser.y" + + case 272: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2934 "parser.y" { (yyval.value_list).cc = 0; (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(1) - (3)].value).c); (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(3) - (3)].value).c); (yyval.value_list).len = 2; -;} +} + } break; - case 262: -/* Line 1455 of yacc.c */ -#line 2632 "parser.y" + + case 273: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(3) - (5)].value).c); (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(5) - (5)].value).c); -;} +} + } break; - case 263: -/* Line 1455 of yacc.c */ -#line 2641 "parser.y" + + case 274: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2949 "parser.y" { (yyval.value).c = code_new(); (yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc); (yyval.value).c = abc_newobject((yyval.value).c, (yyvsp[(2) - (3)].value_list).len/2); (yyval.value).t = registry_getobjectclass(); -;} +} + } break; - case 264: -/* Line 1455 of yacc.c */ -#line 2648 "parser.y" + + case 275: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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)) { @@ -5764,85 +7083,113 @@ yyreduce: c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '*'), (yyvsp[(1) - (3)].value).t); (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 265: -/* Line 1455 of yacc.c */ -#line 2660 "parser.y" + + case 276: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 266: -/* Line 1455 of yacc.c */ -#line 2666 "parser.y" + + case 277: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 267: -/* Line 1455 of yacc.c */ -#line 2672 "parser.y" + + case 278: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 268: -/* Line 1455 of yacc.c */ -#line 2678 "parser.y" + + case 279: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 269: -/* Line 1455 of yacc.c */ -#line 2684 "parser.y" + + case 280: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 270: -/* Line 1455 of yacc.c */ -#line 2690 "parser.y" + + case 281: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 2998 "parser.y" { code_t*c = abc_bitor((yyvsp[(3) - (3)].value).c); c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t); (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 271: -/* Line 1455 of yacc.c */ -#line 2696 "parser.y" + + case 282: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3004 "parser.y" { code_t*c = (yyvsp[(3) - (3)].value).c; @@ -5855,13 +7202,17 @@ yyreduce: (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 272: -/* Line 1455 of yacc.c */ -#line 2709 "parser.y" + + case 283: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); @@ -5872,25 +7223,33 @@ yyreduce: (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 273: -/* Line 1455 of yacc.c */ -#line 2720 "parser.y" + + case 284: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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); (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 1, 0); (yyval.value).t = (yyvsp[(1) - (3)].value).t; - ;} + } + } break; - case 274: -/* Line 1455 of yacc.c */ -#line 2727 "parser.y" + + case 285: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; @@ -5902,13 +7261,17 @@ yyreduce: (yyval.value).c = code_append((yyval.value).c, (yyvsp[(5) - (5)].value).c); (yyval.value).c = converttype((yyval.value).c, (yyvsp[(3) - (5)].value).t, (yyval.value).t); (yyval.value).c = j2->branch = abc_label((yyval.value).c); - ;} + } + } break; - case 275: -/* Line 1455 of yacc.c */ -#line 2740 "parser.y" + + case 286: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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)) { @@ -5933,13 +7296,17 @@ yyreduce: (yyval.value).c = toreadwrite((yyvsp[(1) - (2)].value).c, c, 0, 1); (yyval.value).t = (yyvsp[(1) - (2)].value).t; } - ;} + } + } break; - case 276: -/* Line 1455 of yacc.c */ -#line 2767 "parser.y" + + case 287: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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)) { @@ -5952,13 +7319,17 @@ yyreduce: c=converttype(c, type, (yyvsp[(1) - (2)].value).t); (yyval.value).c = toreadwrite((yyvsp[(1) - (2)].value).c, c, 0, 1); (yyval.value).t = (yyvsp[(1) - (2)].value).t; - ;} + } + } break; - case 277: -/* Line 1455 of yacc.c */ -#line 2781 "parser.y" + + case 288: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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)) { @@ -5971,13 +7342,17 @@ yyreduce: c=converttype(c, type, (yyvsp[(2) - (2)].value).t); (yyval.value).c = toreadwrite((yyvsp[(2) - (2)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(2) - (2)].value).t; - ;} + } + } break; - case 278: -/* Line 1455 of yacc.c */ -#line 2795 "parser.y" + + case 289: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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)) { @@ -5990,37 +7365,125 @@ yyreduce: c=converttype(c, type, (yyvsp[(2) - (2)].value).t); (yyval.value).c = toreadwrite((yyvsp[(2) - (2)].value).c, c, 0, 0); (yyval.value).t = (yyvsp[(2) - (2)].value).t; - ;} + } + } break; - case 279: -/* Line 1455 of yacc.c */ -#line 2810 "parser.y" + + case 290: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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 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 280: -/* Line 1455 of yacc.c */ -#line 2825 "parser.y" + + case 296: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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) { @@ -6035,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 { @@ -6047,17 +7510,21 @@ yyreduce: (yyval.value).c = abc_coerce_a((yyval.value).c); (yyval.value).t = registry_getanytype(); } - ;} + } + } break; - case 281: -/* Line 1455 of yacc.c */ -#line 2858 "parser.y" + + case 297: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#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; @@ -6077,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; @@ -6089,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); @@ -6099,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); @@ -6109,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)}; @@ -6143,41 +7619,63 @@ yyreduce: (yyval.value).c = abc_findpropstrict2((yyval.value).c, &m); (yyval.value).c = abc_getproperty2((yyval.value).c, &m); } -;} +} + } break; - case 282: -/* Line 1455 of yacc.c */ -#line 2956 "parser.y" - {(yyval.code)=0;;} + + case 298: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3307 "parser.y" + {(yyval.code)=0;} + } break; - case 283: -/* Line 1455 of yacc.c */ -#line 2957 "parser.y" - {(yyval.code)=0;;} + + case 299: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3308 "parser.y" + {(yyval.code)=0;} + } break; - case 284: -/* Line 1455 of yacc.c */ -#line 2958 "parser.y" - {(yyval.code)=0;;} + + case 300: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3309 "parser.y" + {(yyval.code)=0;} + } break; - case 285: -/* Line 1455 of yacc.c */ -#line 2960 "parser.y" - {(yyval.token)=0;;} + + case 301: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3311 "parser.y" + { + PASS12 + tokenizer_register_namespace((yyvsp[(3) - (3)].id)); + (yyval.code)=0; +} + } break; -/* Line 1455 of yacc.c */ -#line 6181 "parser.tab.c" + +/* Line 1464 of skeleton.m4 */ +#line 7679 "parser.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);