#line 44 "parser.y"
enum yytokentype token;
- int flags;
classinfo_t*classinfo;
classinfo_list_t*classinfo_list;
+ slotinfo_t*slotinfo;
+ slotinfo_list_t*slotinfo_list;
int number_int;
unsigned int number_uint;
for_start_t for_start;
abc_exception_t *exception;
regexp_t regexp;
+ modifiers_t flags;
+ namespace_decl_t* namespace_decl;
struct {
abc_exception_list_t *l;
code_t*finally;
/* Line 223 of skeleton.m4 */
-#line 275 "parser.tab.c"
+#line 278 "parser.tab.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
/* Copy the second part of user declarations. */
/* Line 273 of skeleton.m4 */
-#line 259 "parser.y"
+#line 265 "parser.y"
static int a3_error(char*s)
struct _methodstate {
/* method data */
methodinfo_t*info;
+ char has_exceptions;
char late_binding;
char is_constructor;
char has_super;
char is_global;
int variable_count;
+ dict_t*unresolved_variables;
+
char inner;
+ char uses_parent_function;
+ int uses_slots;
+ dict_t*slots;
+
abc_method_t*abc;
int var_index; // for inner methods
+ int slot_index; // for inner methods
+ char is_a_slot; // for inner methods
code_t*header;
+
+ code_t*scope_code;
abc_exception_list_t*exceptions;
methodstate_list_t*innerfunctions;
char*package;
import_list_t*wildcard_imports;
+ dict_t*import_toplevel_packages;
dict_t*imports;
+ namespace_list_t*active_namespaces;
+ namespace_decl_list_t*new_namespaces;
char has_own_imports;
char new_vars; // e.g. transition between two functions
methodstate_t*method;
char*exception_name;
+
+ int switch_var;
dict_t*vars;
} state_t;
multiname_t m;\
namespace_t m##_ns;\
if(f) { \
- m##_ns.access = (f)->access; \
- m##_ns.name = ""; \
+ if((m##_ns.access = ((slotinfo_t*)(f))->access)==ACCESS_NAMESPACE) \
+ m##_ns.name = ((slotinfo_t*)(f))->package; \
+ else \
+ m##_ns.name = ""; \
m.type = QNAME; \
m.ns = &m##_ns; \
m.namespace_set = 0; \
- m.name = f->name; \
+ m.name = ((slotinfo_t*)(f))->name; \
} else { \
m.type = MULTINAME; \
m.ns =0; \
if(!s->imports) {
s->imports = dict_new();
}
+ if(!s->import_toplevel_packages) {
+ s->import_toplevel_packages = dict_new();
+ }
state = s;
state->level++;
state->has_own_imports = 0;
+ state->new_namespaces = 0;
state->vars = dict_new();
state->old = oldstate;
+ state->new_vars = 0;
}
static void state_has_imports()
{
state->imports = dict_clone(state->imports);
state->has_own_imports = 1;
}
+static void import_toplevel(const char*package)
+{
+ char* s = strdup(package);
+ while(1) {
+ dict_put(state->import_toplevel_packages, s, 0);
+ char*x = strrchr(s, '.');
+ if(!x)
+ break;
+ *x = 0;
+ }
+ free(s);
+}
static void state_destroy(state_t*state)
{
state_t*leaving = state;
state = state->old;
+
+ namespace_decl_list_t*nl=leaving->new_namespaces;
+ while(nl) {
+ tokenizer_unregister_namespace(nl->namespace_decl->name);
+ nl = nl->next;
+ }
if(as3_pass>1 && leaving->method && leaving->method != state->method && !leaving->method->inner) {
free(leaving->method);
static code_t* method_header(methodstate_t*m);
static code_t* wrap_function(code_t*c,code_t*header, code_t*body);
-static void function_initvars(methodstate_t*m, params_t*params, int flags);
+static void function_initvars(methodstate_t*m, params_t*params, int flags, char var0);
static char* internal_filename_package = 0;
if(as3_pass==1) {
state->method = rfx_calloc(sizeof(methodstate_t));
dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, state->method);
+ state->method->late_binding = 1; // init scripts use getglobalscope, so we need a getlocal0/pushscope
} else {
state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount);
- function_initvars(state->method, 0, 0);
+ function_initvars(state->method, 0, 0, 1);
global->init = abc_initscript(global->file);
- state->method->late_binding = 1; // init scripts use getglobalscope, so we need a getlocal0/pushscope
}
}
c = abc_iftrue(c,xx);*/
}
-
typedef struct _variable {
int index;
classinfo_t*type;
char init;
+ methodstate_t*is_inner_method;
} variable_t;
-static variable_t* find_variable(char*name)
+static variable_t* find_variable(state_t*s, char*name)
{
- state_t* s = state;
while(s) {
variable_t*v = 0;
- if(s->method)
- v = dict_lookup(s->vars, name);
- if(v) {
- return v;
- }
- if(s->new_vars)
- break;
+ v = dict_lookup(s->vars, name);
+ if(v) return v;
+ if(s->new_vars) break;
s = s->old;
}
return 0;
-}
-static variable_t* find_variable_safe(char*name)
+}
+static variable_t* find_slot(state_t*s, const char*name)
+{
+ if(s->method && s->method->slots)
+ return dict_lookup(s->method->slots, name);
+ return 0;
+}
+
+static variable_t* find_variable_safe(state_t*s, char*name)
{
- variable_t* v = find_variable(name);
+ variable_t* v = find_variable(s, name);
if(!v)
syntaxerror("undefined variable: %s", name);
return v;
}
static char variable_exists(char*name)
{
- return dict_lookup(state->vars, name)!=0;
+ return dict_contains(state->vars, name);
}
code_t*defaultvalue(code_t*c, classinfo_t*type);
-static int new_variable(const char*name, classinfo_t*type, char init)
+
+static int alloc_local()
+{
+ return state->method->variable_count++;
+}
+
+static variable_t* new_variable2(const char*name, classinfo_t*type, char init, char maybeslot)
{
+ if(maybeslot) {
+ variable_t*v = find_slot(state, name);
+ if(v)
+ return v;
+ }
+
NEW(variable_t, v);
- v->index = state->method->variable_count;
+ v->index = alloc_local();
v->type = type;
v->init = init;
-
- dict_put(state->vars, name, v);
+
+ if(name)
+ dict_put(state->vars, name, v);
- return state->method->variable_count++;
+ return v;
+}
+static int new_variable(const char*name, classinfo_t*type, char init, char maybeslot)
+{
+ return new_variable2(name, type, init, maybeslot)->index;
}
+
#define TEMPVARNAME "__as3_temp__"
static int gettempvar()
{
- variable_t*v = find_variable(TEMPVARNAME);
+ variable_t*v = find_variable(state, TEMPVARNAME);
if(v)
return v->index;
- return new_variable(TEMPVARNAME, 0, 0);
+ return new_variable(TEMPVARNAME, 0, 0, 0);
}
code_t* var_block(code_t*body)
return c;
}
+void unknown_variable(char*name)
+{
+ if(!state->method->unresolved_variables)
+ state->method->unresolved_variables = dict_new();
+ if(!dict_contains(state->method->unresolved_variables, name))
+ dict_put(state->method->unresolved_variables, name, 0);
+}
+
#define parserassert(b) {if(!(b)) parsererror(__FILE__, __LINE__,__func__);}
static void parsererror(const char*file, int line, const char*f)
}
-static code_t* method_header(methodstate_t*m)
+static code_t* add_scope_code(code_t*c, methodstate_t*m)
{
- code_t*c = 0;
- if(m->late_binding && !m->inner) {
+ if(m->uses_slots || (m->late_binding && !m->inner)) {
c = abc_getlocal_0(c);
c = abc_pushscope(c);
}
- /*if(m->innerfunctions) {
+ if(m->uses_slots) {
+ /* FIXME: does this need to be the same activation object as
+ in the function header? */
c = abc_newactivation(c);
c = abc_pushscope(c);
- }*/
+ }
+ return c;
+}
+
+static code_t* method_header(methodstate_t*m)
+{
+ code_t*c = 0;
+
+ c = add_scope_code(c, m);
+
methodstate_list_t*l = m->innerfunctions;
while(l) {
parserassert(l->methodstate->abc);
- c = abc_newfunction(c, l->methodstate->abc);
- c = abc_setlocal(c, l->methodstate->var_index);
+ if(m->uses_slots && l->methodstate->is_a_slot) {
+ c = abc_getscopeobject(c, 1);
+ c = abc_newfunction(c, l->methodstate->abc);
+ c = abc_dup(c);
+ c = abc_setlocal(c, l->methodstate->var_index);
+ c = abc_setslot(c, l->methodstate->slot_index);
+ } else {
+ c = abc_newfunction(c, l->methodstate->abc);
+ c = abc_setlocal(c, l->methodstate->var_index);
+ }
free(l->methodstate);l->methodstate=0;
l = l->next;
}
#define FLAG_PACKAGEINTERNAL 2048
#define FLAG_NAMESPACE 4096
-static int flags2access(int flags)
+static namespace_t modifiers2access(modifiers_t*mod)
{
- int access = 0;
- if(flags&FLAG_PUBLIC) {
- if(access&(FLAG_PRIVATE|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL))
+ namespace_t ns;
+ ns.access = 0;
+ ns.name = "";
+ if(mod->flags&FLAG_NAMESPACE) {
+ if(mod->flags&(FLAG_PRIVATE|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL))
+ syntaxerror("invalid combination of access levels and namespaces");
+ ns.access = ACCESS_NAMESPACE;
+ ns.name = mod->ns;
+ } else if(mod->flags&FLAG_PUBLIC) {
+ if(mod->flags&(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))
+ ns.access = ACCESS_PACKAGE;
+ } else if(mod->flags&FLAG_PRIVATE) {
+ if(mod->flags&(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))
+ ns.access = ACCESS_PRIVATE;
+ } else if(mod->flags&FLAG_PROTECTED) {
+ if(mod->flags&(FLAG_PUBLIC|FLAG_PRIVATE|FLAG_PACKAGEINTERNAL))
syntaxerror("invalid combination of access levels");
- access = ACCESS_PROTECTED;
+ ns.access = ACCESS_PROTECTED;
} else {
- access = ACCESS_PACKAGEINTERNAL;
+ ns.access = ACCESS_PACKAGEINTERNAL;
}
- return access;
+ return ns;
}
+static slotinfo_t* find_class(const char*name);
-static void function_initvars(methodstate_t*m, params_t*params, int flags)
+static void function_initvars(methodstate_t*m, params_t*params, int flags, char var0)
{
- if(m->inner)
- new_variable("this", 0, 0);
- else if(!m->is_global)
- new_variable((flags&FLAG_STATIC)?"class":"this", state->cls?state->cls->info:0, 0);
- else
- new_variable("globalscope", 0, 0);
+ if(var0) {
+ int index = -1;
+ if(m->inner)
+ index = new_variable("this", 0, 0, 0);
+ else if(!m->is_global)
+ index = new_variable((flags&FLAG_STATIC)?"class":"this", state->cls?state->cls->info:0, 0, 0);
+ else
+ index = new_variable("globalscope", 0, 0, 0);
+ if(index)
+ *(int*)0=0;
+ parserassert(!index);
+ }
+
+ if(m->uses_slots) {
+ /* as variables and slots share the same number, make sure
+ that those variable indices are reserved. It's up to the
+ optimizer to later shuffle the variables down to lower
+ indices */
+ m->variable_count = m->uses_slots;
+ }
if(params) {
param_list_t*p=0;
for(p=params->list;p;p=p->next) {
- new_variable(p->param->name, p->param->type, 0);
+ new_variable(p->param->name, p->param->type, 0, 1);
}
}
+
+ if(as3_pass==2) {
+ m->scope_code = add_scope_code(m->scope_code, m);
+ }
+
methodstate_list_t*l = m->innerfunctions;
while(l) {
methodstate_t*m = l->methodstate;
- m->var_index = new_variable(m->info->name, TYPE_FUNCTION(m->info), 0);
+
+ variable_t* v = new_variable2(m->info->name, TYPE_FUNCTION(m->info), 0, 1);
+ m->var_index = v->index;
+ m->slot_index = v->index;
+ v->is_inner_method = m;
+
l = l->next;
}
+
+ if(as3_pass==2 && m->slots) {
+ /* exchange unresolved identifiers with the actual objects */
+ DICT_ITERATE_ITEMS(m->slots, char*, name, variable_t*, v) {
+ if(v->type && v->type->kind == INFOTYPE_UNRESOLVED) {
+ v->type = (classinfo_t*)registry_resolve((slotinfo_t*)v->type);
+ if(!v->type || v->type->kind != INFOTYPE_CLASS) {
+ syntaxerror("Couldn't find class %s", v->type->name);
+ }
+ }
+ }
+ }
}
char*as3_globalclass=0;
-static void startclass(int flags, char*classname, classinfo_t*extends, classinfo_list_t*implements)
+static void startclass(modifiers_t* mod, char*classname, classinfo_t*extends, classinfo_list_t*implements)
{
if(state->cls) {
syntaxerror("inner classes now allowed");
}
+
new_state();
token_list_t*t=0;
classinfo_list_t*mlist=0;
- if(flags&~(FLAG_PACKAGEINTERNAL|FLAG_PUBLIC|FLAG_FINAL|FLAG_DYNAMIC|FLAG_INTERFACE))
+ if(mod->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))
+ if((mod->flags&(FLAG_PUBLIC|FLAG_PACKAGEINTERNAL)) == (FLAG_PUBLIC|FLAG_PACKAGEINTERNAL))
syntaxerror("public and internal not supported at the same time.");
+
+ //if(!(mod->flags&FLAG_INTERFACE) && !extends) {
+ if(!(mod->flags&FLAG_INTERFACE) && !extends) {
+ // all classes extend object
+ extends = registry_getobjectclass();
+ }
/* create the class name, together with the proper attributes */
int access=0;
char*package=0;
- if(!(flags&FLAG_PUBLIC) && state->package==internal_filename_package) {
+ if(!(mod->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) {
+ } else if(!(mod->flags&FLAG_PUBLIC) && state->package!=internal_filename_package) {
access = ACCESS_PACKAGEINTERNAL; package = state->package;
} else if(state->package!=internal_filename_package) {
access = ACCESS_PACKAGE; package = state->package;
/* 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);
+ state->cls->info->flags |= mod->flags & (FLAG_DYNAMIC|FLAG_INTERFACE|FLAG_FINAL);
+
+ int pos = 0;
+ classinfo_list_t*l = implements;
+ for(l=implements;l;l=l->next) {
+ state->cls->info->interfaces[pos++] = l->classinfo;
+ }
}
if(as3_pass == 2) {
state->method = state->cls->init;
parserassert(state->cls && state->cls->info);
-
- function_initvars(state->cls->init, 0, 0);
- function_initvars(state->cls->static_init, 0, 0);
+
+ function_initvars(state->cls->init, 0, 0, 1);
+ function_initvars(state->cls->static_init, 0, 0, 0);
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;
+ while(state->cls->info->interfaces[pos]) {
+ if(!(state->cls->info->interfaces[pos]->flags & FLAG_INTERFACE))
+ syntaxerror("'%s' is not an interface",
+ state->cls->info->interfaces[pos]->name);
+ pos++;
}
+ /* fill out interfaces and extends (we couldn't resolve those during the first pass) */
+ state->cls->info->superclass = extends;
+
/* generate the abc code for this class */
MULTINAME(classname2,state->cls->info);
multiname_t*extends2 = sig2mname(extends);
/* flash.display.MovieClip handling */
- if(!as3_globalclass && (flags&FLAG_PUBLIC) && slotinfo_equals((slotinfo_t*)registry_getMovieClip(),(slotinfo_t*)extends)) {
+ if(!as3_globalclass && (mod->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 {
}
}
-static void setstaticfunction(int x)
+static int slotstate_varconst = 0;
+static modifiers_t*slotstate_flags = 0;
+static void setslotstate(modifiers_t* flags, int varconst)
{
+ slotstate_varconst = varconst;
+ slotstate_flags = flags;
if(state->cls) {
- if(x&FLAG_STATIC) {
+ if(flags && flags->flags&FLAG_STATIC) {
state->method = state->cls->static_init;
} else {
state->method = state->cls->init;
char*name = string_cstr(c->data[0]);
syntaxerror("Unresolved \"continue %s\"", name);
}
+ if(c->opcode == OPCODE___PUSHPACKAGE__) {
+ char*name = string_cstr(c->data[0]);
+ syntaxerror("Can't reference a package (%s) as such", name);
+ }
c=c->prev;
}
}
|| c->type == CONSTANT_UINT);
} else if(TYPE_IS_UINT(t)) {
xassert(c->type == CONSTANT_UINT ||
- (c->type == CONSTANT_INT && c->i>0));
+ (c->type == CONSTANT_INT && c->i>=0));
} else if(TYPE_IS_INT(t)) {
xassert(c->type == CONSTANT_INT);
} else if(TYPE_IS_BOOLEAN(t)) {
return;
if(m->flags & FLAG_FINAL)
syntaxerror("can't override final member %s", m->name);
+
+ /* allow this. it's no issue.
if((m->flags & FLAG_STATIC) && !(flags&FLAG_STATIC))
- syntaxerror("can't override static member %s", m->name);
+ 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(!(flags&FLAG_OVERRIDE) && !(flags&FLAG_STATIC) && !(m->flags&FLAG_STATIC)) {
if(m->parent && !(m->parent->flags&FLAG_INTERFACE)) {
if(m->kind == INFOTYPE_METHOD)
syntaxerror("can't override without explicit 'override' declaration");
}
}
-static methodinfo_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, modifiers_t*mod, char*name, params_t*params, classinfo_t*return_type, int slot)
{
methodinfo_t*minfo = 0;
- U8 access = flags2access(flags);
+ namespace_t ns = modifiers2access(mod);
if(!state->cls) {
//package method
- minfo = methodinfo_register_global(access, state->package, name);
- minfo->return_type = return_type;
+ minfo = methodinfo_register_global(ns.access, state->package, name);
+ minfo->return_type = 0; // save this for pass 2
} else if(getset != KW_GET && getset != KW_SET) {
//class method
- memberinfo_t* m = registry_findmember(state->cls->info, name, 0);
+ memberinfo_t* m = registry_findmember(state->cls->info, ns.name, name, 0);
if(m) {
+ printf("%s.%s | %s.%s\n",
+ m->package, m->name,
+ ns.name, name);
syntaxerror("class already contains a %s '%s'", infotypename((slotinfo_t*)m), m->name);
}
- minfo = methodinfo_register_onclass(state->cls->info, access, name);
- minfo->return_type = return_type;
+ minfo = methodinfo_register_onclass(state->cls->info, ns.access, ns.name, name);
+ minfo->return_type = 0; // save this for pass 2
// 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;
//class getter/setter
int gs = getset==KW_GET?SUBTYPE_GET:SUBTYPE_SET;
classinfo_t*type=0;
- if(getset == KW_GET)
+ if(getset == KW_GET) {
type = return_type;
- else if(params->list && params->list->param)
+ } else if(params->list && params->list->param && !params->list->next) {
type = params->list->param->type;
+ } else
+ syntaxerror("setter function needs to take exactly one argument");
// not sure wether to look into superclasses here, too
- minfo = (methodinfo_t*)registry_findmember(state->cls->info, name, 1);
+ minfo = (methodinfo_t*)registry_findmember(state->cls->info, ns.name, name, 1);
if(minfo) {
if(minfo->kind!=INFOTYPE_SLOT)
syntaxerror("class already contains a method called '%s'", name);
syntaxerror("getter/setter for '%s' already defined", name);
/* make a setter or getter into a getset */
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");
- }
+
+ /*
+ FIXME: this check needs to be done in pass 2
+
+ if((!minfo->return_type != !type) ||
+ (minfo->return_type && type &&
+ !strcmp(minfo->return_type->name, type->name))) {
+ syntaxerror("different type in getter and setter: %s and %s",
+ minfo->return_type?minfo->return_type->name:"*",
+ type?type->name:"*");
+ }*/
} else {
- minfo = methodinfo_register_onclass(state->cls->info, access, name);
+ minfo = methodinfo_register_onclass(state->cls->info, ns.access, ns.name, name);
minfo->kind = INFOTYPE_SLOT; //hack
minfo->subtype = gs;
- minfo->return_type = type;
+ minfo->return_type = 0;
}
/* 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_OVERRIDE) minfo->flags |= FLAG_OVERRIDE;
+ if(mod->flags&FLAG_FINAL) minfo->flags |= FLAG_FINAL;
+ if(mod->flags&FLAG_STATIC) minfo->flags |= FLAG_STATIC;
+ if(mod->flags&FLAG_OVERRIDE) minfo->flags |= FLAG_OVERRIDE;
+
return minfo;
}
methodstate_t*parent_method = state->method;
if(as3_pass==1) {
- // not valid yet
- params = 0;
- return_type = 0;
+ return_type = 0; // not valid in pass 1
}
new_state();
list_append(parent_method->innerfunctions, state->method);
dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, state->method);
+
+ function_initvars(state->method, params, 0, 1);
}
if(as3_pass == 2) {
state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount);
+ state->method->variable_count = 0;
parserassert(state->method);
state->method->info->return_type = return_type;
- function_initvars(state->method, params, 0);
+ function_initvars(state->method, params, 0, 1);
}
}
-static void startfunction(token_t*ns, int flags, enum yytokentype getset, char*name,
+static void startfunction(modifiers_t*mod, enum yytokentype getset, char*name,
params_t*params, classinfo_t*return_type)
{
if(state->method && state->method->info) {
syntaxerror("not able to start another method scope");
}
new_state();
+ state->new_vars = 1;
if(as3_pass == 1) {
state->method = rfx_calloc(sizeof(methodstate_t));
if(state->method->is_constructor)
name = "__as3_constructor__";
- return_type = 0;
- state->method->info = registerfunction(getset, flags, name, params, return_type, 0);
+ state->method->info = registerfunction(getset, mod, name, params, return_type, 0);
+
+ function_initvars(state->method, params, mod->flags, 1);
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);
+ state->method->variable_count = 0;
parserassert(state->method);
-
+
if(state->cls) {
- memberinfo_t*m = registry_findmember(state->cls->info, name, 2);
- check_override(m, flags);
+ memberinfo_t*m = registry_findmember(state->cls->info, mod->ns, name, 2);
+ check_override(m, mod->flags);
}
if(state->cls) {
}
state->method->info->return_type = return_type;
- function_initvars(state->method, params, flags);
+ function_initvars(state->method, params, mod->flags, 1);
}
}
-static abc_method_t* endfunction(token_t*ns, int flags, enum yytokentype getset, char*name,
+static abc_method_t* endfunction(modifiers_t*mod, enum yytokentype getset, char*name,
params_t*params, classinfo_t*return_type, code_t*body)
{
+ int flags = mod?mod->flags:0;
+
if(as3_pass==1) {
+ // store inner methods in variables
+ function_initvars(state->method, 0, 0, 0);
+
+ methodstate_list_t*ml = state->method->innerfunctions;
+
+ dict_t*xvars = dict_new();
+
+ while(ml) {
+ methodstate_t*m = ml->methodstate;
+ parserassert(m->inner);
+ if(m->unresolved_variables) {
+ dict_t*d = m->unresolved_variables;
+ int t;
+ for(t=0;t<d->hashsize;t++) {
+ dictentry_t*l = d->slots[t];
+ while(l) {
+ /* check parent method's variables */
+ variable_t*v;
+ if((v=find_variable(state, l->key))) {
+ m->uses_parent_function = 1;
+ state->method->uses_slots = 1;
+ dict_put(xvars, l->key, 0);
+ }
+ l = l->next;
+ }
+ if(l) break;
+ }
+
+ dict_destroy(m->unresolved_variables);
+ m->unresolved_variables = 0;
+ }
+ ml = ml->next;
+ }
+
+ if(state->method->uses_slots) {
+ state->method->slots = dict_new();
+ int i = 1;
+ DICT_ITERATE_ITEMS(state->vars, char*, name, variable_t*, v) {
+ if(!name) syntaxerror("internal error");
+ if(v->index && dict_contains(xvars, name)) {
+ v->init = 0;
+ v->index = i++;
+ if(v->is_inner_method) {
+ v->is_inner_method->is_a_slot = 1;
+ }
+ //v->type = 0;
+ dict_put(state->method->slots, name, v);
+ }
+ }
+ state->method->uses_slots = i;
+ dict_destroy(state->vars);state->vars = 0;
+ }
old_state();
return 0;
}
- abc_method_t*f = 0;
+ if(as3_pass==2) {
+ /*if(state->method->uses_parent_function){
+ syntaxerror("accessing variables of parent function from inner functions not supported yet");
+ }*/
- multiname_t*type2 = sig2mname(return_type);
- int slot = 0;
- 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 = {state->method->info->access, ""};
- multiname_t mname = {QNAME, &mname_ns, 0, name};
+ abc_method_t*f = 0;
- if(flags&FLAG_STATIC)
- f = abc_class_staticmethod(state->cls->abc, type2, &mname);
- else
- f = abc_class_method(state->cls->abc, type2, &mname);
- slot = f->trait->slot_id;
- } else {
- 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);
- trait_t*t = trait_new_method(&global->init->traits, multiname_clone(&mname), f);
- //abc_code_t*c = global->init->method->body->code;
- }
- //flash doesn't seem to allow us to access function slots
- //state->method->info->slot = slot;
-
- if(flags&FLAG_OVERRIDE) f->trait->attributes |= TRAIT_ATTR_OVERRIDE;
- if(getset == KW_GET) f->trait->kind = TRAIT_GETTER;
- if(getset == KW_SET) f->trait->kind = TRAIT_SETTER;
- if(params->varargs) f->flags |= METHOD_NEED_REST;
-
- char opt=0;
- param_list_t*p=0;
- for(p=params->list;p;p=p->next) {
- if(params->varargs && !p->next) {
- break; //varargs: omit last parameter in function signature
+ multiname_t*type2 = sig2mname(return_type);
+ int slot = 0;
+ 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 = {state->method->info->access, ""};
+ multiname_t mname = {QNAME, &mname_ns, 0, name};
+
+ if(flags&FLAG_STATIC)
+ f = abc_class_staticmethod(state->cls->abc, type2, &mname);
+ else
+ f = abc_class_method(state->cls->abc, type2, &mname);
+ slot = f->trait->slot_id;
+ } else {
+ 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);
+ trait_t*t = trait_new_method(&global->init->traits, multiname_clone(&mname), f);
+ //abc_code_t*c = global->init->method->body->code;
+ }
+ //flash doesn't seem to allow us to access function slots
+ //state->method->info->slot = slot;
+
+ if(flags&FLAG_OVERRIDE) f->trait->attributes |= TRAIT_ATTR_OVERRIDE;
+ if(getset == KW_GET) f->trait->kind = TRAIT_GETTER;
+ if(getset == KW_SET) f->trait->kind = TRAIT_SETTER;
+ if(params->varargs) f->flags |= METHOD_NEED_REST;
+
+ char opt=0;
+ param_list_t*p=0;
+ for(p=params->list;p;p=p->next) {
+ if(params->varargs && !p->next) {
+ break; //varargs: omit last parameter in function signature
+ }
+ multiname_t*m = sig2mname(p->param->type);
+ list_append(f->parameters, m);
+ if(p->param->value) {
+ check_constant_against_type(p->param->type, p->param->value);
+ opt=1;list_append(f->optional_parameters, p->param->value);
+ } else if(opt) {
+ syntaxerror("non-optional parameter not allowed after optional parameters");
+ }
}
- multiname_t*m = sig2mname(p->param->type);
- list_append(f->parameters, m);
- if(p->param->value) {
- check_constant_against_type(p->param->type, p->param->value);
- opt=1;list_append(f->optional_parameters, p->param->value);
- } else if(opt) {
- syntaxerror("non-optional parameter not allowed after optional parameters");
+ if(state->method->slots) {
+ DICT_ITERATE_ITEMS(state->method->slots, char*, name, variable_t*, v) {
+ if(v->index) {
+ multiname_t*mname = multiname_new(namespace_new(ACCESS_PACKAGE, ""), name);
+ multiname_t*type = sig2mname(v->type);
+ trait_t*t = trait_new_member(&f->body->traits, type, mname, 0);
+ t->slot_id = v->index;
+ }
+ }
}
- }
- check_code_for_break(body);
- if(f->body) {
- f->body->code = body;
- f->body->exceptions = state->method->exceptions;
- } else { //interface
- if(body)
- syntaxerror("interface methods can't have a method body");
+ check_code_for_break(body);
+
+ /* Seems this works now.
+ if(state->method->exceptions && state->method->uses_slots) {
+ as3_warning("try/catch and activation not supported yet within the same method");
+ }*/
+
+ if(f->body) {
+ f->body->code = body;
+ f->body->exceptions = state->method->exceptions;
+ } else { //interface
+ if(body)
+ syntaxerror("interface methods can't have a method body");
+ }
+
+ old_state();
+ return f;
}
-
- old_state();
- return f;
+
+ return 0;
}
char is_subtype_of(classinfo_t*type, classinfo_t*supertype)
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
+
+ as3_error("can't convert type %s%s%s to %s%s%s",
+ from->package, from->package?".":"", from->name,
+ to->package, to->package?".":"", to->name);
+ return c;
}
code_t*defaultvalue(code_t*c, classinfo_t*type)
return (c && !c->prev && !c->next && c->opcode == OPCODE_PUSHUNDEFINED);
}
-static slotinfo_t* find_class(char*name)
+static const char* get_package_from_name(const char*name)
+{
+ /* try explicit imports */
+ dictentry_t* e = dict_get_slot(state->imports, name);
+ while(e) {
+ if(!strcmp(e->key, name)) {
+ slotinfo_t*c = (slotinfo_t*)e->data;
+ if(c) return c->package;
+ }
+ e = e->next;
+ }
+ return 0;
+}
+static namespace_list_t*get_current_imports()
+{
+ namespace_list_t*searchlist = 0;
+
+ list_append(searchlist, namespace_new_package(state->package));
+
+ import_list_t*l = state->wildcard_imports;
+ while(l) {
+ namespace_t*ns = namespace_new_package(l->import->package);
+ list_append(searchlist, ns);
+ l = l->next;
+ }
+ list_append(searchlist, namespace_new_package(""));
+ list_append(searchlist, namespace_new_package(internal_filename_package));
+ return searchlist;
+}
+
+static slotinfo_t* find_class(const char*name)
{
slotinfo_t*c=0;
return 0;
}
+typedcode_t push_class(slotinfo_t*a)
+{
+ typedcode_t x;
+ x.c = 0;
+ x.t = 0;
+ 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), a->name, a->package, state->package);
+ }
+
+ if(a->kind != INFOTYPE_CLASS) {
+ MULTINAME(m, a);
+ x.c = abc_findpropstrict2(x.c, &m);
+ x.c = abc_getproperty2(x.c, &m);
+ if(a->kind == INFOTYPE_METHOD) {
+ methodinfo_t*f = (methodinfo_t*)a;
+ x.t = TYPE_FUNCTION(f);
+ } else {
+ varinfo_t*v = (varinfo_t*)a;
+ x.t = v->type;
+ }
+ } else {
+ classinfo_t*c = (classinfo_t*)a;
+ if(c->slot) {
+ x.c = abc_getglobalscope(x.c);
+ x.c = abc_getslot(x.c, c->slot);
+ } else {
+ MULTINAME(m, c);
+ x.c = abc_getlex2(x.c, &m);
+ }
+ x.t = TYPE_CLASS(c);
+ }
+ return x;
+}
static char is_getlocal(code_t*c)
{
} else {
prefix = 0;
}
-
+
char use_temp_var = readbefore;
/* generate the write instruction, and maybe append a dup to the prefix code */
write->opcode = OPCODE_SETLOCAL_2;
} else if(r->opcode == OPCODE_GETLOCAL_3) {
write->opcode = OPCODE_SETLOCAL_3;
+ } else if(r->opcode == OPCODE_GETSUPER) {
+ write->opcode = OPCODE_SETSUPER;
+ multiname_t*m = (multiname_t*)r->data[0];
+ write->data[0] = multiname_clone(m);
} else {
code_dump(r);
syntaxerror("illegal lvalue: can't assign a value to this expression");
int lookup_version_cost = 4*num_insertion_points + 5;
if(cantdup || simple_version_cost > lookup_version_cost) {
- printf("lookup %d > *%d*\n", simple_version_cost, lookup_version_cost);
+ //printf("(use lookup) simple=%d > lookup=%d\n", simple_version_cost, lookup_version_cost);
return insert_finally_lookup(c, finally, tempvar);
} else {
- printf("simple *%d* < %d\n", simple_version_cost, lookup_version_cost);
+ //printf("(use simple) simple=%d < lookup=%d\n", simple_version_cost, lookup_version_cost);
return insert_finally_simple(c, finally, tempvar);
}
}
/* Line 273 of skeleton.m4 */
-#line 1767 "parser.tab.c"
+#line 2093 "parser.tab.c"
#ifdef short
# undef short
#endif
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 145
+#define YYFINAL 146
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2994
+#define YYLAST 3061
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 134
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 110
+#define YYNNTS 114
/* YYNRULES -- Number of rules. */
-#define YYNRULES 303
+#define YYNRULES 308
/* YYNRULES -- Number of states. */
-#define YYNSTATES 514
+#define YYNSTATES 520
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
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, 91, 94, 96, 98, 100, 102, 104, 106,
- 108, 113, 115, 118, 120, 122, 126, 129, 130, 133,
+ 85, 87, 89, 93, 96, 98, 100, 102, 104, 106,
+ 108, 110, 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, 443, 450, 451, 454, 456, 458, 460, 462, 464,
- 466, 468, 470, 472, 473, 475, 478, 483, 487, 489,
- 494, 497, 499, 501, 502, 503, 516, 518, 519, 520,
- 531, 533, 537, 539, 541, 543, 547, 549, 551, 553,
- 556, 557, 558, 562, 563, 565, 567, 569, 572, 575,
- 576, 581, 586, 591, 594, 596, 599, 601, 603, 607,
- 609, 611, 613, 615, 617, 619, 621, 623, 625, 627,
- 629, 631, 633, 635, 637, 639, 641, 643, 647, 651,
- 655, 659, 663, 667, 671, 675, 679, 683, 686, 689,
- 693, 697, 701, 705, 709, 713, 717, 721, 725, 729,
- 733, 737, 741, 745, 749, 754, 757, 759, 763, 766,
- 771, 775, 776, 778, 782, 788, 792, 796, 800, 804,
- 808, 812, 816, 820, 824, 828, 832, 836, 842, 845,
- 848, 851, 854, 858, 861, 866, 872, 876, 882, 886,
- 888, 892, 898, 904
+ 275, 277, 280, 282, 283, 290, 293, 295, 300, 303,
+ 305, 307, 311, 313, 314, 321, 322, 328, 331, 336,
+ 337, 339, 341, 344, 346, 348, 350, 352, 354, 356,
+ 358, 360, 362, 364, 365, 368, 369, 372, 373, 376,
+ 377, 387, 388, 397, 398, 400, 402, 405, 407, 412,
+ 414, 416, 418, 419, 421, 423, 426, 428, 431, 440,
+ 442, 444, 445, 450, 452, 456, 460, 461, 464, 466,
+ 468, 470, 472, 474, 476, 478, 480, 482, 483, 485,
+ 488, 493, 497, 499, 504, 507, 509, 511, 512, 513,
+ 526, 528, 529, 530, 541, 543, 547, 549, 551, 553,
+ 557, 559, 561, 563, 566, 567, 568, 572, 573, 575,
+ 577, 579, 582, 585, 586, 591, 596, 601, 604, 606,
+ 609, 611, 613, 617, 619, 621, 623, 625, 627, 629,
+ 631, 633, 635, 637, 639, 641, 643, 645, 647, 649,
+ 651, 653, 657, 661, 665, 669, 673, 677, 681, 685,
+ 689, 693, 696, 699, 703, 707, 711, 715, 719, 723,
+ 727, 731, 735, 739, 743, 747, 751, 755, 759, 764,
+ 767, 769, 773, 776, 781, 785, 786, 788, 792, 798,
+ 802, 806, 810, 814, 818, 822, 826, 830, 834, 838,
+ 842, 846, 852, 855, 858, 861, 864, 868, 871, 876,
+ 882, 886, 892, 896, 898, 901, 906, 911, 914
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int16 yyrhs[] =
{
135, 0, -1, 136, -1, -1, 137, -1, 138, -1,
- 137, 138, -1, 185, -1, 197, -1, 195, -1, 214,
- -1, 206, -1, 147, -1, 148, 126, 136, 132, -1,
+ 137, 138, -1, 186, -1, 198, -1, 196, -1, 217,
+ -1, 207, -1, 147, -1, 148, 126, 136, 132, -1,
99, -1, -1, 140, -1, 141, -1, 140, 141, -1,
- 197, -1, 195, -1, 214, -1, 206, -1, 147, -1,
+ 198, -1, 196, -1, 217, -1, 207, -1, 147, -1,
148, 126, 139, 132, -1, 99, -1, 143, -1, -1,
- 143, 145, -1, 145, -1, 188, -1, 159, -1, 160,
- -1, 161, -1, 163, -1, 171, -1, 154, -1, 182,
- -1, 179, -1, 236, -1, 243, -1, 126, 143, 132,
- -1, 126, 132, -1, 99, -1, 144, -1, 150, -1,
- 165, -1, 166, -1, 233, -1, 181, -1, 148, 126,
- 143, 132, -1, 242, -1, 145, 99, -1, 145, -1,
- 144, -1, 3, 89, 3, -1, 102, 234, -1, -1,
+ 143, 145, -1, 145, -1, 189, -1, 159, -1, 160,
+ -1, 161, -1, 163, -1, 171, -1, 154, -1, 183,
+ -1, 179, -1, 239, -1, 247, -1, 246, -1, 126,
+ 143, 132, -1, 126, 132, -1, 99, -1, 144, -1,
+ 150, -1, 165, -1, 166, -1, 236, -1, 181, -1,
+ 148, 126, 143, 132, -1, 145, 99, -1, 145, -1,
+ 144, -1, 3, 89, 3, -1, 102, 237, -1, -1,
46, 151, -1, 32, 151, -1, 152, -1, 151, 100,
- 152, -1, 3, 224, 149, -1, -1, 65, 146, -1,
- -1, 64, 122, 155, 235, 133, 146, 153, -1, -1,
- 150, -1, 236, -1, 46, 3, 224, -1, 3, -1,
+ 152, -1, 3, 227, 149, -1, -1, 65, 146, -1,
+ -1, 64, 122, 155, 238, 133, 146, 153, -1, -1,
+ 150, -1, 239, -1, 46, 3, 227, -1, 3, -1,
13, 122, -1, 13, 50, 122, -1, 158, 156, 99,
- 235, 99, 236, 133, 146, -1, 158, 157, 68, 235,
- 133, 146, -1, -1, 14, 122, 162, 235, 133, 146,
- -1, -1, 15, 164, 146, 14, 122, 235, 133, -1,
+ 238, 99, 239, 133, 146, -1, 158, 157, 68, 238,
+ 133, 146, -1, -1, 14, 122, 162, 238, 133, 146,
+ -1, -1, 15, 164, 146, 14, 122, 238, 133, -1,
66, -1, 66, 3, -1, 30, -1, 30, 3, -1,
-1, 168, -1, 170, -1, 168, 170, -1, 169, -1,
- 168, 169, -1, 34, 237, 105, 142, -1, 62, 105,
- 142, -1, -1, 16, 122, 172, 237, 133, 126, 167,
- 132, -1, -1, 33, 122, 3, 224, 133, 174, 126,
+ 168, 169, -1, 34, 240, 105, 142, -1, 62, 105,
+ 142, -1, -1, 16, 122, 172, 240, 133, 126, 167,
+ 132, -1, -1, 33, 122, 3, 227, 133, 174, 126,
142, 132, -1, -1, 28, 126, 176, 142, 132, -1,
173, -1, 177, 173, -1, 177, -1, 177, 175, -1,
175, -1, -1, 52, 126, 180, 142, 132, 178, -1,
- 37, 235, -1, 37, -1, 39, 122, 235, 133, 146,
- -1, 3, -1, 19, -1, 184, 127, 183, -1, 183,
- -1, -1, 19, 184, 126, 186, 139, 132, -1, -1,
- 19, 126, 187, 139, 132, -1, 41, 220, -1, 41,
- 184, 127, 115, -1, -1, 190, -1, 191, -1, 190,
- 191, -1, 21, -1, 22, -1, 20, -1, 38, -1,
- 47, -1, 49, -1, 48, -1, 26, -1, 24, -1,
- 4, -1, -1, 54, 221, -1, -1, 54, 222, -1,
- -1, 17, 222, -1, -1, 189, 31, 3, 192, 194,
- 126, 196, 199, 132, -1, -1, 189, 44, 3, 193,
- 126, 198, 202, 132, -1, -1, 200, -1, 201, -1,
- 200, 201, -1, 99, -1, 148, 126, 199, 132, -1,
- 206, -1, 214, -1, 144, -1, -1, 203, -1, 204,
- -1, 203, 204, -1, 99, -1, 46, 3, -1, 189,
- 27, 213, 3, 122, 210, 133, 224, -1, 46, -1,
- 32, -1, -1, 189, 205, 3, 207, 224, 149, -1,
- -1, 102, 209, -1, 10, -1, 8, -1, 9, -1,
+ 37, 238, -1, 37, -1, 39, 122, 238, 133, -1,
+ 182, 146, -1, 3, -1, 19, -1, 185, 127, 184,
+ -1, 184, -1, -1, 19, 185, 126, 187, 139, 132,
+ -1, -1, 19, 126, 188, 139, 132, -1, 41, 223,
+ -1, 41, 185, 127, 115, -1, -1, 191, -1, 192,
+ -1, 191, 192, -1, 21, -1, 22, -1, 20, -1,
+ 38, -1, 47, -1, 49, -1, 48, -1, 26, -1,
+ 24, -1, 4, -1, -1, 54, 224, -1, -1, 54,
+ 225, -1, -1, 17, 225, -1, -1, 190, 31, 3,
+ 193, 195, 126, 197, 200, 132, -1, -1, 190, 44,
+ 3, 194, 126, 199, 203, 132, -1, -1, 201, -1,
+ 202, -1, 201, 202, -1, 99, -1, 148, 126, 200,
+ 132, -1, 207, -1, 217, -1, 144, -1, -1, 204,
+ -1, 205, -1, 204, 205, -1, 99, -1, 46, 3,
+ -1, 190, 27, 216, 3, 122, 213, 133, 227, -1,
+ 46, -1, 32, -1, -1, 190, 206, 208, 209, -1,
+ 210, -1, 209, 100, 210, -1, 3, 227, 149, -1,
+ -1, 102, 212, -1, 10, -1, 8, -1, 9, -1,
12, -1, 5, -1, 56, -1, 55, -1, 45, -1,
- 3, -1, -1, 211, -1, 93, 212, -1, 211, 100,
- 93, 212, -1, 211, 100, 212, -1, 212, -1, 3,
- 105, 223, 208, -1, 3, 208, -1, 51, -1, 35,
- -1, -1, -1, 189, 27, 213, 3, 122, 210, 133,
- 224, 126, 215, 142, 132, -1, 3, -1, -1, -1,
- 27, 216, 122, 210, 133, 224, 126, 218, 142, 132,
- -1, 3, -1, 184, 127, 3, -1, 220, -1, 219,
- -1, 221, -1, 222, 100, 221, -1, 221, -1, 115,
- -1, 36, -1, 105, 223, -1, -1, -1, 122, 226,
- 133, -1, -1, 227, -1, 228, -1, 234, -1, 227,
- 100, -1, 228, 234, -1, -1, 25, 237, 229, 225,
- -1, 237, 122, 226, 133, -1, 53, 122, 226, 133,
- -1, 63, 237, -1, 42, -1, 42, 235, -1, 237,
- -1, 237, -1, 235, 100, 237, -1, 235, -1, 217,
- -1, 238, -1, 241, -1, 230, -1, 232, -1, 231,
+ 3, -1, -1, 214, -1, 93, 215, -1, 214, 100,
+ 93, 215, -1, 214, 100, 215, -1, 215, -1, 3,
+ 105, 226, 211, -1, 3, 211, -1, 51, -1, 35,
+ -1, -1, -1, 190, 27, 216, 3, 122, 213, 133,
+ 227, 126, 218, 142, 132, -1, 3, -1, -1, -1,
+ 27, 219, 122, 213, 133, 227, 126, 221, 142, 132,
+ -1, 3, -1, 185, 127, 3, -1, 223, -1, 222,
+ -1, 224, -1, 225, 100, 224, -1, 224, -1, 115,
+ -1, 36, -1, 105, 226, -1, -1, -1, 122, 229,
+ 133, -1, -1, 230, -1, 231, -1, 237, -1, 230,
+ 100, -1, 231, 237, -1, -1, 25, 240, 232, 228,
+ -1, 240, 122, 229, 133, -1, 53, 122, 229, 133,
+ -1, 63, 240, -1, 42, -1, 42, 238, -1, 240,
+ -1, 240, -1, 238, 100, 240, -1, 238, -1, 220,
+ -1, 241, -1, 244, -1, 233, -1, 235, -1, 234,
-1, 6, -1, 10, -1, 11, -1, 8, -1, 9,
-1, 12, -1, 5, -1, 29, -1, 56, -1, 55,
- -1, 45, -1, 237, 109, 237, -1, 237, 110, 237,
- -1, 237, 75, 237, -1, 237, 76, 237, -1, 237,
- 71, 237, -1, 237, 72, 237, -1, 237, 74, 237,
- -1, 237, 73, 237, -1, 237, 87, 237, -1, 237,
- 88, 237, -1, 118, 237, -1, 117, 237, -1, 237,
- 108, 237, -1, 237, 107, 237, -1, 237, 106, 237,
- -1, 237, 96, 237, -1, 237, 95, 237, -1, 237,
- 94, 237, -1, 237, 114, 237, -1, 237, 116, 237,
- -1, 237, 113, 237, -1, 237, 112, 237, -1, 237,
- 115, 237, -1, 237, 68, 237, -1, 237, 69, 237,
- -1, 237, 40, 237, -1, 237, 67, 237, -1, 43,
- 122, 237, 133, -1, 36, 237, -1, 36, -1, 122,
- 235, 133, -1, 112, 237, -1, 237, 124, 237, 125,
- -1, 124, 226, 125, -1, -1, 240, -1, 234, 105,
- 234, -1, 240, 100, 234, 105, 234, -1, 70, 239,
- 132, -1, 237, 80, 237, -1, 237, 79, 237, -1,
- 237, 85, 237, -1, 237, 84, 237, -1, 237, 86,
- 237, -1, 237, 78, 237, -1, 237, 77, 237, -1,
- 237, 83, 237, -1, 237, 81, 237, -1, 237, 82,
- 237, -1, 237, 102, 237, -1, 237, 104, 237, 105,
- 237, -1, 237, 91, -1, 237, 90, -1, 91, 237,
- -1, 90, 237, -1, 53, 127, 3, -1, 128, 3,
- -1, 237, 127, 128, 3, -1, 237, 127, 3, 89,
- 3, -1, 237, 92, 3, -1, 237, 127, 122, 237,
- 133, -1, 237, 127, 3, -1, 3, -1, 189, 18,
- 3, -1, 189, 18, 3, 102, 3, -1, 189, 18,
- 3, 102, 5, -1, 23, 18, 3, -1
+ -1, 45, -1, 240, 109, 240, -1, 240, 110, 240,
+ -1, 240, 75, 240, -1, 240, 76, 240, -1, 240,
+ 71, 240, -1, 240, 72, 240, -1, 240, 74, 240,
+ -1, 240, 73, 240, -1, 240, 87, 240, -1, 240,
+ 88, 240, -1, 118, 240, -1, 117, 240, -1, 240,
+ 108, 240, -1, 240, 107, 240, -1, 240, 106, 240,
+ -1, 240, 96, 240, -1, 240, 95, 240, -1, 240,
+ 94, 240, -1, 240, 114, 240, -1, 240, 116, 240,
+ -1, 240, 113, 240, -1, 240, 112, 240, -1, 240,
+ 115, 240, -1, 240, 68, 240, -1, 240, 69, 240,
+ -1, 240, 40, 240, -1, 240, 67, 240, -1, 43,
+ 122, 240, 133, -1, 36, 240, -1, 36, -1, 122,
+ 238, 133, -1, 112, 240, -1, 240, 124, 240, 125,
+ -1, 124, 229, 125, -1, -1, 243, -1, 237, 105,
+ 237, -1, 243, 100, 237, 105, 237, -1, 70, 242,
+ 132, -1, 240, 80, 240, -1, 240, 79, 240, -1,
+ 240, 85, 240, -1, 240, 84, 240, -1, 240, 86,
+ 240, -1, 240, 78, 240, -1, 240, 77, 240, -1,
+ 240, 83, 240, -1, 240, 81, 240, -1, 240, 82,
+ 240, -1, 240, 102, 240, -1, 240, 104, 240, 105,
+ 240, -1, 240, 91, -1, 240, 90, -1, 91, 240,
+ -1, 90, 240, -1, 53, 127, 3, -1, 128, 3,
+ -1, 240, 127, 128, 3, -1, 240, 127, 3, 89,
+ 3, -1, 240, 92, 3, -1, 240, 127, 122, 240,
+ 133, -1, 240, 127, 3, -1, 3, -1, 18, 3,
+ -1, 18, 3, 102, 3, -1, 18, 3, 102, 5,
+ -1, 190, 245, -1, 23, 18, 224, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 1742, 1742, 1744, 1744, 1745, 1746, 1748, 1749, 1750,
- 1751, 1752, 1753, 1754, 1755, 1757, 1757, 1758, 1759, 1761,
- 1762, 1763, 1764, 1765, 1766, 1767, 1769, 1770, 1772, 1773,
- 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
- 1786, 1787, 1788, 1791, 1792, 1793, 1794, 1795, 1796, 1797,
- 1798, 1800, 1804, 1805, 1809, 1816, 1820, 1821, 1825, 1826,
- 1828, 1829, 1831, 1874, 1875, 1878, 1878, 1897, 1898, 1899,
- 1904, 1907, 1911, 1912, 1914, 1934, 1977, 1977, 1996, 1996,
- 2011, 2014, 2017, 2020, 2024, 2025, 2026, 2027, 2028, 2029,
- 2031, 2042, 2045, 2045, 2074, 2074, 2094, 2094, 2111, 2112,
- 2113, 2114, 2122, 2131, 2131, 2176, 2180, 2191, 2200, 2201,
- 2203, 2204, 2206, 2206, 2208, 2208, 2211, 2225, 2241, 2242,
- 2243, 2244, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253,
- 2254, 2255, 2257, 2258, 2260, 2261, 2263, 2264, 2268, 2266,
- 2274, 2272, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287,
- 2289, 2295, 2296, 2297, 2298, 2299, 2300, 2303, 2316, 2316,
- 2318, 2318, 2391, 2392, 2394, 2395, 2396, 2397, 2398, 2400,
- 2401, 2402, 2403, 2412, 2416, 2422, 2428, 2436, 2441, 2447,
- 2455, 2463, 2464, 2465, 2468, 2467, 2482, 2483, 2485, 2484,
- 2506, 2515, 2528, 2529, 2531, 2532, 2534, 2535, 2536, 2545,
- 2546, 2550, 2551, 2553, 2554, 2555, 2557, 2561, 2562, 2567,
- 2568, 2604, 2650, 2671, 2692, 2695, 2702, 2703, 2704, 2710,
- 2716, 2718, 2720, 2722, 2724, 2726, 2728, 2745, 2750, 2753,
- 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2778, 2781, 2784,
- 2787, 2790, 2793, 2796, 2799, 2803, 2814, 2832, 2837, 2842,
- 2847, 2852, 2857, 2861, 2865, 2870, 2874, 2878, 2887, 2896,
- 2906, 2911, 2923, 2929, 2934, 2940, 2946, 2950, 2952, 2963,
- 2972, 2979, 2980, 2982, 2988, 2997, 3004, 3016, 3022, 3028,
- 3034, 3040, 3046, 3052, 3058, 3071, 3082, 3089, 3102, 3129,
- 3143, 3157, 3171, 3186, 3193, 3200, 3207, 3214, 3225, 3259,
- 3361, 3362, 3363, 3365
+ 0, 2071, 2071, 2073, 2073, 2074, 2075, 2077, 2078, 2079,
+ 2080, 2081, 2082, 2083, 2084, 2086, 2086, 2087, 2088, 2090,
+ 2091, 2092, 2093, 2094, 2095, 2096, 2098, 2099, 2101, 2102,
+ 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114,
+ 2115, 2116, 2117, 2118, 2121, 2122, 2123, 2124, 2125, 2126,
+ 2127, 2128, 2132, 2133, 2137, 2144, 2148, 2149, 2153, 2154,
+ 2156, 2157, 2159, 2220, 2221, 2224, 2224, 2243, 2244, 2245,
+ 2250, 2254, 2259, 2260, 2262, 2282, 2330, 2330, 2349, 2349,
+ 2364, 2367, 2370, 2373, 2377, 2378, 2379, 2380, 2381, 2382,
+ 2384, 2395, 2398, 2398, 2429, 2429, 2454, 2454, 2470, 2471,
+ 2472, 2473, 2481, 2490, 2490, 2539, 2543, 2554, 2564, 2581,
+ 2582, 2584, 2585, 2587, 2587, 2589, 2589, 2592, 2608, 2625,
+ 2626, 2627, 2628, 2636, 2637, 2638, 2639, 2640, 2641, 2642,
+ 2643, 2644, 2645, 2649, 2650, 2652, 2653, 2655, 2656, 2660,
+ 2658, 2666, 2664, 2673, 2674, 2675, 2676, 2677, 2678, 2679,
+ 2680, 2682, 2688, 2689, 2690, 2691, 2692, 2693, 2696, 2709,
+ 2709, 2711, 2711, 2713, 2714, 2716, 2791, 2792, 2794, 2795,
+ 2796, 2797, 2798, 2800, 2801, 2802, 2803, 2815, 2819, 2825,
+ 2831, 2839, 2844, 2850, 2858, 2866, 2867, 2868, 2871, 2870,
+ 2887, 2888, 2890, 2889, 2913, 2932, 2946, 2947, 2949, 2950,
+ 2952, 2953, 2954, 2963, 2964, 2968, 2969, 2971, 2972, 2973,
+ 2975, 2979, 2980, 2985, 2986, 3022, 3068, 3089, 3110, 3113,
+ 3120, 3121, 3122, 3128, 3134, 3136, 3138, 3140, 3142, 3144,
+ 3146, 3163, 3168, 3171, 3174, 3177, 3180, 3183, 3186, 3189,
+ 3192, 3196, 3199, 3202, 3205, 3208, 3211, 3214, 3217, 3221,
+ 3232, 3250, 3255, 3260, 3265, 3270, 3275, 3279, 3283, 3288,
+ 3292, 3296, 3305, 3314, 3324, 3329, 3341, 3347, 3352, 3358,
+ 3364, 3368, 3370, 3381, 3390, 3397, 3398, 3400, 3406, 3415,
+ 3422, 3434, 3440, 3446, 3452, 3458, 3464, 3470, 3476, 3489,
+ 3500, 3507, 3520, 3547, 3561, 3575, 3589, 3604, 3611, 3618,
+ 3625, 3632, 3643, 3693, 3798, 3805, 3812, 3819, 3826
};
#endif
"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",
+ "CATCH_LIST", "CATCH_FINALLY_LIST", "TRY", "$@7", "THROW", "WITH_HEAD",
+ "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", "$@12",
- "MAYBESTATICCONSTANT", "STATICCONSTANT", "MAYBE_PARAM_LIST",
+ "IDECLARATION", "VARCONST", "SLOT_DECLARATION", "$@12", "SLOT_LIST",
+ "ONE_SLOT", "MAYBESTATICCONSTANT", "STATICCONSTANT", "MAYBE_PARAM_LIST",
"PARAM_LIST", "PARAM", "GETSET", "FUNCTION_DECLARATION", "$@13",
"MAYBE_IDENTIFIER", "INNERFUNCTION", "$@14", "CLASS", "PACKAGEANDCLASS",
"CLASS_SPEC", "CLASS_SPEC_LIST", "TYPE", "MAYBETYPE",
"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
+ "NAMESPACE_ID", "NAMESPACE_DECLARATION", "USE_NAMESPACE", 0
};
#endif
138, 138, 138, 138, 138, 139, 139, 140, 140, 141,
141, 141, 141, 141, 141, 141, 142, 142, 143, 143,
144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 145, 145, 145, 145, 145, 145, 145,
+ 144, 144, 144, 144, 145, 145, 145, 145, 145, 145,
145, 145, 146, 146, 147, 148, 149, 149, 150, 150,
151, 151, 152, 153, 153, 155, 154, 156, 156, 156,
157, 157, 158, 158, 159, 160, 162, 161, 164, 163,
165, 165, 166, 166, 167, 167, 167, 167, 168, 168,
169, 170, 172, 171, 174, 173, 176, 175, 177, 177,
- 178, 178, 178, 180, 179, 181, 181, 182, 183, 183,
- 184, 184, 186, 185, 187, 185, 188, 188, 189, 189,
- 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
- 191, 191, 192, 192, 193, 193, 194, 194, 196, 195,
- 198, 197, 199, 199, 200, 200, 201, 201, 201, 201,
- 201, 202, 202, 203, 203, 204, 204, 204, 205, 205,
- 207, 206, 208, 208, 209, 209, 209, 209, 209, 209,
- 209, 209, 209, 210, 210, 210, 210, 211, 211, 212,
- 212, 213, 213, 213, 215, 214, 216, 216, 218, 217,
- 219, 220, 221, 221, 222, 222, 223, 223, 223, 224,
- 224, 225, 225, 226, 226, 226, 227, 228, 227, 229,
- 230, 231, 231, 232, 233, 233, 234, 235, 235, 236,
- 237, 237, 237, 237, 237, 237, 237, 238, 238, 238,
- 238, 238, 238, 238, 238, 238, 238, 237, 237, 237,
- 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
- 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
- 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
- 237, 239, 239, 240, 240, 237, 237, 237, 237, 237,
- 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
- 237, 237, 237, 237, 237, 237, 237, 237, 237, 241,
- 242, 242, 242, 243
+ 178, 178, 178, 180, 179, 181, 181, 182, 183, 184,
+ 184, 185, 185, 187, 186, 188, 186, 189, 189, 190,
+ 190, 191, 191, 192, 192, 192, 192, 192, 192, 192,
+ 192, 192, 192, 193, 193, 194, 194, 195, 195, 197,
+ 196, 199, 198, 200, 200, 201, 201, 202, 202, 202,
+ 202, 202, 203, 203, 204, 204, 205, 205, 205, 206,
+ 206, 208, 207, 209, 209, 210, 211, 211, 212, 212,
+ 212, 212, 212, 212, 212, 212, 212, 213, 213, 213,
+ 213, 214, 214, 215, 215, 216, 216, 216, 218, 217,
+ 219, 219, 221, 220, 222, 223, 224, 224, 225, 225,
+ 226, 226, 226, 227, 227, 228, 228, 229, 229, 229,
+ 230, 231, 230, 232, 233, 234, 234, 235, 236, 236,
+ 237, 238, 238, 239, 240, 240, 240, 240, 240, 240,
+ 240, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+ 241, 240, 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 240, 240, 240, 240, 242, 242, 243, 243, 240,
+ 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 240, 240, 244, 245, 245, 245, 246, 247
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
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, 3, 2, 1, 1, 1, 1, 1, 1, 1,
- 4, 1, 2, 1, 1, 3, 2, 0, 2, 2,
+ 1, 1, 3, 2, 1, 1, 1, 1, 1, 1,
+ 1, 4, 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,
- 0, 6, 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, 2, 1, 0, 6, 2, 1, 4, 2, 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, 0, 4, 1, 3, 3, 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,
- 1, 1, 1, 1, 1, 1, 1, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 2, 2, 3,
+ 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, 3, 4, 2,
+ 1, 3, 2, 4, 3, 0, 1, 3, 5, 3,
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, 3, 5, 2, 2,
- 2, 2, 3, 2, 4, 5, 3, 5, 3, 1,
- 3, 5, 5, 3
+ 3, 5, 2, 2, 2, 2, 3, 2, 4, 5,
+ 3, 5, 3, 1, 2, 4, 4, 2, 3
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 118, 299, 131, 232, 226, 229, 230, 227, 228, 231,
- 0, 0, 78, 0, 0, 124, 122, 123, 0, 130,
- 0, 129, 187, 233, 266, 125, 0, 0, 0, 236,
- 126, 128, 127, 0, 0, 235, 234, 0, 0, 271,
- 0, 0, 14, 0, 0, 0, 0, 203, 118, 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, 220, 223, 225, 224, 219,
- 39, 217, 221, 222, 40, 0, 0, 72, 76, 118,
- 92, 108, 109, 114, 111, 0, 0, 299, 209, 186,
- 0, 265, 0, 0, 116, 0, 103, 203, 0, 213,
- 65, 0, 216, 0, 272, 291, 290, 268, 248, 247,
- 0, 0, 204, 205, 206, 82, 0, 106, 214, 0,
- 80, 43, 42, 118, 44, 29, 0, 45, 46, 47,
- 49, 0, 48, 51, 293, 1, 6, 118, 299, 0,
- 68, 0, 0, 69, 183, 0, 159, 0, 158, 0,
- 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 119, 303, 132, 236, 230, 233, 234, 231, 232, 235,
+ 0, 0, 78, 0, 0, 125, 123, 124, 0, 131,
+ 0, 130, 191, 237, 270, 126, 0, 0, 0, 240,
+ 127, 129, 128, 0, 0, 239, 238, 0, 0, 275,
+ 0, 0, 14, 0, 0, 0, 0, 207, 119, 0,
+ 0, 2, 119, 5, 54, 12, 0, 36, 67, 31,
+ 32, 33, 34, 35, 38, 119, 37, 7, 30, 0,
+ 120, 121, 9, 8, 11, 10, 224, 227, 229, 228,
+ 223, 39, 221, 225, 226, 41, 40, 0, 0, 72,
+ 76, 119, 92, 109, 110, 115, 112, 0, 0, 303,
+ 213, 190, 0, 269, 0, 0, 117, 0, 103, 207,
+ 0, 217, 65, 0, 220, 0, 276, 295, 294, 272,
+ 252, 251, 0, 0, 208, 209, 210, 82, 0, 106,
+ 218, 0, 80, 44, 43, 119, 45, 29, 0, 46,
+ 47, 48, 50, 0, 49, 297, 1, 6, 119, 303,
+ 0, 68, 0, 0, 69, 53, 108, 0, 187, 0,
+ 160, 0, 159, 161, 307, 122, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 289, 288, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 203, 0, 0, 55, 73, 0, 53, 0,
- 0, 118, 112, 0, 303, 201, 173, 0, 0, 0,
- 27, 0, 292, 0, 0, 275, 0, 267, 270, 207,
- 208, 83, 200, 59, 60, 105, 215, 58, 81, 41,
- 28, 118, 0, 0, 200, 0, 0, 182, 181, 0,
- 132, 134, 160, 218, 262, 263, 260, 261, 241, 242,
- 244, 243, 239, 240, 282, 281, 277, 276, 284, 285,
- 283, 279, 278, 280, 245, 246, 296, 254, 253, 252,
- 286, 0, 251, 250, 249, 237, 238, 258, 257, 255,
- 259, 256, 0, 0, 298, 0, 0, 0, 52, 0,
- 0, 25, 0, 118, 17, 23, 0, 20, 19, 22,
- 21, 118, 110, 203, 210, 162, 0, 0, 174, 178,
- 118, 191, 117, 264, 0, 26, 212, 0, 273, 0,
- 0, 57, 0, 118, 300, 13, 57, 0, 0, 0,
- 0, 136, 0, 0, 200, 0, 211, 269, 0, 0,
- 294, 118, 0, 0, 115, 18, 118, 0, 0, 0,
- 0, 180, 175, 200, 0, 107, 0, 118, 0, 190,
- 198, 197, 0, 193, 192, 196, 199, 0, 62, 61,
- 50, 0, 0, 118, 173, 133, 0, 0, 194, 135,
- 140, 57, 287, 295, 297, 77, 0, 84, 0, 113,
- 202, 172, 168, 165, 166, 164, 167, 171, 170, 169,
- 163, 162, 0, 0, 177, 0, 0, 98, 102, 100,
- 104, 63, 274, 0, 56, 301, 302, 0, 75, 0,
- 137, 138, 0, 118, 161, 79, 0, 0, 0, 85,
- 88, 86, 24, 179, 188, 176, 96, 0, 99, 101,
- 118, 66, 118, 200, 118, 195, 0, 155, 0, 0,
- 118, 153, 0, 27, 93, 89, 87, 27, 27, 200,
- 64, 74, 0, 146, 150, 0, 0, 0, 118, 144,
- 148, 149, 156, 183, 141, 154, 27, 91, 0, 0,
- 0, 184, 118, 139, 145, 0, 90, 189, 97, 94,
- 27, 0, 0, 0, 0, 147, 173, 27, 185, 0,
- 0, 200, 95, 157
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 293,
+ 292, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 207, 0, 0,
+ 55, 73, 0, 0, 0, 119, 113, 0, 194, 0,
+ 197, 196, 308, 205, 177, 0, 0, 0, 27, 0,
+ 296, 0, 0, 279, 0, 271, 274, 211, 212, 83,
+ 204, 59, 60, 105, 219, 58, 81, 42, 28, 119,
+ 0, 204, 0, 0, 52, 304, 186, 185, 0, 133,
+ 135, 0, 222, 266, 267, 264, 265, 245, 246, 248,
+ 247, 243, 244, 286, 285, 281, 280, 288, 289, 287,
+ 283, 282, 284, 249, 250, 300, 258, 257, 256, 290,
+ 0, 255, 254, 253, 241, 242, 262, 261, 259, 263,
+ 260, 0, 0, 302, 0, 0, 0, 0, 0, 25,
+ 0, 119, 17, 23, 0, 20, 19, 22, 21, 119,
+ 111, 0, 207, 214, 166, 0, 0, 178, 182, 107,
+ 195, 118, 268, 0, 26, 216, 0, 277, 0, 0,
+ 57, 0, 119, 13, 57, 0, 0, 0, 0, 0,
+ 137, 0, 0, 204, 162, 163, 0, 215, 273, 0,
+ 0, 298, 119, 0, 0, 116, 18, 119, 0, 0,
+ 0, 0, 184, 179, 204, 0, 0, 119, 0, 202,
+ 201, 200, 203, 0, 62, 61, 51, 0, 119, 305,
+ 306, 177, 134, 0, 0, 198, 136, 141, 57, 0,
+ 291, 299, 301, 77, 0, 84, 0, 114, 206, 176,
+ 172, 169, 170, 168, 171, 175, 174, 173, 167, 166,
+ 0, 0, 181, 0, 0, 98, 102, 100, 104, 63,
+ 278, 56, 0, 75, 0, 138, 139, 0, 119, 165,
+ 164, 79, 0, 0, 0, 85, 88, 86, 24, 183,
+ 192, 180, 96, 0, 99, 101, 119, 66, 119, 204,
+ 119, 199, 0, 156, 0, 0, 119, 154, 0, 27,
+ 93, 89, 87, 27, 27, 204, 64, 74, 0, 147,
+ 151, 0, 0, 0, 119, 145, 149, 150, 157, 187,
+ 142, 155, 27, 91, 0, 0, 0, 188, 119, 140,
+ 146, 0, 90, 193, 97, 94, 27, 0, 0, 0,
+ 0, 148, 177, 27, 189, 0, 0, 204, 95, 158
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 50, 51, 52, 53, 302, 303, 304, 324, 325,
- 134, 135, 209, 305, 136, 378, 137, 237, 234, 451,
- 57, 223, 151, 152, 58, 59, 60, 61, 207, 62,
- 89, 138, 139, 438, 439, 440, 441, 63, 210, 417,
- 503, 418, 468, 419, 420, 64, 220, 140, 65, 94,
- 372, 66, 311, 211, 67, 141, 69, 70, 341, 343,
- 387, 307, 454, 308, 433, 477, 478, 479, 459, 460,
- 461, 159, 309, 344, 361, 410, 317, 318, 319, 249,
- 310, 500, 100, 75, 467, 373, 374, 375, 389, 376,
- 331, 314, 121, 122, 123, 215, 76, 77, 78, 142,
- 124, 79, 80, 81, 82, 113, 114, 83, 143, 84
+ -1, 50, 51, 52, 53, 310, 311, 312, 333, 334,
+ 136, 137, 156, 313, 138, 384, 139, 245, 242, 457,
+ 57, 231, 152, 153, 58, 59, 60, 61, 212, 62,
+ 91, 140, 141, 444, 445, 446, 447, 63, 214, 425,
+ 509, 426, 474, 427, 428, 64, 228, 142, 65, 66,
+ 96, 219, 67, 319, 215, 68, 143, 70, 71, 350,
+ 352, 394, 315, 460, 316, 438, 483, 484, 485, 465,
+ 466, 467, 163, 317, 261, 354, 355, 372, 418, 326,
+ 327, 328, 258, 318, 506, 102, 76, 473, 220, 221,
+ 381, 396, 382, 340, 323, 123, 124, 125, 223, 77,
+ 78, 79, 144, 126, 80, 81, 82, 83, 115, 116,
+ 84, 164, 85, 86
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -374
+#define YYPACT_NINF -388
static const yytype_int16 yypact[] =
{
- 1667, -68, -374, -374, -374, -374, -374, -374, -374, -374,
- -30, -97, -374, -57, 20, -374, -374, -374, 49, -374,
- 2087, -374, 71, -374, 2157, -374, -37, 85, -35, -374,
- -374, -374, -374, 6, 8, -374, -374, 2087, 14, 2087,
- 2087, 2087, -374, 2087, 2087, 2087, 2087, 2087, 627, 88,
- 177, -374, 497, -374, -374, -374, 81, -374, 2017, -374,
- -374, -374, -374, -374, -374, -374, -374, -374, 308, 298,
- -374, -374, -374, -374, -374, -374, -374, -374, -374, 79,
- -374, 2562, -374, -374, -374, 197, 86, -374, -374, 1919,
- -374, -374, -374, -374, -374, -18, 206, -374, -46, -374,
- 93, 133, 2087, 83, -374, 2087, -374, 2087, 215, 133,
- -374, 117, 2562, 94, 127, 133, 133, 201, 133, 133,
- -53, 103, 129, 2087, -374, 227, 228, 2087, 2087, 228,
- 232, -374, -374, 757, -374, -374, 107, -374, -374, -374,
- -374, 219, -374, -374, -374, -374, -374, 1017, 170, 236,
- -374, 141, 176, -374, 70, 242, -374, 243, -374, 244,
- -374, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, -374, -374, 245, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 11, -374, -374, 2087, 159, 247,
- 2087, 1147, -374, 85, -374, 137, 24, -49, 16, 2182,
- 1793, 130, -374, 2087, 2087, -374, 2087, -374, -374, -374,
- -374, -374, 157, 164, -374, 79, 79, 164, -374, -374,
- -374, 1919, 262, 134, 157, 2087, 2087, -374, -374, 269,
- 226, 231, -374, 2562, 1009, 489, 489, 489, 2867, 2867,
- 2867, 2867, 1009, 1009, 2562, 2562, 2562, 2562, 2562, 2562,
- 2562, 2562, 2562, 2562, 304, 2623, -374, 349, 349, 349,
- 2562, 2379, 2684, 2745, 2806, 1009, 1009, 201, 201, 133,
- 133, 133, 148, 2440, 193, 2087, 281, -40, -374, 167,
- 2253, -374, 154, 1277, -374, -374, 168, -374, -374, -374,
- -374, 1147, -374, 2087, -374, 96, 287, 174, 200, -374,
- 1919, 181, -374, -374, 169, 1793, -374, -36, -374, 204,
- 26, 208, 228, 887, 212, -374, -20, 53, -31, 199,
- 125, 309, 125, 205, 157, 2087, -374, -374, 324, 2316,
- -374, 1919, 2087, 207, -374, -374, 1147, 202, 209, 67,
- 26, -374, -374, 157, 25, -374, 110, 1919, 2087, 181,
- -374, -374, 210, -374, -374, -374, -374, 2087, -374, -374,
- -374, 39, 2087, 1919, 24, -374, 125, 217, -374, 251,
- -374, 208, 2562, -374, -374, -374, -14, 27, 221, -374,
- -374, -374, -374, -374, -374, -374, -374, -374, -374, -374,
- -374, 253, 233, 287, -374, 234, 241, -374, -374, 110,
- -374, 267, -374, 126, -374, -374, -374, 250, -374, 252,
- 251, -374, 125, 230, -374, -374, 2087, 259, 235, 27,
- -374, -374, -374, -374, -374, -374, -374, 362, -374, -374,
- 1919, -374, 1919, 157, 1407, -374, 366, -374, 347, 254,
- 249, -374, 2501, 1793, -374, -374, -374, 1793, 1793, 157,
- -374, -374, 256, -374, -374, 258, 74, 255, 1537, -374,
- -374, -374, -374, 70, -374, -374, 1793, -374, 257, 261,
- 264, -374, 1407, -374, -374, 385, -374, -374, -374, -374,
- 1793, 270, 268, 265, 271, -374, 24, 1793, -374, 272,
- 274, 157, -374, -374
+ 1673, -42, -388, -388, -388, -388, -388, -388, -388, -388,
+ -29, -72, -388, -47, 16, -388, -388, -388, 74, -388,
+ 2093, -388, 64, -388, 2163, -388, -24, 42, 25, -388,
+ -388, -388, -388, -1, 5, -388, -388, 2093, 56, 2093,
+ 2093, 2093, -388, 2093, 2093, 2093, 2093, 2093, 633, 110,
+ 144, -388, 503, -388, -388, -388, 50, -388, 2023, -388,
+ -388, -388, -388, -388, -388, 1925, -388, -388, -388, 97,
+ 233, -388, -388, -388, -388, -388, -388, -388, -388, -388,
+ 104, -388, 2568, -388, -388, -388, -388, 196, 84, -388,
+ -388, 1925, -388, -388, -388, -388, -388, 85, 70, -388,
+ -59, -388, 91, 237, 2093, 87, -388, 2093, -388, 2093,
+ 225, 237, -388, 130, 2568, 106, 139, 237, 237, 174,
+ 237, 237, -61, 121, 147, 2093, -388, 245, 253, 2093,
+ 2093, 253, 255, -388, -388, 763, -388, -388, 135, -388,
+ -388, -388, -388, 249, -388, -388, -388, -388, 1023, 195,
+ 265, -388, 170, 202, -388, 173, -388, 270, 72, 271,
+ -388, 272, -388, -388, -388, -388, 2093, 2093, 2093, 2093,
+ 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093,
+ 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, -388,
+ -388, 273, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093,
+ 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 11,
+ -388, -388, 2093, 269, 2093, 1153, -388, 42, 157, 158,
+ -388, -388, -388, 164, 13, -57, 19, 2188, 1799, 160,
+ -388, 2093, 2093, -388, 2093, -388, -388, -388, -388, -388,
+ 189, 197, -388, 104, 104, 197, -388, -388, -388, 1925,
+ 163, 189, 2093, 2093, -388, 198, -388, -388, 296, 251,
+ 252, 305, 2568, 301, 495, 495, 495, 2934, 2934, 2934,
+ 2934, 301, 301, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2629, 2690, -388, 118, 118, 118, 2568,
+ 2385, 2751, 2812, 2873, 301, 301, 174, 174, 237, 237,
+ 237, 177, 2446, 226, 2093, 311, -56, 194, 2259, -388,
+ 185, 1283, -388, -388, 192, -388, -388, -388, -388, 1153,
+ -388, 119, 2093, -388, 100, 320, 191, 230, -388, -388,
+ 157, -388, -388, 193, 1799, -388, -54, -388, 221, 22,
+ 229, 253, 893, -388, -28, 31, -16, 99, 210, 70,
+ 317, 70, 212, 189, 236, -388, 2093, -388, -388, 339,
+ 2322, -388, 1925, 2093, 213, -388, -388, 1153, 214, 217,
+ 54, 22, -388, -388, 189, 15, 112, 1925, 2093, -388,
+ -388, -388, -388, 2093, -388, -388, -388, 2093, 1925, -388,
+ -388, 13, -388, 70, 219, -388, 247, -388, 229, 305,
+ 2568, -388, -388, -388, -15, 26, 220, -388, -388, -388,
+ -388, -388, -388, -388, -388, -388, -388, -388, -388, 261,
+ 227, 320, -388, 240, 250, -388, -388, 112, -388, 286,
+ -388, -388, 222, -388, 242, 247, -388, 70, 203, -388,
+ -388, -388, 2093, 274, 246, 26, -388, -388, -388, -388,
+ -388, -388, -388, 377, -388, -388, 1925, -388, 1925, 189,
+ 1413, -388, 378, -388, 359, 256, 336, -388, 2507, 1799,
+ -388, -388, -388, 1799, 1799, 189, -388, -388, 263, -388,
+ -388, 264, 51, 262, 1543, -388, -388, -388, -388, 72,
+ -388, -388, 1799, -388, 266, 267, 254, -388, 1413, -388,
+ -388, 397, -388, -388, -388, -388, 1799, 275, 280, 278,
+ 276, -388, 13, 1799, -388, 279, 277, 189, -388, -388
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -374, -374, 260, -374, 352, -285, -374, 98, -373, -39,
- 1, -84, -310, 31, 2, 17, 351, 289, 89, -374,
- -374, -374, -374, -374, -374, -374, -374, -374, -374, -374,
- -374, -374, -374, -374, -374, -17, -16, -374, -374, 5,
- -374, 13, -374, -374, -374, -374, -374, -374, -374, -202,
- 36, -374, -374, -374, -374, 0, -374, 356, -374, -374,
- -374, 58, -374, 59, -374, -65, -374, -48, -374, -374,
- -26, -374, 3, -374, 32, -374, -369, -374, -298, -47,
- 4, -374, -374, -374, -374, -374, 408, -318, 51, 78,
- -237, -374, -99, -374, -374, -374, -374, -374, -374, -374,
- -27, -3, -52, -7, -374, -374, -374, -374, -374, -374
+ -388, -388, 257, -388, 354, -296, -388, 107, -387, -31,
+ 1, -55, -85, 29, 2, 21, 362, 293, 81, -388,
+ -388, -388, -388, -388, -388, -388, -388, -388, -388, -388,
+ -388, -388, -388, -388, -388, -21, -19, -388, -388, 6,
+ -388, 7, -388, -388, -388, -388, -388, -388, -388, -388,
+ -175, 76, -388, -388, -388, -388, 0, -388, 357, -388,
+ -388, -388, 48, -388, 49, -388, -68, -388, -53, -388,
+ -388, -30, -388, 3, -388, -388, 33, 18, -388, -376,
+ -388, -305, -49, 4, -388, -388, -388, -388, -388, 412,
+ -89, 52, 71, -239, -388, -96, -388, -388, -388, -388,
+ -388, -388, -388, -34, -9, -50, -13, -388, -388, -388,
+ -388, -388, -388, -388
};
/* 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 -153
+#define YYTABLE_NINF -154
static const yytype_int16 yytable[] =
{
- 68, 54, 56, 73, 74, 208, 153, 336, 221, 133,
- 365, 312, 111, 98, 294, 429, 312, 101, 362, 321,
- 86, 85, 385, 91, 388, 88, 357, 315, 315, 369,
- 109, 55, 112, 115, 116, 92, 117, 118, 119, 92,
- 112, 395, 425, 120, 426, 92, 186, 161, -70, 240,
- 95, 161, 68, 54, 56, 73, 74, 421, 71, 72,
- 161, 436, 370, 103, 161, 90, 414, 96, 388, 161,
- 401, 398, 402, 428, 99, 403, 404, 405, 203, 406,
- 227, 204, 377, 55, 320, 102, 161, 105, 91, 437,
- 487, 144, 87, 351, 488, 489, 230, 367, 219, 217,
- 112, 154, 383, 292, 92, 247, 156, 391, 212, 213,
- 71, 72, 407, 496, 455, 445, 112, 316, 413, 435,
- 158, 248, 408, 409, 235, 236, 412, 504, 369, 321,
- 107, 322, 106, 295, 510, 108, 110, 509, 415, 296,
- 470, 371, 471, 416, 92, 92, 93, 68, 54, 56,
- 73, 74, 382, 161, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 145, 55, 161,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 112, 293, 328, 359, 329,
- 205, 360, 333, 300, 297, 71, 72, 147, 206, 214,
- 218, 68, 54, 306, 358, 216, 472, 112, 222, 112,
- 327, 312, 224, 184, 185, 186, 225, 226, 228, 229,
- 231, 232, 490, 241, 2, 238, 208, 242, -71, 244,
- 245, 240, 337, 338, 246, 250, 251, 252, 276, 240,
- 15, 16, 17, 2, 19, 202, 21, 203, 298, 313,
- 204, 299, 330, 326, 332, 334, 335, 208, 25, 15,
- 16, 17, 339, 19, 513, 21, 456, 30, 31, 32,
- 340, 346, 348, 208, 350, 342, 354, 25, 349, 352,
- 315, 184, 185, 186, 356, 456, 30, 31, 32, 208,
- 364, 366, 2, 68, 54, 306, 112, 363, -108, 368,
- 377, 68, 54, 306, 381, 199, 200, 201, 15, 16,
- 17, 384, 19, 202, 21, 203, 386, 393, 204, 457,
- 427, 390, 450, 397, 399, 154, 25, 423, 392, 155,
- 156, 422, 400, 431, 162, 30, 31, 32, 457, 396,
- 424, 432, 157, 442, 158, 359, 68, 54, 306, 444,
- 446, 112, -151, 447, 463, 469, 208, 464, 208, 482,
- 112, 163, 164, 165, 483, 166, 167, 168, 169, 170,
- 171, -152, 491, 452, 492, 453, 484, 493, 502, 497,
- 506, 507, 183, 498, 184, 185, 186, 499, 187, 188,
- 189, 355, 505, 508, 146, 511, 512, 243, 434, 150,
- 192, 193, 194, 195, 196, 233, 197, 198, 199, 200,
- 201, 379, 465, 466, 448, 160, 202, 501, 203, 462,
- 494, 204, 449, 458, 485, 104, 495, 430, 411, 184,
- 185, 186, 0, 443, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 476, 474, 475, 480, 481, 0,
- 458, 197, 198, 199, 200, 201, 0, 0, 0, 0,
- 0, 202, 0, 203, 0, 0, 204, 0, 476, 474,
- 475, 480, 481, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 476, 474, 475, 480, 481, -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, 162,
- 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, -153, -153, -153, 0,
- 37, 38, 0, 0, 170, 171, 0, 39, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 185, 186, 0, 187, 188, 189, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 42, 0, 195, 196,
- 0, 197, 198, 199, 200, 201, 0, 0, 0, 43,
- 0, 202, 0, 203, 44, 45, 204, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 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, 125, 0, 126,
- 0, 0, 0, 24, 127, 25, 26, 0, 27, 128,
- 28, 0, 29, 129, 30, 31, 32, 0, 0, 33,
- 34, 0, 35, 36, 0, 0, 0, 0, 0, 0,
- 37, 38, 0, 130, 0, 0, 0, 39, 0, 0,
+ 69, 54, 56, 74, 75, 113, 213, 100, 154, 222,
+ 155, 103, 344, 229, 303, 434, 324, 135, 324, 93,
+ 373, 88, 330, 368, 111, 218, 114, 117, 118, 55,
+ 119, 120, 121, 191, 114, 94, 155, 122, 94, 166,
+ -70, 94, 320, 166, 166, 93, 166, 87, 72, 73,
+ 90, 320, 69, 54, 56, 74, 75, 409, 379, 410,
+ 442, 94, 411, 412, 413, 208, 414, 101, 209, 157,
+ 422, 406, 235, 218, 383, 92, 329, 362, 158, 377,
+ 248, 55, 493, 160, 166, 166, 494, 495, 443, 94,
+ 97, 238, 98, 89, 227, 225, 114, 162, 104, 415,
+ 72, 73, 389, 105, 390, 502, 325, 256, 421, 416,
+ 417, 301, 114, 145, 398, 157, 451, 388, 441, 510,
+ 243, 244, 330, 257, 158, 108, 516, 109, 159, 160,
+ 387, 166, 110, 304, 331, 420, 515, 380, 94, 305,
+ 423, 161, 95, 162, 146, 424, 320, 107, 69, 54,
+ 56, 74, 75, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 148, 55, 112, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 114, 302, 72, 73, 337, 210,
+ 338, 308, 370, 306, 166, 371, 211, 2, 189, 190,
+ 191, 216, 217, 224, 226, 69, 54, 314, 342, 114,
+ 478, 114, 336, 15, 16, 17, 369, 19, 230, 21,
+ 202, 203, 204, 205, 206, 232, 496, 2, 233, 234,
+ 207, 25, 208, 345, 346, 209, 236, 237, 239, 462,
+ 30, 31, 32, 15, 16, 17, 240, 19, 246, 21,
+ 392, 249, 395, -71, 189, 190, 191, 157, 251, 252,
+ 253, 25, 254, 255, 259, 260, 285, 403, 519, 248,
+ 30, 31, 32, 307, -109, 321, 322, 248, 204, 205,
+ 206, 360, 429, 335, 339, 343, 207, 341, 208, 348,
+ 347, 209, 463, 433, 395, 349, 351, 155, 353, 114,
+ 357, 69, 54, 314, 361, 359, 363, 365, 367, 69,
+ 54, 314, 155, 324, 374, 376, 378, 189, 190, 191,
+ 375, 383, 391, 155, 393, -152, 399, 432, 397, 405,
+ 2, -154, 401, 400, 430, 436, 407, 437, 461, 431,
+ 408, 456, 448, 450, 404, 458, 15, 16, 17, 207,
+ 19, 208, 21, 370, 209, 114, 452, 69, 54, 314,
+ 114, 476, 453, 477, 25, 459, -154, -154, 470, 469,
+ 475, 488, 462, 30, 31, 32, 489, 505, 490, 497,
+ 498, 189, 190, 191, 499, 192, 193, 194, 503, 504,
+ 508, 155, 512, 155, 513, 250, 147, 511, 514, 518,
+ -154, -154, 517, 202, 203, 204, 205, 206, 366, 439,
+ 151, 241, 385, 207, 471, 208, 472, 165, 209, 468,
+ 507, 500, 440, 454, 455, 463, 491, 449, 464, 106,
+ 501, 0, 419, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 482, 480, 481, 486, 487, 0, 464, 0, -153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 482, 480, 481, 486, 487, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 482, 480,
+ 481, 486, 487, -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, 167, 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, -154, -154, -154, 0, 37, 38, 0, 0,
+ 175, 176, 0, 39, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 189, 190, 191, 0, 192,
+ 193, 194, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 42, 0, 200, 201, 0, 202, 203, 204,
+ 205, 206, 0, 0, 0, 43, 0, 207, 0, 208,
+ 44, 45, 209, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 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, 127, 0, 128, 0, 0, 0, 24,
+ 129, 25, 26, 0, 27, 130, 28, 0, 29, 131,
+ 30, 31, 32, 0, 0, 33, 34, 0, 35, 36,
+ 0, 0, 0, 0, 0, 0, 37, 38, 0, 132,
+ 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 131, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 0, 0, 44, 45, 0, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 0, 0, 0, 132,
- 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, 125, 0, 126,
- 0, 0, 0, 24, 127, 25, 26, 0, 27, 128,
- 28, 0, 29, 129, 30, 31, 32, 0, 0, 33,
- 34, 0, 35, 36, 0, 0, 0, 0, 0, 0,
- 37, 38, 0, 130, 0, 0, 0, 39, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 133, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 0, 0, 0, 134, 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, 127, 0, 128, 0, 0, 0, 24,
+ 129, 25, 26, 0, 27, 130, 28, 0, 29, 131,
+ 30, 31, 32, 0, 0, 33, 34, 0, 35, 36,
+ 0, 0, 0, 0, 0, 0, 37, 38, 0, 132,
+ 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 131, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 0, 0, 44, 45, 0, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 0, 0, 0, 239,
- 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, 125, 0, 126,
- 0, 0, 0, 24, 127, 25, 26, 0, 27, 128,
- 28, 0, 29, 129, 30, 31, 32, 0, 0, 33,
- 34, 0, 35, 36, 0, 0, 0, 0, 0, 0,
- 37, 38, 0, 130, 0, 0, 0, 39, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 133, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 0, 0, 0, 247, 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, 127, 0, 128, 0, 0, 0, 24,
+ 129, 25, 26, 0, 27, 130, 28, 0, 29, 131,
+ 30, 31, 32, 0, 0, 33, 34, 0, 35, 36,
+ 0, 0, 0, 0, 0, 0, 37, 38, 0, 132,
+ 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 131, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 0, 0, 44, 45, 0, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 0, 0, 0, 380,
- 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, -153,
- 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, -153, -153, 0, 39, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 185, 186, 0, 187, 188, 189, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 42, 0, -153, -153,
- 0, 197, 198, 199, 200, 201, 0, 0, 0, 43,
- 0, 202, 0, 203, 44, 45, 204, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 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, 39, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 133, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 0, 0, 0, 386, 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, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 301, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 0, 0, 44, 45, 0, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 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, 39, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 42, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 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, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 301, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 0, 0, 44, 45, 0, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 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, 39, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 309, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 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, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 473, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 0, 0, 44, 45, 0, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 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, 39, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 309, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 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, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 473, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 0, 0, 44, 45, 0, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 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, 39, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 479, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 0, 0, 0, -143, 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, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 0, 0, 0, 0, 42, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 0, 0, 44, 45, 0, 0, 0, 46,
- 0, 47, 0, 48, 0, 49, 1, 2, 3, 4,
+ 0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
+ 0, 0, 479, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
+ 0, 49, 0, -3, 0, -144, 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, 125, 0, 126, 0, 0, 0, 24,
- 127, 25, 26, 0, 27, 128, 28, 0, 29, 129,
+ 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, 130,
+ 0, 0, 0, 0, 0, 0, 37, 38, 0, 0,
0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 40, 41, 0, 0, 0, 0, 0,
- 0, 0, 131, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 42, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
44, 45, 0, 0, 0, 46, 0, 47, 0, 48,
0, 49, 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, 125,
- 0, 126, 0, 0, 0, 24, 127, 25, 26, 0,
- 27, 128, 28, 0, 29, 129, 30, 31, 32, 0,
+ 8, 9, 10, 11, 12, 13, 0, -119, 0, 15,
+ 16, 17, 18, 19, 20, 21, 22, 0, 23, 127,
+ 0, 128, 0, 0, 0, 24, 129, 25, 26, 0,
+ 27, 130, 28, 0, 29, 131, 30, 31, 32, 0,
0, 33, 34, 0, 35, 36, 0, 0, 0, 0,
- 0, 0, 37, 38, 0, 130, 0, 0, 0, 39,
+ 0, 0, 37, 38, 0, 132, 0, 0, 0, 39,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
- 41, 0, 0, 0, 0, 0, 0, 0, 131, 0,
- 148, 0, 3, 4, 0, 5, 6, 7, 8, 9,
+ 41, 0, 0, 0, 0, 0, 0, 0, 133, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 43, 0, 0, 0, 0, 44, 45, 0, 0,
- 0, 46, 20, 47, 22, 48, 23, 49, 0, 126,
- 0, 0, 0, 24, 0, 0, 0, 0, 0, 0,
- 28, 0, 29, 149, 0, 0, 0, 0, 0, 0,
- 34, 0, 35, 36, 0, 0, 0, 0, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 39, 0, 0,
- 97, 0, 3, 4, 0, 5, 6, 7, 8, 9,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 20, 0, 22, 0, 23, 0, 0, 0,
- 0, 0, 0, 24, 0, 0, 0, 0, 0, 43,
- 28, 0, 29, 0, 44, 45, 0, 0, 0, 46,
- 34, 47, 35, 36, 0, 49, 0, 0, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 39, 0, 0,
- 97, 0, 3, 4, 0, 5, 6, 7, 8, 9,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 0,
- 0, 0, 20, 0, 22, 0, 23, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 43,
- 0, 0, 29, 0, 44, 45, 0, 0, 0, 46,
- 34, 47, 35, 36, 0, 49, 0, 0, 0, 0,
- 0, 0, 162, 0, 0, 0, 0, 39, 0, 0,
+ 0, 46, 0, 47, 0, 48, 0, 49, 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, 127, 0, 128, 0, 0,
+ 0, 24, 129, 25, 26, 0, 27, 130, 28, 0,
+ 29, 131, 30, 31, 32, 0, 0, 33, 34, 0,
+ 35, 36, 0, 0, 0, 0, 0, 0, 37, 38,
+ 0, 132, 0, 0, 0, 39, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 41, 163,
- 164, 165, 0, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 0, 184, 185, 186, 0, 187, 188, 189, 46,
- 0, 47, 0, 0, 190, 49, 191, 0, 192, 193,
- 194, 195, 196, 162, 197, 198, 199, 200, 201, 0,
- 0, 0, 0, 0, 202, 0, 203, 0, 0, 204,
- 0, 0, 0, 0, 0, 323, 0, 0, 0, 0,
- 163, 164, 165, 0, 166, 167, 168, 169, 170, 171,
+ 0, 0, 0, 0, 0, 40, 41, 0, 0, 0,
+ 0, 0, 0, 0, 133, 0, 149, 0, 3, 4,
+ 0, 5, 6, 7, 8, 9, 0, 43, 0, 0,
+ 0, 0, 44, 45, 0, 0, 0, 46, 20, 47,
+ 22, 48, 23, 49, 0, 128, 0, 0, 0, 24,
+ 0, 0, 0, 0, 0, 0, 28, 0, 29, 150,
+ 0, 0, 0, 0, 0, 0, 34, 0, 35, 36,
+ 0, 0, 0, 0, 0, 0, 37, 0, 0, 0,
+ 0, 0, 0, 39, 0, 0, 99, 0, 3, 4,
+ 0, 5, 6, 7, 8, 9, 0, 0, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 20, 0,
+ 22, 0, 23, 0, 0, 0, 0, 0, 0, 24,
+ 0, 0, 0, 0, 0, 43, 28, 0, 29, 0,
+ 44, 45, 0, 0, 0, 46, 34, 47, 35, 36,
+ 0, 49, 0, 0, 0, 0, 37, 0, 0, 0,
+ 0, 0, 0, 39, 0, 0, 99, 0, 3, 4,
+ 0, 5, 6, 7, 8, 9, 0, 0, 0, 0,
+ 0, 0, 0, 40, 41, 0, 0, 0, 20, 0,
+ 22, 0, 23, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 43, 0, 0, 29, 0,
+ 44, 45, 0, 0, 0, 46, 34, 47, 35, 36,
+ 0, 49, 0, 0, 0, 0, 0, 0, 167, 0,
+ 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 40, 41, 168, 169, 170, 0, 171,
172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 0, 184, 185, 186, 0, 187, 188, 189,
- 0, 0, 0, 0, 0, 190, 162, 191, 0, 192,
- 193, 194, 195, 196, 0, 197, 198, 199, 200, 201,
- 0, 0, 0, 0, 0, 202, 0, 203, 0, 0,
- 204, 0, 0, 163, 164, 165, 353, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 0, 184, 185, 186, 0,
- 187, 188, 189, 0, 0, 0, 0, 0, 190, 162,
- 191, 0, 192, 193, 194, 195, 196, 0, 197, 198,
- 199, 200, 201, 0, 0, 0, 0, 0, 202, 0,
- 203, 0, 0, 204, 0, 0, 163, 164, 165, 394,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 0, 184,
- 185, 186, 0, 187, 188, 189, 0, 0, 0, 0,
- 162, 190, 0, 191, 345, 192, 193, 194, 195, 196,
- 0, 197, 198, 199, 200, 201, 0, 0, 0, 0,
- 0, 202, 0, 203, 0, 0, 204, 163, 164, 165,
- 0, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 0,
- 184, 185, 186, 0, 187, 188, 189, 0, 0, 0,
- 0, 162, 190, 0, 191, 0, 192, 193, 194, 195,
- 196, 0, 197, 198, 199, 200, 201, 0, 0, 0,
- 0, 0, 202, 0, 203, 347, 0, 204, 163, 164,
- 165, 0, 166, 167, 168, 169, 170, 171, 172, 173,
+ 182, 183, 184, 185, 186, 187, 188, 0, 189, 190,
+ 191, 0, 192, 193, 194, 46, 0, 47, 0, 0,
+ 195, 49, 196, 0, 197, 198, 199, 200, 201, 167,
+ 202, 203, 204, 205, 206, 0, 0, 0, 0, 0,
+ 207, 0, 208, 0, 0, 209, 0, 0, 0, 0,
+ 0, 332, 0, 0, 0, 0, 168, 169, 170, 0,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
+ 181, 182, 183, 184, 185, 186, 187, 188, 0, 189,
+ 190, 191, 0, 192, 193, 194, 0, 0, 0, 0,
+ 0, 195, 167, 196, 0, 197, 198, 199, 200, 201,
+ 0, 202, 203, 204, 205, 206, 0, 0, 0, 0,
+ 0, 207, 0, 208, 0, 0, 209, 0, 0, 168,
+ 169, 170, 364, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 0, 189, 190, 191, 0, 192, 193, 194, 0,
+ 0, 0, 0, 0, 195, 167, 196, 0, 197, 198,
+ 199, 200, 201, 0, 202, 203, 204, 205, 206, 0,
+ 0, 0, 0, 0, 207, 0, 208, 0, 0, 209,
+ 0, 0, 168, 169, 170, 402, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 0, 189, 190, 191, 0, 192,
+ 193, 194, 0, 0, 0, 0, 167, 195, 0, 196,
+ 356, 197, 198, 199, 200, 201, 0, 202, 203, 204,
+ 205, 206, 0, 0, 0, 0, 0, 207, 0, 208,
+ 0, 0, 209, 168, 169, 170, 0, 171, 172, 173,
174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 0, 184, 185, 186, 0, 187, 188, 189, 0, 0,
- 0, 0, 162, 190, 0, 191, 486, 192, 193, 194,
- 195, 196, 0, 197, 198, 199, 200, 201, 0, 0,
- 0, 0, 0, 202, 0, 203, 0, 0, 204, 163,
- 164, 165, 0, 166, 167, 168, 169, 170, 171, 172,
+ 184, 185, 186, 187, 188, 0, 189, 190, 191, 0,
+ 192, 193, 194, 0, 0, 0, 0, 167, 195, 0,
+ 196, 0, 197, 198, 199, 200, 201, 0, 202, 203,
+ 204, 205, 206, 0, 0, 0, 0, 0, 207, 0,
+ 208, 358, 0, 209, 168, 169, 170, 0, 171, 172,
173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 0, 184, 185, 186, 0, 187, 188, 189, 0,
- 0, 0, 0, 162, 190, 0, 191, 0, 192, 193,
- 194, 195, 196, 0, 197, 198, 199, 200, 201, 0,
- 0, 0, 0, 0, 202, 0, 203, 0, 0, 204,
- 163, 164, 165, 0, 166, 167, 168, 169, 170, 171,
+ 183, 184, 185, 186, 187, 188, 0, 189, 190, 191,
+ 0, 192, 193, 194, 0, 0, 0, 0, 167, 195,
+ 0, 196, 492, 197, 198, 199, 200, 201, 0, 202,
+ 203, 204, 205, 206, 0, 0, 0, 0, 0, 207,
+ 0, 208, 0, 0, 209, 168, 169, 170, 0, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 0, 189, 190,
+ 191, 0, 192, 193, 194, 0, 0, 0, 0, 167,
+ 195, 0, 196, 0, 197, 198, 199, 200, 201, 0,
+ 202, 203, 204, 205, 206, 0, 0, 0, 0, 0,
+ 207, 0, 208, 0, 0, 209, 168, 169, 170, 0,
+ 171, 172, 173, 174, 175, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 188, 0, 189,
+ 190, 191, 0, 192, 193, 194, 0, 0, 0, 0,
+ 167, 0, 0, 0, 0, 197, 198, 199, 200, 201,
+ 0, 202, 203, 204, 205, 206, 0, 0, 0, 0,
+ 0, 207, 0, 208, 0, 0, 209, 168, 169, 170,
+ 0, 171, 172, 173, 174, 175, 176, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 189, 190, 191, 0, 192, 193, 194, 0, 0, 0,
+ 0, 167, 0, 0, 0, 0, 197, 198, 199, 200,
+ 201, 0, 202, 203, 204, 205, 206, 0, 0, 0,
+ 0, 0, 207, 0, 208, 0, 0, 209, 168, 169,
+ 170, 0, 171, 172, 173, 174, 175, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 189, 190, 191, 0, 192, 193, 194, 0, 0,
+ 0, 0, 167, 0, 0, 0, 0, 0, 198, 199,
+ 200, 201, 0, 202, 203, 204, 205, 206, 0, 0,
+ 0, 0, 0, 207, 0, 208, 0, 0, 209, 168,
+ 169, 170, 0, 171, 172, 173, 174, 175, 176, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 185, 186, 0, 187, 188, 189,
- 0, 0, 0, 0, 162, 0, 0, 0, 0, 192,
- 193, 194, 195, 196, 0, 197, 198, 199, 200, 201,
- 0, 0, 0, 0, 0, 202, 0, 203, 0, 0,
- 204, 163, 164, 165, 0, 166, 167, 168, 169, 170,
- 171, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 184, 185, 186, 0, 187, 188,
- 189, 0, 0, 0, 0, 162, 0, 0, 0, 0,
- 0, 193, 194, 195, 196, 0, 197, 198, 199, 200,
- 201, 0, 0, 0, 0, 0, 202, 0, 203, 0,
- 0, 204, 163, 164, 165, 0, 166, 167, 168, 169,
- 170, 171, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 185, 186, 0, 187,
- 188, 189, 0, 0, 0, 0, 162, 0, 0, 0,
- 0, 0, 0, 194, 195, 196, 0, 197, 198, 199,
- 200, 201, 0, 0, 0, 0, 0, 202, 0, 203,
- 0, 0, 204, 163, 164, 165, 0, 166, 167, 168,
- 169, 170, 171, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 185, 186, 0,
- 187, 188, 189, 0, 0, 0, 0, 162, 0, 0,
- 0, 0, 0, 0, -153, 195, 196, 0, 197, 198,
- 199, 200, 201, 0, 0, 0, 0, 0, 202, 0,
- 203, 0, 0, 204, 163, 164, 165, 0, -153, -153,
- -153, -153, 170, 171, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 185, 186,
- 0, 187, 188, 189, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 195, 196, 0, 197,
- 198, 199, 200, 201, 0, 0, 0, 0, 0, 202,
- 0, 203, 0, 0, 204
+ 0, 0, 189, 190, 191, 0, 192, 193, 194, 0,
+ 0, 0, 0, 167, 0, 0, 0, 0, 0, 0,
+ 199, 200, 201, 0, 202, 203, 204, 205, 206, 0,
+ 0, 0, 0, 0, 207, 0, 208, 0, 0, 209,
+ 168, 169, 170, 0, 171, 172, 173, 174, 175, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 189, 190, 191, 0, 192, 193, 194,
+ 0, 0, 0, 0, 167, 0, 0, 0, 0, 0,
+ 0, -154, 200, 201, 0, 202, 203, 204, 205, 206,
+ 0, 0, 0, 0, 0, 207, 0, 208, 0, 0,
+ 209, 168, 169, 170, 0, -154, -154, -154, -154, 175,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 189, 190, 191, 0, 192, 193,
+ 194, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 200, 201, 0, 202, 203, 204, 205,
+ 206, 0, 0, 0, 0, 0, 207, 0, 208, 0,
+ 0, 209
};
static const yytype_int16 yycheck[] =
{
- 0, 0, 0, 0, 0, 89, 58, 244, 107, 48,
- 320, 213, 39, 20, 3, 384, 218, 24, 316, 3,
- 50, 89, 340, 3, 342, 122, 311, 3, 3, 3,
- 37, 0, 39, 40, 41, 19, 43, 44, 45, 19,
- 47, 351, 3, 46, 5, 19, 92, 100, 68, 133,
- 14, 100, 52, 52, 52, 52, 52, 367, 0, 0,
- 100, 34, 36, 27, 100, 122, 364, 18, 386, 100,
- 3, 356, 5, 383, 3, 8, 9, 10, 124, 12,
- 133, 127, 102, 52, 133, 122, 100, 122, 3, 62,
- 463, 3, 122, 133, 467, 468, 123, 133, 105, 102,
- 107, 27, 133, 202, 19, 35, 32, 344, 126, 127,
- 52, 52, 45, 486, 432, 413, 123, 93, 93, 133,
- 46, 51, 55, 56, 127, 128, 363, 500, 3, 3,
- 122, 115, 126, 122, 507, 127, 122, 506, 28, 128,
- 450, 115, 452, 33, 19, 19, 126, 147, 147, 147,
- 147, 147, 99, 100, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 0, 147, 100,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 224, 102, 226,
- 3, 105, 241, 210, 207, 147, 147, 126, 122, 3,
- 127, 211, 211, 211, 313, 122, 453, 224, 3, 226,
- 223, 423, 105, 90, 91, 92, 132, 100, 125, 100,
- 3, 3, 469, 126, 4, 3, 320, 18, 68, 3,
- 99, 325, 245, 246, 68, 3, 3, 3, 3, 333,
- 20, 21, 22, 4, 24, 122, 26, 124, 99, 122,
- 127, 14, 105, 133, 100, 3, 132, 351, 38, 20,
- 21, 22, 3, 24, 511, 26, 46, 47, 48, 49,
- 54, 133, 89, 367, 3, 54, 132, 38, 295, 122,
- 3, 90, 91, 92, 126, 46, 47, 48, 49, 383,
- 100, 132, 4, 303, 303, 303, 313, 133, 127, 105,
- 102, 311, 311, 311, 102, 114, 115, 116, 20, 21,
- 22, 122, 24, 122, 26, 124, 17, 3, 127, 99,
- 382, 126, 65, 126, 132, 27, 38, 127, 345, 31,
- 32, 368, 133, 126, 40, 47, 48, 49, 99, 352,
- 377, 100, 44, 132, 46, 102, 356, 356, 356, 126,
- 126, 368, 132, 122, 105, 3, 450, 132, 452, 3,
- 377, 67, 68, 69, 27, 71, 72, 73, 74, 75,
- 76, 132, 126, 133, 126, 133, 132, 132, 3, 132,
- 122, 126, 88, 132, 90, 91, 92, 133, 94, 95,
- 96, 303, 132, 132, 52, 133, 132, 147, 391, 58,
- 106, 107, 108, 109, 110, 126, 112, 113, 114, 115,
- 116, 332, 439, 439, 419, 69, 122, 492, 124, 436,
- 478, 127, 419, 433, 460, 27, 483, 386, 360, 90,
- 91, 92, -1, 411, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 454, 454, 454, 454, 454, -1,
- 460, 112, 113, 114, 115, 116, -1, -1, -1, -1,
- -1, 122, -1, 124, -1, -1, 127, -1, 478, 478,
- 478, 478, 478, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 492, 492, 492, 492, 492, 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, -1, 75, 76, -1, 70, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
- 91, 92, -1, 94, 95, 96, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, 109, 110,
- -1, 112, 113, 114, 115, 116, -1, -1, -1, 112,
- -1, 122, -1, 124, 117, 118, 127, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, -1, -1, 132,
- 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, 70, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, -1, -1, 132,
- 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, 70, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, -1, -1, 132,
- 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, 70, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, -1, -1, 132,
- 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, -1, -1, -1, -1,
- 63, 64, -1, -1, 75, 76, -1, 70, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
- 91, 92, -1, 94, 95, 96, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, 109, 110,
- -1, 112, 113, 114, 115, 116, -1, -1, -1, 112,
- -1, 122, -1, 124, 117, 118, 127, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, -1, -1, 132,
- 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, 70, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, -1, -1, 132,
- 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, 70, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, -1, -1, 132,
- 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, 70, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, -1, -1, 132,
- 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, 70, -1, -1,
+ 0, 0, 0, 0, 0, 39, 91, 20, 58, 98,
+ 65, 24, 251, 109, 3, 391, 3, 48, 3, 3,
+ 325, 50, 3, 319, 37, 3, 39, 40, 41, 0,
+ 43, 44, 45, 92, 47, 19, 91, 46, 19, 100,
+ 68, 19, 217, 100, 100, 3, 100, 89, 0, 0,
+ 122, 226, 52, 52, 52, 52, 52, 3, 36, 5,
+ 34, 19, 8, 9, 10, 124, 12, 3, 127, 18,
+ 375, 367, 133, 3, 102, 122, 133, 133, 27, 133,
+ 135, 52, 469, 32, 100, 100, 473, 474, 62, 19,
+ 14, 125, 18, 122, 107, 104, 109, 46, 122, 45,
+ 52, 52, 3, 27, 5, 492, 93, 35, 93, 55,
+ 56, 207, 125, 3, 353, 18, 421, 133, 133, 506,
+ 129, 130, 3, 51, 27, 126, 513, 122, 31, 32,
+ 99, 100, 127, 122, 115, 374, 512, 115, 19, 128,
+ 28, 44, 126, 46, 0, 33, 321, 122, 148, 148,
+ 148, 148, 148, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 126, 148, 122, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 204, 205, 206, 207, 208, 148, 148, 232, 3,
+ 234, 214, 102, 212, 100, 105, 122, 4, 90, 91,
+ 92, 126, 127, 122, 127, 215, 215, 215, 249, 232,
+ 459, 234, 231, 20, 21, 22, 322, 24, 3, 26,
+ 112, 113, 114, 115, 116, 105, 475, 4, 132, 100,
+ 122, 38, 124, 252, 253, 127, 125, 100, 3, 46,
+ 47, 48, 49, 20, 21, 22, 3, 24, 3, 26,
+ 349, 126, 351, 68, 90, 91, 92, 18, 3, 99,
+ 68, 38, 99, 3, 3, 3, 3, 362, 517, 334,
+ 47, 48, 49, 14, 127, 127, 122, 342, 114, 115,
+ 116, 304, 377, 133, 105, 132, 122, 100, 124, 3,
+ 102, 127, 99, 388, 393, 54, 54, 362, 3, 322,
+ 133, 311, 311, 311, 3, 89, 122, 132, 126, 319,
+ 319, 319, 377, 3, 133, 132, 105, 90, 91, 92,
+ 100, 102, 122, 388, 17, 132, 100, 387, 126, 126,
+ 4, 40, 3, 356, 378, 126, 132, 100, 437, 383,
+ 133, 65, 132, 126, 363, 133, 20, 21, 22, 122,
+ 24, 124, 26, 102, 127, 378, 126, 367, 367, 367,
+ 383, 456, 122, 458, 38, 133, 75, 76, 132, 105,
+ 3, 3, 46, 47, 48, 49, 27, 133, 132, 126,
+ 126, 90, 91, 92, 132, 94, 95, 96, 132, 132,
+ 3, 456, 122, 458, 126, 148, 52, 132, 132, 132,
+ 109, 110, 133, 112, 113, 114, 115, 116, 311, 398,
+ 58, 128, 341, 122, 445, 124, 445, 70, 127, 442,
+ 498, 484, 399, 427, 427, 99, 466, 419, 438, 27,
+ 489, -1, 371, -1, -1, 393, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, -1, 0, -1, 132,
- 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, 70, -1, -1,
+ 460, 460, 460, 460, 460, -1, 466, -1, 132, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, -1, -1, -1, -1, 99, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, -1, -1, 117, 118, -1, -1, -1, 122,
- -1, 124, -1, 126, -1, 128, 3, 4, 5, 6,
+ -1, -1, -1, -1, 484, 484, 484, 484, 484, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 498, 498,
+ 498, 498, 498, 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, -1,
+ 75, 76, -1, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 90, 91, 92, -1, 94,
+ 95, 96, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, 109, 110, -1, 112, 113, 114,
+ 115, 116, -1, -1, -1, 112, -1, 122, -1, 124,
+ 117, 118, 127, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, -1, -1, -1, 132, 3, 4, 5, 6,
-1, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- -1, 18, -1, 20, 21, 22, 23, 24, 25, 26,
+ -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, 99, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
- -1, 128, 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, 70,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 128, -1, -1, -1, 132, 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, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, -1, -1, -1, 132, 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, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, -1, -1, -1, 132, 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, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, -1, -1, -1, 132, 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, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, -1, -1, -1, 132, 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, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, -1, -1, -1, 132, 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, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, -1, -1, -1, 132, 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, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, -1, 0, -1, 132, 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, 70, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
+ -1, -1, 99, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, -1, -1,
+ 117, 118, -1, -1, -1, 122, -1, 124, -1, 126,
+ -1, 128, 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, 70,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
91, -1, -1, -1, -1, -1, -1, -1, 99, -1,
- 3, -1, 5, 6, -1, 8, 9, 10, 11, 12,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 112, -1, -1, -1, -1, 117, 118, -1, -1,
- -1, 122, 25, 124, 27, 126, 29, 128, -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, 70, -1, -1,
- 3, -1, 5, 6, -1, 8, 9, 10, 11, 12,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, 25, -1, 27, -1, 29, -1, -1, -1,
- -1, -1, -1, 36, -1, -1, -1, -1, -1, 112,
- 43, -1, 45, -1, 117, 118, -1, -1, -1, 122,
- 53, 124, 55, 56, -1, 128, -1, -1, -1, -1,
- 63, -1, -1, -1, -1, -1, -1, 70, -1, -1,
- 3, -1, 5, 6, -1, 8, 9, 10, 11, 12,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
- -1, -1, 25, -1, 27, -1, 29, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
- -1, -1, 45, -1, 117, 118, -1, -1, -1, 122,
- 53, 124, 55, 56, -1, 128, -1, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, 70, -1, -1,
+ -1, 122, -1, 124, -1, 126, -1, 128, 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, 70, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
+ -1, -1, -1, -1, 99, -1, 3, -1, 5, 6,
+ -1, 8, 9, 10, 11, 12, -1, 112, -1, -1,
+ -1, -1, 117, 118, -1, -1, -1, 122, 25, 124,
+ 27, 126, 29, 128, -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, 70, -1, -1, 3, -1, 5, 6,
+ -1, 8, 9, 10, 11, 12, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, 25, -1,
+ 27, -1, 29, -1, -1, -1, -1, -1, -1, 36,
+ -1, -1, -1, -1, -1, 112, 43, -1, 45, -1,
+ 117, 118, -1, -1, -1, 122, 53, 124, 55, 56,
+ -1, 128, -1, -1, -1, -1, 63, -1, -1, -1,
+ -1, -1, -1, 70, -1, -1, 3, -1, 5, 6,
+ -1, 8, 9, 10, 11, 12, -1, -1, -1, -1,
+ -1, -1, -1, 90, 91, -1, -1, -1, 25, -1,
+ 27, -1, 29, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, -1, -1, 45, -1,
+ 117, 118, -1, -1, -1, 122, 53, 124, 55, 56,
+ -1, 128, -1, -1, -1, -1, -1, -1, 40, -1,
+ -1, -1, -1, 70, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, 67,
- 68, 69, -1, 71, 72, 73, 74, 75, 76, 77,
+ -1, -1, -1, 90, 91, 67, 68, 69, -1, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, -1, 90, 91,
+ 92, -1, 94, 95, 96, 122, -1, 124, -1, -1,
+ 102, 128, 104, -1, 106, 107, 108, 109, 110, 40,
+ 112, 113, 114, 115, 116, -1, -1, -1, -1, -1,
+ 122, -1, 124, -1, -1, 127, -1, -1, -1, -1,
+ -1, 133, -1, -1, -1, -1, 67, 68, 69, -1,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, -1, 90,
+ 91, 92, -1, 94, 95, 96, -1, -1, -1, -1,
+ -1, 102, 40, 104, -1, 106, 107, 108, 109, 110,
+ -1, 112, 113, 114, 115, 116, -1, -1, -1, -1,
+ -1, 122, -1, 124, -1, -1, 127, -1, -1, 67,
+ 68, 69, 133, 71, 72, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, -1, 90, 91, 92, -1, 94, 95, 96, 122,
- -1, 124, -1, -1, 102, 128, 104, -1, 106, 107,
- 108, 109, 110, 40, 112, 113, 114, 115, 116, -1,
+ 88, -1, 90, 91, 92, -1, 94, 95, 96, -1,
+ -1, -1, -1, -1, 102, 40, 104, -1, 106, 107,
+ 108, 109, 110, -1, 112, 113, 114, 115, 116, -1,
-1, -1, -1, -1, 122, -1, 124, -1, -1, 127,
- -1, -1, -1, -1, -1, 133, -1, -1, -1, -1,
- 67, 68, 69, -1, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, -1, 90, 91, 92, -1, 94, 95, 96,
- -1, -1, -1, -1, -1, 102, 40, 104, -1, 106,
- 107, 108, 109, 110, -1, 112, 113, 114, 115, 116,
- -1, -1, -1, -1, -1, 122, -1, 124, -1, -1,
- 127, -1, -1, 67, 68, 69, 133, 71, 72, 73,
+ -1, -1, 67, 68, 69, 133, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, -1, 90, 91, 92, -1, 94,
+ 95, 96, -1, -1, -1, -1, 40, 102, -1, 104,
+ 105, 106, 107, 108, 109, 110, -1, 112, 113, 114,
+ 115, 116, -1, -1, -1, -1, -1, 122, -1, 124,
+ -1, -1, 127, 67, 68, 69, -1, 71, 72, 73,
74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, -1, 90, 91, 92, -1,
- 94, 95, 96, -1, -1, -1, -1, -1, 102, 40,
+ 94, 95, 96, -1, -1, -1, -1, 40, 102, -1,
104, -1, 106, 107, 108, 109, 110, -1, 112, 113,
114, 115, 116, -1, -1, -1, -1, -1, 122, -1,
- 124, -1, -1, 127, -1, -1, 67, 68, 69, 133,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, -1, 90,
+ 124, 125, -1, 127, 67, 68, 69, -1, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, -1, 90, 91, 92,
+ -1, 94, 95, 96, -1, -1, -1, -1, 40, 102,
+ -1, 104, 105, 106, 107, 108, 109, 110, -1, 112,
+ 113, 114, 115, 116, -1, -1, -1, -1, -1, 122,
+ -1, 124, -1, -1, 127, 67, 68, 69, -1, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, -1, 90, 91,
+ 92, -1, 94, 95, 96, -1, -1, -1, -1, 40,
+ 102, -1, 104, -1, 106, 107, 108, 109, 110, -1,
+ 112, 113, 114, 115, 116, -1, -1, -1, -1, -1,
+ 122, -1, 124, -1, -1, 127, 67, 68, 69, -1,
+ 71, 72, 73, 74, 75, 76, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 88, -1, 90,
91, 92, -1, 94, 95, 96, -1, -1, -1, -1,
- 40, 102, -1, 104, 105, 106, 107, 108, 109, 110,
+ 40, -1, -1, -1, -1, 106, 107, 108, 109, 110,
-1, 112, 113, 114, 115, 116, -1, -1, -1, -1,
-1, 122, -1, 124, -1, -1, 127, 67, 68, 69,
- -1, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, -1,
+ -1, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90, 91, 92, -1, 94, 95, 96, -1, -1, -1,
- -1, 40, 102, -1, 104, -1, 106, 107, 108, 109,
+ -1, 40, -1, -1, -1, -1, 106, 107, 108, 109,
110, -1, 112, 113, 114, 115, 116, -1, -1, -1,
- -1, -1, 122, -1, 124, 125, -1, 127, 67, 68,
- 69, -1, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
+ -1, -1, 122, -1, 124, -1, -1, 127, 67, 68,
+ 69, -1, 71, 72, 73, 74, 75, 76, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 90, 91, 92, -1, 94, 95, 96, -1, -1,
- -1, -1, 40, 102, -1, 104, 105, 106, 107, 108,
+ -1, -1, 40, -1, -1, -1, -1, -1, 107, 108,
109, 110, -1, 112, 113, 114, 115, 116, -1, -1,
-1, -1, -1, 122, -1, 124, -1, -1, 127, 67,
- 68, 69, -1, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, -1, 90, 91, 92, -1, 94, 95, 96, -1,
- -1, -1, -1, 40, 102, -1, 104, -1, 106, 107,
+ 68, 69, -1, 71, 72, 73, 74, 75, 76, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 90, 91, 92, -1, 94, 95, 96, -1,
+ -1, -1, -1, 40, -1, -1, -1, -1, -1, -1,
108, 109, 110, -1, 112, 113, 114, 115, 116, -1,
-1, -1, -1, -1, 122, -1, 124, -1, -1, 127,
67, 68, 69, -1, 71, 72, 73, 74, 75, 76,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 90, 91, 92, -1, 94, 95, 96,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, 106,
- 107, 108, 109, 110, -1, 112, 113, 114, 115, 116,
+ -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
+ -1, 108, 109, 110, -1, 112, 113, 114, 115, 116,
-1, -1, -1, -1, -1, 122, -1, 124, -1, -1,
127, 67, 68, 69, -1, 71, 72, 73, 74, 75,
76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 90, 91, 92, -1, 94, 95,
- 96, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, 107, 108, 109, 110, -1, 112, 113, 114, 115,
+ 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 109, 110, -1, 112, 113, 114, 115,
116, -1, -1, -1, -1, -1, 122, -1, 124, -1,
- -1, 127, 67, 68, 69, -1, 71, 72, 73, 74,
- 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 90, 91, 92, -1, 94,
- 95, 96, -1, -1, -1, -1, 40, -1, -1, -1,
- -1, -1, -1, 108, 109, 110, -1, 112, 113, 114,
- 115, 116, -1, -1, -1, -1, -1, 122, -1, 124,
- -1, -1, 127, 67, 68, 69, -1, 71, 72, 73,
- 74, 75, 76, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 90, 91, 92, -1,
- 94, 95, 96, -1, -1, -1, -1, 40, -1, -1,
- -1, -1, -1, -1, 108, 109, 110, -1, 112, 113,
- 114, 115, 116, -1, -1, -1, -1, -1, 122, -1,
- 124, -1, -1, 127, 67, 68, 69, -1, 71, 72,
- 73, 74, 75, 76, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 90, 91, 92,
- -1, 94, 95, 96, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 109, 110, -1, 112,
- 113, 114, 115, 116, -1, -1, -1, -1, -1, 122,
- -1, 124, -1, -1, 127
+ -1, 127
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
47, 48, 49, 52, 53, 55, 56, 63, 64, 70,
90, 91, 99, 112, 117, 118, 122, 124, 126, 128,
135, 136, 137, 138, 144, 147, 148, 154, 158, 159,
- 160, 161, 163, 171, 179, 182, 185, 188, 189, 190,
- 191, 195, 197, 206, 214, 217, 230, 231, 232, 235,
- 236, 237, 238, 241, 243, 89, 50, 122, 122, 164,
- 122, 3, 19, 126, 183, 184, 18, 3, 237, 3,
- 216, 237, 122, 184, 220, 122, 126, 122, 127, 237,
- 122, 234, 237, 239, 240, 237, 237, 237, 237, 237,
- 235, 226, 227, 228, 234, 30, 32, 37, 42, 46,
- 66, 99, 132, 143, 144, 145, 148, 150, 165, 166,
- 181, 189, 233, 242, 3, 0, 138, 126, 3, 46,
- 150, 156, 157, 236, 27, 31, 32, 44, 46, 205,
- 191, 100, 40, 67, 68, 69, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 90, 91, 92, 94, 95, 96,
- 102, 104, 106, 107, 108, 109, 110, 112, 113, 114,
- 115, 116, 122, 124, 127, 3, 122, 162, 145, 146,
- 172, 187, 126, 127, 3, 229, 122, 235, 127, 237,
- 180, 226, 3, 155, 105, 132, 100, 133, 125, 100,
- 234, 3, 3, 151, 152, 235, 235, 151, 3, 132,
- 145, 126, 18, 136, 3, 99, 68, 35, 51, 213,
- 3, 3, 3, 237, 237, 237, 237, 237, 237, 237,
- 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
- 237, 237, 237, 237, 237, 237, 3, 237, 237, 237,
- 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
- 237, 237, 226, 237, 3, 122, 128, 235, 99, 14,
- 237, 99, 139, 140, 141, 147, 148, 195, 197, 206,
- 214, 186, 183, 122, 225, 3, 93, 210, 211, 212,
- 133, 3, 115, 133, 142, 143, 133, 235, 234, 234,
- 105, 224, 100, 143, 3, 132, 224, 235, 235, 3,
- 54, 192, 54, 193, 207, 105, 133, 125, 89, 237,
- 3, 133, 122, 133, 132, 141, 126, 139, 226, 102,
- 105, 208, 212, 133, 100, 146, 132, 133, 105, 3,
- 36, 115, 184, 219, 220, 221, 223, 102, 149, 152,
- 132, 102, 99, 133, 122, 221, 17, 194, 221, 222,
- 126, 224, 237, 3, 133, 146, 235, 126, 139, 132,
- 133, 3, 5, 8, 9, 10, 12, 45, 55, 56,
- 209, 223, 224, 93, 212, 28, 33, 173, 175, 177,
- 178, 146, 234, 127, 234, 3, 5, 236, 146, 210,
- 222, 126, 100, 198, 149, 133, 34, 62, 167, 168,
- 169, 170, 132, 208, 126, 212, 126, 122, 173, 175,
- 65, 153, 133, 133, 196, 221, 46, 99, 189, 202,
- 203, 204, 237, 105, 132, 169, 170, 218, 176, 3,
- 146, 146, 224, 99, 144, 148, 189, 199, 200, 201,
- 206, 214, 3, 27, 132, 204, 105, 142, 142, 142,
- 224, 126, 126, 132, 201, 213, 142, 132, 132, 133,
- 215, 199, 3, 174, 142, 132, 122, 126, 132, 210,
- 142, 133, 132, 224
+ 160, 161, 163, 171, 179, 182, 183, 186, 189, 190,
+ 191, 192, 196, 198, 207, 217, 220, 233, 234, 235,
+ 238, 239, 240, 241, 244, 246, 247, 89, 50, 122,
+ 122, 164, 122, 3, 19, 126, 184, 185, 18, 3,
+ 240, 3, 219, 240, 122, 185, 223, 122, 126, 122,
+ 127, 240, 122, 237, 240, 242, 243, 240, 240, 240,
+ 240, 240, 238, 229, 230, 231, 237, 30, 32, 37,
+ 42, 46, 66, 99, 132, 143, 144, 145, 148, 150,
+ 165, 166, 181, 190, 236, 3, 0, 138, 126, 3,
+ 46, 150, 156, 157, 239, 145, 146, 18, 27, 31,
+ 32, 44, 46, 206, 245, 192, 100, 40, 67, 68,
+ 69, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 90,
+ 91, 92, 94, 95, 96, 102, 104, 106, 107, 108,
+ 109, 110, 112, 113, 114, 115, 116, 122, 124, 127,
+ 3, 122, 162, 146, 172, 188, 126, 127, 3, 185,
+ 222, 223, 224, 232, 122, 238, 127, 240, 180, 229,
+ 3, 155, 105, 132, 100, 133, 125, 100, 237, 3,
+ 3, 151, 152, 238, 238, 151, 3, 132, 145, 126,
+ 136, 3, 99, 68, 99, 3, 35, 51, 216, 3,
+ 3, 208, 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 240, 240, 240, 240, 3, 240, 240, 240, 240,
+ 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
+ 240, 229, 240, 3, 122, 128, 238, 14, 240, 99,
+ 139, 140, 141, 147, 148, 196, 198, 207, 217, 187,
+ 184, 127, 122, 228, 3, 93, 213, 214, 215, 133,
+ 3, 115, 133, 142, 143, 133, 238, 237, 237, 105,
+ 227, 100, 143, 132, 227, 238, 238, 102, 3, 54,
+ 193, 54, 194, 3, 209, 210, 105, 133, 125, 89,
+ 240, 3, 133, 122, 133, 132, 141, 126, 139, 229,
+ 102, 105, 211, 215, 133, 100, 132, 133, 105, 36,
+ 115, 224, 226, 102, 149, 152, 132, 99, 133, 3,
+ 5, 122, 224, 17, 195, 224, 225, 126, 227, 100,
+ 240, 3, 133, 146, 238, 126, 139, 132, 133, 3,
+ 5, 8, 9, 10, 12, 45, 55, 56, 212, 226,
+ 227, 93, 215, 28, 33, 173, 175, 177, 178, 146,
+ 237, 237, 239, 146, 213, 225, 126, 100, 199, 149,
+ 210, 133, 34, 62, 167, 168, 169, 170, 132, 211,
+ 126, 215, 126, 122, 173, 175, 65, 153, 133, 133,
+ 197, 224, 46, 99, 190, 203, 204, 205, 240, 105,
+ 132, 169, 170, 221, 176, 3, 146, 146, 227, 99,
+ 144, 148, 190, 200, 201, 202, 207, 217, 3, 27,
+ 132, 205, 105, 142, 142, 142, 227, 126, 126, 132,
+ 202, 216, 142, 132, 132, 133, 218, 200, 3, 174,
+ 142, 132, 122, 126, 132, 213, 142, 133, 132, 227
};
#define yyerrok (yyerrstatus = 0)
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1769 "parser.y"
+#line 2098 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1770 "parser.y"
+#line 2099 "parser.y"
{(yyval.code)=code_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1772 "parser.y"
+#line 2101 "parser.y"
{(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1773 "parser.y"
+#line 2102 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
- case 41:
- if(as3_pass==2) {
-
-/* Line 1464 of skeleton.m4 */
-#line 1787 "parser.y"
- {(yyval.code)=(yyvsp[(2) - (3)].code);}
- }
- break;
-
-
-
case 42:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1788 "parser.y"
- {(yyval.code)=0;}
+#line 2117 "parser.y"
+ {(yyval.code)=(yyvsp[(2) - (3)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1791 "parser.y"
+#line 2118 "parser.y"
{(yyval.code)=0;}
}
break;
- case 50:
+ case 44:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1798 "parser.y"
- {(yyval.code)=(yyvsp[(3) - (4)].code);}
+#line 2121 "parser.y"
+ {(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1800 "parser.y"
- {/*TODO*/(yyval.code)=0;}
+#line 2128 "parser.y"
+ {(yyval.code)=(yyvsp[(3) - (4)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1804 "parser.y"
+#line 2132 "parser.y"
{(yyval.code)=(yyvsp[(1) - (2)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1805 "parser.y"
+#line 2133 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1809 "parser.y"
+#line 2137 "parser.y"
{
code_t**cc = &global->init->method->body->code;
*cc = code_append(*cc, (yyvsp[(1) - (1)].code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1820 "parser.y"
+#line 2148 "parser.y"
{(yyval.value)=(yyvsp[(2) - (2)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1821 "parser.y"
+#line 2149 "parser.y"
{(yyval.value).c=abc_pushundefined(0);
(yyval.value).t=TYPE_ANY;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1825 "parser.y"
+#line 2153 "parser.y"
{(yyval.code)=(yyvsp[(2) - (2)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1826 "parser.y"
+#line 2154 "parser.y"
{(yyval.code)=(yyvsp[(2) - (2)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1828 "parser.y"
+#line 2156 "parser.y"
{(yyval.code) = (yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1829 "parser.y"
+#line 2157 "parser.y"
{(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1832 "parser.y"
+#line 2160 "parser.y"
{
+PASS12
if(variable_exists((yyvsp[(1) - (3)].id)))
syntaxerror("Variable %s already defined", (yyvsp[(1) - (3)].id));
+PASS1
+ new_variable((yyvsp[(1) - (3)].id), 0, 1, 0);
+PASS2
if(!is_subtype_of((yyvsp[(3) - (3)].value).t, (yyvsp[(2) - (3)].classinfo))) {
syntaxerror("Can't convert %s to %s", (yyvsp[(3) - (3)].value).t->name,
(yyvsp[(2) - (3)].classinfo)->name);
}
- int index = new_variable((yyvsp[(1) - (3)].id), (yyvsp[(2) - (3)].classinfo), 1);
+ char slot = 0;
+ int index = 0;
+ if(state->method->uses_slots) {
+ variable_t* v = find_slot(state, (yyvsp[(1) - (3)].id));
+ if(v && !v->init) {
+ // this variable is stored in a slot
+ v->init = 1;
+ v->type = (yyvsp[(2) - (3)].classinfo);
+ slot = 1;
+ index = v->index;
+ }
+ }
+ if(!index) {
+ index = new_variable((yyvsp[(1) - (3)].id), (yyvsp[(2) - (3)].classinfo), 1, 0);
+ }
+
+ (yyval.code) = slot?abc_getscopeobject(0, 1):0;
if((yyvsp[(2) - (3)].classinfo)) {
if((yyvsp[(3) - (3)].value).c->prev || (yyvsp[(3) - (3)].value).c->opcode != OPCODE_PUSHUNDEFINED) {
- (yyval.code) = (yyvsp[(3) - (3)].value).c;
+ (yyval.code) = code_append((yyval.code), (yyvsp[(3) - (3)].value).c);
(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);
+ (yyval.code) = defaultvalue((yyval.code), (yyvsp[(2) - (3)].classinfo));
}
} else {
if((yyvsp[(3) - (3)].value).c->prev || (yyvsp[(3) - (3)].value).c->opcode != OPCODE_PUSHUNDEFINED) {
- (yyval.code) = (yyvsp[(3) - (3)].value).c;
+ (yyval.code) = code_append((yyval.code), (yyvsp[(3) - (3)].value).c);
(yyval.code) = abc_coerce_a((yyval.code));
- (yyval.code) = abc_setlocal((yyval.code), index);
} else {
+ // don't do anything
code_free((yyvsp[(3) - (3)].value).c);
- (yyval.code) = code_new();
+ code_free((yyval.code));
+ (yyval.code) = 0;
+ break;
}
}
-
- /* that's the default for a local register, anyway
- else {
- state->method->initcode = abc_pushundefined(state->method->initcode);
- state->method->initcode = abc_setlocal(state->method->initcode, index);
- }*/
- //printf("variable %s -> %d (%s)\n", $2->text, index, $4.t?$4.t->name:"");
+ if(slot) {
+ (yyval.code) = abc_setslot((yyval.code), index);
+ } else {
+ (yyval.code) = abc_setlocal((yyval.code), index);
+ }
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1874 "parser.y"
+#line 2220 "parser.y"
{(yyval.code) = code_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1875 "parser.y"
+#line 2221 "parser.y"
{(yyval.code)=(yyvsp[(2) - (2)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1878 "parser.y"
- {new_state();}
+#line 2224 "parser.y"
+ {PASS12 new_state();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1878 "parser.y"
+#line 2224 "parser.y"
{
(yyval.code) = code_new();
myjmp->branch = (yyval.code) = abc_nop((yyval.code));
}
(yyval.code) = var_block((yyval.code));
- old_state();
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1897 "parser.y"
+#line 2243 "parser.y"
{(yyval.code)=code_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1904 "parser.y"
+#line 2250 "parser.y"
{
- (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1);
+ PASS1 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),0,1,0);
+ PASS2 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1,0);
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1907 "parser.y"
+#line 2254 "parser.y"
{
+ PASS12
(yyval.id)=(yyvsp[(1) - (1)].id);
}
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1911 "parser.y"
- {new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;}
+#line 2259 "parser.y"
+ {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1912 "parser.y"
- {new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;}
+#line 2260 "parser.y"
+ {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1914 "parser.y"
+#line 2262 "parser.y"
{
if((yyvsp[(1) - (8)].for_start).each) syntaxerror("invalid syntax: ; not allowed in for each statement");
(yyval.code) = code_new();
myif->branch = out;
(yyval.code) = var_block((yyval.code));
- old_state();
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1934 "parser.y"
+#line 2282 "parser.y"
{
- variable_t*var = find_variable((yyvsp[(2) - (6)].id));
+ variable_t*var = find_variable(state, (yyvsp[(2) - (6)].id));
+ if(!var) {
+ syntaxerror("variable %s not known in this scope", (yyvsp[(2) - (6)].id));
+ }
+
char*tmp1name = concat2((yyvsp[(2) - (6)].id), "__tmp1__");
- int it = new_variable(tmp1name, TYPE_INT, 0);
+ int it = new_variable(tmp1name, TYPE_INT, 0, 0);
char*tmp2name = concat2((yyvsp[(2) - (6)].id), "__array__");
- int array = new_variable(tmp1name, 0, 0);
+ int array = new_variable(tmp1name, 0, 0, 0);
(yyval.code) = code_new();
(yyval.code) = code_append((yyval.code), (yyvsp[(4) - (6)].value).c);
myif->branch = out;
(yyval.code) = var_block((yyval.code));
- old_state();
free(tmp1name);
free(tmp2name);
+
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1977 "parser.y"
- {new_state();}
+#line 2330 "parser.y"
+ {PASS12 new_state();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1977 "parser.y"
+#line 2330 "parser.y"
{
(yyval.code) = code_new();
continuejumpsto((yyval.code), (yyvsp[(1) - (6)].id), cont);
(yyval.code) = var_block((yyval.code));
- old_state();
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1996 "parser.y"
- {new_state();}
+#line 2349 "parser.y"
+ {PASS12 new_state();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 1996 "parser.y"
+#line 2349 "parser.y"
{
(yyval.code) = code_new();
code_t*loopstart = (yyval.code) = abc_label((yyval.code));
continuejumpsto((yyval.code), (yyvsp[(1) - (7)].id), cont);
(yyval.code) = var_block((yyval.code));
- old_state();
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2011 "parser.y"
+#line 2364 "parser.y"
{
(yyval.code) = abc___break__(0, "");
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2014 "parser.y"
+#line 2367 "parser.y"
{
(yyval.code) = abc___break__(0, (yyvsp[(2) - (2)].id));
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2017 "parser.y"
+#line 2370 "parser.y"
{
(yyval.code) = abc___continue__(0, "");
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2020 "parser.y"
+#line 2373 "parser.y"
{
(yyval.code) = abc___continue__(0, (yyvsp[(2) - (2)].id));
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2024 "parser.y"
+#line 2377 "parser.y"
{(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2025 "parser.y"
+#line 2378 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2026 "parser.y"
+#line 2379 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2027 "parser.y"
+#line 2380 "parser.y"
{(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2028 "parser.y"
+#line 2381 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2029 "parser.y"
+#line 2382 "parser.y"
{(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2031 "parser.y"
+#line 2384 "parser.y"
{
- (yyval.code) = abc_dup(0);
+ (yyval.code) = abc_getlocal(0, state->switch_var);
(yyval.code) = code_append((yyval.code), (yyvsp[(2) - (4)].value).c);
code_t*j = (yyval.code) = abc_ifne((yyval.code), 0);
(yyval.code) = code_append((yyval.code), (yyvsp[(4) - (4)].code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2042 "parser.y"
+#line 2395 "parser.y"
{
(yyval.code) = (yyvsp[(3) - (3)].code);
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2045 "parser.y"
- {new_state();}
+#line 2398 "parser.y"
+ {PASS12 new_state();state->switch_var=alloc_local();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2045 "parser.y"
+#line 2398 "parser.y"
{
(yyval.code)=(yyvsp[(4) - (8)].value).c;
+ (yyval.code) = abc_setlocal((yyval.code), state->switch_var);
(yyval.code) = code_append((yyval.code), (yyvsp[(7) - (8)].code));
- code_t*out = (yyval.code) = abc_pop((yyval.code));
+
+ code_t*out = (yyval.code) = abc_kill((yyval.code), state->switch_var);
breakjumpsto((yyval.code), (yyvsp[(1) - (8)].id), out);
code_t*c = (yyval.code),*lastblock=0;
}
(yyval.code) = var_block((yyval.code));
- old_state();
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2074 "parser.y"
- {new_state();state->exception_name=(yyvsp[(3) - (5)].id);new_variable((yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].classinfo), 0);}
+#line 2429 "parser.y"
+ {PASS12 new_state();
+ state->exception_name=(yyvsp[(3) - (5)].id);
+ PASS1 new_variable((yyvsp[(3) - (5)].id), 0, 0, 0);
+ PASS2 new_variable((yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].classinfo), 0, 0);
+ }
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2075 "parser.y"
+#line 2434 "parser.y"
{
namespace_t name_ns = {ACCESS_PACKAGE, ""};
multiname_t name = {QNAME, &name_ns, 0, (yyvsp[(3) - (9)].id)};
(yyval.exception) = e;
code_t*c = 0;
- int i = find_variable_safe((yyvsp[(3) - (9)].id))->index;
+ int i = find_variable_safe(state, (yyvsp[(3) - (9)].id))->index;
e->target = c = abc_nop(0);
c = abc_setlocal(c, i);
+ c = code_append(c, code_dup(state->method->scope_code));
c = code_append(c, (yyvsp[(8) - (9)].code));
c = abc_kill(c, i);
c = var_block(c);
- old_state();
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2094 "parser.y"
- {new_state();state->exception_name=0;}
+#line 2454 "parser.y"
+ {PASS12 new_state();state->exception_name=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2094 "parser.y"
+#line 2454 "parser.y"
{
(yyvsp[(4) - (5)].code) = var_block((yyvsp[(4) - (5)].code));
if(!(yyvsp[(4) - (5)].code)) {
(yyval.exception)=0;
- old_state();
} else {
NEW(abc_exception_t, e)
e->exc_type = 0; //all exceptions
e->target = 0;
e->to = abc_nop(0);
e->to = code_append(e->to, (yyvsp[(4) - (5)].code));
- old_state();
(yyval.exception) = e;
}
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2111 "parser.y"
+#line 2470 "parser.y"
{(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2112 "parser.y"
+#line 2471 "parser.y"
{(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2113 "parser.y"
+#line 2472 "parser.y"
{(yyval.catch_list)=(yyvsp[(1) - (1)].catch_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2114 "parser.y"
+#line 2473 "parser.y"
{
(yyval.catch_list) = (yyvsp[(1) - (2)].catch_list);
(yyval.catch_list).finally = 0;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2122 "parser.y"
+#line 2481 "parser.y"
{
(yyval.catch_list).l=list_new();
(yyval.catch_list).finally = 0;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2131 "parser.y"
- {new_state();}
+#line 2490 "parser.y"
+ {PASS12 new_state();
+ state->method->has_exceptions=1;
+ state->method->late_binding=1;//for invariant scope_code
+ }
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2131 "parser.y"
+#line 2493 "parser.y"
{
code_t*out = abc_nop(0);
int tmp;
if((yyvsp[(6) - (6)].catch_list).finally)
- tmp = new_variable("__finally__", 0, 0);
+ tmp = new_variable("__finally__", 0, 0, 0);
abc_exception_list_t*l = (yyvsp[(6) - (6)].catch_list).l;
int count=0;
parserassert((ptroff_t)(yyvsp[(6) - (6)].catch_list).finally);
// finally block
e->target = (yyval.code) = abc_nop((yyval.code));
+ (yyval.code) = code_append((yyval.code), code_dup(state->method->scope_code));
(yyval.code) = abc___rethrow__((yyval.code));
}
list_concat(state->method->exceptions, (yyvsp[(6) - (6)].catch_list).l);
(yyval.code) = var_block((yyval.code));
- old_state();
+ PASS12 old_state();
}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2176 "parser.y"
+#line 2539 "parser.y"
{
(yyval.code)=(yyvsp[(2) - (2)].value).c;
(yyval.code)=abc_throw((yyval.code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2180 "parser.y"
+#line 2543 "parser.y"
{
if(!state->exception_name)
syntaxerror("re-throw only possible within a catch block");
- variable_t*v = find_variable(state->exception_name);
+ variable_t*v = find_variable(state, state->exception_name);
(yyval.code)=code_new();
(yyval.code)=abc_getlocal((yyval.code), v->index);
(yyval.code)=abc_throw((yyval.code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2191 "parser.y"
+#line 2554 "parser.y"
+ {
+ new_state();
+ if(state->method->has_exceptions) {
+ int v = alloc_local();
+ state->method->scope_code = abc_getlocal(state->method->scope_code, v);
+ state->method->scope_code = abc_pushwith(state->method->scope_code);
+ (yyval.value_list).number = v;
+ }
+ (yyval.value_list).cc = (yyvsp[(3) - (4)].value).c;
+}
+ }
+ break;
+
+
+
+ case 108:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2564 "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));
+ /* remove getlocal;pushwith from scope code again */
+ state->method->scope_code = code_cutlast(code_cutlast(state->method->scope_code));
+
+ (yyval.code) = (yyvsp[(1) - (2)].value_list).cc;
+ if(state->method->has_exceptions) {
+ (yyval.code) = abc_dup((yyval.code));
+ (yyval.code) = abc_setlocal((yyval.code), (yyvsp[(1) - (2)].value_list).number);
+ }
+ (yyval.code) = abc_pushwith((yyval.code));
+ (yyval.code) = code_append((yyval.code), (yyvsp[(2) - (2)].code));
(yyval.code) = abc_popscope((yyval.code));
+ old_state();
}
}
break;
- case 109:
+ case 110:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2201 "parser.y"
+#line 2582 "parser.y"
{PASS12 (yyval.id)="package";}
}
break;
- case 110:
+ case 111:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2203 "parser.y"
+#line 2584 "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 111:
+ case 112:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2204 "parser.y"
+#line 2585 "parser.y"
{PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));}
}
break;
- case 112:
+ case 113:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2206 "parser.y"
+#line 2587 "parser.y"
{PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;}
}
break;
- case 113:
+ case 114:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2207 "parser.y"
+#line 2588 "parser.y"
{PASS12 endpackage();(yyval.code)=0;}
}
break;
- case 114:
+ case 115:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2208 "parser.y"
+#line 2589 "parser.y"
{PASS12 startpackage("");}
}
break;
- case 115:
+ case 116:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2209 "parser.y"
+#line 2590 "parser.y"
{PASS12 endpackage();(yyval.code)=0;}
}
break;
- case 116:
+ case 117:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2211 "parser.y"
+#line 2592 "parser.y"
{
- PASS1
- if(!registry_find((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name)) {
+ PASS12
+ slotinfo_t*s = registry_find((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name);
+ if(!s && as3_pass==1) {// || !(s->flags&FLAG_BUILTIN)) {
as3_schedule_class((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name);
}
syntaxerror("Couldn't import class\n");
state_has_imports();
dict_put(state->imports, c->name, c);
+ import_toplevel(c->package);
(yyval.code)=0;
}
}
- case 117:
+ case 118:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2225 "parser.y"
+#line 2608 "parser.y"
{
- PASS1
- if(strncmp("flash.", (yyvsp[(2) - (4)].id), 6)) {
+ PASS12
+ if(strncmp("flash.", (yyvsp[(2) - (4)].id), 6) && as3_pass==1) {
as3_schedule_package((yyvsp[(2) - (4)].id));
}
i->package = (yyvsp[(2) - (4)].id);
state_has_imports();
list_append(state->wildcard_imports, i);
+ import_toplevel(i->package);
(yyval.code)=0;
}
}
- case 118:
- if(as3_pass==2) {
-
-/* Line 1464 of skeleton.m4 */
-#line 2241 "parser.y"
- {PASS12 (yyval.flags)=0;}
- }
- break;
-
-
-
case 119:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2242 "parser.y"
- {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
+#line 2625 "parser.y"
+ {PASS12 (yyval.flags).flags=0;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2243 "parser.y"
- {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].token);}
+#line 2626 "parser.y"
+ {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2244 "parser.y"
- {PASS12 (yyval.flags)=(yyvsp[(1) - (2)].flags)|(yyvsp[(2) - (2)].token);}
+#line 2627 "parser.y"
+ {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2246 "parser.y"
- {PASS12 (yyval.token)=FLAG_PUBLIC;}
+#line 2628 "parser.y"
+ {
+ PASS12
+ (yyval.flags).flags=(yyvsp[(1) - (2)].flags).flags|(yyvsp[(2) - (2)].flags).flags;
+ if((yyvsp[(1) - (2)].flags).ns && (yyvsp[(2) - (2)].flags).ns) syntaxerror("only one namespace allowed in one declaration");
+ (yyval.flags).ns=(yyvsp[(1) - (2)].flags).ns?(yyvsp[(1) - (2)].flags).ns:(yyvsp[(2) - (2)].flags).ns;
+
+}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2247 "parser.y"
- {PASS12 (yyval.token)=FLAG_PRIVATE;}
+#line 2636 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_PUBLIC;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2248 "parser.y"
- {PASS12 (yyval.token)=FLAG_PROTECTED;}
+#line 2637 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_PRIVATE;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2249 "parser.y"
- {PASS12 (yyval.token)=FLAG_STATIC;}
+#line 2638 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_PROTECTED;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2250 "parser.y"
- {PASS12 (yyval.token)=FLAG_DYNAMIC;}
+#line 2639 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_STATIC;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2251 "parser.y"
- {PASS12 (yyval.token)=FLAG_FINAL;}
+#line 2640 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_DYNAMIC;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2252 "parser.y"
- {PASS12 (yyval.token)=FLAG_OVERRIDE;}
+#line 2641 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_FINAL;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2253 "parser.y"
- {PASS12 (yyval.token)=FLAG_NATIVE;}
+#line 2642 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_OVERRIDE;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2254 "parser.y"
- {PASS12 (yyval.token)=FLAG_PACKAGEINTERNAL;}
+#line 2643 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_NATIVE;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2255 "parser.y"
- {PASS12 (yyval.token)=FLAG_NAMESPACE;}
+#line 2644 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_PACKAGEINTERNAL;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2257 "parser.y"
- {(yyval.classinfo)=registry_getobjectclass();}
+#line 2645 "parser.y"
+ {PASS12 (yyval.flags).flags=FLAG_NAMESPACE;
+ (yyval.flags).ns=(yyvsp[(1) - (1)].id);
+ }
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2258 "parser.y"
- {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
+#line 2649 "parser.y"
+ {PASS12 (yyval.classinfo)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2260 "parser.y"
- {PASS12 (yyval.classinfo_list)=list_new();}
+#line 2650 "parser.y"
+ {PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2261 "parser.y"
- {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
+#line 2652 "parser.y"
+ {PASS12 (yyval.classinfo_list)=list_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2263 "parser.y"
- {PASS12 (yyval.classinfo_list)=list_new();}
+#line 2653 "parser.y"
+ {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2264 "parser.y"
- {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
+#line 2655 "parser.y"
+ {PASS12 (yyval.classinfo_list)=list_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2268 "parser.y"
- {PASS12 startclass((yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list));}
+#line 2656 "parser.y"
+ {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2270 "parser.y"
- {PASS12 endclass();(yyval.code)=0;}
+#line 2660 "parser.y"
+ {PASS12 startclass(&(yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2274 "parser.y"
- {PASS12 startclass((yyvsp[(1) - (5)].flags)|FLAG_INTERFACE,(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list));}
+#line 2662 "parser.y"
+ {PASS12 endclass();(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2276 "parser.y"
+#line 2666 "parser.y"
+ {PASS12 (yyvsp[(1) - (5)].flags).flags|=FLAG_INTERFACE;
+ startclass(&(yyvsp[(1) - (5)].flags),(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list));}
+ }
+ break;
+
+
+
+ case 142:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2669 "parser.y"
{PASS12 endclass();(yyval.code)=0;}
}
break;
- case 150:
+ case 151:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2289 "parser.y"
+#line 2682 "parser.y"
{
code_t*c = state->cls->static_init->header;
c = code_append(c, (yyvsp[(1) - (1)].code));
- case 156:
+ case 157:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2300 "parser.y"
+#line 2693 "parser.y"
{
syntaxerror("variable declarations not allowed in interfaces");
}
- case 157:
+ case 158:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2303 "parser.y"
+#line 2696 "parser.y"
{
PASS12
- (yyvsp[(1) - (8)].flags) |= FLAG_PUBLIC;
- if((yyvsp[(1) - (8)].flags)&(FLAG_PRIVATE|FLAG_PACKAGEINTERNAL|FLAG_PROTECTED)) {
+ (yyvsp[(1) - (8)].flags).flags |= FLAG_PUBLIC;
+ if((yyvsp[(1) - (8)].flags).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);
+ startfunction(&(yyvsp[(1) - (8)].flags),(yyvsp[(3) - (8)].token),(yyvsp[(4) - (8)].id),&(yyvsp[(6) - (8)].params),(yyvsp[(8) - (8)].classinfo));
+ endfunction(&(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);
}
}
- case 160:
+ case 161:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2318 "parser.y"
- {setstaticfunction((yyvsp[(1) - (3)].flags));}
+#line 2711 "parser.y"
+ {setslotstate(&(yyvsp[(1) - (2)].flags),(yyvsp[(2) - (2)].token));}
}
break;
- case 161:
+ case 162:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2711 "parser.y"
+ {(yyval.code)=(yyvsp[(4) - (4)].code);setslotstate(0, 0);}
+ }
+ break;
+
+
+
+ case 163:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2713 "parser.y"
+ {(yyval.code) = (yyvsp[(1) - (1)].code);}
+ }
+ break;
+
+
+
+ case 164:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2714 "parser.y"
+ {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));}
+ }
+ break;
+
+
+
+ case 165:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2318 "parser.y"
+#line 2717 "parser.y"
{
- int flags = (yyvsp[(1) - (6)].flags);
- U8 access = flags2access((yyvsp[(1) - (6)].flags));
+ int flags = slotstate_flags->flags;
+ namespace_t ns = modifiers2access(slotstate_flags);
varinfo_t* info = 0;
if(state->cls) {
- memberinfo_t*i = registry_findmember(state->cls->info, (yyvsp[(3) - (6)].id), 1);
+ memberinfo_t*i = registry_findmember(state->cls->info, ns.name, (yyvsp[(1) - (3)].id), 1);
if(i) {
check_override(i, flags);
}
- info = varinfo_register_onclass(state->cls->info, access, (yyvsp[(3) - (6)].id));
+ info = varinfo_register_onclass(state->cls->info, ns.access, ns.name, (yyvsp[(1) - (3)].id));
} else {
- slotinfo_t*i = registry_find(state->package, (yyvsp[(3) - (6)].id));
+ slotinfo_t*i = registry_find(state->package, (yyvsp[(1) - (3)].id));
if(i) {
- syntaxerror("package %s already contains '%s'", state->package, (yyvsp[(3) - (6)].id));
+ syntaxerror("package %s already contains '%s'", state->package, (yyvsp[(1) - (3)].id));
+ }
+ if(ns.name && ns.name[0]) {
+ syntaxerror("namespaces not allowed on package-level variables");
}
- info = varinfo_register_global(access, state->package, (yyvsp[(3) - (6)].id));
+ info = varinfo_register_global(ns.access, state->package, (yyvsp[(1) - (3)].id));
}
- info->type = (yyvsp[(5) - (6)].classinfo);
+ info->type = (yyvsp[(2) - (3)].classinfo);
info->flags = flags;
/* slot name */
- namespace_t mname_ns = {access, ""};
- multiname_t mname = {QNAME, &mname_ns, 0, (yyvsp[(3) - (6)].id)};
+ multiname_t mname = {QNAME, &ns, 0, (yyvsp[(1) - (3)].id)};
trait_list_t**traits;
code_t**code;
if(!state->cls) {
// global variable
- mname_ns.name = state->package;
+ ns.name = state->package;
traits = &global->init->traits;
code = &global->init->method->body->code;
} else if(flags&FLAG_STATIC) {
}
trait_t*t=0;
- if((yyvsp[(5) - (6)].classinfo)) {
- MULTINAME(m, (yyvsp[(5) - (6)].classinfo));
+ if((yyvsp[(2) - (3)].classinfo)) {
+ MULTINAME(m, (yyvsp[(2) - (3)].classinfo));
t = trait_new_member(traits, multiname_clone(&m), multiname_clone(&mname), 0);
} else {
t = trait_new_member(traits, 0, multiname_clone(&mname), 0);
/* initalization code (if needed) */
code_t*c = 0;
- if((yyvsp[(6) - (6)].value).c && !is_pushundefined((yyvsp[(6) - (6)].value).c)) {
+ if((yyvsp[(3) - (3)].value).c && !is_pushundefined((yyvsp[(3) - (3)].value).c)) {
c = abc_getlocal_0(c);
- c = code_append(c, (yyvsp[(6) - (6)].value).c);
- c = converttype(c, (yyvsp[(6) - (6)].value).t, (yyvsp[(5) - (6)].classinfo));
+ c = code_append(c, (yyvsp[(3) - (3)].value).c);
+ c = converttype(c, (yyvsp[(3) - (3)].value).t, (yyvsp[(2) - (3)].classinfo));
c = abc_setslot(c, t->slot_id);
}
*code = code_append(*code, c);
- if((yyvsp[(2) - (6)].token)==KW_CONST) {
+ if(slotstate_varconst==KW_CONST) {
t->kind= TRAIT_CONST;
}
(yyval.code)=0;
- setstaticfunction(0);
}
}
break;
- case 162:
+ case 166:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2391 "parser.y"
+#line 2791 "parser.y"
{(yyval.constant)=0;}
}
break;
- case 163:
+ case 167:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2392 "parser.y"
+#line 2792 "parser.y"
{(yyval.constant)=(yyvsp[(2) - (2)].constant);}
}
break;
- case 164:
+ case 168:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2394 "parser.y"
+#line 2794 "parser.y"
{(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_uint));}
}
break;
- case 165:
+ case 169:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2395 "parser.y"
+#line 2795 "parser.y"
{(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));}
}
break;
- case 166:
+ case 170:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2396 "parser.y"
+#line 2796 "parser.y"
{(yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));}
}
break;
- case 167:
+ case 171:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2397 "parser.y"
+#line 2797 "parser.y"
{(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));}
}
break;
- case 168:
+ case 172:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2398 "parser.y"
+#line 2798 "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 169:
+ case 173:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2400 "parser.y"
+#line 2800 "parser.y"
{(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));}
}
break;
- case 170:
+ case 174:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2401 "parser.y"
+#line 2801 "parser.y"
{(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));}
}
break;
- case 171:
+ case 175:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2402 "parser.y"
+#line 2802 "parser.y"
{(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));}
}
break;
- case 172:
+ case 176:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2403 "parser.y"
+#line 2803 "parser.y"
{
- // TODO
- as3_warning("Couldn't resolve %s", (yyvsp[(1) - (1)].id));
- (yyval.constant) = constant_new_null((yyvsp[(1) - (1)].id));
+ if(!strcmp((yyvsp[(1) - (1)].id), "NaN")) {
+ (yyval.constant) = constant_new_float(__builtin_nan(""));
+ } else {
+ as3_warning("Couldn't evaluate constant value of %s", (yyvsp[(1) - (1)].id));
+ (yyval.constant) = constant_new_null((yyvsp[(1) - (1)].id));
+ }
}
}
break;
- case 173:
+ case 177:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2412 "parser.y"
+#line 2815 "parser.y"
{
PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
- case 174:
+ case 178:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2416 "parser.y"
+#line 2819 "parser.y"
{
PASS12
(yyval.params)=(yyvsp[(1) - (1)].params);
- case 175:
+ case 179:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2422 "parser.y"
+#line 2825 "parser.y"
{
PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
- case 176:
+ case 180:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2428 "parser.y"
+#line 2831 "parser.y"
{
PASS12
(yyval.params) =(yyvsp[(1) - (4)].params);
- case 177:
+ case 181:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2436 "parser.y"
+#line 2839 "parser.y"
{
PASS12
(yyval.params) = (yyvsp[(1) - (3)].params);
- case 178:
+ case 182:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2441 "parser.y"
+#line 2844 "parser.y"
{
PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
- case 179:
+ case 183:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2447 "parser.y"
+#line 2850 "parser.y"
{
- PASS1 (yyval.param)=0;
- PASS2
- (yyval.param) = malloc(sizeof(param_t));
+ PASS12
+ (yyval.param) = rfx_calloc(sizeof(param_t));
(yyval.param)->name=(yyvsp[(1) - (4)].id);
(yyval.param)->type = (yyvsp[(3) - (4)].classinfo);
+ PASS2
(yyval.param)->value = (yyvsp[(4) - (4)].constant);
}
}
- case 180:
+ case 184:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2455 "parser.y"
+#line 2858 "parser.y"
{
- PASS1 (yyval.param)=0;
- PASS2
- (yyval.param) = malloc(sizeof(param_t));
+ PASS12
+ (yyval.param) = rfx_calloc(sizeof(param_t));
(yyval.param)->name=(yyvsp[(1) - (2)].id);
(yyval.param)->type = TYPE_ANY;
+ PASS2
(yyval.param)->value = (yyvsp[(2) - (2)].constant);
}
}
- case 181:
- if(as3_pass==2) {
-
-/* Line 1464 of skeleton.m4 */
-#line 2463 "parser.y"
- {(yyval.token)=(yyvsp[(1) - (1)].token);}
- }
- break;
-
-
-
- case 182:
- if(as3_pass==2) {
-
-/* Line 1464 of skeleton.m4 */
-#line 2464 "parser.y"
- {(yyval.token)=(yyvsp[(1) - (1)].token);}
- }
- break;
-
-
-
- case 183:
+ case 187:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2465 "parser.y"
- {(yyval.token)=0;}
+#line 2868 "parser.y"
+ {PASS12 (yyval.token)=0;}
}
break;
- case 184:
+ case 188:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2468 "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));}
+#line 2871 "parser.y"
+ {PASS12 startfunction(&(yyvsp[(1) - (9)].flags),(yyvsp[(3) - (9)].token),(yyvsp[(4) - (9)].id),&(yyvsp[(6) - (9)].params),(yyvsp[(8) - (9)].classinfo));}
}
break;
- case 185:
+ case 189:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2469 "parser.y"
+#line 2872 "parser.y"
{
- PASS1 old_state();list_deep_free((yyvsp[(6) - (12)].params).list);
+ PASS1
+ endfunction(&(yyvsp[(1) - (12)].flags),(yyvsp[(3) - (12)].token),(yyvsp[(4) - (12)].id),&(yyvsp[(6) - (12)].params),0,0);
PASS2
if(!state->method->info) syntaxerror("internal error");
code_t*c = method_header(state->method);
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);
+ endfunction(&(yyvsp[(1) - (12)].flags),(yyvsp[(3) - (12)].token),(yyvsp[(4) - (12)].id),&(yyvsp[(6) - (12)].params),(yyvsp[(8) - (12)].classinfo),c);
+ PASS12
list_deep_free((yyvsp[(6) - (12)].params).list);
(yyval.code)=0;
}
- case 187:
+ case 191:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2483 "parser.y"
+#line 2888 "parser.y"
{PASS12 (yyval.id)=0;}
}
break;
- case 188:
+ case 192:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2485 "parser.y"
+#line 2890 "parser.y"
{PASS12 innerfunction((yyvsp[(2) - (7)].id),&(yyvsp[(4) - (7)].params),(yyvsp[(6) - (7)].classinfo));}
}
break;
- case 189:
+ case 193:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2486 "parser.y"
+#line 2891 "parser.y"
{
- PASS1 old_state();list_deep_free((yyvsp[(4) - (10)].params).list);
+ PASS1
+ endfunction(0,0,(yyvsp[(2) - (10)].id),&(yyvsp[(4) - (10)].params),0,0);
PASS2
methodinfo_t*f = state->method->info;
if(!f || !f->kind) syntaxerror("internal error");
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);
+ endfunction(0,0,(yyvsp[(2) - (10)].id),&(yyvsp[(4) - (10)].params),(yyvsp[(6) - (10)].classinfo),c);
(yyval.value).c = abc_getlocal(0, index);
(yyval.value).t = TYPE_FUNCTION(f);
+
+ PASS12 list_deep_free((yyvsp[(4) - (10)].params).list);
}
}
break;
- case 190:
+ case 194:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2506 "parser.y"
+#line 2913 "parser.y"
{
- PASS1 (yyval.classinfo)=0;
+ PASS1 NEW(unresolvedinfo_t,c);
+ memset(c, 0, sizeof(*c));
+ c->kind = INFOTYPE_UNRESOLVED;
+ c->name = (yyvsp[(1) - (1)].id);
+ c->package = get_package_from_name((yyvsp[(1) - (1)].id));
+ if(!c->package) {
+ c->nsset = get_current_imports();
+ /* make the compiler look for this class in the current directory,
+ just in case: */
+ as3_schedule_class_noerror(state->package, (yyvsp[(1) - (1)].id));
+ }
+ (yyval.classinfo) = (classinfo_t*)c;
PASS2
- /* try current package */
slotinfo_t*s = find_class((yyvsp[(1) - (1)].id));
- if(!s) syntaxerror("Could not find class/method %s\n", (yyvsp[(1) - (1)].id));
+ if(!s) syntaxerror("Could not find class/method %s (current package: %s)\n", (yyvsp[(1) - (1)].id), state->package);
(yyval.classinfo) = (classinfo_t*)s;
}
}
- case 191:
+ case 195:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2515 "parser.y"
+#line 2932 "parser.y"
{
- 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;
+ PASS1 NEW(unresolvedinfo_t,c);
+ memset(c, 0, sizeof(*c));
+ c->kind = INFOTYPE_UNRESOLVED;
+ c->package = (yyvsp[(1) - (3)].id);
+ c->name = (yyvsp[(3) - (3)].id);
+ (yyval.classinfo) = (classinfo_t*)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));
- case 194:
+ case 198:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2531 "parser.y"
+#line 2949 "parser.y"
{PASS12 (yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));}
}
break;
- case 195:
+ case 199:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2532 "parser.y"
+#line 2950 "parser.y"
{PASS12 (yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));}
}
break;
- case 196:
+ case 200:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2534 "parser.y"
- {(yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);}
+#line 2952 "parser.y"
+ {PASS12 (yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);}
}
break;
- case 197:
+ case 201:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2535 "parser.y"
- {(yyval.classinfo)=registry_getanytype();}
+#line 2953 "parser.y"
+ {PASS12 (yyval.classinfo)=registry_getanytype();}
}
break;
- case 198:
+ case 202:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2536 "parser.y"
- {(yyval.classinfo)=registry_getanytype();}
+#line 2954 "parser.y"
+ {PASS12 (yyval.classinfo)=registry_getanytype();}
}
break;
- case 199:
+ case 203:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2545 "parser.y"
- {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
+#line 2963 "parser.y"
+ {PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
}
break;
- case 200:
+ case 204:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2546 "parser.y"
- {(yyval.classinfo)=0;}
+#line 2964 "parser.y"
+ {PASS12 (yyval.classinfo)=0;}
}
break;
- case 201:
+ case 205:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2550 "parser.y"
- {(yyval.value_list).cc=0;(yyval.value_list).len=0;}
+#line 2968 "parser.y"
+ {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
}
break;
- case 202:
+ case 206:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2551 "parser.y"
+#line 2969 "parser.y"
{(yyval.value_list)=(yyvsp[(2) - (3)].value_list);}
}
break;
- case 203:
+ case 207:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2553 "parser.y"
- {(yyval.value_list).cc=0;(yyval.value_list).len=0;}
+#line 2971 "parser.y"
+ {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
}
break;
- case 206:
+ case 210:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2557 "parser.y"
- {(yyval.value_list).len=1;
+#line 2975 "parser.y"
+ {(yyval.value_list).number=1;
(yyval.value_list).cc = (yyvsp[(1) - (1)].value).c;
}
}
- case 207:
+ case 211:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2561 "parser.y"
+#line 2979 "parser.y"
{(yyval.value_list) = (yyvsp[(1) - (2)].value_list);}
}
break;
- case 208:
+ case 212:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2562 "parser.y"
+#line 2980 "parser.y"
{
- (yyval.value_list).len= (yyvsp[(1) - (2)].value_list).len+1;
+ (yyval.value_list).number= (yyvsp[(1) - (2)].value_list).number+1;
(yyval.value_list).cc = code_append((yyvsp[(1) - (2)].value_list).cc, (yyvsp[(2) - (2)].value).c);
}
}
- case 210:
+ case 214:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2568 "parser.y"
+#line 2986 "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);
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);
+ (yyval.value).c = abc_constructprop2((yyval.value).c, name, (yyvsp[(4) - (4)].value_list).number);
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
+ trait_t*t = traits_find_slotid(state->cls->abc->traits,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);
+ (yyval.value).c = abc_constructprop2((yyval.value).c, name, (yyvsp[(4) - (4)].value_list).number);
} 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).c = abc_construct((yyval.value).c, (yyvsp[(4) - (4)].value_list).number);
}
(yyval.value).t = TYPE_ANY;
- case 211:
+ case 215:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2604 "parser.y"
+#line 3022 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (4)].value).c;
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_callproperty2((yyval.value).c, name, (yyvsp[(3) - (4)].value_list).len);
+ (yyval.value).c = abc_callproperty2((yyval.value).c, name, (yyvsp[(3) - (4)].value_list).number);
multiname_destroy(name);
- } else if((yyval.value).c->opcode == OPCODE_GETSLOT) {
+ } else if((yyval.value).c->opcode == OPCODE_GETSLOT && (yyval.value).c->prev->opcode != OPCODE_GETSCOPEOBJECT) {
int slot = (int)(ptroff_t)(yyval.value).c->data[0];
- trait_t*t = abc_class_find_slotid(state->cls->abc,slot);//FIXME
+ trait_t*t = traits_find_slotid(state->cls->abc->traits,slot);
if(t->kind!=TRAIT_METHOD) {
//ok: flash allows to assign closures to members.
}
(yyval.value).c = code_cutlast((yyval.value).c);
(yyval.value).c = code_append((yyval.value).c, paramcode);
//$$.c = abc_callmethod($$.c, t->method, len); //#1051 illegal early access binding
- (yyval.value).c = abc_callproperty2((yyval.value).c, name, (yyvsp[(3) - (4)].value_list).len);
+ (yyval.value).c = abc_callproperty2((yyval.value).c, name, (yyvsp[(3) - (4)].value_list).number);
} else if((yyval.value).c->opcode == OPCODE_GETSUPER) {
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_callsuper2((yyval.value).c, name, (yyvsp[(3) - (4)].value_list).len);
+ (yyval.value).c = abc_callsuper2((yyval.value).c, name, (yyvsp[(3) - (4)].value_list).number);
multiname_destroy(name);
} else {
(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);
+ (yyval.value).c = abc_call((yyval.value).c, (yyvsp[(3) - (4)].value_list).number);
}
if(TYPE_IS_FUNCTION((yyvsp[(1) - (4)].value).t) && (yyvsp[(1) - (4)].value).t->data) {
- case 212:
+ case 216:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2650 "parser.y"
+#line 3068 "parser.y"
{
if(!state->cls) syntaxerror("super() not allowed outside of a class");
if(!state->method) syntaxerror("super() not allowed outside of a function");
*/
state->method->has_super = 1;
- (yyval.value).c = abc_constructsuper((yyval.value).c, (yyvsp[(3) - (4)].value_list).len);
+ (yyval.value).c = abc_constructsuper((yyval.value).c, (yyvsp[(3) - (4)].value_list).number);
(yyval.value).c = abc_pushundefined((yyval.value).c);
(yyval.value).t = TYPE_ANY;
}
- case 213:
+ case 217:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2671 "parser.y"
+#line 3089 "parser.y"
{
(yyval.value).c = (yyvsp[(2) - (2)].value).c;
if((yyval.value).c->opcode == OPCODE_COERCE_A) {
(yyval.value).c->opcode = OPCODE_DELETEPROPERTY;
} else if((yyval.value).c->opcode == OPCODE_GETSLOT) {
int slot = (int)(ptroff_t)(yyval.value).c->data[0];
- multiname_t*name = abc_class_find_slotid(state->cls->abc,slot)->name;
+ multiname_t*name = traits_find_slotid(state->cls->abc->traits,slot)->name;
(yyval.value).c = code_cutlast((yyval.value).c);
(yyval.value).c = abc_deleteproperty2((yyval.value).c, name);
} else {
- case 214:
+ case 218:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2692 "parser.y"
+#line 3110 "parser.y"
{
(yyval.code) = abc_returnvoid(0);
}
- case 215:
+ case 219:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2695 "parser.y"
+#line 3113 "parser.y"
{
(yyval.code) = (yyvsp[(2) - (2)].value).c;
(yyval.code) = abc_returnvalue((yyval.code));
- case 216:
+ case 220:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2702 "parser.y"
+#line 3120 "parser.y"
{(yyval.value)=(yyvsp[(1) - (1)].value);}
}
break;
- case 217:
+ case 221:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2703 "parser.y"
+#line 3121 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
- case 218:
+ case 222:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2704 "parser.y"
+#line 3122 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (3)].value).c;
(yyval.value).c = cut_last_push((yyval.value).c);
- case 219:
+ case 223:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2710 "parser.y"
+#line 3128 "parser.y"
{
(yyval.code)=cut_last_push((yyvsp[(1) - (1)].value).c);
}
- case 220:
+ case 224:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2716 "parser.y"
+#line 3134 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
- case 222:
+ case 226:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2720 "parser.y"
+#line 3138 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
- case 223:
+ case 227:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2722 "parser.y"
+#line 3140 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
- case 224:
+ case 228:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2724 "parser.y"
+#line 3142 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
- case 226:
+ case 230:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2728 "parser.y"
+#line 3146 "parser.y"
{
(yyval.value).c = 0;
namespace_t ns = {ACCESS_PACKAGE, ""};
- case 227:
+ case 231:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2745 "parser.y"
+#line 3163 "parser.y"
{(yyval.value).c = abc_pushbyte(0, (yyvsp[(1) - (1)].number_uint));
//MULTINAME(m, registry_getintclass());
//$$.c = abc_coerce2($$.c, &m); // FIXME
- case 228:
+ case 232:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2750 "parser.y"
+#line 3168 "parser.y"
{(yyval.value).c = abc_pushshort(0, (yyvsp[(1) - (1)].number_uint));
(yyval.value).t = TYPE_INT;
}
- case 229:
+ case 233:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2753 "parser.y"
+#line 3171 "parser.y"
{(yyval.value).c = abc_pushint(0, (yyvsp[(1) - (1)].number_int));
(yyval.value).t = TYPE_INT;
}
- case 230:
+ case 234:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2756 "parser.y"
+#line 3174 "parser.y"
{(yyval.value).c = abc_pushuint(0, (yyvsp[(1) - (1)].number_uint));
(yyval.value).t = TYPE_UINT;
}
- case 231:
+ case 235:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2759 "parser.y"
+#line 3177 "parser.y"
{(yyval.value).c = abc_pushdouble(0, (yyvsp[(1) - (1)].number_float));
(yyval.value).t = TYPE_FLOAT;
}
- case 232:
+ case 236:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2762 "parser.y"
+#line 3180 "parser.y"
{(yyval.value).c = abc_pushstring2(0, &(yyvsp[(1) - (1)].str));free((char*)(yyvsp[(1) - (1)].str).str);
(yyval.value).t = TYPE_STRING;
}
- case 233:
+ case 237:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2765 "parser.y"
+#line 3183 "parser.y"
{(yyval.value).c = abc_pushundefined(0);
(yyval.value).t = TYPE_ANY;
}
- case 234:
+ case 238:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2768 "parser.y"
+#line 3186 "parser.y"
{(yyval.value).c = abc_pushtrue(0);
(yyval.value).t = TYPE_BOOLEAN;
}
- case 235:
+ case 239:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2771 "parser.y"
+#line 3189 "parser.y"
{(yyval.value).c = abc_pushfalse(0);
(yyval.value).t = TYPE_BOOLEAN;
}
- case 236:
+ case 240:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2774 "parser.y"
+#line 3192 "parser.y"
{(yyval.value).c = abc_pushnull(0);
(yyval.value).t = TYPE_NULL;
}
- case 237:
+ case 241:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2778 "parser.y"
+#line 3196 "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;
}
- case 238:
+ case 242:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2781 "parser.y"
+#line 3199 "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;
}
- case 239:
+ case 243:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2784 "parser.y"
+#line 3202 "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;
}
- case 240:
+ case 244:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2787 "parser.y"
+#line 3205 "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;
}
- case 241:
+ case 245:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2790 "parser.y"
+#line 3208 "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;
}
- case 242:
+ case 246:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2793 "parser.y"
+#line 3211 "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;
}
- case 243:
+ case 247:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2796 "parser.y"
+#line 3214 "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;
}
- case 244:
+ case 248:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2799 "parser.y"
+#line 3217 "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;
}
- case 245:
+ case 249:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2803 "parser.y"
+#line 3221 "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);
- case 246:
+ case 250:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2814 "parser.y"
+#line 3232 "parser.y"
{
(yyval.value).t = join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'A');
/*printf("%08x:\n",$1.t);
- case 247:
+ case 251:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2832 "parser.y"
+#line 3250 "parser.y"
{(yyval.value).c=(yyvsp[(2) - (2)].value).c;
(yyval.value).c = abc_not((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- case 248:
+ case 252:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2837 "parser.y"
+#line 3255 "parser.y"
{(yyval.value).c=(yyvsp[(2) - (2)].value).c;
(yyval.value).c = abc_bitnot((yyval.value).c);
(yyval.value).t = TYPE_INT;
- case 249:
+ case 253:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2842 "parser.y"
+#line 3260 "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;
- case 250:
+ case 254:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2847 "parser.y"
+#line 3265 "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;
- case 251:
+ case 255:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2852 "parser.y"
+#line 3270 "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;
- case 252:
+ case 256:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2857 "parser.y"
+#line 3275 "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;
- case 253:
+ case 257:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2861 "parser.y"
+#line 3279 "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;
- case 254:
+ case 258:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2865 "parser.y"
+#line 3283 "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;
- case 255:
+ case 259:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2870 "parser.y"
+#line 3288 "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;
- case 256:
+ case 260:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2874 "parser.y"
+#line 3292 "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;
- case 257:
+ case 261:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2878 "parser.y"
+#line 3296 "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);
- case 258:
+ case 262:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2887 "parser.y"
+#line 3305 "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);
- case 259:
+ case 263:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2896 "parser.y"
+#line 3314 "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);
- case 260:
+ case 264:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2906 "parser.y"
+#line 3324 "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;
- case 261:
+ case 265:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2911 "parser.y"
+#line 3329 "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) && (yyvsp[(3) - (3)].value).t->data) {
MULTINAME(m, (classinfo_t*)((yyvsp[(3) - (3)].value).t->data));
- case 262:
+ case 266:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2924 "parser.y"
+#line 3342 "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;
- case 263:
+ case 267:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2929 "parser.y"
+#line 3347 "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;
- case 264:
+ case 268:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2934 "parser.y"
+#line 3352 "parser.y"
{
(yyval.value).c = (yyvsp[(3) - (4)].value).c;
(yyval.value).c = abc_typeof((yyval.value).c);
- case 265:
+ case 269:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2940 "parser.y"
+#line 3358 "parser.y"
{
(yyval.value).c = cut_last_push((yyvsp[(2) - (2)].value).c);
(yyval.value).c = abc_pushundefined((yyval.value).c);
- case 266:
+ case 270:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2946 "parser.y"
+#line 3364 "parser.y"
{ (yyval.value).c = abc_pushundefined(0);
(yyval.value).t = TYPE_ANY;
}
- case 267:
+ case 271:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2950 "parser.y"
+#line 3368 "parser.y"
{(yyval.value)=(yyvsp[(2) - (3)].value);}
}
break;
- case 268:
+ case 272:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2952 "parser.y"
+#line 3370 "parser.y"
{
(yyval.value)=(yyvsp[(2) - (2)].value);
if(IS_INT((yyvsp[(2) - (2)].value).t)) {
- case 269:
+ case 273:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2963 "parser.y"
+#line 3381 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (4)].value).c;
(yyval.value).c = code_append((yyval.value).c, (yyvsp[(3) - (4)].value).c);
- case 270:
+ case 274:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2972 "parser.y"
+#line 3390 "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).c = abc_newarray((yyval.value).c, (yyvsp[(2) - (3)].value_list).number);
(yyval.value).t = registry_getarrayclass();
}
}
- case 271:
+ case 275:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2979 "parser.y"
- {(yyval.value_list).cc=0;(yyval.value_list).len=0;}
+#line 3397 "parser.y"
+ {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
}
break;
- case 272:
+ case 276:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2980 "parser.y"
+#line 3398 "parser.y"
{(yyval.value_list)=(yyvsp[(1) - (1)].value_list);}
}
break;
- case 273:
+ case 277:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2982 "parser.y"
+#line 3400 "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;
+ (yyval.value_list).number = 2;
}
}
break;
- case 274:
+ case 278:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2988 "parser.y"
+#line 3406 "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).number = (yyvsp[(1) - (5)].value_list).number+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);
}
- case 275:
+ case 279:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2997 "parser.y"
+#line 3415 "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).c = abc_newobject((yyval.value).c, (yyvsp[(2) - (3)].value_list).number/2);
(yyval.value).t = registry_getobjectclass();
}
}
- case 276:
+ case 280:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3004 "parser.y"
+#line 3422 "parser.y"
{
code_t*c = (yyvsp[(3) - (3)].value).c;
if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) {
- case 277:
+ case 281:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3016 "parser.y"
+#line 3434 "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);
- case 278:
+ case 282:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3022 "parser.y"
+#line 3440 "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);
- case 279:
+ case 283:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3028 "parser.y"
+#line 3446 "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);
- case 280:
+ case 284:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3034 "parser.y"
+#line 3452 "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);
- case 281:
+ case 285:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3040 "parser.y"
+#line 3458 "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);
- case 282:
+ case 286:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3046 "parser.y"
+#line 3464 "parser.y"
{
code_t*c = abc_bitor((yyvsp[(3) - (3)].value).c);
c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t);
- case 283:
+ case 287:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3052 "parser.y"
+#line 3470 "parser.y"
{
code_t*c = abc_bitxor((yyvsp[(3) - (3)].value).c);
c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t);
- case 284:
+ case 288:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3058 "parser.y"
+#line 3476 "parser.y"
{
code_t*c = (yyvsp[(3) - (3)].value).c;
- case 285:
+ case 289:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3071 "parser.y"
+#line 3489 "parser.y"
{ code_t*c = (yyvsp[(3) - (3)].value).c;
if(TYPE_IS_INT((yyvsp[(1) - (3)].value).t)) {
c=abc_subtract_i(c);
- case 286:
+ case 290:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3082 "parser.y"
+#line 3500 "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);
- case 287:
+ case 291:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3089 "parser.y"
+#line 3507 "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;
code_t*j2 = (yyval.value).c = abc_jump((yyval.value).c, 0);
(yyval.value).c = j1->branch = abc_label((yyval.value).c);
(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 = converttype((yyval.value).c, (yyvsp[(5) - (5)].value).t, (yyval.value).t);
(yyval.value).c = j2->branch = abc_label((yyval.value).c);
}
}
- case 288:
+ case 292:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3102 "parser.y"
+#line 3520 "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)) {
+ if(is_getlocal((yyvsp[(1) - (2)].value).c) && (TYPE_IS_INT((yyvsp[(1) - (2)].value).t) || TYPE_IS_NUMBER((yyvsp[(1) - (2)].value).t))) {
int nr = getlocalnr((yyvsp[(1) - (2)].value).c);
code_free((yyvsp[(1) - (2)].value).c);(yyvsp[(1) - (2)].value).c=0;
if(TYPE_IS_INT((yyvsp[(1) - (2)].value).t)) {
- case 289:
+ case 293:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3129 "parser.y"
+#line 3547 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(1) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
- case 290:
+ case 294:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3143 "parser.y"
+#line 3561 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(2) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
- case 291:
+ case 295:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3157 "parser.y"
+#line 3575 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(2) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
- case 292:
+ case 296:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3172 "parser.y"
+#line 3590 "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 = {f->access, ""};
+ memberinfo_t*f = registry_findmember_nsset(t, state->active_namespaces, (yyvsp[(3) - (3)].id), 1);
+
MEMBER_MULTINAME(m, f, (yyvsp[(3) - (3)].id));
(yyval.value).c = 0;
(yyval.value).c = abc_getlocal_0((yyval.value).c);
- case 293:
+ case 297:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3186 "parser.y"
+#line 3604 "parser.y"
{
// attribute TODO
(yyval.value).c = abc_pushundefined(0);
- case 294:
+ case 298:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3193 "parser.y"
+#line 3611 "parser.y"
{
// child attribute TODO
(yyval.value).c = abc_pushundefined(0);
- case 295:
+ case 299:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3200 "parser.y"
+#line 3618 "parser.y"
{
// namespace declaration TODO
(yyval.value).c = abc_pushundefined(0);
- case 296:
+ case 300:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3207 "parser.y"
+#line 3625 "parser.y"
{
// descendants TODO
(yyval.value).c = abc_pushundefined(0);
- case 297:
+ case 301:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3214 "parser.y"
+#line 3632 "parser.y"
{
// filter TODO
(yyval.value).c = abc_pushundefined(0);
- case 298:
+ case 302:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3226 "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->data) {
- t = t->data;
- is_static = 1;
- }
- if(t) {
- memberinfo_t*f = registry_findmember(t, (yyvsp[(3) - (3)].id), 1);
- char noslot = 0;
- if(f && !is_static != !(f->flags&FLAG_STATIC))
- noslot=1;
- if(f && f->slot && !noslot) {
- (yyval.value).c = abc_getslot((yyval.value).c, f->slot);
- } else {
- MEMBER_MULTINAME(m, f, (yyvsp[(3) - (3)].id));
- (yyval.value).c = abc_getproperty2((yyval.value).c, &m);
- }
- /* determine type */
- (yyval.value).t = slotinfo_gettype((slotinfo_t*)f);
- if(!(yyval.value).t)
- (yyval.value).c = abc_coerce_a((yyval.value).c);
- } else {
- /* when resolving a property on an unknown type, we do know the
- name of the property (and don't seem to need the package), but
- we need to make avm2 try out all access modes */
- multiname_t m = {MULTINAME, 0, &nopackage_namespace_set, (yyvsp[(3) - (3)].id)};
- (yyval.value).c = abc_getproperty2((yyval.value).c, &m);
- (yyval.value).c = abc_coerce_a((yyval.value).c);
- (yyval.value).t = registry_getanytype();
- }
- }
+#line 3643 "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->data) {
+ t = t->data;
+ is_static = 1;
+ }
+ if(t) {
+ if(t->subtype==INFOTYPE_UNRESOLVED) {
+ syntaxerror("syntaxerror: trying to resolve property '%s' on incomplete object '%s'", (yyvsp[(3) - (3)].id), t->name);
+ }
+ memberinfo_t*f = registry_findmember_nsset(t, state->active_namespaces, (yyvsp[(3) - (3)].id), 1);
+ char noslot = 0;
+ if(f && !is_static != !(f->flags&FLAG_STATIC))
+ noslot=1;
+ if(f && f->slot && !noslot) {
+ (yyval.value).c = abc_getslot((yyval.value).c, f->slot);
+ } else {
+ MEMBER_MULTINAME(m, f, (yyvsp[(3) - (3)].id));
+ (yyval.value).c = abc_getproperty2((yyval.value).c, &m);
+ }
+ /* determine type */
+ (yyval.value).t = slotinfo_gettype((slotinfo_t*)f);
+ if(!(yyval.value).t)
+ (yyval.value).c = abc_coerce_a((yyval.value).c);
+ } else if((yyvsp[(1) - (3)].value).c && (yyvsp[(1) - (3)].value).c->opcode == OPCODE___PUSHPACKAGE__) {
+ string_t*package = (yyvsp[(1) - (3)].value).c->data[0];
+ char*package2 = concat3(package->str, ".", (yyvsp[(3) - (3)].id));
+ if(dict_contains(state->import_toplevel_packages, package2)) {
+ (yyval.value).c = (yyvsp[(1) - (3)].value).c;
+ (yyval.value).c->data[0] = string_new4(package2);
+ (yyval.value).t = 0;
+ } else {
+ slotinfo_t*a = registry_find(package->str, (yyvsp[(3) - (3)].id));
+ if(!a)
+ syntaxerror("couldn't resolve %s", package2);
+ (yyval.value) = push_class(a);
+ }
+ } else {
+ /* when resolving a property on an unknown type, we do know the
+ name of the property (and don't seem to need the package), but
+ we need to make avm2 try out all access modes */
+ multiname_t m = {MULTINAME, 0, &nopackage_namespace_set, (yyvsp[(3) - (3)].id)};
+ (yyval.value).c = abc_getproperty2((yyval.value).c, &m);
+ (yyval.value).c = abc_coerce_a((yyval.value).c);
+ (yyval.value).t = registry_getanytype();
+ }
+}
}
break;
- case 299:
+ case 303:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3259 "parser.y"
+#line 3693 "parser.y"
{
+ PASS1
+ /* Queue unresolved identifiers for checking against the parent
+ function's variables.
+ We consider everything which is not a local variable "unresolved".
+ This encompasses class names, members of the surrounding class
+ etc. which is *correct* because local variables of the parent function
+ would shadow those.
+ */
+ if(state->method->inner && !find_variable(state, (yyvsp[(1) - (1)].id))) {
+ unknown_variable((yyvsp[(1) - (1)].id));
+ }
+
+ /* let the compiler know that it might check the current directory/package
+ for this identifier- maybe there's a file $1.as defining $1. */
+ as3_schedule_class_noerror(state->package, (yyvsp[(1) - (1)].id));
+ PASS2
+
(yyval.value).t = 0;
(yyval.value).c = 0;
slotinfo_t*a = 0;
variable_t*v;
/* look at variables */
- if((v = find_variable((yyvsp[(1) - (1)].id)))) {
+ if((v = find_variable(state, (yyvsp[(1) - (1)].id)))) {
// $1 is a local variable
(yyval.value).c = abc_getlocal((yyval.value).c, v->index);
(yyval.value).t = v->type;
break;
}
+ if((v = find_slot(state, (yyvsp[(1) - (1)].id)))) {
+ (yyval.value).c = abc_getscopeobject((yyval.value).c, 1);
+ (yyval.value).c = abc_getslot((yyval.value).c, v->index);
+ (yyval.value).t = v->type;
+ break;
+ }
int i_am_static = (state->method && state->method->info)?(state->method->info->flags&FLAG_STATIC):FLAG_STATIC;
/* look at current class' members */
- if(state->cls && (f = registry_findmember(state->cls->info, (yyvsp[(1) - (1)].id), 1)) &&
+ if(state->cls && (f = registry_findmember_nsset(state->cls->info, state->active_namespaces, (yyvsp[(1) - (1)].id), 1)) &&
(f->flags&FLAG_STATIC) >= i_am_static) {
// $1 is a function in this class
int var_is_static = (f->flags&FLAG_STATIC);
/* look at actual classes, in the current package and imported */
if((a = find_class((yyvsp[(1) - (1)].id)))) {
- 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->kind == INFOTYPE_METHOD) {
- methodinfo_t*f = (methodinfo_t*)a;
- (yyval.value).t = TYPE_FUNCTION(f);
- } else {
- varinfo_t*v = (varinfo_t*)a;
- (yyval.value).t = v->type;
- }
- } else {
- 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, c->slot);
- } else {
- MULTINAME(m, c);
- (yyval.value).c = abc_getlex2((yyval.value).c, &m);
- }
- (yyval.value).t = TYPE_CLASS(c);
- }
+ (yyval.value) = push_class(a);
+ break;
+ }
+
+ /* look through package prefixes */
+ if(dict_contains(state->import_toplevel_packages, (yyvsp[(1) - (1)].id))) {
+ (yyval.value).c = abc___pushpackage__((yyval.value).c, (yyvsp[(1) - (1)].id));
+ (yyval.value).t = 0;
break;
}
/* unknown object, let the avm2 resolve it */
if(1) {
- as3_softwarning("Couldn't resolve '%s', doing late binding", (yyvsp[(1) - (1)].id));
+ //as3_softwarning("Couldn't resolve '%s', doing late binding", $1);
+ as3_warning("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)};
- case 300:
+ case 304:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3361 "parser.y"
- {(yyval.code)=0;}
+#line 3798 "parser.y"
+ {
+ PASS12
+ NEW(namespace_decl_t,n);
+ n->name = (yyvsp[(2) - (2)].id);
+ n->url = 0;
+ (yyval.namespace_decl)=n;
+}
}
break;
- case 301:
+ case 305:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3362 "parser.y"
- {(yyval.code)=0;}
+#line 3805 "parser.y"
+ {
+ PASS12
+ NEW(namespace_decl_t,n);
+ n->name = (yyvsp[(2) - (4)].id);
+ n->url = (yyvsp[(4) - (4)].id);
+ (yyval.namespace_decl)=n;
+}
}
break;
- case 302:
+ case 306:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3363 "parser.y"
- {(yyval.code)=0;}
+#line 3812 "parser.y"
+ {
+ PASS12
+ NEW(namespace_decl_t,n);
+ n->name = (yyvsp[(2) - (4)].id);
+ n->url = (yyvsp[(4) - (4)].str).str;
+ (yyval.namespace_decl)=n;
+}
}
break;
- case 303:
+ case 307:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3819 "parser.y"
+ {
+ PASS12
+ list_append(state->new_namespaces, (yyvsp[(2) - (2)].namespace_decl));
+ tokenizer_register_namespace((yyvsp[(2) - (2)].namespace_decl)->name);
+ (yyval.code)=0;
+}
+ }
+ break;
+
+
+
+ case 308:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3365 "parser.y"
+#line 3826 "parser.y"
{
PASS12
- tokenizer_register_namespace((yyvsp[(3) - (3)].id));
+ NEW(namespace_decl_t,n);
+ n->name = (yyvsp[(3) - (3)].classinfo)->name;
+ n->url = 0;
+ /* FIXME: for pass2, we should now try to figure out what the URL of
+ this thing is */
+ list_append(state->new_namespaces, n);
+ tokenizer_register_namespace((yyvsp[(3) - (3)].classinfo)->name);
(yyval.code)=0;
}
}
/* Line 1464 of skeleton.m4 */
-#line 7705 "parser.tab.c"
+#line 8202 "parser.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);