#define YYBISON_VERSION "2.4"
/* Skeleton name. */
-#define YYSKELETON_NAME "yacc.c"
+#define YYSKELETON_NAME "./skeleton.m4"
/* Pure parsers. */
#define YYPURE 0
#define YYLSP_NEEDED 0
/* Substitute the variable and function names. */
-#define yyparse avm2_parse
-#define yylex avm2_lex
-#define yyerror avm2_error
-#define yylval avm2_lval
-#define yychar avm2_char
-#define yydebug avm2_debug
-#define yynerrs avm2_nerrs
+#define yyparse a3_parse
+#define yylex a3_lex
+#define yyerror a3_error
+#define yylval a3_lval
+#define yychar a3_char
+#define yydebug a3_debug
+#define yynerrs a3_nerrs
/* Copy the first part of user declarations. */
-/* Line 189 of yacc.c */
+/* Line 198 of skeleton.m4 */
#line 23 "parser.y"
#include <stdlib.h>
#include "registry.h"
#include "code.h"
#include "opcodes.h"
+#include "compiler.h"
+extern int a3_lex();
-/* Line 189 of yacc.c */
-#line 96 "parser.tab.c"
+
+/* Line 198 of skeleton.m4 */
+#line 99 "parser.tab.c"
/* Enabling traces. */
#ifndef YYDEBUG
know about them. */
enum yytokentype {
T_IDENTIFIER = 258,
- T_STRING = 259,
- T_REGEXP = 260,
- T_EMPTY = 261,
- T_INT = 262,
- T_UINT = 263,
- T_BYTE = 264,
- T_SHORT = 265,
- T_FLOAT = 266,
- T_FOR = 267,
- T_WHILE = 268,
- T_DO = 269,
- T_SWITCH = 270,
- KW_IMPLEMENTS = 271,
- KW_NAMESPACE = 272,
- KW_PACKAGE = 273,
- KW_PROTECTED = 274,
- KW_PUBLIC = 275,
- KW_PRIVATE = 276,
- KW_USE = 277,
- KW_INTERNAL = 278,
- KW_NEW = 279,
- KW_NATIVE = 280,
- KW_FUNCTION = 281,
- KW_FINALLY = 282,
- KW_UNDEFINED = 283,
- KW_CONTINUE = 284,
- KW_CLASS = 285,
- KW_CONST = 286,
- KW_CATCH = 287,
- KW_CASE = 288,
- KW_SET = 289,
- KW_VOID = 290,
- KW_THROW = 291,
- KW_STATIC = 292,
- KW_WITH = 293,
- KW_INSTANCEOF = 294,
- KW_IMPORT = 295,
- KW_RETURN = 296,
- KW_TYPEOF = 297,
- KW_INTERFACE = 298,
- KW_NULL = 299,
- KW_VAR = 300,
- KW_DYNAMIC = 301,
- KW_OVERRIDE = 302,
- KW_FINAL = 303,
- KW_EACH = 304,
- KW_GET = 305,
- KW_TRY = 306,
- KW_SUPER = 307,
- KW_EXTENDS = 308,
- KW_FALSE = 309,
- KW_TRUE = 310,
- KW_BOOLEAN = 311,
- KW_UINT = 312,
- KW_INT = 313,
- KW_NUMBER = 314,
- KW_STRING = 315,
- KW_DEFAULT = 316,
- KW_DELETE = 317,
- KW_IF = 318,
- KW_ELSE = 319,
- KW_BREAK = 320,
- KW_IS = 321,
- KW_IN = 322,
- KW_AS = 323,
- T_EQEQ = 324,
- T_EQEQEQ = 325,
- T_NE = 326,
- T_NEE = 327,
- T_LE = 328,
- T_GE = 329,
- T_ORBY = 330,
- T_DIVBY = 331,
- T_MODBY = 332,
- T_MULBY = 333,
- T_PLUSBY = 334,
- T_MINUSBY = 335,
- T_SHRBY = 336,
- T_SHLBY = 337,
- T_USHRBY = 338,
- T_OROR = 339,
- T_ANDAND = 340,
- T_COLONCOLON = 341,
- T_MINUSMINUS = 342,
- T_PLUSPLUS = 343,
- T_DOTDOT = 344,
- T_DOTDOTDOT = 345,
- T_SHL = 346,
- T_USHR = 347,
- T_SHR = 348,
- prec_none = 349,
- below_semicolon = 350,
- below_assignment = 351,
- below_minus = 354,
- minusminus_prefix = 355,
- plusplus_prefix = 356,
- below_curly = 357,
- above_identifier = 358,
- below_else = 359,
- above_function = 360
+ T_NAMESPACE = 259,
+ T_STRING = 260,
+ T_REGEXP = 261,
+ T_EMPTY = 262,
+ T_INT = 263,
+ T_UINT = 264,
+ T_BYTE = 265,
+ T_SHORT = 266,
+ T_FLOAT = 267,
+ T_FOR = 268,
+ T_WHILE = 269,
+ T_DO = 270,
+ T_SWITCH = 271,
+ KW_IMPLEMENTS = 272,
+ KW_NAMESPACE = 273,
+ KW_PACKAGE = 274,
+ KW_PROTECTED = 275,
+ KW_PUBLIC = 276,
+ KW_PRIVATE = 277,
+ KW_USE = 278,
+ KW_INTERNAL = 279,
+ KW_NEW = 280,
+ KW_NATIVE = 281,
+ KW_FUNCTION = 282,
+ KW_FINALLY = 283,
+ KW_UNDEFINED = 284,
+ KW_CONTINUE = 285,
+ KW_CLASS = 286,
+ KW_CONST = 287,
+ KW_CATCH = 288,
+ KW_CASE = 289,
+ KW_SET = 290,
+ KW_VOID = 291,
+ KW_THROW = 292,
+ KW_STATIC = 293,
+ KW_WITH = 294,
+ KW_INSTANCEOF = 295,
+ KW_IMPORT = 296,
+ KW_RETURN = 297,
+ KW_TYPEOF = 298,
+ KW_INTERFACE = 299,
+ KW_NULL = 300,
+ KW_VAR = 301,
+ KW_DYNAMIC = 302,
+ KW_OVERRIDE = 303,
+ KW_FINAL = 304,
+ KW_EACH = 305,
+ KW_GET = 306,
+ KW_TRY = 307,
+ KW_SUPER = 308,
+ KW_EXTENDS = 309,
+ KW_FALSE = 310,
+ KW_TRUE = 311,
+ KW_BOOLEAN = 312,
+ KW_UINT = 313,
+ KW_INT = 314,
+ KW_NUMBER = 315,
+ KW_STRING = 316,
+ KW_DEFAULT = 317,
+ KW_DELETE = 318,
+ KW_IF = 319,
+ KW_ELSE = 320,
+ KW_BREAK = 321,
+ KW_IS = 322,
+ KW_IN = 323,
+ KW_AS = 324,
+ T_DICTSTART = 325,
+ T_EQEQ = 326,
+ T_EQEQEQ = 327,
+ T_NE = 328,
+ T_NEE = 329,
+ T_LE = 330,
+ T_GE = 331,
+ T_ORBY = 332,
+ T_DIVBY = 333,
+ T_MODBY = 334,
+ T_MULBY = 335,
+ T_PLUSBY = 336,
+ T_MINUSBY = 337,
+ T_XORBY = 338,
+ T_SHRBY = 339,
+ T_SHLBY = 340,
+ T_USHRBY = 341,
+ T_OROR = 342,
+ T_ANDAND = 343,
+ T_COLONCOLON = 344,
+ T_MINUSMINUS = 345,
+ T_PLUSPLUS = 346,
+ T_DOTDOT = 347,
+ T_DOTDOTDOT = 348,
+ T_SHL = 349,
+ T_USHR = 350,
+ T_SHR = 351,
+ prec_none = 352,
+ below_semicolon = 353,
+ below_assignment = 354,
+ below_minus = 356,
+ minusminus_prefix = 357,
+ plusplus_prefix = 358,
+ below_curly = 359,
+ new2 = 360,
+ above_identifier = 361,
+ below_else = 362,
+ above_function = 363
};
#endif
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union
-/* Line 214 of yacc.c */
-#line 41 "parser.y"
+/* Line 223 of skeleton.m4 */
+#line 44 "parser.y"
tokenunion
{
-/* Line 214 of yacc.c */
-#line 41 "parser.y"
+/* Line 223 of skeleton.m4 */
+#line 44 "parser.y"
enum yytokentype token;
int flags;
-/* Line 214 of yacc.c */
-#line 268 "parser.tab.c"
+/* Line 223 of skeleton.m4 */
+#line 275 "parser.tab.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
/* Copy the second part of user declarations. */
-/* Line 264 of yacc.c */
-#line 251 "parser.y"
+/* Line 273 of skeleton.m4 */
+#line 259 "parser.y"
-static int yyerror(char*s)
+static int a3_error(char*s)
{
syntaxerror("%s", s);
return 0; //make gcc happy
}
+
static char* concat2(const char* t1, const char* t2)
{
int l1 = strlen(t1);
DECLARE_LIST(import);
+DECLARE(methodstate);
+DECLARE_LIST(methodstate);
+
typedef struct _classstate {
/* class data */
classinfo_t*info;
abc_class_t*abc;
- code_t*init;
- code_t*static_init;
+
+ methodstate_t*init;
+ methodstate_t*static_init;
+ //code_t*init;
+ //code_t*static_init;
+
char has_constructor;
} classstate_t;
-typedef struct _methodstate {
+struct _methodstate {
/* method data */
- memberinfo_t*info;
+ methodinfo_t*info;
char late_binding;
char is_constructor;
char has_super;
char is_global;
+ int variable_count;
+
+ dict_t*unresolved_variables;
+
+ char inner;
+ char uses_parent_function;
+ abc_method_t*abc;
+ int var_index; // for inner methods
+
+ code_t*header;
abc_exception_list_t*exceptions;
-} methodstate_t;
+
+ methodstate_list_t*innerfunctions;
+};
typedef struct _state {
struct _state*old;
import_list_t*wildcard_imports;
dict_t*imports;
char has_own_imports;
+ char new_vars; // e.g. transition between two functions
classstate_t*cls;
methodstate_t*method;
typedef struct _global {
abc_file_t*file;
abc_script_t*init;
-
- int variable_count;
+ dict_t*token2info;
+ dict_t*file2token2info;
} global_t;
static global_t*global = 0;
#define MULTINAME(m,x) \
multiname_t m;\
namespace_t m##_ns;\
- registry_fill_multiname(&m, &m##_ns, x);
+ (x)->package; \
+ registry_fill_multiname(&m, &m##_ns, (slotinfo_t*)(x));
#define MEMBER_MULTINAME(m,f,n) \
multiname_t m;\
namespace_t m##_ns;\
if(f) { \
- m##_ns = flags2namespace(f->flags, ""); \
+ m##_ns.access = (f)->access; \
+ m##_ns.name = ""; \
m.type = QNAME; \
m.ns = &m##_ns; \
m.namespace_set = 0; \
state_t*leaving = state;
state = state->old;
+
+ if(as3_pass>1 && leaving->method && leaving->method != state->method && !leaving->method->inner) {
+ free(leaving->method);
+ leaving->method=0;
+ }
+ if(as3_pass>1 && leaving->cls && leaving->cls != state->cls) {
+ free(leaving->cls);
+ leaving->cls=0;
+ }
+
state_destroy(leaving);
}
-void initialize_parser()
-{
- global = rfx_calloc(sizeof(global_t));
- global->file = abc_file_new();
- global->file->flags &= ~ABCFILE_LAZY;
- global->variable_count = 1;
- global->init = abc_initscript(global->file);
- code_t*c = global->init->method->body->code;
- c = abc_getlocal_0(c);
- c = abc_pushscope(c);
- /*c = abc_findpropstrict(c, "[package]::trace");
- c = abc_pushstring(c, "[entering global init function]");
- c = abc_callpropvoid(c, "[package]::trace", 1);*/
- global->init->method->body->code = c;
-}
+static 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, char var0);
+
+static char* internal_filename_package = 0;
void initialize_file(char*filename)
{
+ if(state) {
+ syntaxerror("invalid call to initialize_file during parsing of another file");
+ }
new_state();
- state->package = filename;
- // needed for state->method->late_binding:
- state->method = rfx_calloc(sizeof(methodstate_t));
+ state->package = internal_filename_package = strdup(filename);
+
+ global->token2info = dict_lookup(global->file2token2info,
+ current_filename // use long version
+ );
+ if(!global->token2info) {
+ global->token2info = dict_new2(&ptr_type);
+ dict_put(global->file2token2info, current_filename, global->token2info);
+ }
+
+ if(as3_pass==1) {
+ state->method = rfx_calloc(sizeof(methodstate_t));
+ dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, state->method);
+ } else {
+ state->method = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount);
+ 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
+ }
}
+
void finish_file()
{
if(!state || state->level!=1) {
- syntaxerror("unexpected end of file");
+ syntaxerror("unexpected end of file in pass %d", as3_pass);
+ }
+
+ if(as3_pass==2) {
+ code_t*header = method_header(state->method);
+ code_t*c = wrap_function(header, 0, global->init->method->body->code);
+ global->init->method->body->code = c;
+ free(state->method);state->method=0;
}
+
+ //free(state->package);state->package=0; // used in registry
state_destroy(state);state=0;
}
+void initialize_parser()
+{
+ global = rfx_calloc(sizeof(global_t));
+ global->file = abc_file_new();
+ global->file->flags &= ~ABCFILE_LAZY;
+ global->file2token2info = dict_new();
+ global->token2info = 0;
+}
+
void* finish_parser()
{
- code_t*c = global->init->method->body->code;
- /*c = abc_findpropstrict(c, "[package]::trace");
- c = abc_pushstring(c, "[leaving global init function]");
- c = abc_callpropvoid(c, "[package]::trace", 1);*/
- c = abc_returnvoid(c);
- global->init->method->body->code = c;
+ dict_free_all(global->file2token2info, 1, (void*)dict_destroy);
+
+ global->token2info=0;
+
return global->file;
}
c = abc_iftrue(c,xx);*/
}
-
typedef struct _variable {
int index;
classinfo_t*type;
char init;
+ methodstate_t*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)
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_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(char*name, classinfo_t*type, char init)
+static int new_variable(const char*name, classinfo_t*type, char init)
{
NEW(variable_t, v);
- v->index = global->variable_count;
+ v->index = state->method->variable_count;
v->type = type;
v->init = init;
+ v->method = state->method;
dict_put(state->vars, name, v);
- return global->variable_count++;
+ return state->method->variable_count++;
}
#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 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)
+{
+ syntaxerror("internal error in %s, %s:%d", f, file, line);
+}
+
+
+static code_t* method_header(methodstate_t*m)
+{
+ code_t*c = 0;
+ if(m->late_binding && !m->inner) {
+ c = abc_getlocal_0(c);
+ c = abc_pushscope(c);
+ }
+ /*if(m->innerfunctions) {
+ c = abc_newactivation(c);
+ c = abc_pushscope(c);
+ }*/
+ 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);
+ free(l->methodstate);l->methodstate=0;
+ l = l->next;
+ }
+ if(m->header) {
+ c = code_append(c, m->header);
+ m->header = 0;
+ }
+ if(m->is_constructor && !m->has_super) {
+ // call default constructor
+ c = abc_getlocal_0(c);
+ c = abc_constructsuper(c, 0);
+ }
+ list_free(m->innerfunctions);
+ m->innerfunctions = 0;
+ return c;
+}
+
+
static code_t* wrap_function(code_t*c,code_t*header, code_t*body)
{
c = code_append(c, header);
new_state();
/*printf("entering package \"%s\"\n", name);*/
state->package = strdup(name);
- global->variable_count = 1;
}
static void endpackage()
{
old_state();
}
+#define FLAG_PUBLIC 256
+#define FLAG_PROTECTED 512
+#define FLAG_PRIVATE 1024
+#define FLAG_PACKAGEINTERNAL 2048
+#define FLAG_NAMESPACE 4096
+
+static int flags2access(int flags)
+{
+ int access = 0;
+ if(flags&FLAG_PUBLIC) {
+ if(access&(FLAG_PRIVATE|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL))
+ syntaxerror("invalid combination of access levels");
+ access = ACCESS_PACKAGE;
+ } else if(flags&FLAG_PRIVATE) {
+ if(access&(FLAG_PUBLIC|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL))
+ syntaxerror("invalid combination of access levels");
+ access = ACCESS_PRIVATE;
+ } else if(flags&FLAG_PROTECTED) {
+ if(access&(FLAG_PUBLIC|FLAG_PRIVATE|FLAG_PACKAGEINTERNAL))
+ syntaxerror("invalid combination of access levels");
+ access = ACCESS_PROTECTED;
+ } else {
+ access = ACCESS_PACKAGEINTERNAL;
+ }
+ return access;
+}
+
+static void function_initvars(methodstate_t*m, params_t*params, int flags, char var0)
+{
+ if(var0) {
+ int index = -1;
+ if(m->inner)
+ index = new_variable("this", 0, 0);
+ else if(!m->is_global)
+ index = new_variable((flags&FLAG_STATIC)?"class":"this", state->cls?state->cls->info:0, 0);
+ else
+ index = new_variable("globalscope", 0, 0);
+ if(index)
+ *(int*)0=0;
+ parserassert(!index);
+ }
+
+ if(params) {
+ param_list_t*p=0;
+ for(p=params->list;p;p=p->next) {
+ new_variable(p->param->name, p->param->type, 0);
+ }
+ }
+
+ methodstate_list_t*l = m->innerfunctions;
+ while(l) {
+ methodstate_t*m = l->methodstate;
+ m->var_index = new_variable(m->info->name, TYPE_FUNCTION(m->info), 0);
+ l = l->next;
+ }
+}
+
+
char*as3_globalclass=0;
-static void startclass(int flags, char*classname, classinfo_t*extends, classinfo_list_t*implements, char interface)
+static void startclass(int flags, char*classname, classinfo_t*extends, classinfo_list_t*implements)
{
if(state->cls) {
syntaxerror("inner classes now allowed");
}
new_state();
- global->variable_count = 1;
- state->cls = rfx_calloc(sizeof(classstate_t));
- state->method = rfx_calloc(sizeof(methodstate_t)); // method state, for static constructor
-
token_list_t*t=0;
classinfo_list_t*mlist=0;
- if(flags&~(FLAG_PACKAGEINTERNAL|FLAG_PUBLIC|FLAG_FINAL|FLAG_DYNAMIC))
+ if(flags&~(FLAG_PACKAGEINTERNAL|FLAG_PUBLIC|FLAG_FINAL|FLAG_DYNAMIC|FLAG_INTERFACE))
syntaxerror("invalid modifier(s)");
if((flags&(FLAG_PUBLIC|FLAG_PACKAGEINTERNAL)) == (FLAG_PUBLIC|FLAG_PACKAGEINTERNAL))
int access=0;
char*package=0;
- if(!(flags&FLAG_PUBLIC) && !state->package) {
- access = ACCESS_PRIVATE; package = current_filename;
- } else if(!(flags&FLAG_PUBLIC) && state->package) {
+ if(!(flags&FLAG_PUBLIC) && state->package==internal_filename_package) {
+ access = ACCESS_PRIVATE; package = internal_filename_package;
+ } else if(!(flags&FLAG_PUBLIC) && state->package!=internal_filename_package) {
access = ACCESS_PACKAGEINTERNAL; package = state->package;
- } else if(state->package) {
+ } else if(state->package!=internal_filename_package) {
access = ACCESS_PACKAGE; package = state->package;
} else {
syntaxerror("public classes only allowed inside a package");
}
- if(registry_findclass(package, classname)) {
- syntaxerror("Package \"%s\" already contains a class called \"%s\"", package, classname);
- }
-
+ if(as3_pass==1) {
+ state->cls = rfx_calloc(sizeof(classstate_t));
+ state->cls->init = rfx_calloc(sizeof(methodstate_t));
+ state->cls->static_init = rfx_calloc(sizeof(methodstate_t));
+ /* notice: we make no effort to initialize the top variable (local0) here,
+ even though it has special meaning. We just rely on the facat
+ that pass 1 won't do anything with variables */
+
+ dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, state->cls);
+
+ /* set current method to constructor- all code within the class-level (except
+ static variable initializations) will be executed during construction time */
+ state->method = state->cls->init;
- /* build info struct */
- int num_interfaces = (list_length(implements));
- state->cls->info = classinfo_register(access, package, classname, num_interfaces);
- state->cls->info->superclass = extends?extends:TYPE_OBJECT;
- int pos = 0;
- classinfo_list_t*l = implements;
- for(l=implements;l;l=l->next) {
- state->cls->info->interfaces[pos++] = l->classinfo;
+ if(registry_find(package, classname)) {
+ syntaxerror("Package \"%s\" already contains a class called \"%s\"", package, classname);
+ }
+ /* build info struct */
+ int num_interfaces = (list_length(implements));
+ state->cls->info = classinfo_register(access, package, classname, num_interfaces);
+ state->cls->info->flags |= flags & (FLAG_DYNAMIC|FLAG_INTERFACE|FLAG_FINAL);
}
- multiname_t*extends2 = sig2mname(extends);
-
- MULTINAME(classname2,state->cls->info);
+ if(as3_pass == 2) {
+ state->cls = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount);
+
+ state->method = state->cls->init;
+ parserassert(state->cls && state->cls->info);
+
+ 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;
+ }
- /*if(extends) {
- state->cls_init = abc_getlocal_0(state->cls_init);
- state->cls_init = abc_constructsuper(state->cls_init, 0);
- }*/
+ /* generate the abc code for this class */
+ MULTINAME(classname2,state->cls->info);
+ multiname_t*extends2 = sig2mname(extends);
- state->cls->abc = abc_class_new(global->file, &classname2, extends2);
- if(flags&FLAG_FINAL) abc_class_final(state->cls->abc);
- if(!(flags&FLAG_DYNAMIC)) abc_class_sealed(state->cls->abc);
- if(interface) {
- state->cls->info->flags |= CLASS_INTERFACE;
- abc_class_interface(state->cls->abc);
- }
+ state->cls->abc = abc_class_new(global->file, &classname2, extends2);
+ if(state->cls->info->flags&FLAG_FINAL) abc_class_final(state->cls->abc);
+ if(!(state->cls->info->flags&FLAG_DYNAMIC)) abc_class_sealed(state->cls->abc);
+ if(state->cls->info->flags&FLAG_INTERFACE) {
+ abc_class_interface(state->cls->abc);
+ }
- abc_class_protectedNS(state->cls->abc, classname);
+ abc_class_protectedNS(state->cls->abc, classname);
- for(mlist=implements;mlist;mlist=mlist->next) {
- MULTINAME(m, mlist->classinfo);
- abc_class_add_interface(state->cls->abc, &m);
- }
+ for(mlist=implements;mlist;mlist=mlist->next) {
+ MULTINAME(m, mlist->classinfo);
+ abc_class_add_interface(state->cls->abc, &m);
+ }
- /* now write the construction code for this class */
- int slotindex = abc_initscript_addClassTrait(global->init, &classname2, state->cls->abc);
+ /* write the construction code for this class to the global init
+ function */
+ int slotindex = abc_initscript_addClassTrait(global->init, &classname2, state->cls->abc);
- abc_method_body_t*m = global->init->method->body;
- __ getglobalscope(m);
- classinfo_t*s = extends;
+ abc_method_body_t*m = global->init->method->body;
+ __ getglobalscope(m);
+ classinfo_t*s = extends;
- int count=0;
-
- while(s) {
- //TODO: take a look at the current scope stack, maybe
- // we can re-use something
- s = s->superclass;
- if(!s)
- break;
-
- multiname_t*s2 = sig2mname(s);
- __ getlex2(m, s2);
- multiname_destroy(s2);
-
- __ pushscope(m); count++;
- m->code = m->code->prev->prev; // invert
- }
- /* continue appending after last op end */
- while(m->code && m->code->next) m->code = m->code->next;
-
- /* TODO: if this is one of *our* classes, we can also
- do a getglobalscope/getslot <nr> (which references
- the init function's slots) */
- if(extends2) {
- __ getlex2(m, extends2);
- __ dup(m);
- /* notice: we get a Verify Error #1107 if the top elemnt on the scope
- stack is not the superclass */
- __ pushscope(m);count++;
- } else {
- __ pushnull(m);
- /* notice: we get a verify error #1107 if the top element on the scope
- stack is not the global object */
- __ getlocal_0(m);
- __ pushscope(m);count++;
- }
- __ newclass(m,state->cls->abc);
- while(count--) {
- __ popscope(m);
- }
- __ setslot(m, slotindex);
-
- /* flash.display.MovieClip handling */
- if(!as3_globalclass && (flags&FLAG_PUBLIC) && classinfo_equals(registry_getMovieClip(),extends)) {
- if(state->package && state->package[0]) {
- as3_globalclass = concat3(state->package, ".", classname);
+ int count=0;
+
+ while(s) {
+ //TODO: take a look at the current scope stack, maybe
+ // we can re-use something
+ s = s->superclass;
+ if(!s)
+ break;
+
+ multiname_t*s2 = sig2mname(s);
+ __ getlex2(m, s2);
+ multiname_destroy(s2);
+
+ __ pushscope(m); count++;
+ m->code = m->code->prev->prev; // invert
+ }
+ /* continue appending after last op end */
+ while(m->code && m->code->next) m->code = m->code->next;
+
+ /* TODO: if this is one of *our* classes, we can also
+ do a getglobalscope/getslot <nr> (which references
+ the init function's slots) */
+ if(extends2) {
+ __ getlex2(m, extends2);
+ __ dup(m);
+ /* notice: we get a Verify Error #1107 if the top elemnt on the scope
+ stack is not the superclass */
+ __ pushscope(m);count++;
} else {
- as3_globalclass = strdup(classname);
+ __ pushnull(m);
+ /* notice: we get a verify error #1107 if the top element on the scope
+ stack is not the global object */
+ __ getlocal_0(m);
+ __ pushscope(m);count++;
+ }
+ __ newclass(m,state->cls->abc);
+ while(count--) {
+ __ popscope(m);
+ }
+ __ setslot(m, slotindex);
+ multiname_destroy(extends2);
+
+ /* flash.display.MovieClip handling */
+
+ if(!as3_globalclass && (flags&FLAG_PUBLIC) && slotinfo_equals((slotinfo_t*)registry_getMovieClip(),(slotinfo_t*)extends)) {
+ if(state->package && state->package[0]) {
+ as3_globalclass = concat3(state->package, ".", classname);
+ } else {
+ as3_globalclass = strdup(classname);
+ }
}
}
- multiname_destroy(extends2);
}
-static void endclass()
+static void setstaticfunction(int x)
{
- if(!state->cls->has_constructor && !(state->cls->info->flags&CLASS_INTERFACE)) {
- code_t*c = 0;
- c = abc_getlocal_0(c);
- c = abc_constructsuper(c, 0);
- state->cls->init = code_append(state->cls->init, c);
- }
- if(!state->method->late_binding) {
- // class initialization code uses late binding
- code_t*c = 0;
- c = abc_getlocal_0(c);
- c = abc_pushscope(c);
- state->cls->static_init = code_append(c, state->cls->static_init);
+ if(state->cls) {
+ if(x&FLAG_STATIC) {
+ state->method = state->cls->static_init;
+ } else {
+ state->method = state->cls->init;
+ }
+ } else {
+ parserassert(state->method);
}
+}
- if(state->cls->init) {
- abc_method_t*m = abc_class_getconstructor(state->cls->abc, 0);
- m->body->code = wrap_function(0, state->cls->init, m->body->code);
- }
- if(state->cls->static_init) {
- abc_method_t*m = abc_class_getstaticconstructor(state->cls->abc, 0);
- m->body->code = wrap_function(0, state->cls->static_init, m->body->code);
+static void endclass()
+{
+ if(as3_pass == 2) {
+ if(!state->cls->has_constructor && !(state->cls->info->flags&FLAG_INTERFACE)) {
+ code_t*c = 0;
+ c = abc_getlocal_0(c);
+ c = abc_constructsuper(c, 0);
+ state->cls->init->header = code_append(state->cls->init->header, c);
+ state->cls->has_constructor=1;
+ }
+ if(state->cls->init) {
+ if(state->cls->info->flags&FLAG_INTERFACE) {
+ if(state->cls->init->header)
+ syntaxerror("interface can not have class-level code");
+ } else {
+ abc_method_t*m = abc_class_getconstructor(state->cls->abc, 0);
+ code_t*c = method_header(state->cls->init);
+ m->body->code = wrap_function(c, 0, m->body->code);
+ }
+ }
+ if(state->cls->static_init) {
+ abc_method_t*m = abc_class_getstaticconstructor(state->cls->abc, 0);
+ code_t*c = method_header(state->cls->static_init);
+ m->body->code = wrap_function(c, 0, m->body->code);
+ }
}
- free(state->cls);state->cls=0;
- free(state->method);state->method=0;
old_state();
}
|| 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)) {
}
}
-
-static int flags2access(int flags)
+static void check_override(memberinfo_t*m, int flags)
{
- int access = 0;
- if(flags&FLAG_PUBLIC) {
- if(access&(FLAG_PRIVATE|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL))
- syntaxerror("invalid combination of access levels");
- access = ACCESS_PACKAGE;
- } else if(flags&FLAG_PRIVATE) {
- if(access&(FLAG_PUBLIC|FLAG_PROTECTED|FLAG_PACKAGEINTERNAL))
- syntaxerror("invalid combination of access levels");
- access = ACCESS_PRIVATE;
- } else if(flags&FLAG_PROTECTED) {
- if(access&(FLAG_PUBLIC|FLAG_PRIVATE|FLAG_PACKAGEINTERNAL))
- syntaxerror("invalid combination of access levels");
- access = ACCESS_PROTECTED;
- } else {
- access = ACCESS_PACKAGEINTERNAL;
+ if(!m)
+ return;
+ if(m->parent == state->cls->info)
+ syntaxerror("class '%s' already contains a method/slot '%s'", m->parent->name, m->name);
+ if(!m->parent)
+ syntaxerror("internal error: overriding method %s, which doesn't have parent", m->name);
+ if(m->access==ACCESS_PRIVATE)
+ return;
+ if(m->flags & FLAG_FINAL)
+ syntaxerror("can't override final member %s", m->name);
+ if((m->flags & FLAG_STATIC) && !(flags&FLAG_STATIC))
+ syntaxerror("can't override static member %s", m->name);
+ if(!(m->flags & FLAG_STATIC) && (flags&FLAG_STATIC))
+ syntaxerror("can't override non-static member %s with static declaration", m->name);
+
+ if(!(flags&FLAG_OVERRIDE)) {
+ if(m->parent && !(m->parent->flags&FLAG_INTERFACE)) {
+ if(m->kind == INFOTYPE_METHOD)
+ syntaxerror("can't override without explicit 'override' declaration");
+ else
+ syntaxerror("can't override '%s'", m->name);
+ }
}
- return access;
}
-
-static memberinfo_t*registerfunction(enum yytokentype getset, int flags, char*name, params_t*params, classinfo_t*return_type, int slot)
+static methodinfo_t*registerfunction(enum yytokentype getset, int flags, char*name, params_t*params, classinfo_t*return_type, int slot)
{
- memberinfo_t*minfo = 0;
+ methodinfo_t*minfo = 0;
+ U8 access = flags2access(flags);
if(!state->cls) {
//package method
- minfo = memberinfo_register_global(flags2access(flags), state->package, name, MEMBER_METHOD);
+ minfo = methodinfo_register_global(access, state->package, name);
minfo->return_type = return_type;
} else if(getset != KW_GET && getset != KW_SET) {
//class method
- if((minfo = registry_findmember(state->cls->info, name, 0))) {
- if(minfo->parent == state->cls->info) {
- syntaxerror("class already contains a member/method called '%s'", name);
- } else if(!minfo->parent) {
- syntaxerror("internal error: overriding method %s, which doesn't have parent", name);
- } else {
- if(!(minfo->flags&(FLAG_STATIC|FLAG_PRIVATE)))
- syntaxerror("function %s already exists in superclass. Did you forget the 'override' keyword?");
- }
+ memberinfo_t* m = registry_findmember(state->cls->info, name, 0);
+ if(m) {
+ syntaxerror("class already contains a %s '%s'", infotypename((slotinfo_t*)m), m->name);
}
- minfo = memberinfo_register(state->cls->info, name, MEMBER_METHOD);
+ minfo = methodinfo_register_onclass(state->cls->info, access, name);
minfo->return_type = return_type;
// getslot on a member slot only returns "undefined", so no need
// to actually store these
//state->minfo->slot = state->method->abc->method->trait->slot_id;
} else {
//class getter/setter
- int gs = getset==KW_GET?MEMBER_GET:MEMBER_SET;
+ int gs = getset==KW_GET?SUBTYPE_GET:SUBTYPE_SET;
classinfo_t*type=0;
if(getset == KW_GET)
type = return_type;
- else if(params->list)
+ else if(params->list && params->list->param)
type = params->list->param->type;
// not sure wether to look into superclasses here, too
- if((minfo=registry_findmember(state->cls->info, name, 0))) {
- if(minfo->kind & ~(MEMBER_GET|MEMBER_SET))
- syntaxerror("class already contains a member or method called '%s'", name);
- if(minfo->kind & gs)
+ minfo = (methodinfo_t*)registry_findmember(state->cls->info, name, 1);
+ if(minfo) {
+ if(minfo->kind!=INFOTYPE_SLOT)
+ syntaxerror("class already contains a method called '%s'", name);
+ if(!(minfo->subtype & (SUBTYPE_GETSET)))
+ syntaxerror("class already contains a field called '%s'", name);
+ if(minfo->subtype & gs)
syntaxerror("getter/setter for '%s' already defined", name);
/* make a setter or getter into a getset */
- minfo->kind |= gs;
- if(!minfo->type)
- minfo->type = type;
- else
- if(type && minfo->type != type)
+ minfo->subtype |= gs;
+ if(!minfo->return_type) {
+ minfo->return_type = type;
+ } else {
+ if(minfo && minfo->return_type != type)
syntaxerror("different type in getter and setter");
+ }
} else {
- minfo = memberinfo_register(state->cls->info, name, gs);
- minfo->type = type;
+ minfo = methodinfo_register_onclass(state->cls->info, access, name);
+ minfo->kind = INFOTYPE_SLOT; //hack
+ minfo->subtype = gs;
+ minfo->return_type = type;
}
/* can't assign a slot as getter and setter might have different slots */
//minfo->slot = slot;
}
+ if(flags&FLAG_FINAL) minfo->flags |= FLAG_FINAL;
if(flags&FLAG_STATIC) minfo->flags |= FLAG_STATIC;
- if(flags&FLAG_PUBLIC) minfo->flags |= FLAG_PUBLIC;
- if(flags&FLAG_PRIVATE) minfo->flags |= FLAG_PRIVATE;
- if(flags&FLAG_PROTECTED) minfo->flags |= FLAG_PROTECTED;
- if(flags&FLAG_PACKAGEINTERNAL) minfo->flags |= FLAG_PACKAGEINTERNAL;
if(flags&FLAG_OVERRIDE) minfo->flags |= FLAG_OVERRIDE;
return minfo;
}
+static void innerfunction(char*name, params_t*params, classinfo_t*return_type)
+{
+ //parserassert(state->method && state->method->info);
+
+ methodstate_t*parent_method = state->method;
+
+ if(as3_pass==1) {
+ return_type = 0; // not valid in pass 1
+ }
+
+ new_state();
+ state->new_vars = 1;
+
+ if(as3_pass == 1) {
+ state->method = rfx_calloc(sizeof(methodstate_t));
+ state->method->inner = 1;
+ state->method->variable_count = 0;
+ state->method->abc = rfx_calloc(sizeof(abc_method_t));
+
+ NEW(methodinfo_t,minfo);
+ minfo->kind = INFOTYPE_METHOD;
+ minfo->access = ACCESS_PACKAGEINTERNAL;
+ minfo->name = name;
+ state->method->info = minfo;
+
+ if(parent_method)
+ 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, 1);
+ }
+}
+
static void startfunction(token_t*ns, int flags, enum yytokentype getset, char*name,
params_t*params, classinfo_t*return_type)
{
syntaxerror("not able to start another method scope");
}
new_state();
- global->variable_count = 0;
- state->method = rfx_calloc(sizeof(methodstate_t));
- state->method->has_super = 0;
+
+ if(as3_pass == 1) {
+ state->method = rfx_calloc(sizeof(methodstate_t));
+ state->method->has_super = 0;
- if(state->cls) {
- state->method->is_constructor = !strcmp(state->cls->info->name,name);
- state->cls->has_constructor |= state->method->is_constructor;
-
- new_variable((flags&FLAG_STATIC)?"class":"this", state->cls->info, 0);
- } else {
- state->method->is_global = 1;
- state->method->late_binding = 1; // for global methods, always push local_0 on the scope stack
+ if(state->cls) {
+ state->method->is_constructor = !strcmp(state->cls->info->name,name);
+ } else {
+ state->method->is_global = 1;
+ state->method->late_binding = 1; // for global methods, always push local_0 on the scope stack
+ }
+ if(state->method->is_constructor)
+ name = "__as3_constructor__";
- new_variable("globalscope", 0, 0);
+ return_type = 0;
+ state->method->info = registerfunction(getset, flags, name, params, return_type, 0);
+
+ function_initvars(state->method, params, flags, 1);
+
+ dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, state->method);
}
- /* state->vars is initialized by state_new */
-
- param_list_t*p=0;
- for(p=params->list;p;p=p->next) {
- new_variable(p->param->name, p->param->type, 0);
- }
- if(state->method->is_constructor)
- name = "__as3_constructor__";
- state->method->info = registerfunction(getset, flags, name, params, return_type, 0);
+ if(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);
+ }
+
+ if(state->cls) {
+ state->cls->has_constructor |= state->method->is_constructor;
+ }
+
+ state->method->info->return_type = return_type;
+ function_initvars(state->method, params, flags, 1);
+ }
}
-static void endfunction(token_t*ns, int flags, enum yytokentype getset, char*name,
+static abc_method_t* endfunction(token_t*ns, int flags, enum yytokentype getset, char*name,
params_t*params, classinfo_t*return_type, code_t*body)
{
- abc_method_t*f = 0;
-
- multiname_t*type2 = sig2mname(return_type);
- int slot = 0;
- if(state->method->is_constructor) {
- f = abc_class_getconstructor(state->cls->abc, type2);
- } else if(!state->method->is_global) {
- namespace_t mname_ns = flags2namespace(flags, "");
- 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 = flags2namespace(flags, 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");
+ if(as3_pass==1) {
+ // store inner methods in variables
+ function_initvars(state->method, 0, 0, 0);
+
+ methodstate_list_t*ml = state->method->innerfunctions;
+ 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 */
+ if(find_variable(state, l->key)) {
+ m->uses_parent_function = 1;
+ break;
+ }
+ l = l->next;
+ }
+ if(l) break;
+ }
+
+ dict_destroy(m->unresolved_variables);
+ m->unresolved_variables = 0;
+ }
+ ml = ml->next;
}
+ old_state();
+ return 0;
}
- 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");
- }
-
- free(state->method);state->method=0;
- old_state();
-}
+ if(as3_pass==2) {
+ if(state->method->uses_parent_function){
+ syntaxerror("accessing variables of parent function from inner functions not supported yet");
+ }
+
+ abc_method_t*f = 0;
+
+ 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");
+ }
+ }
+ 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");
+ }
+ old_state();
+ return f;
+ }
+
+ return 0;
+}
char is_subtype_of(classinfo_t*type, classinfo_t*supertype)
{
return c;
if(TYPE_IS_CLASS(from) && TYPE_IS_CLASS(to))
return c;
- syntaxerror("can't convert type %s to %s", from->name, to->name);
- return 0; // make gcc happy
+ if(TYPE_IS_NULL(from) && !IS_NUMBER_OR_INT(to))
+ return c;
+
+ 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);
}
-void parserassert(int b)
-{
- if(!b) syntaxerror("internal error: assertion failed");
-}
-
-static classinfo_t* find_class(char*name)
+static slotinfo_t* find_class(char*name)
{
- classinfo_t*c=0;
+ slotinfo_t*c=0;
- c = registry_findclass(state->package, name);
+ c = registry_find(state->package, name);
if(c) return c;
/* try explicit imports */
if(c) return c;
while(e) {
if(!strcmp(e->key, name)) {
- c = (classinfo_t*)e->data;
+ c = (slotinfo_t*)e->data;
if(c) return c;
}
e = e->next;
import_list_t*l = state->wildcard_imports;
while(l) {
//printf("does package %s contain a class %s?\n", l->import->package, name);
- c = registry_findclass(l->import->package, name);
+ c = registry_find(l->import->package, name);
if(c) return c;
l = l->next;
}
/* try global package */
- c = registry_findclass("", name);
+ c = registry_find("", name);
if(c) return c;
-
+
/* try local "filename" package */
- c = registry_findclass(current_filename, name);
+ c = registry_find(internal_filename_package, name);
if(c) return c;
return 0;
[prefix code] ([dup]) [read instruction] [middlepart] [setvar] [write instruction] [getvar]
*/
-
if(in && in->opcode == OPCODE_COERCE_A) {
in = code_cutlast(in);
}
c = code_append(c, write);
c = code_append(c, r);
} else {
+ code_free(r);r=0;
temp = gettempvar();
if(prefix) {
c = code_append(c, prefix);
}
}
+#define PASS1 }} if(as3_pass == 1) {{
+#define PASS1END }} if(as3_pass == 2) {{
+#define PASS2 }} if(as3_pass == 2) {{
+#define PASS12 }} {{
+#define PASS12END }} if(as3_pass == 2) {{
-/* Line 264 of yacc.c */
-#line 1509 "parser.tab.c"
+
+/* Line 273 of skeleton.m4 */
+#line 1827 "parser.tab.c"
#ifdef short
# undef short
#endif
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 119
+#define YYFINAL 145
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2463
+#define YYLAST 2994
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 130
+#define YYNTOKENS 134
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 105
+#define YYNNTS 110
/* YYNRULES -- Number of rules. */
-#define YYNRULES 285
+#define YYNRULES 303
/* YYNRULES -- Number of states. */
-#define YYNSTATES 478
+#define YYNSTATES 514
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 360
+#define YYMAXUTOK 363
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 116, 2, 2, 2, 114, 106, 2,
- 126, 129, 113, 111, 97, 110, 123, 112, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 103, 96,
- 107, 99, 108, 102, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 118, 2, 2, 2, 116, 108, 2,
+ 122, 133, 115, 113, 100, 112, 127, 114, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 105, 99,
+ 109, 102, 110, 104, 128, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 120, 2, 121, 105, 2, 2, 2, 2, 2,
+ 2, 124, 2, 125, 107, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 122, 104, 128, 115, 2, 2, 2,
+ 2, 2, 2, 126, 106, 132, 117, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 98, 100, 101, 109, 117, 118, 119, 124, 125,
- 127
+ 95, 96, 97, 98, 101, 103, 111, 119, 120, 121,
+ 123, 129, 130, 131
};
#if YYDEBUG
static const yytype_uint16 yyprhs[] =
{
0, 0, 3, 5, 6, 8, 10, 13, 15, 17,
- 19, 21, 23, 25, 27, 28, 30, 32, 35, 37,
- 39, 41, 43, 45, 47, 49, 50, 53, 55, 57,
- 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
- 79, 81, 83, 85, 87, 89, 91, 93, 97, 100,
- 103, 105, 107, 110, 111, 114, 117, 119, 123, 127,
- 128, 131, 132, 140, 141, 143, 145, 149, 151, 154,
- 158, 167, 174, 175, 182, 183, 191, 193, 196, 198,
- 201, 202, 204, 206, 209, 211, 214, 219, 223, 224,
- 233, 234, 244, 245, 251, 253, 256, 258, 261, 263,
- 264, 271, 274, 276, 282, 284, 286, 290, 292, 293,
- 300, 301, 307, 310, 315, 316, 318, 320, 323, 325,
- 327, 329, 331, 333, 335, 337, 339, 341, 342, 345,
- 346, 349, 350, 353, 354, 364, 365, 374, 375, 377,
- 379, 382, 384, 386, 388, 390, 391, 393, 395, 398,
- 400, 403, 412, 414, 416, 422, 423, 426, 428, 430,
- 432, 434, 436, 438, 440, 442, 443, 445, 448, 453,
- 457, 459, 464, 467, 469, 471, 472, 473, 486, 488,
- 489, 499, 501, 505, 507, 509, 511, 515, 517, 519,
- 521, 524, 525, 526, 530, 531, 533, 535, 539, 543,
- 548, 553, 556, 558, 561, 563, 565, 569, 571, 573,
- 575, 577, 579, 581, 583, 585, 587, 589, 591, 593,
- 595, 597, 599, 601, 603, 605, 609, 613, 617, 621,
- 625, 629, 633, 637, 641, 645, 648, 651, 655, 659,
- 663, 667, 671, 675, 679, 683, 687, 691, 695, 699,
- 703, 707, 711, 716, 719, 721, 725, 728, 733, 737,
- 738, 740, 744, 750, 754, 758, 762, 766, 770, 774,
- 778, 782, 786, 790, 794, 800, 803, 806, 809, 812,
- 816, 820, 822, 826, 832, 838
+ 19, 21, 23, 25, 30, 32, 33, 35, 37, 40,
+ 42, 44, 46, 48, 50, 55, 57, 59, 60, 63,
+ 65, 67, 69, 71, 73, 75, 77, 79, 81, 83,
+ 85, 87, 91, 94, 96, 98, 100, 102, 104, 106,
+ 108, 113, 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
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int16 yyrhs[] =
{
- 131, 0, -1, 132, -1, -1, 133, -1, 134, -1,
- 133, 134, -1, 180, -1, 192, -1, 190, -1, 208,
- -1, 201, -1, 143, -1, 96, -1, -1, 136, -1,
- 137, -1, 136, 137, -1, 192, -1, 190, -1, 208,
- -1, 201, -1, 143, -1, 96, -1, 139, -1, -1,
- 139, 141, -1, 141, -1, 183, -1, 154, -1, 155,
- -1, 156, -1, 158, -1, 166, -1, 149, -1, 177,
- -1, 174, -1, 227, -1, 96, -1, 140, -1, 145,
- -1, 160, -1, 161, -1, 224, -1, 176, -1, 233,
- -1, 234, -1, 122, 139, 128, -1, 122, 128, -1,
- 141, 96, -1, 141, -1, 140, -1, 99, 225, -1,
- -1, 45, 146, -1, 31, 146, -1, 147, -1, 146,
- 97, 147, -1, 3, 217, 144, -1, -1, 64, 142,
- -1, -1, 63, 126, 150, 226, 129, 142, 148, -1,
- -1, 145, -1, 227, -1, 45, 3, 217, -1, 3,
- -1, 12, 126, -1, 12, 49, 126, -1, 153, 151,
- 96, 226, 96, 227, 129, 142, -1, 153, 152, 67,
- 226, 129, 142, -1, -1, 13, 126, 157, 226, 129,
- 142, -1, -1, 14, 159, 142, 13, 126, 226, 129,
- -1, 65, -1, 65, 3, -1, 29, -1, 29, 3,
- -1, -1, 163, -1, 165, -1, 163, 165, -1, 164,
- -1, 163, 164, -1, 33, 228, 103, 138, -1, 61,
- 103, 138, -1, -1, 15, 126, 167, 228, 129, 122,
- 162, 128, -1, -1, 32, 126, 3, 217, 129, 169,
- 122, 138, 128, -1, -1, 27, 122, 171, 138, 128,
- -1, 168, -1, 172, 168, -1, 172, -1, 172, 170,
- -1, 170, -1, -1, 51, 122, 175, 138, 128, 173,
- -1, 36, 226, -1, 36, -1, 38, 126, 226, 129,
- 142, -1, 3, -1, 18, -1, 179, 123, 178, -1,
- 178, -1, -1, 18, 179, 122, 181, 135, 128, -1,
- -1, 18, 122, 182, 135, 128, -1, 40, 214, -1,
- 40, 179, 123, 113, -1, -1, 185, -1, 186, -1,
- 185, 186, -1, 20, -1, 21, -1, 19, -1, 37,
- -1, 46, -1, 48, -1, 47, -1, 25, -1, 23,
- -1, -1, 53, 214, -1, -1, 53, 215, -1, -1,
- 16, 215, -1, -1, 184, 30, 3, 187, 189, 122,
- 191, 194, 128, -1, -1, 184, 43, 3, 188, 122,
- 193, 197, 128, -1, -1, 195, -1, 196, -1, 195,
- 196, -1, 96, -1, 201, -1, 208, -1, 140, -1,
- -1, 198, -1, 199, -1, 198, 199, -1, 96, -1,
- 45, 3, -1, 184, 26, 207, 3, 126, 204, 129,
- 217, -1, 45, -1, 31, -1, 184, 200, 3, 217,
- 144, -1, -1, 99, 203, -1, 9, -1, 7, -1,
- 8, -1, 11, -1, 4, -1, 55, -1, 54, -1,
- 44, -1, -1, 205, -1, 90, 206, -1, 205, 97,
- 90, 206, -1, 205, 97, 206, -1, 206, -1, 3,
- 103, 216, 202, -1, 3, 202, -1, 50, -1, 34,
- -1, -1, -1, 184, 26, 207, 3, 126, 204, 129,
- 217, 122, 209, 138, 128, -1, 3, -1, -1, 26,
- 210, 126, 204, 129, 217, 122, 138, 128, -1, 3,
- -1, 179, 123, 3, -1, 213, -1, 212, -1, 214,
- -1, 215, 97, 214, -1, 214, -1, 113, -1, 35,
- -1, 103, 216, -1, -1, -1, 126, 219, 129, -1,
- -1, 220, -1, 225, -1, 220, 97, 225, -1, 24,
- 212, 218, -1, 228, 126, 219, 129, -1, 52, 126,
- 219, 129, -1, 62, 228, -1, 41, -1, 41, 226,
- -1, 228, -1, 228, -1, 226, 97, 228, -1, 226,
- -1, 211, -1, 229, -1, 232, -1, 221, -1, 223,
- -1, 5, -1, 9, -1, 10, -1, 7, -1, 8,
- -1, 11, -1, 4, -1, 28, -1, 55, -1, 54,
- -1, 44, -1, 222, -1, 228, 107, 228, -1, 228,
- 108, 228, -1, 228, 73, 228, -1, 228, 74, 228,
- -1, 228, 69, 228, -1, 228, 70, 228, -1, 228,
- 72, 228, -1, 228, 71, 228, -1, 228, 84, 228,
- -1, 228, 85, 228, -1, 116, 228, -1, 115, 228,
- -1, 228, 106, 228, -1, 228, 105, 228, -1, 228,
- 104, 228, -1, 228, 93, 228, -1, 228, 92, 228,
- -1, 228, 91, 228, -1, 228, 112, 228, -1, 228,
- 114, 228, -1, 228, 111, 228, -1, 228, 110, 228,
- -1, 228, 113, 228, -1, 228, 67, 228, -1, 228,
- 68, 228, -1, 228, 39, 228, -1, 228, 66, 228,
- -1, 42, 126, 228, 129, -1, 35, 228, -1, 35,
- -1, 126, 226, 129, -1, 110, 228, -1, 228, 120,
- 228, 121, -1, 120, 219, 121, -1, -1, 231, -1,
- 225, 103, 225, -1, 231, 97, 225, 103, 225, -1,
- 122, 230, 128, -1, 228, 78, 228, -1, 228, 77,
- 228, -1, 228, 82, 228, -1, 228, 81, 228, -1,
- 228, 83, 228, -1, 228, 76, 228, -1, 228, 75,
- 228, -1, 228, 79, 228, -1, 228, 80, 228, -1,
- 228, 99, 228, -1, 228, 102, 228, 103, 228, -1,
- 228, 88, -1, 228, 87, -1, 88, 228, -1, 87,
- 228, -1, 52, 123, 3, -1, 228, 123, 3, -1,
- 3, -1, 184, 17, 3, -1, 184, 17, 3, 99,
- 3, -1, 184, 17, 3, 99, 4, -1, 22, 17,
- 3, -1
+ 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,
+ 99, -1, -1, 140, -1, 141, -1, 140, 141, -1,
+ 197, -1, 195, -1, 214, -1, 206, -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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ -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
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 1484, 1484, 1486, 1486, 1487, 1488, 1490, 1491, 1492,
- 1493, 1494, 1495, 1496, 1498, 1498, 1499, 1500, 1502, 1503,
- 1504, 1505, 1506, 1507, 1509, 1510, 1512, 1513, 1516, 1517,
- 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1528, 1529,
- 1530, 1531, 1532, 1533, 1534, 1536, 1537, 1539, 1540, 1541,
- 1542, 1546, 1553, 1554, 1558, 1559, 1561, 1562, 1564, 1605,
- 1606, 1609, 1609, 1628, 1629, 1630, 1633, 1636, 1640, 1641,
- 1643, 1663, 1706, 1706, 1725, 1725, 1740, 1743, 1746, 1749,
- 1753, 1754, 1755, 1756, 1757, 1758, 1760, 1771, 1774, 1774,
- 1803, 1803, 1823, 1823, 1840, 1841, 1842, 1843, 1851, 1860,
- 1860, 1905, 1909, 1920, 1929, 1930, 1932, 1933, 1935, 1935,
- 1936, 1936, 1938, 1946, 1956, 1957, 1958, 1959, 1961, 1962,
- 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1971, 1972, 1974,
- 1975, 1977, 1978, 1982, 1980, 1988, 1986, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2002, 2008, 2009, 2010, 2011, 2012,
- 2013, 2016, 2027, 2027, 2029, 2087, 2088, 2090, 2091, 2092,
- 2093, 2094, 2096, 2097, 2098, 2103, 2106, 2111, 2116, 2123,
- 2127, 2132, 2138, 2144, 2145, 2146, 2149, 2148, 2166, 2167,
- 2168, 2176, 2183, 2189, 2190, 2192, 2193, 2195, 2196, 2197,
- 2206, 2207, 2211, 2212, 2214, 2215, 2216, 2219, 2224, 2248,
- 2296, 2316, 2337, 2340, 2347, 2348, 2349, 2355, 2361, 2363,
- 2365, 2367, 2369, 2371, 2388, 2393, 2396, 2399, 2402, 2405,
- 2408, 2411, 2414, 2417, 2421, 2422, 2425, 2428, 2431, 2434,
- 2437, 2440, 2443, 2447, 2458, 2476, 2481, 2486, 2491, 2496,
- 2501, 2505, 2509, 2514, 2518, 2522, 2531, 2540, 2550, 2555,
- 2567, 2573, 2578, 2584, 2590, 2594, 2596, 2607, 2616, 2623,
- 2624, 2626, 2632, 2641, 2648, 2660, 2666, 2672, 2678, 2684,
- 2690, 2696, 2709, 2720, 2727, 2740, 2767, 2781, 2795, 2809,
- 2824, 2858, 2945, 2946, 2947, 2949
+ 0, 1802, 1802, 1804, 1804, 1805, 1806, 1808, 1809, 1810,
+ 1811, 1812, 1813, 1814, 1815, 1817, 1817, 1818, 1819, 1821,
+ 1822, 1823, 1824, 1825, 1826, 1827, 1829, 1830, 1832, 1833,
+ 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845,
+ 1846, 1847, 1848, 1851, 1852, 1853, 1854, 1855, 1856, 1857,
+ 1858, 1860, 1864, 1865, 1869, 1876, 1880, 1881, 1885, 1886,
+ 1888, 1889, 1891, 1937, 1938, 1941, 1941, 1960, 1961, 1962,
+ 1967, 1971, 1976, 1977, 1979, 1999, 2043, 2043, 2062, 2062,
+ 2077, 2080, 2083, 2086, 2090, 2091, 2092, 2093, 2094, 2095,
+ 2097, 2108, 2111, 2111, 2140, 2140, 2160, 2160, 2176, 2177,
+ 2178, 2179, 2187, 2196, 2196, 2241, 2245, 2256, 2265, 2266,
+ 2268, 2269, 2271, 2271, 2273, 2273, 2276, 2291, 2307, 2308,
+ 2309, 2310, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319,
+ 2320, 2321, 2323, 2324, 2326, 2327, 2329, 2330, 2334, 2332,
+ 2340, 2338, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353,
+ 2355, 2361, 2362, 2363, 2364, 2365, 2366, 2369, 2382, 2382,
+ 2384, 2384, 2457, 2458, 2460, 2461, 2462, 2463, 2464, 2466,
+ 2467, 2468, 2469, 2478, 2482, 2488, 2494, 2502, 2507, 2513,
+ 2521, 2529, 2530, 2531, 2534, 2533, 2550, 2551, 2553, 2552,
+ 2576, 2584, 2597, 2598, 2600, 2601, 2603, 2604, 2605, 2614,
+ 2615, 2619, 2620, 2622, 2623, 2624, 2626, 2630, 2631, 2636,
+ 2637, 2673, 2719, 2740, 2761, 2764, 2771, 2772, 2773, 2779,
+ 2785, 2787, 2789, 2791, 2793, 2795, 2797, 2814, 2819, 2822,
+ 2825, 2828, 2831, 2834, 2837, 2840, 2843, 2847, 2850, 2853,
+ 2856, 2859, 2862, 2865, 2868, 2872, 2883, 2901, 2906, 2911,
+ 2916, 2921, 2926, 2930, 2934, 2939, 2943, 2947, 2956, 2965,
+ 2975, 2980, 2992, 2998, 3003, 3009, 3015, 3019, 3021, 3032,
+ 3041, 3048, 3049, 3051, 3057, 3066, 3073, 3085, 3091, 3097,
+ 3103, 3109, 3115, 3121, 3127, 3140, 3151, 3158, 3171, 3198,
+ 3212, 3226, 3240, 3255, 3262, 3269, 3276, 3283, 3294, 3328,
+ 3443, 3444, 3445, 3447
};
#endif
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "T_IDENTIFIER", "T_STRING", "T_REGEXP",
- "T_EMPTY", "T_INT", "T_UINT", "T_BYTE", "T_SHORT", "T_FLOAT", "\"for\"",
- "\"while\"", "\"do\"", "\"switch\"", "\"implements\"", "\"namespace\"",
- "\"package\"", "\"protected\"", "\"public\"", "\"private\"", "\"use\"",
- "\"internal\"", "\"new\"", "\"native\"", "\"function\"", "\"finally\"",
- "\"undefined\"", "\"continue\"", "\"class\"", "\"const\"", "\"catch\"",
- "\"case\"", "\"set\"", "\"void\"", "\"throw\"", "\"static\"", "\"with\"",
+ "$end", "error", "$undefined", "T_IDENTIFIER", "T_NAMESPACE",
+ "T_STRING", "T_REGEXP", "T_EMPTY", "T_INT", "T_UINT", "T_BYTE",
+ "T_SHORT", "T_FLOAT", "\"for\"", "\"while\"", "\"do\"", "\"switch\"",
+ "\"implements\"", "\"namespace\"", "\"package\"", "\"protected\"",
+ "\"public\"", "\"private\"", "\"use\"", "\"internal\"", "\"new\"",
+ "\"native\"", "\"function\"", "\"finally\"", "\"undefined\"",
+ "\"continue\"", "\"class\"", "\"const\"", "\"catch\"", "\"case\"",
+ "\"set\"", "\"void\"", "\"throw\"", "\"static\"", "\"with\"",
"\"instanceof\"", "\"import\"", "\"return\"", "\"typeof\"",
"\"interface\"", "\"null\"", "\"var\"", "\"dynamic\"", "\"override\"",
"\"final\"", "\"each\"", "\"get\"", "\"try\"", "\"super\"",
"\"extends\"", "\"false\"", "\"true\"", "\"Boolean\"", "\"uint\"",
"\"int\"", "\"Number\"", "\"String\"", "\"default\"", "\"delete\"",
"\"if\"", "\"else\"", "\"break\"", "\"is\"", "\"in\"", "\"as\"",
- "\"==\"", "\"===\"", "\"!=\"", "\"!==\"", "\"<=\"", "\">=\"", "\"|=\"",
- "\"/=\"", "\"%=\"", "\"*=\"", "\"+=\"", "\"-=\"", "\">>=\"", "\"<<=\"",
- "\">>>=\"", "\"||\"", "\"&&\"", "\"::\"", "\"--\"", "\"++\"", "\"..\"",
- "\"...\"", "\"<<\"", "\">>>\"", "\">>\"", "prec_none", "below_semicolon",
- "';'", "','", "below_assignment", "'='", "\"&=\"", "\"^=\"", "'?'",
- "':'", "'|'", "'^'", "'&'", "'<'", "'>'", "below_minus", "'-'", "'+'",
- "'/'", "'*'", "'%'", "'~'", "'!'", "minusminus_prefix",
- "plusplus_prefix", "below_curly", "'['", "']'", "'{'", "'.'",
- "above_identifier", "below_else", "'('", "above_function", "'}'", "')'",
- "$accept", "PROGRAM", "MAYBE_PROGRAM_CODE_LIST", "PROGRAM_CODE_LIST",
- "PROGRAM_CODE", "MAYBE_INPACKAGE_CODE_LIST", "INPACKAGE_CODE_LIST",
- "INPACKAGE_CODE", "MAYBECODE", "CODE", "CODE_STATEMENT", "CODEPIECE",
- "CODEBLOCK", "PACKAGE_INITCODE", "MAYBEEXPRESSION",
- "VARIABLE_DECLARATION", "VARIABLE_LIST", "ONE_VARIABLE", "MAYBEELSE",
- "IF", "$@1", "FOR_INIT", "FOR_IN_INIT", "FOR_START", "FOR", "FOR_IN",
- "WHILE", "$@2", "DO_WHILE", "$@3", "BREAK", "CONTINUE",
- "MAYBE_CASE_LIST", "CASE_LIST", "CASE", "DEFAULT", "SWITCH", "$@4",
- "CATCH", "$@5", "FINALLY", "$@6", "CATCH_LIST", "CATCH_FINALLY_LIST",
- "TRY", "$@7", "THROW", "WITH", "X_IDENTIFIER", "PACKAGE",
- "PACKAGE_DECLARATION", "$@8", "$@9", "IMPORT", "MAYBE_MODIFIERS",
- "MODIFIER_LIST", "MODIFIER", "EXTENDS", "EXTENDS_LIST",
- "IMPLEMENTS_LIST", "CLASS_DECLARATION", "$@10", "INTERFACE_DECLARATION",
- "$@11", "MAYBE_CLASS_BODY", "CLASS_BODY", "CLASS_BODY_ITEM",
- "MAYBE_INTERFACE_BODY", "INTERFACE_BODY", "IDECLARATION", "VARCONST",
- "SLOT_DECLARATION", "MAYBESTATICCONSTANT", "STATICCONSTANT",
- "MAYBE_PARAM_LIST", "PARAM_LIST", "PARAM", "GETSET",
- "FUNCTION_DECLARATION", "$@12", "MAYBE_IDENTIFIER", "INNERFUNCTION",
- "CLASS", "PACKAGEANDCLASS", "QNAME", "QNAME_LIST", "TYPE", "MAYBETYPE",
- "MAYBE_PARAM_VALUES", "MAYBE_EXPRESSION_LIST", "EXPRESSION_LIST", "NEW",
- "FUNCTIONCALL", "DELETE", "RETURN", "NONCOMMAEXPRESSION", "EXPRESSION",
- "VOIDEXPRESSION", "E", "CONSTANT", "MAYBE_EXPRPAIR_LIST",
- "EXPRPAIR_LIST", "VAR_READ", "NAMESPACE_DECLARATION", "USE_NAMESPACE", 0
+ "\"{ (dictionary)\"", "\"==\"", "\"===\"", "\"!=\"", "\"!==\"", "\"<=\"",
+ "\">=\"", "\"|=\"", "\"/=\"", "\"%=\"", "\"*=\"", "\"+=\"", "\"-=\"",
+ "\"^=\"", "\">>=\"", "\"<<=\"", "\">>>=\"", "\"||\"", "\"&&\"", "\"::\"",
+ "\"--\"", "\"++\"", "\"..\"", "\"...\"", "\"<<\"", "\">>>\"", "\">>\"",
+ "prec_none", "below_semicolon", "';'", "','", "below_assignment", "'='",
+ "\"&=\"", "'?'", "':'", "'|'", "'^'", "'&'", "'<'", "'>'", "below_minus",
+ "'-'", "'+'", "'/'", "'*'", "'%'", "'~'", "'!'", "minusminus_prefix",
+ "plusplus_prefix", "below_curly", "'('", "new2", "'['", "']'", "'{'",
+ "'.'", "'@'", "above_identifier", "below_else", "above_function", "'}'",
+ "')'", "$accept", "PROGRAM", "MAYBE_PROGRAM_CODE_LIST",
+ "PROGRAM_CODE_LIST", "PROGRAM_CODE", "MAYBE_INPACKAGE_CODE_LIST",
+ "INPACKAGE_CODE_LIST", "INPACKAGE_CODE", "MAYBECODE", "CODE",
+ "CODE_STATEMENT", "CODEPIECE", "CODEBLOCK", "PACKAGE_INITCODE",
+ "CONDITIONAL_COMPILATION", "MAYBEEXPRESSION", "VARIABLE_DECLARATION",
+ "VARIABLE_LIST", "ONE_VARIABLE", "MAYBEELSE", "IF", "$@1", "FOR_INIT",
+ "FOR_IN_INIT", "FOR_START", "FOR", "FOR_IN", "WHILE", "$@2", "DO_WHILE",
+ "$@3", "BREAK", "CONTINUE", "MAYBE_CASE_LIST", "CASE_LIST", "CASE",
+ "DEFAULT", "SWITCH", "$@4", "CATCH", "$@5", "FINALLY", "$@6",
+ "CATCH_LIST", "CATCH_FINALLY_LIST", "TRY", "$@7", "THROW", "WITH",
+ "X_IDENTIFIER", "PACKAGE", "PACKAGE_DECLARATION", "$@8", "$@9", "IMPORT",
+ "MAYBE_MODIFIERS", "MODIFIER_LIST", "MODIFIER", "EXTENDS",
+ "EXTENDS_LIST", "IMPLEMENTS_LIST", "CLASS_DECLARATION", "$@10",
+ "INTERFACE_DECLARATION", "$@11", "MAYBE_CLASS_BODY", "CLASS_BODY",
+ "CLASS_BODY_ITEM", "MAYBE_INTERFACE_BODY", "INTERFACE_BODY",
+ "IDECLARATION", "VARCONST", "SLOT_DECLARATION", "$@12",
+ "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",
+ "MAYBE_PARAM_VALUES", "MAYBE_EXPRESSION_LIST", "EXPRESSION_LIST",
+ "EXPRESSION_LIST_AND_COMMA", "XX", "NEW", "FUNCTIONCALL", "DELETE",
+ "RETURN", "NONCOMMAEXPRESSION", "EXPRESSION", "VOIDEXPRESSION", "E",
+ "CONSTANT", "MAYBE_EXPRPAIR_LIST", "EXPRPAIR_LIST", "VAR_READ",
+ "NAMESPACE_DECLARATION", "USE_NAMESPACE", 0
};
#endif
315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
- 345, 346, 347, 348, 349, 350, 59, 44, 351, 61,
- 352, 353, 63, 58, 124, 94, 38, 60, 62, 354,
- 45, 43, 47, 42, 37, 126, 33, 355, 356, 357,
- 91, 93, 123, 46, 358, 359, 40, 360, 125, 41
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 59,
+ 44, 354, 61, 355, 63, 58, 124, 94, 38, 60,
+ 62, 356, 45, 43, 47, 42, 37, 126, 33, 357,
+ 358, 359, 40, 360, 91, 93, 123, 46, 64, 361,
+ 362, 363, 125, 41
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 130, 131, 132, 132, 133, 133, 134, 134, 134,
- 134, 134, 134, 134, 135, 135, 136, 136, 137, 137,
- 137, 137, 137, 137, 138, 138, 139, 139, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 141, 141,
- 141, 141, 141, 141, 141, 141, 141, 142, 142, 142,
- 142, 143, 144, 144, 145, 145, 146, 146, 147, 148,
- 148, 150, 149, 151, 151, 151, 152, 152, 153, 153,
- 154, 155, 157, 156, 159, 158, 160, 160, 161, 161,
- 162, 162, 162, 162, 163, 163, 164, 165, 167, 166,
- 169, 168, 171, 170, 172, 172, 173, 173, 173, 175,
- 174, 176, 176, 177, 178, 178, 179, 179, 181, 180,
- 182, 180, 183, 183, 184, 184, 185, 185, 186, 186,
- 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
- 188, 189, 189, 191, 190, 193, 192, 194, 194, 195,
- 195, 196, 196, 196, 196, 197, 197, 198, 198, 199,
- 199, 199, 200, 200, 201, 202, 202, 203, 203, 203,
- 203, 203, 203, 203, 203, 204, 204, 204, 204, 205,
- 205, 206, 206, 207, 207, 207, 209, 208, 210, 210,
- 211, 212, 213, 214, 214, 215, 215, 216, 216, 216,
- 217, 217, 218, 218, 219, 219, 220, 220, 221, 222,
- 222, 223, 224, 224, 225, 226, 226, 227, 228, 228,
- 228, 228, 228, 228, 229, 229, 229, 229, 229, 229,
- 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 230,
- 230, 231, 231, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 232, 233, 233, 233, 234
+ 0, 134, 135, 136, 136, 137, 137, 138, 138, 138,
+ 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,
+ 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
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 1, 0, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 0, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 0, 2, 1, 1, 1,
+ 1, 1, 1, 4, 1, 0, 1, 1, 2, 1,
+ 1, 1, 1, 1, 4, 1, 1, 0, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 2, 2,
- 1, 1, 2, 0, 2, 2, 1, 3, 3, 0,
- 2, 0, 7, 0, 1, 1, 3, 1, 2, 3,
- 8, 6, 0, 6, 0, 7, 1, 2, 1, 2,
- 0, 1, 1, 2, 1, 2, 4, 3, 0, 8,
- 0, 9, 0, 5, 1, 2, 1, 2, 1, 0,
- 6, 2, 1, 5, 1, 1, 3, 1, 0, 6,
- 0, 5, 2, 4, 0, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0, 2, 0,
- 2, 0, 2, 0, 9, 0, 8, 0, 1, 1,
- 2, 1, 1, 1, 1, 0, 1, 1, 2, 1,
- 2, 8, 1, 1, 5, 0, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 0, 1, 2, 4, 3,
- 1, 4, 2, 1, 1, 0, 0, 12, 1, 0,
- 9, 1, 3, 1, 1, 1, 3, 1, 1, 1,
- 2, 0, 0, 3, 0, 1, 1, 3, 3, 4,
- 4, 2, 1, 2, 1, 1, 3, 1, 1, 1,
+ 1, 3, 2, 1, 1, 1, 1, 1, 1, 1,
+ 4, 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 2, 2, 3, 3, 3,
+ 1, 1, 1, 1, 1, 1, 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, 4, 2, 1, 3, 2, 4, 3, 0,
- 1, 3, 5, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 5, 2, 2, 2, 2, 3,
- 3, 1, 3, 5, 5, 3
+ 3, 3, 3, 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
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 114, 281, 219, 213, 216, 217, 214, 215, 218, 0,
- 0, 74, 0, 0, 120, 118, 119, 126, 0, 125,
- 179, 220, 254, 121, 0, 0, 0, 223, 122, 124,
- 123, 0, 0, 222, 221, 0, 0, 0, 0, 13,
- 0, 0, 0, 194, 259, 0, 0, 2, 114, 5,
- 51, 12, 34, 63, 29, 30, 31, 32, 33, 36,
- 35, 7, 28, 0, 115, 116, 9, 8, 11, 10,
- 208, 211, 224, 212, 207, 37, 205, 209, 210, 0,
- 68, 72, 114, 88, 104, 105, 110, 107, 0, 181,
- 192, 178, 0, 253, 0, 181, 0, 184, 183, 112,
- 0, 99, 0, 194, 201, 61, 278, 277, 256, 236,
- 235, 0, 195, 196, 204, 0, 0, 260, 0, 1,
- 6, 281, 0, 0, 64, 0, 0, 65, 175, 0,
- 153, 0, 152, 0, 117, 0, 0, 0, 0, 0,
+ 118, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 276, 275, 0,
+ 0, 0, 0, 0, 289, 288, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 194, 69, 0, 0,
- 78, 102, 202, 0, 76, 38, 114, 39, 50, 0,
- 40, 41, 42, 44, 0, 43, 45, 46, 0, 114,
- 108, 0, 194, 198, 165, 0, 0, 0, 25, 279,
- 0, 0, 258, 0, 0, 263, 0, 255, 191, 55,
- 56, 191, 54, 0, 0, 174, 173, 0, 127, 129,
- 191, 206, 250, 251, 248, 249, 229, 230, 232, 231,
- 227, 228, 270, 269, 265, 264, 271, 272, 267, 266,
- 268, 233, 234, 242, 241, 240, 273, 0, 239, 238,
- 237, 225, 226, 246, 245, 243, 247, 244, 0, 280,
- 0, 0, 0, 79, 101, 203, 77, 48, 114, 27,
- 205, 49, 0, 0, 0, 23, 0, 114, 16, 22,
- 19, 18, 21, 20, 114, 106, 0, 155, 0, 0,
- 166, 170, 114, 182, 113, 252, 0, 24, 200, 0,
- 197, 261, 0, 0, 53, 0, 53, 0, 0, 0,
- 0, 131, 0, 0, 53, 0, 257, 199, 114, 285,
- 47, 26, 0, 282, 0, 111, 17, 0, 193, 0,
- 0, 172, 167, 191, 0, 103, 0, 114, 0, 189,
- 188, 0, 187, 190, 0, 58, 57, 0, 114, 165,
- 128, 0, 0, 185, 130, 135, 154, 274, 73, 0,
- 0, 80, 109, 161, 158, 159, 157, 160, 164, 163,
- 162, 156, 155, 0, 0, 169, 0, 0, 94, 98,
- 96, 100, 59, 262, 0, 52, 0, 71, 0, 132,
- 133, 0, 114, 75, 283, 284, 0, 0, 0, 81,
- 84, 82, 171, 25, 168, 92, 0, 95, 97, 114,
- 62, 114, 191, 114, 186, 0, 149, 0, 0, 114,
- 147, 0, 25, 89, 85, 83, 0, 25, 191, 60,
- 70, 0, 141, 144, 0, 0, 114, 139, 142, 143,
- 150, 175, 136, 148, 25, 87, 180, 0, 0, 176,
- 134, 140, 0, 86, 93, 90, 25, 0, 0, 0,
- 165, 25, 177, 0, 0, 191, 91, 151
+ 0, 0, 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
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 46, 47, 48, 49, 286, 287, 288, 306, 307,
- 187, 279, 189, 289, 355, 190, 222, 220, 420, 52,
- 211, 125, 126, 53, 54, 55, 56, 178, 57, 82,
- 191, 192, 408, 409, 410, 411, 58, 198, 388, 468,
- 389, 437, 390, 391, 59, 208, 193, 60, 87, 351,
- 61, 294, 199, 62, 194, 64, 65, 321, 323, 362,
- 290, 423, 291, 402, 445, 446, 447, 428, 429, 430,
- 133, 292, 341, 381, 299, 300, 301, 227, 293, 466,
- 92, 70, 97, 98, 352, 364, 353, 314, 203, 111,
- 112, 71, 72, 73, 195, 113, 74, 75, 76, 77,
- 116, 117, 78, 196, 197
+ -1, 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
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -308
+#define YYPACT_NINF -374
static const yytype_int16 yypact[] =
{
- 349, -308, -308, -308, -308, -308, -308, -308, -308, -38,
- -86, -308, -72, 35, -308, -308, -308, -308, 30, -308,
- 97, -308, 52, -308, -14, 18, 36, -308, -308, -308,
- -308, 57, 44, -308, -308, 1538, 40, 1538, 1538, -308,
- 1538, 1538, 1538, 1538, 1538, 1538, 102, -308, 473, -308,
- -308, -308, -308, 211, -308, -308, -308, -308, -308, -308,
- -308, -308, -308, 275, 640, -308, -308, -308, -308, -308,
- -308, -308, -308, -308, 96, -308, 1971, -308, -308, 82,
- -308, -308, 1469, -308, -308, -308, -308, -308, -32, -308,
- 83, -308, 84, 104, 1538, 88, 89, -308, -308, -308,
- 1538, -308, 186, 1538, 104, -308, 104, 104, 163, 104,
- 104, 108, 116, -308, 1971, 114, 105, 128, -88, -308,
- -308, 165, 231, 233, -308, 144, 174, -308, -5, 240,
- -308, 241, -308, 244, -308, 1538, 1538, 1538, 1538, 1538,
- 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538,
- 1538, 1538, 1538, 1538, 1538, 1538, 1538, -308, -308, 1538,
- 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538,
- 1538, 1538, 1538, 1538, 1538, 245, 1538, -308, 1538, 232,
- 255, 1538, 1538, 231, 256, -308, 593, -308, 164, 248,
- -308, -308, -308, -308, 247, -308, -308, -308, 1538, 845,
- -308, 90, 1538, -308, 9, -82, 68, 1599, 1349, -308,
- 138, 1538, -308, 1538, 1538, -308, 1538, -308, 166, 171,
- -308, 166, 171, 1538, 1538, -308, -308, 267, 219, 221,
- 166, 1971, 962, 836, 836, 836, 2337, 2337, 2337, 2337,
- 962, 962, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
- 1971, 2032, 2093, 340, 340, 340, 1971, 1727, 2154, 2215,
- 2276, 962, 962, 163, 163, 104, 104, 104, 1788, -308,
- 149, -62, 276, -308, 96, 96, -308, -308, 719, -308,
- 1849, -308, 154, 278, 1663, -308, 156, 971, -308, -308,
- -308, -308, -308, -308, 845, -308, 161, -69, 282, 167,
- 195, -308, 1469, 88, -308, -308, 169, 1349, -308, -55,
- -308, -308, 190, 63, 204, 231, -24, 86, 74, 178,
- 18, 292, 18, 187, 204, 1538, -308, -308, 1469, -308,
- -308, -308, 1538, 213, 188, -308, -308, 185, -308, 61,
- 63, -308, -308, 166, 11, -308, 62, 1469, 1538, -308,
- -308, 191, -308, -308, 1538, -308, -308, 1538, 1469, 9,
- -308, 18, 194, -308, 220, -308, -308, 1971, -308, 76,
- 182, 136, -308, -308, -308, -308, -308, -308, -308, -308,
- -308, -308, 224, 197, 282, -308, 202, 199, -308, -308,
- 62, -308, 265, -308, 92, -308, 203, -308, 205, 220,
- -308, 18, 394, -308, -308, -308, 1538, 235, 207, 136,
- -308, -308, -308, 1349, -308, -308, 336, -308, -308, 1469,
- -308, 1469, 166, 1097, -308, 337, -308, 316, 216, 529,
- -308, 1910, 1349, -308, -308, -308, 218, 1349, 166, -308,
- -308, 225, -308, -308, 66, 222, 1223, -308, -308, -308,
- -308, -5, -308, -308, 1349, -308, -308, 223, 226, -308,
- -308, -308, 345, -308, -308, -308, 1349, 239, 249, 238,
- 9, 1349, -308, 246, 250, 166, -308, -308
+ 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
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -308, -308, -308, -308, 328, 85, -308, 93, -209, 196,
- 1, -76, -244, 16, 59, 332, 268, 77, -308, -308,
- -308, -308, -308, -308, -308, -308, -308, -308, -308, -308,
- -308, -308, -308, -308, -15, -11, -308, -308, 15, -308,
- 17, -308, -308, -308, -308, -308, -308, -308, -193, 19,
- -308, -308, -308, -308, 0, -308, 335, -308, -308, -308,
- 31, -308, 39, -308, -308, -308, -40, -308, -308, -21,
- -308, 2, 27, -308, -307, -308, -271, -41, 3, -308,
- -308, -308, 398, -308, -20, 60, 78, -184, -308, -93,
- -308, -308, -308, -308, -308, -26, -17, -46, -18, -308,
- -308, -308, -308, -308, -308
+ -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
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -205
+#define YYTABLE_NINF -153
static const yytype_int16 yytable[] =
{
- 63, 50, 68, 69, 93, 99, 188, 127, 295, 135,
- 210, 79, 297, 295, 297, 135, 51, 104, 115, 106,
- 107, 95, 108, 109, 110, 114, 114, 342, 118, 225,
- 339, 66, 88, 89, 340, 135, 85, 316, 84, 67,
- 81, 217, 135, -66, 96, 226, 324, 302, 63, 50,
- 68, 69, 398, 85, 83, 1, 2, 3, 345, 4,
- 5, 6, 7, 8, 51, 373, 95, 328, 374, 375,
- 376, 303, 377, 385, 347, 354, 18, 205, 20, 66,
- 21, 85, 207, 270, 368, 114, 85, 67, 80, 386,
- 200, 201, 128, 84, 387, 303, 27, 130, 349, 298,
- 91, 384, 119, 392, 32, 378, 33, 34, 85, 296,
- 85, 132, 94, 414, 397, 379, 380, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 37,
- 38, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 86, 114, 383,
- 115, 271, 100, 473, 274, 275, 105, 102, 280, 406,
- 103, 135, 43, 135, 44, 439, 350, 440, 45, 101,
- 284, 304, 357, 135, 114, 404, 405, 310, 311, 209,
- 312, 157, 158, 135, 309, 114, 114, 407, 114, 63,
- 50, 295, 331, 358, 436, 403, 317, 318, 177, 202,
- 204, -104, 206, 213, 121, 2, 3, 214, 4, 5,
- 6, 7, 8, 455, 174, 216, 188, 175, 457, 212,
- 176, 331, -67, 215, 218, 18, 221, 20, 441, 21,
- 223, 224, 122, 228, 229, 463, 22, 230, 269, 272,
- 157, 158, 188, 26, 458, 27, 123, 469, 273, 276,
- 281, 282, 474, 32, 283, 33, 34, 308, 315, 313,
- 319, 188, 320, 35, 322, 171, 172, 173, 327, 329,
- 332, 333, 188, 174, 335, 297, 175, 63, 50, 176,
- 338, 477, 344, 348, 63, 50, 343, 346, 37, 38,
- 360, 128, 363, 354, 359, 129, 130, 367, 361, 365,
- 371, 396, 370, 372, 394, 369, 400, 401, 131, 413,
- 132, 40, 393, 339, 415, 416, 41, 42, 395, 419,
- 114, 43, 421, 44, 422, 433, 114, 45, 432, 438,
- 450, 363, 451, 188, 452, 188, 456, 459, 467, -3,
- 460, 464, 1, 2, 3, 465, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 470, 472, 13, 14, 15,
- 16, 471, 17, 18, 19, 475, 120, 21, 476, 337,
- 336, 424, 278, 366, 22, 124, 23, 24, 431, 25,
- 219, 26, 356, 27, 434, 28, 29, 30, 435, 134,
- 31, 32, 427, 33, 34, 417, 461, 418, 453, 412,
- 462, 35, 36, 14, 15, 16, 90, 17, 382, 19,
- 0, 399, 0, 444, 443, 448, 449, 157, 158, 427,
- 0, 23, 0, 0, 0, 0, 37, 38, 0, 425,
- 28, 29, 30, 0, 0, 39, 444, 443, 448, 449,
- 169, 170, 171, 172, 173, 0, 0, 0, 0, 40,
- 174, 0, 0, 175, 41, 42, 176, 0, 0, 43,
- 0, 44, 0, -4, 0, 45, 1, 2, 3, 0,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 0,
- 426, 13, 14, 15, 16, 0, 17, 18, 19, 0,
- 0, 21, 0, 0, 0, 0, 0, 0, 22, 0,
- 23, 24, 0, 25, 0, 26, 0, 27, 0, 28,
- 29, 30, -145, 0, 31, 32, 0, 33, 34, 0,
- 0, 0, 0, 0, 0, 35, 36, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 14, 15,
- 16, 0, 17, 0, 19, 0, 0, 0, 0, 0,
- 37, 38, 0, 0, 0, 0, 23, 0, 0, 39,
- 0, 0, 0, 0, 425, 28, 29, 30, 0, 0,
- 0, 0, 0, 40, 0, 0, 0, 0, 41, 42,
- 0, 0, 0, 43, 0, 44, 1, 2, 3, 45,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 0,
- 0, 0, 14, 15, 16, 179, 17, 18, 19, 20,
- 0, 21, 180, 0, 122, 426, 0, 0, 22, 181,
- 23, 24, 0, 25, 182, 26, 0, 27, 183, 28,
- 29, 30, 0, 0, 31, 32, 0, 33, 34, 0,
- 0, 0, 0, 0, 0, 35, 36, -146, 184, 14,
- 15, 16, 0, 17, 0, 19, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 23, 0, 0,
- 37, 38, 0, 0, 0, 0, 28, 29, 30, 185,
+ 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 40, 0, 0, 0, 0, 41, 42,
- 0, 0, 0, 43, 0, 44, 0, 0, 0, 45,
- 0, 277, 1, 2, 3, 0, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 0, 0, 0, 14, 15,
- 16, 179, 17, 18, 19, 20, 0, 21, 180, 0,
- 122, 0, 0, 0, 22, 181, 23, 24, 0, 25,
- 182, 26, 0, 27, 183, 28, 29, 30, 0, 0,
- 31, 32, 0, 33, 34, 0, 0, 0, 0, 0,
- 0, 35, 36, 0, 184, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 37, 38, 0, 0,
- 0, 0, 0, 0, 0, 185, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
- 0, 0, 0, 0, 41, 42, 0, 0, 0, 43,
- 0, 44, 0, 0, 0, 45, 0, 330, 1, 2,
- 3, 0, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 0, 0, 0, 14, 15, 16, 0, 17, 18,
- 19, 0, 0, 21, 0, 136, 0, 0, 0, 0,
- 22, 0, 23, 24, 0, 25, 0, 26, 0, 27,
- 0, 28, 29, 30, 0, 0, 31, 32, 0, 33,
- 34, 0, -205, -205, -205, 0, 0, 35, 36, 144,
- 145, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 157, 158, 0, 0, 159, 160, 161,
- 0, 0, 37, 38, 0, 0, 0, 0, 0, 0,
- 0, 285, 0, 167, 168, 0, 169, 170, 171, 172,
- 173, 0, 0, 0, 0, 40, 174, 0, 0, 175,
- 41, 42, 176, 0, 0, 43, 0, 44, 0, 0,
- 0, 45, 0, -14, 1, 2, 3, 0, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 0, 0, 0,
- 14, 15, 16, 0, 17, 18, 19, 0, 0, 21,
- 0, -205, 0, 0, 0, 0, 22, 0, 23, 24,
- 0, 25, 0, 26, 0, 27, 0, 28, 29, 30,
- 0, 0, 31, 32, 0, 33, 34, 0, 0, 0,
- 0, 0, 0, 35, 36, -205, -205, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 157,
- 158, 0, 0, 159, 160, 161, 0, 0, 37, 38,
- 0, 0, 0, 0, 0, 0, 0, 285, 0, -205,
- -205, 0, 169, 170, 171, 172, 173, 0, 0, 0,
- 0, 40, 174, 0, 0, 175, 41, 42, 176, 0,
- 0, 43, 0, 44, 0, 0, 0, 45, 0, -15,
- 1, 2, 3, 0, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 0, 0, 0, 14, 15, 16, 0,
- 17, 18, 19, 0, 0, 21, 0, 0, 0, 0,
- 0, 0, 22, 0, 23, 24, 0, 25, 0, 26,
- 0, 27, 0, 28, 29, 30, 0, 0, 31, 32,
- 0, 33, 34, 0, 0, 0, 0, 0, 0, 35,
- 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 37, 38, 0, 0, 0, 0,
- 0, 0, 0, 442, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,
- 0, 0, 41, 42, 0, 0, 0, 43, 0, 44,
- 0, 0, 0, 45, 0, -137, 1, 2, 3, 0,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 0,
- 0, 0, 14, 15, 16, 0, 17, 18, 19, 0,
- 0, 21, 0, 0, 0, 0, 0, 0, 22, 0,
- 23, 24, 0, 25, 0, 26, 0, 27, 0, 28,
- 29, 30, 0, 0, 31, 32, 0, 33, 34, 0,
- 0, 0, 0, 0, 0, 35, 36, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0,
- 37, 38, 0, 0, 0, 0, 0, 0, 0, 442,
+ 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, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 40, 0, 0, 0, 0, 41, 42,
- 0, 0, 0, 43, 0, 44, 0, 0, 0, 45,
- 0, -138, 1, 2, 3, 0, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 0, -114, 0, 14, 15,
- 16, 179, 17, 18, 19, 20, 0, 21, 180, 0,
- 122, 0, 0, 0, 22, 181, 23, 24, 0, 25,
- 182, 26, 0, 27, 183, 28, 29, 30, 0, 0,
- 31, 32, 0, 33, 34, 0, 0, 0, 0, 0,
- 0, 35, 36, 0, 184, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 37, 38, 0, 0,
- 0, 0, 0, 0, 0, 185, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
- 0, 0, 0, 0, 41, 42, 0, 0, 0, 43,
- 0, 44, 1, 2, 3, 45, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 0, 0, 0, 14, 15,
- 16, 179, 17, 18, 19, 20, 0, 21, 180, 0,
- 122, 0, 0, 0, 22, 181, 23, 24, 0, 25,
- 182, 26, 0, 27, 183, 28, 29, 30, 0, 0,
- 31, 32, 0, 33, 34, 0, 0, 0, 0, 0,
- 0, 35, 36, 0, 184, 0, 0, 0, 0, 0,
- 0, 1, 2, 3, 0, 4, 5, 6, 7, 8,
- 0, 0, 0, 0, 0, 0, 37, 38, 0, 0,
- 0, 0, 18, 0, 20, 185, 21, 0, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 40,
- 26, 0, 27, 0, 41, 42, 0, 0, 0, 43,
- 32, 186, 33, 34, 0, 45, 0, 0, 0, 0,
- 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 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, 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,
+ 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 37, 38, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 136, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 40, 0,
- 0, 0, 0, 41, 42, 0, 0, 0, 43, 0,
- 44, 0, 0, 0, 45, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 0, 157, 158, 0, 0,
- 159, 160, 161, 0, 0, 0, 0, 0, 162, 0,
- 0, 163, 136, 164, 165, 166, 167, 168, 0, 169,
- 170, 171, 172, 173, 0, 0, 0, 0, 0, 174,
- 0, 0, 175, 0, 0, 176, 0, 0, 305, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 0,
- 157, 158, 0, 0, 159, 160, 161, 0, 0, 0,
- 0, 0, 162, 0, 0, 163, 136, 164, 165, 166,
- 167, 168, 0, 169, 170, 171, 172, 173, 0, 0,
- 0, 0, 0, 174, 0, 0, 175, 0, 0, 176,
- 0, 0, 334, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 0, 157, 158, 0, 0, 159, 160,
- 161, 0, 0, 0, 0, 0, 162, 136, 0, 163,
- 325, 164, 165, 166, 167, 168, 0, 169, 170, 171,
- 172, 173, 0, 0, 0, 0, 0, 174, 0, 0,
- 175, 0, 0, 176, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 0, 157, 158, 0, 0, 159,
- 160, 161, 0, 0, 0, 0, 0, 162, 136, 0,
- 163, 0, 164, 165, 166, 167, 168, 0, 169, 170,
- 171, 172, 173, 0, 0, 0, 0, 0, 174, 326,
- 0, 175, 0, 0, 176, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 0, 157, 158, 0, 0,
- 159, 160, 161, 0, 0, 0, 0, 0, 162, 136,
- 0, 163, -204, 164, 165, 166, 167, 168, 0, 169,
- 170, 171, 172, 173, 0, 0, 0, 0, 0, 174,
- 0, 0, 175, 0, 0, 176, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 0, 157, 158, 0,
- 0, 159, 160, 161, 0, 0, 0, 0, 0, 162,
- 136, 0, 163, 454, 164, 165, 166, 167, 168, 0,
- 169, 170, 171, 172, 173, 0, 0, 0, 0, 0,
- 174, 0, 0, 175, 0, 0, 176, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 0, 157, 158,
- 0, 0, 159, 160, 161, 0, 0, 0, 0, 0,
- 162, 136, 0, 163, 0, 164, 165, 166, 167, 168,
- 0, 169, 170, 171, 172, 173, 0, 0, 0, 0,
- 0, 174, 0, 0, 175, 0, 0, 176, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 156, 0, 157,
- 158, 0, 0, 159, 160, 161, 0, 0, 0, 0,
- 0, 0, 136, 0, 0, 0, 164, 165, 166, 167,
- 168, 0, 169, 170, 171, 172, 173, 0, 0, 0,
- 0, 0, 174, 0, 0, 175, 0, 0, 176, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 0, 0,
+ 0, 0, 0, 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, 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, 0, 0, 0, 0, 0,
- 157, 158, 0, 0, 159, 160, 161, 0, 0, 0,
- 0, 0, 0, 136, 0, 0, 0, 164, 165, 166,
- 167, 168, 0, 169, 170, 171, 172, 173, 0, 0,
- 0, 0, 0, 174, 0, 0, 175, 0, 0, 176,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
+ 41, 0, 0, 0, 0, 0, 0, 0, 131, 0,
+ 148, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 157, 158, 0, 0, 159, 160, 161, 0, 0,
- 0, 0, 0, 0, 136, 0, 0, 0, 0, 165,
- 166, 167, 168, 0, 169, 170, 171, 172, 173, 0,
- 0, 0, 0, 0, 174, 0, 0, 175, 0, 0,
- 176, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 0, 0, 0, 0, 0, 0, 0, 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,
+ 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,
+ 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,
+ 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 157, 158, 0, 0, 159, 160, 161, 0,
- 0, 0, 0, 0, 0, 136, 0, 0, 0, 0,
- 0, 166, 167, 168, 0, 169, 170, 171, 172, 173,
- 0, 0, 0, 0, 0, 174, 0, 0, 175, 0,
- 0, 176, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 157, 158, 0, 0, 159, 160, 161,
- 0, 0, 0, 0, 0, 0, 136, 0, 0, 0,
- 0, 0, -205, 167, 168, 0, 169, 170, 171, 172,
- 173, 0, 0, 0, 0, 0, 174, 0, 0, 175,
- 0, 0, 176, 137, 138, 139, -205, -205, -205, -205,
- 144, 145, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 157, 158, 0, 0, 159, 160,
- 161, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 167, 168, 0, 169, 170, 171,
- 172, 173, 0, 0, 0, 0, 0, 174, 0, 0,
- 175, 0, 0, 176
+ 0, 0, 0, 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
};
static const yytype_int16 yycheck[] =
{
- 0, 0, 0, 0, 22, 25, 82, 53, 201, 97,
- 103, 49, 3, 206, 3, 97, 0, 35, 44, 37,
- 38, 3, 40, 41, 42, 43, 44, 298, 45, 34,
- 99, 0, 13, 3, 103, 97, 18, 221, 3, 0,
- 126, 129, 97, 67, 25, 50, 230, 129, 48, 48,
- 48, 48, 359, 18, 126, 3, 4, 5, 302, 7,
- 8, 9, 10, 11, 48, 4, 3, 129, 7, 8,
- 9, 3, 11, 344, 129, 99, 24, 94, 26, 48,
- 28, 18, 100, 176, 328, 103, 18, 48, 126, 27,
- 122, 123, 26, 3, 32, 3, 44, 31, 35, 90,
- 3, 90, 0, 347, 52, 44, 54, 55, 18, 202,
- 18, 45, 126, 384, 358, 54, 55, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 87,
- 88, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 122, 176, 343,
- 186, 178, 126, 470, 181, 182, 126, 123, 186, 33,
- 126, 97, 120, 97, 122, 419, 113, 421, 126, 122,
- 198, 113, 96, 97, 202, 3, 4, 213, 214, 3,
- 216, 87, 88, 97, 211, 213, 214, 61, 216, 199,
- 199, 394, 278, 129, 413, 129, 223, 224, 126, 126,
- 126, 123, 123, 97, 3, 4, 5, 103, 7, 8,
- 9, 10, 11, 432, 120, 97, 302, 123, 437, 121,
- 126, 307, 67, 128, 3, 24, 3, 26, 422, 28,
- 96, 67, 31, 3, 3, 454, 35, 3, 3, 17,
- 87, 88, 328, 42, 438, 44, 45, 466, 3, 3,
- 96, 13, 471, 52, 17, 54, 55, 129, 97, 103,
- 3, 347, 53, 62, 53, 112, 113, 114, 129, 3,
- 126, 3, 358, 120, 128, 3, 123, 287, 287, 126,
- 129, 475, 97, 103, 294, 294, 129, 128, 87, 88,
- 320, 26, 322, 99, 126, 30, 31, 325, 16, 122,
- 122, 357, 99, 128, 123, 332, 122, 97, 43, 122,
- 45, 110, 348, 99, 122, 126, 115, 116, 354, 64,
- 348, 120, 129, 122, 129, 128, 354, 126, 103, 3,
- 3, 361, 26, 419, 128, 421, 128, 122, 3, 0,
- 128, 128, 3, 4, 5, 129, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 126, 128, 18, 19, 20,
- 21, 122, 23, 24, 25, 129, 48, 28, 128, 294,
- 287, 401, 186, 324, 35, 53, 37, 38, 406, 40,
- 122, 42, 315, 44, 409, 46, 47, 48, 409, 64,
- 51, 52, 402, 54, 55, 390, 446, 390, 429, 382,
- 451, 62, 63, 19, 20, 21, 18, 23, 340, 25,
- -1, 361, -1, 423, 423, 423, 423, 87, 88, 429,
- -1, 37, -1, -1, -1, -1, 87, 88, -1, 45,
- 46, 47, 48, -1, -1, 96, 446, 446, 446, 446,
- 110, 111, 112, 113, 114, -1, -1, -1, -1, 110,
- 120, -1, -1, 123, 115, 116, 126, -1, -1, 120,
- -1, 122, -1, 0, -1, 126, 3, 4, 5, -1,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, -1,
- 96, 18, 19, 20, 21, -1, 23, 24, 25, -1,
- -1, 28, -1, -1, -1, -1, -1, -1, 35, -1,
- 37, 38, -1, 40, -1, 42, -1, 44, -1, 46,
- 47, 48, 128, -1, 51, 52, -1, 54, 55, -1,
- -1, -1, -1, -1, -1, 62, 63, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 19, 20,
- 21, -1, 23, -1, 25, -1, -1, -1, -1, -1,
- 87, 88, -1, -1, -1, -1, 37, -1, -1, 96,
- -1, -1, -1, -1, 45, 46, 47, 48, -1, -1,
- -1, -1, -1, 110, -1, -1, -1, -1, 115, 116,
- -1, -1, -1, 120, -1, 122, 3, 4, 5, 126,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, -1,
- -1, -1, 19, 20, 21, 22, 23, 24, 25, 26,
- -1, 28, 29, -1, 31, 96, -1, -1, 35, 36,
- 37, 38, -1, 40, 41, 42, -1, 44, 45, 46,
- 47, 48, -1, -1, 51, 52, -1, 54, 55, -1,
- -1, -1, -1, -1, -1, 62, 63, 128, 65, 19,
- 20, 21, -1, 23, -1, 25, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 37, -1, -1,
- 87, 88, -1, -1, -1, -1, 46, 47, 48, 96,
+ 0, 0, 0, 0, 0, 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, 110, -1, -1, -1, -1, 115, 116,
- -1, -1, -1, 120, -1, 122, -1, -1, -1, 126,
- -1, 128, 3, 4, 5, -1, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, -1, -1, -1, 19, 20,
- 21, 22, 23, 24, 25, 26, -1, 28, 29, -1,
- 31, -1, -1, -1, 35, 36, 37, 38, -1, 40,
- 41, 42, -1, 44, 45, 46, 47, 48, -1, -1,
- 51, 52, -1, 54, 55, -1, -1, -1, -1, -1,
- -1, 62, 63, -1, 65, -1, -1, -1, -1, -1,
+ -1, -1, -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, 87, 88, -1, -1,
- -1, -1, -1, -1, -1, 96, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 110,
- -1, -1, -1, -1, 115, 116, -1, -1, -1, 120,
- -1, 122, -1, -1, -1, 126, -1, 128, 3, 4,
- 5, -1, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, -1, -1, -1, 19, 20, 21, -1, 23, 24,
- 25, -1, -1, 28, -1, 39, -1, -1, -1, -1,
- 35, -1, 37, 38, -1, 40, -1, 42, -1, 44,
- -1, 46, 47, 48, -1, -1, 51, 52, -1, 54,
- 55, -1, 66, 67, 68, -1, -1, 62, 63, 73,
- 74, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 87, 88, -1, -1, 91, 92, 93,
- -1, -1, 87, 88, -1, -1, -1, -1, -1, -1,
- -1, 96, -1, 107, 108, -1, 110, 111, 112, 113,
- 114, -1, -1, -1, -1, 110, 120, -1, -1, 123,
- 115, 116, 126, -1, -1, 120, -1, 122, -1, -1,
- -1, 126, -1, 128, 3, 4, 5, -1, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, -1, -1, -1,
- 19, 20, 21, -1, 23, 24, 25, -1, -1, 28,
- -1, 39, -1, -1, -1, -1, 35, -1, 37, 38,
- -1, 40, -1, 42, -1, 44, -1, 46, 47, 48,
- -1, -1, 51, 52, -1, 54, 55, -1, -1, -1,
- -1, -1, -1, 62, 63, 73, 74, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 87,
- 88, -1, -1, 91, 92, 93, -1, -1, 87, 88,
- -1, -1, -1, -1, -1, -1, -1, 96, -1, 107,
- 108, -1, 110, 111, 112, 113, 114, -1, -1, -1,
- -1, 110, 120, -1, -1, 123, 115, 116, 126, -1,
- -1, 120, -1, 122, -1, -1, -1, 126, -1, 128,
- 3, 4, 5, -1, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, -1, -1, -1, 19, 20, 21, -1,
- 23, 24, 25, -1, -1, 28, -1, -1, -1, -1,
- -1, -1, 35, -1, 37, 38, -1, 40, -1, 42,
- -1, 44, -1, 46, 47, 48, -1, -1, 51, 52,
- -1, 54, 55, -1, -1, -1, -1, -1, -1, 62,
- 63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -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, 87, 88, -1, -1, -1, -1,
- -1, -1, -1, 96, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 110, -1, -1,
- -1, -1, 115, 116, -1, -1, -1, 120, -1, 122,
- -1, -1, -1, 126, -1, 128, 3, 4, 5, -1,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, -1,
- -1, -1, 19, 20, 21, -1, 23, 24, 25, -1,
- -1, 28, -1, -1, -1, -1, -1, -1, 35, -1,
- 37, 38, -1, 40, -1, 42, -1, 44, -1, 46,
- 47, 48, -1, -1, 51, 52, -1, 54, 55, -1,
- -1, -1, -1, -1, -1, 62, 63, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 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,
- 87, 88, -1, -1, -1, -1, -1, -1, -1, 96,
+ -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, 110, -1, -1, -1, -1, 115, 116,
- -1, -1, -1, 120, -1, 122, -1, -1, -1, 126,
- -1, 128, 3, 4, 5, -1, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, -1, 17, -1, 19, 20,
- 21, 22, 23, 24, 25, 26, -1, 28, 29, -1,
- 31, -1, -1, -1, 35, 36, 37, 38, -1, 40,
- 41, 42, -1, 44, 45, 46, 47, 48, -1, -1,
- 51, 52, -1, 54, 55, -1, -1, -1, -1, -1,
- -1, 62, 63, -1, 65, -1, -1, -1, -1, -1,
+ -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, 87, 88, -1, -1,
- -1, -1, -1, -1, -1, 96, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 110,
- -1, -1, -1, -1, 115, 116, -1, -1, -1, 120,
- -1, 122, 3, 4, 5, 126, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, -1, -1, -1, 19, 20,
- 21, 22, 23, 24, 25, 26, -1, 28, 29, -1,
- 31, -1, -1, -1, 35, 36, 37, 38, -1, 40,
- 41, 42, -1, 44, 45, 46, 47, 48, -1, -1,
- 51, 52, -1, 54, 55, -1, -1, -1, -1, -1,
- -1, 62, 63, -1, 65, -1, -1, -1, -1, -1,
- -1, 3, 4, 5, -1, 7, 8, 9, 10, 11,
- -1, -1, -1, -1, -1, -1, 87, 88, -1, -1,
- -1, -1, 24, -1, 26, 96, 28, -1, -1, -1,
- -1, -1, -1, 35, -1, -1, -1, -1, -1, 110,
- 42, -1, 44, -1, 115, 116, -1, -1, -1, 120,
- 52, 122, 54, 55, -1, 126, -1, -1, -1, -1,
- 62, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -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, 87, 88, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 39, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 110, -1,
- -1, -1, -1, 115, 116, -1, -1, -1, 120, -1,
- 122, -1, -1, -1, 126, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, -1, 87, 88, -1, -1,
- 91, 92, 93, -1, -1, -1, -1, -1, 99, -1,
- -1, 102, 39, 104, 105, 106, 107, 108, -1, 110,
- 111, 112, 113, 114, -1, -1, -1, -1, -1, 120,
- -1, -1, 123, -1, -1, 126, -1, -1, 129, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, -1,
- 87, 88, -1, -1, 91, 92, 93, -1, -1, -1,
- -1, -1, 99, -1, -1, 102, 39, 104, 105, 106,
- 107, 108, -1, 110, 111, 112, 113, 114, -1, -1,
- -1, -1, -1, 120, -1, -1, 123, -1, -1, 126,
- -1, -1, 129, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, -1, 87, 88, -1, -1, 91, 92,
- 93, -1, -1, -1, -1, -1, 99, 39, -1, 102,
- 103, 104, 105, 106, 107, 108, -1, 110, 111, 112,
- 113, 114, -1, -1, -1, -1, -1, 120, -1, -1,
- 123, -1, -1, 126, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, -1, 87, 88, -1, -1, 91,
- 92, 93, -1, -1, -1, -1, -1, 99, 39, -1,
- 102, -1, 104, 105, 106, 107, 108, -1, 110, 111,
- 112, 113, 114, -1, -1, -1, -1, -1, 120, 121,
- -1, 123, -1, -1, 126, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, -1, 87, 88, -1, -1,
- 91, 92, 93, -1, -1, -1, -1, -1, 99, 39,
- -1, 102, 103, 104, 105, 106, 107, 108, -1, 110,
- 111, 112, 113, 114, -1, -1, -1, -1, -1, 120,
- -1, -1, 123, -1, -1, 126, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, -1, 87, 88, -1,
- -1, 91, 92, 93, -1, -1, -1, -1, -1, 99,
- 39, -1, 102, 103, 104, 105, 106, 107, 108, -1,
- 110, 111, 112, 113, 114, -1, -1, -1, -1, -1,
- 120, -1, -1, 123, -1, -1, 126, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
- -1, -1, 91, 92, 93, -1, -1, -1, -1, -1,
- 99, 39, -1, 102, -1, 104, 105, 106, 107, 108,
- -1, 110, 111, 112, 113, 114, -1, -1, -1, -1,
- -1, 120, -1, -1, 123, -1, -1, 126, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 85, -1, 87,
- 88, -1, -1, 91, 92, 93, -1, -1, -1, -1,
- -1, -1, 39, -1, -1, -1, 104, 105, 106, 107,
- 108, -1, 110, 111, 112, 113, 114, -1, -1, -1,
- -1, -1, 120, -1, -1, 123, -1, -1, 126, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 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, -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,
- 87, 88, -1, -1, 91, 92, 93, -1, -1, -1,
- -1, -1, -1, 39, -1, -1, -1, 104, 105, 106,
- 107, 108, -1, 110, 111, 112, 113, 114, -1, -1,
- -1, -1, -1, 120, -1, -1, 123, -1, -1, 126,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, 87, 88, -1, -1, 91, 92, 93, -1, -1,
- -1, -1, -1, -1, 39, -1, -1, -1, -1, 105,
- 106, 107, 108, -1, 110, 111, 112, 113, 114, -1,
- -1, -1, -1, -1, 120, -1, -1, 123, -1, -1,
- 126, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ -1, -1, -1, -1, -1, -1, -1, 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, -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, -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, 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, -1, 87, 88, -1, -1, 91, 92, 93, -1,
- -1, -1, -1, -1, -1, 39, -1, -1, -1, -1,
- -1, 106, 107, 108, -1, 110, 111, 112, 113, 114,
- -1, -1, -1, -1, -1, 120, -1, -1, 123, -1,
- -1, 126, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 87, 88, -1, -1, 91, 92, 93,
- -1, -1, -1, -1, -1, -1, 39, -1, -1, -1,
- -1, -1, 106, 107, 108, -1, 110, 111, 112, 113,
- 114, -1, -1, -1, -1, -1, 120, -1, -1, 123,
- -1, -1, 126, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 87, 88, -1, -1, 91, 92,
- 93, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 107, 108, -1, 110, 111, 112,
- 113, 114, -1, -1, -1, -1, -1, 120, -1, -1,
- 123, -1, -1, 126
+ -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, -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,
+ 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
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 3, 4, 5, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 18, 19, 20, 21, 23, 24, 25,
- 26, 28, 35, 37, 38, 40, 42, 44, 46, 47,
- 48, 51, 52, 54, 55, 62, 63, 87, 88, 96,
- 110, 115, 116, 120, 122, 126, 131, 132, 133, 134,
- 140, 143, 149, 153, 154, 155, 156, 158, 166, 174,
- 177, 180, 183, 184, 185, 186, 190, 192, 201, 208,
- 211, 221, 222, 223, 226, 227, 228, 229, 232, 49,
- 126, 126, 159, 126, 3, 18, 122, 178, 179, 3,
- 212, 3, 210, 228, 126, 3, 179, 212, 213, 214,
- 126, 122, 123, 126, 228, 126, 228, 228, 228, 228,
- 228, 219, 220, 225, 228, 225, 230, 231, 226, 0,
- 134, 3, 31, 45, 145, 151, 152, 227, 26, 30,
- 31, 43, 45, 200, 186, 97, 39, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 87, 88, 91,
- 92, 93, 99, 102, 104, 105, 106, 107, 108, 110,
- 111, 112, 113, 114, 120, 123, 126, 126, 157, 22,
- 29, 36, 41, 45, 65, 96, 122, 140, 141, 142,
- 145, 160, 161, 176, 184, 224, 233, 234, 167, 182,
- 122, 123, 126, 218, 126, 226, 123, 228, 175, 3,
- 219, 150, 121, 97, 103, 128, 97, 129, 3, 146,
- 147, 3, 146, 96, 67, 34, 50, 207, 3, 3,
- 3, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
- 228, 228, 228, 228, 228, 228, 228, 228, 228, 3,
- 219, 226, 17, 3, 226, 226, 3, 128, 139, 141,
- 228, 96, 13, 17, 228, 96, 135, 136, 137, 143,
- 190, 192, 201, 208, 181, 178, 219, 3, 90, 204,
- 205, 206, 129, 3, 113, 129, 138, 139, 129, 226,
- 225, 225, 225, 103, 217, 97, 217, 226, 226, 3,
- 53, 187, 53, 188, 217, 103, 121, 129, 129, 3,
- 128, 141, 126, 3, 129, 128, 137, 135, 129, 99,
- 103, 202, 206, 129, 97, 142, 128, 129, 103, 35,
- 113, 179, 214, 216, 99, 144, 147, 96, 129, 126,
- 214, 16, 189, 214, 215, 122, 144, 228, 142, 226,
- 99, 122, 128, 4, 7, 8, 9, 11, 44, 54,
- 55, 203, 216, 217, 90, 206, 27, 32, 168, 170,
- 172, 173, 142, 225, 123, 225, 227, 142, 204, 215,
- 122, 97, 193, 129, 3, 4, 33, 61, 162, 163,
- 164, 165, 202, 122, 206, 122, 126, 168, 170, 64,
- 148, 129, 129, 191, 214, 45, 96, 184, 197, 198,
- 199, 228, 103, 128, 164, 165, 138, 171, 3, 142,
- 142, 217, 96, 140, 184, 194, 195, 196, 201, 208,
- 3, 26, 128, 199, 103, 138, 128, 138, 217, 122,
- 128, 196, 207, 138, 128, 129, 209, 3, 169, 138,
- 126, 122, 128, 204, 138, 129, 128, 217
+ 0, 3, 4, 5, 6, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 29, 36, 38, 39, 41, 43, 45,
+ 47, 48, 49, 52, 53, 55, 56, 63, 64, 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
};
#define yyerrok (yyerrstatus = 0)
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 24:
+
+ case 26:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1829 "parser.y"
+ {(yyval.code)=(yyvsp[(1) - (1)].code);}
+ }
+ break;
-/* Line 1455 of yacc.c */
-#line 1509 "parser.y"
- {(yyval.code)=(yyvsp[(1) - (1)].code);;}
- break;
- case 25:
+
+ case 27:
+ if(as3_pass==2) {
-/* Line 1455 of yacc.c */
-#line 1510 "parser.y"
- {(yyval.code)=code_new();;}
+/* Line 1464 of skeleton.m4 */
+#line 1830 "parser.y"
+ {(yyval.code)=code_new();}
+ }
break;
- case 26:
-/* Line 1455 of yacc.c */
-#line 1512 "parser.y"
- {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));;}
+
+ case 28:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1832 "parser.y"
+ {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));}
+ }
break;
- case 27:
-/* Line 1455 of yacc.c */
-#line 1513 "parser.y"
- {(yyval.code)=(yyvsp[(1) - (1)].code);;}
+
+ case 29:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1833 "parser.y"
+ {(yyval.code)=(yyvsp[(1) - (1)].code);}
+ }
break;
- case 38:
-/* Line 1455 of yacc.c */
-#line 1528 "parser.y"
- {(yyval.code)=0;;}
+
+ case 41:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1847 "parser.y"
+ {(yyval.code)=(yyvsp[(2) - (3)].code);}
+ }
break;
- case 45:
-/* Line 1455 of yacc.c */
-#line 1536 "parser.y"
- {/*TODO*/(yyval.code)=0;;}
+
+ case 42:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1848 "parser.y"
+ {(yyval.code)=0;}
+ }
break;
- case 46:
-/* Line 1455 of yacc.c */
-#line 1537 "parser.y"
- {/*TODO*/(yyval.code)=0;;}
+
+ case 43:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1851 "parser.y"
+ {(yyval.code)=0;}
+ }
break;
- case 47:
-/* Line 1455 of yacc.c */
-#line 1539 "parser.y"
- {(yyval.code)=(yyvsp[(2) - (3)].code);;}
+
+ case 50:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1858 "parser.y"
+ {(yyval.code)=(yyvsp[(3) - (4)].code);}
+ }
break;
- case 48:
-/* Line 1455 of yacc.c */
-#line 1540 "parser.y"
- {(yyval.code)=0;;}
+
+ case 51:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1860 "parser.y"
+ {/*TODO*/(yyval.code)=0;}
+ }
break;
- case 49:
-/* Line 1455 of yacc.c */
-#line 1541 "parser.y"
- {(yyval.code)=(yyvsp[(1) - (2)].code);;}
+
+ case 52:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1864 "parser.y"
+ {(yyval.code)=(yyvsp[(1) - (2)].code);}
+ }
break;
- case 50:
-/* Line 1455 of yacc.c */
-#line 1542 "parser.y"
- {(yyval.code)=(yyvsp[(1) - (1)].code);;}
+
+ case 53:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1865 "parser.y"
+ {(yyval.code)=(yyvsp[(1) - (1)].code);}
+ }
break;
- case 51:
-/* Line 1455 of yacc.c */
-#line 1546 "parser.y"
+
+ case 54:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1869 "parser.y"
{
code_t**cc = &global->init->method->body->code;
*cc = code_append(*cc, (yyvsp[(1) - (1)].code));
-;}
+}
+ }
break;
- case 52:
-/* Line 1455 of yacc.c */
-#line 1553 "parser.y"
- {(yyval.value)=(yyvsp[(2) - (2)].value);;}
+
+ case 56:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1880 "parser.y"
+ {(yyval.value)=(yyvsp[(2) - (2)].value);}
+ }
break;
- case 53:
-/* Line 1455 of yacc.c */
-#line 1554 "parser.y"
+
+ case 57:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1881 "parser.y"
{(yyval.value).c=abc_pushundefined(0);
(yyval.value).t=TYPE_ANY;
- ;}
+ }
+ }
break;
- case 54:
-/* Line 1455 of yacc.c */
-#line 1558 "parser.y"
- {(yyval.code)=(yyvsp[(2) - (2)].code);;}
+
+ case 58:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1885 "parser.y"
+ {(yyval.code)=(yyvsp[(2) - (2)].code);}
+ }
break;
- case 55:
-/* Line 1455 of yacc.c */
-#line 1559 "parser.y"
- {(yyval.code)=(yyvsp[(2) - (2)].code);;}
+
+ case 59:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1886 "parser.y"
+ {(yyval.code)=(yyvsp[(2) - (2)].code);}
+ }
break;
- case 56:
-/* Line 1455 of yacc.c */
-#line 1561 "parser.y"
- {(yyval.code) = (yyvsp[(1) - (1)].code);;}
+
+ case 60:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1888 "parser.y"
+ {(yyval.code) = (yyvsp[(1) - (1)].code);}
+ }
break;
- case 57:
-/* Line 1455 of yacc.c */
-#line 1562 "parser.y"
- {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));;}
+
+ case 61:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1889 "parser.y"
+ {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));}
+ }
break;
- case 58:
-/* Line 1455 of yacc.c */
-#line 1565 "parser.y"
+
+ case 62:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1892 "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), (yyvsp[(2) - (3)].classinfo), 1);
+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);
if((yyvsp[(2) - (3)].classinfo)) {
(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) = abc_coerce_a((yyval.code));
(yyval.code) = abc_setlocal((yyval.code), index);
} else {
+ code_free((yyvsp[(3) - (3)].value).c);
(yyval.code) = code_new();
}
}
state->method->initcode = abc_setlocal(state->method->initcode, index);
}*/
//printf("variable %s -> %d (%s)\n", $2->text, index, $4.t?$4.t->name:"");
-;}
+}
+ }
break;
- case 59:
-/* Line 1455 of yacc.c */
-#line 1605 "parser.y"
- {(yyval.code) = code_new();;}
+
+ case 63:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1937 "parser.y"
+ {(yyval.code) = code_new();}
+ }
break;
- case 60:
-/* Line 1455 of yacc.c */
-#line 1606 "parser.y"
- {(yyval.code)=(yyvsp[(2) - (2)].code);;}
+
+ case 64:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1938 "parser.y"
+ {(yyval.code)=(yyvsp[(2) - (2)].code);}
+ }
break;
- case 61:
-/* Line 1455 of yacc.c */
-#line 1609 "parser.y"
- {new_state();;}
+
+ case 65:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1941 "parser.y"
+ {PASS12 new_state();}
+ }
break;
- case 62:
-/* Line 1455 of yacc.c */
-#line 1609 "parser.y"
+
+ case 66:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1941 "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;
- case 63:
-/* Line 1455 of yacc.c */
-#line 1628 "parser.y"
- {(yyval.code)=code_new();;}
+
+ case 67:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1960 "parser.y"
+ {(yyval.code)=code_new();}
+ }
break;
- case 66:
-/* Line 1455 of yacc.c */
-#line 1633 "parser.y"
+
+ case 70:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1967 "parser.y"
{
+ PASS12
(yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1);
-;}
+}
+ }
break;
- case 67:
-/* Line 1455 of yacc.c */
-#line 1636 "parser.y"
+
+ case 71:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1971 "parser.y"
{
+ PASS12
(yyval.id)=(yyvsp[(1) - (1)].id);
-;}
+}
+ }
break;
- case 68:
-/* Line 1455 of yacc.c */
-#line 1640 "parser.y"
- {new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;;}
+
+ case 72:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1976 "parser.y"
+ {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;}
+ }
break;
- case 69:
-/* Line 1455 of yacc.c */
-#line 1641 "parser.y"
- {new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;;}
+
+ case 73:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1977 "parser.y"
+ {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;}
+ }
break;
- case 70:
-/* Line 1455 of yacc.c */
-#line 1643 "parser.y"
+
+ case 74:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1979 "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;
- case 71:
-/* Line 1455 of yacc.c */
-#line 1663 "parser.y"
+
+ case 75:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 1999 "parser.y"
{
- variable_t*var = find_variable((yyvsp[(2) - (6)].id));
+ variable_t*var = find_variable(state, (yyvsp[(2) - (6)].id));
char*tmp1name = concat2((yyvsp[(2) - (6)].id), "__tmp1__");
int it = new_variable(tmp1name, TYPE_INT, 0);
char*tmp2name = concat2((yyvsp[(2) - (6)].id), "__array__");
myif->branch = out;
(yyval.code) = var_block((yyval.code));
- old_state();
free(tmp1name);
free(tmp2name);
-;}
+
+ PASS12 old_state();
+}
+ }
break;
- case 72:
-/* Line 1455 of yacc.c */
-#line 1706 "parser.y"
- {new_state();;}
+
+ case 76:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2043 "parser.y"
+ {PASS12 new_state();}
+ }
break;
- case 73:
-/* Line 1455 of yacc.c */
-#line 1706 "parser.y"
+
+ case 77:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2043 "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;
- case 74:
-/* Line 1455 of yacc.c */
-#line 1725 "parser.y"
- {new_state();;}
+
+ case 78:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2062 "parser.y"
+ {PASS12 new_state();}
+ }
break;
- case 75:
-/* Line 1455 of yacc.c */
-#line 1725 "parser.y"
+
+ case 79:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2062 "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;
- case 76:
-/* Line 1455 of yacc.c */
-#line 1740 "parser.y"
+
+ case 80:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2077 "parser.y"
{
(yyval.code) = abc___break__(0, "");
-;}
+}
+ }
break;
- case 77:
-/* Line 1455 of yacc.c */
-#line 1743 "parser.y"
+
+ case 81:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2080 "parser.y"
{
(yyval.code) = abc___break__(0, (yyvsp[(2) - (2)].id));
-;}
+}
+ }
break;
- case 78:
-/* Line 1455 of yacc.c */
-#line 1746 "parser.y"
+
+ case 82:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2083 "parser.y"
{
(yyval.code) = abc___continue__(0, "");
-;}
+}
+ }
break;
- case 79:
-/* Line 1455 of yacc.c */
-#line 1749 "parser.y"
+
+ case 83:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2086 "parser.y"
{
(yyval.code) = abc___continue__(0, (yyvsp[(2) - (2)].id));
-;}
+}
+ }
break;
- case 80:
-/* Line 1455 of yacc.c */
-#line 1753 "parser.y"
- {(yyval.code)=0;;}
+
+ case 84:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2090 "parser.y"
+ {(yyval.code)=0;}
+ }
break;
- case 81:
-/* Line 1455 of yacc.c */
-#line 1754 "parser.y"
- {(yyval.code)=(yyvsp[(1) - (1)].code);;}
+
+ case 85:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2091 "parser.y"
+ {(yyval.code)=(yyvsp[(1) - (1)].code);}
+ }
break;
- case 82:
-/* Line 1455 of yacc.c */
-#line 1755 "parser.y"
- {(yyval.code)=(yyvsp[(1) - (1)].code);;}
+
+ case 86:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2092 "parser.y"
+ {(yyval.code)=(yyvsp[(1) - (1)].code);}
+ }
break;
- case 83:
-/* Line 1455 of yacc.c */
-#line 1756 "parser.y"
- {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));;}
+
+ case 87:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2093 "parser.y"
+ {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));}
+ }
break;
- case 84:
-/* Line 1455 of yacc.c */
-#line 1757 "parser.y"
+
+ case 88:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2094 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
+ }
break;
- case 85:
-/* Line 1455 of yacc.c */
-#line 1758 "parser.y"
- {(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));;}
+
+ case 89:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2095 "parser.y"
+ {(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));}
+ }
break;
- case 86:
-/* Line 1455 of yacc.c */
-#line 1760 "parser.y"
+
+ case 90:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2097 "parser.y"
{
(yyval.code) = abc_dup(0);
(yyval.code) = code_append((yyval.code), (yyvsp[(2) - (4)].value).c);
}
code_t*e = (yyval.code) = abc_nop((yyval.code));
j->branch = e;
-;}
+}
+ }
break;
- case 87:
-/* Line 1455 of yacc.c */
-#line 1771 "parser.y"
+
+ case 91:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2108 "parser.y"
{
(yyval.code) = (yyvsp[(3) - (3)].code);
-;}
+}
+ }
break;
- case 88:
-/* Line 1455 of yacc.c */
-#line 1774 "parser.y"
- {new_state();;}
+
+ case 92:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2111 "parser.y"
+ {PASS12 new_state();}
+ }
break;
- case 89:
-/* Line 1455 of yacc.c */
-#line 1774 "parser.y"
+
+ case 93:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2111 "parser.y"
{
(yyval.code)=(yyvsp[(4) - (8)].value).c;
(yyval.code) = code_append((yyval.code), (yyvsp[(7) - (8)].code));
}
(yyval.code) = var_block((yyval.code));
- old_state();
-;}
+ PASS12 old_state();
+}
+ }
break;
- case 90:
-/* Line 1455 of yacc.c */
-#line 1803 "parser.y"
- {new_state();state->exception_name=(yyvsp[(3) - (5)].id);new_variable((yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].classinfo), 0);;}
+
+ case 94:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2140 "parser.y"
+ {PASS12 new_state();state->exception_name=(yyvsp[(3) - (5)].id);new_variable((yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].classinfo), 0);}
+ }
break;
- case 91:
-/* Line 1455 of yacc.c */
-#line 1804 "parser.y"
+
+ case 95:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2141 "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, (yyvsp[(8) - (9)].code));
c = abc_kill(c, i);
c = var_block(c);
- old_state();
-;}
+ PASS12 old_state();
+}
+ }
break;
- case 92:
-/* Line 1455 of yacc.c */
-#line 1823 "parser.y"
- {new_state();state->exception_name=0;;}
+
+ case 96:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2160 "parser.y"
+ {PASS12 new_state();state->exception_name=0;}
+ }
break;
- case 93:
-/* Line 1455 of yacc.c */
-#line 1823 "parser.y"
+
+ case 97:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2160 "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;
- case 94:
-/* Line 1455 of yacc.c */
-#line 1840 "parser.y"
- {(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));;}
+
+ case 98:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2176 "parser.y"
+ {(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));}
+ }
break;
- case 95:
-/* Line 1455 of yacc.c */
-#line 1841 "parser.y"
- {(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));;}
+
+ case 99:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2177 "parser.y"
+ {(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));}
+ }
break;
- case 96:
-/* Line 1455 of yacc.c */
-#line 1842 "parser.y"
+
+ case 100:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2178 "parser.y"
{(yyval.catch_list)=(yyvsp[(1) - (1)].catch_list);}
+ }
break;
- case 97:
-/* Line 1455 of yacc.c */
-#line 1843 "parser.y"
+
+ case 101:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2179 "parser.y"
{
(yyval.catch_list) = (yyvsp[(1) - (2)].catch_list);
(yyval.catch_list).finally = 0;
list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));
(yyval.catch_list).finally = (yyvsp[(2) - (2)].exception)->to;(yyvsp[(2) - (2)].exception)->to=0;
}
-;}
+}
+ }
break;
- case 98:
-/* Line 1455 of yacc.c */
-#line 1851 "parser.y"
+
+ case 102:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2187 "parser.y"
{
(yyval.catch_list).l=list_new();
(yyval.catch_list).finally = 0;
list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));
(yyval.catch_list).finally = (yyvsp[(1) - (1)].exception)->to;(yyvsp[(1) - (1)].exception)->to=0;
}
-;}
+}
+ }
break;
- case 99:
-/* Line 1455 of yacc.c */
-#line 1860 "parser.y"
- {new_state();;}
+
+ case 103:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2196 "parser.y"
+ {PASS12 new_state();}
+ }
break;
- case 100:
-/* Line 1455 of yacc.c */
-#line 1860 "parser.y"
+
+ case 104:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2196 "parser.y"
{
code_t*out = abc_nop(0);
list_concat(state->method->exceptions, (yyvsp[(6) - (6)].catch_list).l);
(yyval.code) = var_block((yyval.code));
- old_state();
-;}
+ PASS12 old_state();
+}
+ }
break;
- case 101:
-/* Line 1455 of yacc.c */
-#line 1905 "parser.y"
+
+ case 105:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2241 "parser.y"
{
(yyval.code)=(yyvsp[(2) - (2)].value).c;
(yyval.code)=abc_throw((yyval.code));
-;}
+}
+ }
break;
- case 102:
-/* Line 1455 of yacc.c */
-#line 1909 "parser.y"
+
+ case 106:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2245 "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));
-;}
+}
+ }
break;
- case 103:
-/* Line 1455 of yacc.c */
-#line 1920 "parser.y"
+
+ case 107:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2256 "parser.y"
{
(yyval.code) = (yyvsp[(3) - (5)].value).c;
(yyval.code) = abc_pushscope((yyval.code));
(yyval.code) = code_append((yyval.code), (yyvsp[(5) - (5)].code));
(yyval.code) = abc_popscope((yyval.code));
-;}
+}
+ }
break;
- case 105:
-
-/* Line 1455 of yacc.c */
-#line 1930 "parser.y"
- {(yyval.id)="package";;}
- break;
- case 106:
+
+ case 109:
+ if(as3_pass==2) {
-/* Line 1455 of yacc.c */
-#line 1932 "parser.y"
- {(yyval.id) = concat3((yyvsp[(1) - (3)].id),".",(yyvsp[(3) - (3)].id));free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0;;}
+/* Line 1464 of skeleton.m4 */
+#line 2266 "parser.y"
+ {PASS12 (yyval.id)="package";}
+ }
break;
- case 107:
-/* Line 1455 of yacc.c */
-#line 1933 "parser.y"
- {(yyval.id)=strdup((yyvsp[(1) - (1)].id));;}
+
+ case 110:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2268 "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 108:
-/* Line 1455 of yacc.c */
-#line 1935 "parser.y"
- {startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;;}
+
+ case 111:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2269 "parser.y"
+ {PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));}
+ }
break;
- case 109:
-/* Line 1455 of yacc.c */
-#line 1935 "parser.y"
- {endpackage();(yyval.code)=0;;}
+
+ case 112:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2271 "parser.y"
+ {PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;}
+ }
+ break;
+
+
+
+ case 113:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2272 "parser.y"
+ {PASS12 endpackage();(yyval.code)=0;}
+ }
break;
- case 110:
-/* Line 1455 of yacc.c */
-#line 1936 "parser.y"
- {startpackage("");}
+
+ case 114:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2273 "parser.y"
+ {PASS12 startpackage("");}
+ }
break;
- case 111:
-/* Line 1455 of yacc.c */
-#line 1936 "parser.y"
- {endpackage();(yyval.code)=0;;}
+
+ case 115:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2274 "parser.y"
+ {PASS12 endpackage();(yyval.code)=0;}
+ }
break;
- case 112:
-/* Line 1455 of yacc.c */
-#line 1938 "parser.y"
+
+ case 116:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2276 "parser.y"
{
+ PASS12
+ slotinfo_t*s = registry_find((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name);
+ if(!s) {// || !(s->flags&FLAG_BUILTIN)) {
+ as3_schedule_class((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name);
+ }
+
+ PASS2
classinfo_t*c = (yyvsp[(2) - (2)].classinfo);
if(!c)
syntaxerror("Couldn't import class\n");
state_has_imports();
dict_put(state->imports, c->name, c);
(yyval.code)=0;
-;}
+}
+ }
break;
- case 113:
-/* Line 1455 of yacc.c */
-#line 1946 "parser.y"
+
+ case 117:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2291 "parser.y"
{
+ PASS12
+ if(strncmp("flash.", (yyvsp[(2) - (4)].id), 6)) {
+ as3_schedule_package((yyvsp[(2) - (4)].id));
+ }
+
+ PASS2
NEW(import_t,i);
i->package = (yyvsp[(2) - (4)].id);
state_has_imports();
list_append(state->wildcard_imports, i);
(yyval.code)=0;
-;}
+}
+ }
break;
- case 114:
-/* Line 1455 of yacc.c */
-#line 1956 "parser.y"
- {(yyval.flags)=0;;}
+
+ case 118:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2307 "parser.y"
+ {PASS12 (yyval.flags)=0;}
+ }
break;
- case 115:
-/* Line 1455 of yacc.c */
-#line 1957 "parser.y"
- {(yyval.flags)=(yyvsp[(1) - (1)].flags);}
+
+ case 119:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2308 "parser.y"
+ {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
+ }
break;
- case 116:
-/* Line 1455 of yacc.c */
-#line 1958 "parser.y"
- {(yyval.flags)=(yyvsp[(1) - (1)].token);;}
+
+ case 120:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2309 "parser.y"
+ {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].token);}
+ }
break;
- case 117:
-/* Line 1455 of yacc.c */
-#line 1959 "parser.y"
- {(yyval.flags)=(yyvsp[(1) - (2)].flags)|(yyvsp[(2) - (2)].token);;}
+
+ case 121:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2310 "parser.y"
+ {PASS12 (yyval.flags)=(yyvsp[(1) - (2)].flags)|(yyvsp[(2) - (2)].token);}
+ }
break;
- case 118:
-/* Line 1455 of yacc.c */
-#line 1961 "parser.y"
- {(yyval.token)=FLAG_PUBLIC;;}
+
+ case 122:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2312 "parser.y"
+ {PASS12 (yyval.token)=FLAG_PUBLIC;}
+ }
break;
- case 119:
-/* Line 1455 of yacc.c */
-#line 1962 "parser.y"
- {(yyval.token)=FLAG_PRIVATE;;}
+
+ case 123:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2313 "parser.y"
+ {PASS12 (yyval.token)=FLAG_PRIVATE;}
+ }
break;
- case 120:
-/* Line 1455 of yacc.c */
-#line 1963 "parser.y"
- {(yyval.token)=FLAG_PROTECTED;;}
+
+ case 124:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2314 "parser.y"
+ {PASS12 (yyval.token)=FLAG_PROTECTED;}
+ }
break;
- case 121:
-/* Line 1455 of yacc.c */
-#line 1964 "parser.y"
- {(yyval.token)=FLAG_STATIC;;}
+
+ case 125:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2315 "parser.y"
+ {PASS12 (yyval.token)=FLAG_STATIC;}
+ }
break;
- case 122:
-/* Line 1455 of yacc.c */
-#line 1965 "parser.y"
- {(yyval.token)=FLAG_DYNAMIC;;}
+
+ case 126:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2316 "parser.y"
+ {PASS12 (yyval.token)=FLAG_DYNAMIC;}
+ }
break;
- case 123:
-/* Line 1455 of yacc.c */
-#line 1966 "parser.y"
- {(yyval.token)=FLAG_FINAL;;}
+
+ case 127:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2317 "parser.y"
+ {PASS12 (yyval.token)=FLAG_FINAL;}
+ }
break;
- case 124:
-/* Line 1455 of yacc.c */
-#line 1967 "parser.y"
- {(yyval.token)=FLAG_OVERRIDE;;}
+
+ case 128:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2318 "parser.y"
+ {PASS12 (yyval.token)=FLAG_OVERRIDE;}
+ }
+ break;
+
+
+
+ case 129:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2319 "parser.y"
+ {PASS12 (yyval.token)=FLAG_NATIVE;}
+ }
break;
- case 125:
-/* Line 1455 of yacc.c */
-#line 1968 "parser.y"
- {(yyval.token)=FLAG_NATIVE;;}
+
+ case 130:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2320 "parser.y"
+ {PASS12 (yyval.token)=FLAG_PACKAGEINTERNAL;}
+ }
break;
- case 126:
-/* Line 1455 of yacc.c */
-#line 1969 "parser.y"
- {(yyval.token)=FLAG_PACKAGEINTERNAL;;}
+
+ case 131:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2321 "parser.y"
+ {PASS12 (yyval.token)=FLAG_NAMESPACE;}
+ }
break;
- case 127:
-/* Line 1455 of yacc.c */
-#line 1971 "parser.y"
- {(yyval.classinfo)=registry_getobjectclass();;}
+
+ case 132:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2323 "parser.y"
+ {(yyval.classinfo)=registry_getobjectclass();}
+ }
break;
- case 128:
-/* Line 1455 of yacc.c */
-#line 1972 "parser.y"
- {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);;}
+
+ case 133:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2324 "parser.y"
+ {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
+ }
break;
- case 129:
-/* Line 1455 of yacc.c */
-#line 1974 "parser.y"
- {(yyval.classinfo_list)=list_new();;}
+
+ case 134:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2326 "parser.y"
+ {PASS12 (yyval.classinfo_list)=list_new();}
+ }
break;
- case 130:
-/* Line 1455 of yacc.c */
-#line 1975 "parser.y"
- {(yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);;}
+
+ case 135:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2327 "parser.y"
+ {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
+ }
break;
- case 131:
-/* Line 1455 of yacc.c */
-#line 1977 "parser.y"
- {(yyval.classinfo_list)=list_new();;}
+
+ case 136:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2329 "parser.y"
+ {PASS12 (yyval.classinfo_list)=list_new();}
+ }
break;
- case 132:
-/* Line 1455 of yacc.c */
-#line 1978 "parser.y"
- {(yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);;}
+
+ case 137:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2330 "parser.y"
+ {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
+ }
break;
- case 133:
-/* Line 1455 of yacc.c */
-#line 1982 "parser.y"
- {startclass((yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list), 0);;}
+
+ case 138:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2334 "parser.y"
+ {PASS12 startclass((yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list));}
+ }
break;
- case 134:
-/* Line 1455 of yacc.c */
-#line 1984 "parser.y"
- {endclass();(yyval.code)=0;;}
+
+ case 139:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2336 "parser.y"
+ {PASS12 endclass();(yyval.code)=0;}
+ }
break;
- case 135:
-/* Line 1455 of yacc.c */
-#line 1988 "parser.y"
- {startclass((yyvsp[(1) - (5)].flags),(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list),1);;}
+
+ case 140:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2340 "parser.y"
+ {PASS12 startclass((yyvsp[(1) - (5)].flags)|FLAG_INTERFACE,(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list));}
+ }
break;
- case 136:
-/* Line 1455 of yacc.c */
-#line 1990 "parser.y"
- {endclass();(yyval.code)=0;;}
+
+ case 141:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2342 "parser.y"
+ {PASS12 endclass();(yyval.code)=0;}
+ }
break;
- case 144:
-/* Line 1455 of yacc.c */
-#line 2002 "parser.y"
+
+ case 150:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2355 "parser.y"
{
- code_t*c = state->cls->static_init;
+ code_t*c = state->cls->static_init->header;
c = code_append(c, (yyvsp[(1) - (1)].code));
- state->cls->static_init = c;
-;}
+ state->cls->static_init->header = c;
+}
+ }
break;
- case 150:
-/* Line 1455 of yacc.c */
-#line 2013 "parser.y"
+
+ case 156:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2366 "parser.y"
{
syntaxerror("variable declarations not allowed in interfaces");
-;}
+}
+ }
break;
- case 151:
-/* Line 1455 of yacc.c */
-#line 2016 "parser.y"
+
+ case 157:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2369 "parser.y"
{
+ PASS12
(yyvsp[(1) - (8)].flags) |= FLAG_PUBLIC;
if((yyvsp[(1) - (8)].flags)&(FLAG_PRIVATE|FLAG_PACKAGEINTERNAL|FLAG_PROTECTED)) {
syntaxerror("invalid method modifiers: interface methods always need to be public");
}
startfunction(0,(yyvsp[(1) - (8)].flags),(yyvsp[(3) - (8)].token),(yyvsp[(4) - (8)].id),&(yyvsp[(6) - (8)].params),(yyvsp[(8) - (8)].classinfo));
endfunction(0,(yyvsp[(1) - (8)].flags),(yyvsp[(3) - (8)].token),(yyvsp[(4) - (8)].id),&(yyvsp[(6) - (8)].params),(yyvsp[(8) - (8)].classinfo), 0);
-;}
+ list_deep_free((yyvsp[(6) - (8)].params).list);
+}
+ }
+ break;
+
+
+
+ case 160:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2384 "parser.y"
+ {setstaticfunction((yyvsp[(1) - (3)].flags));}
+ }
break;
- case 154:
-/* Line 1455 of yacc.c */
-#line 2029 "parser.y"
+
+ case 161:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2384 "parser.y"
{
- int flags = (yyvsp[(1) - (5)].flags);
- memberinfo_t* info = state->cls?
- memberinfo_register(state->cls->info, (yyvsp[(3) - (5)].id), MEMBER_SLOT):
- memberinfo_register_global(flags2access((yyvsp[(1) - (5)].flags)), state->package, (yyvsp[(3) - (5)].id), MEMBER_SLOT);
+ int flags = (yyvsp[(1) - (6)].flags);
+ U8 access = flags2access((yyvsp[(1) - (6)].flags));
+
+ varinfo_t* info = 0;
+ if(state->cls) {
+ memberinfo_t*i = registry_findmember(state->cls->info, (yyvsp[(3) - (6)].id), 1);
+ if(i) {
+ check_override(i, flags);
+ }
+ info = varinfo_register_onclass(state->cls->info, access, (yyvsp[(3) - (6)].id));
+ } else {
+ slotinfo_t*i = registry_find(state->package, (yyvsp[(3) - (6)].id));
+ if(i) {
+ syntaxerror("package %s already contains '%s'", state->package, (yyvsp[(3) - (6)].id));
+ }
+ info = varinfo_register_global(access, state->package, (yyvsp[(3) - (6)].id));
+ }
- info->type = (yyvsp[(4) - (5)].classinfo);
+ info->type = (yyvsp[(5) - (6)].classinfo);
info->flags = flags;
/* slot name */
- namespace_t mname_ns = {flags2access(flags), ""};
- multiname_t mname = {QNAME, &mname_ns, 0, (yyvsp[(3) - (5)].id)};
+ namespace_t mname_ns = {access, ""};
+ multiname_t mname = {QNAME, &mname_ns, 0, (yyvsp[(3) - (6)].id)};
trait_list_t**traits;
code_t**code;
if(!state->cls) {
// global variable
+ mname_ns.name = state->package;
traits = &global->init->traits;
code = &global->init->method->body->code;
} else if(flags&FLAG_STATIC) {
// static variable
traits = &state->cls->abc->static_traits;
- code = &state->cls->static_init;
+ code = &state->cls->static_init->header;
} else {
// instance variable
traits = &state->cls->abc->traits;
- code = &state->cls->init;
+ code = &state->cls->init->header;
}
trait_t*t=0;
- if((yyvsp[(4) - (5)].classinfo)) {
- MULTINAME(m, (yyvsp[(4) - (5)].classinfo));
+ if((yyvsp[(5) - (6)].classinfo)) {
+ MULTINAME(m, (yyvsp[(5) - (6)].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[(5) - (5)].value).c && !is_pushundefined((yyvsp[(5) - (5)].value).c)) {
+ if((yyvsp[(6) - (6)].value).c && !is_pushundefined((yyvsp[(6) - (6)].value).c)) {
c = abc_getlocal_0(c);
- c = code_append(c, (yyvsp[(5) - (5)].value).c);
- c = converttype(c, (yyvsp[(5) - (5)].value).t, (yyvsp[(4) - (5)].classinfo));
+ c = code_append(c, (yyvsp[(6) - (6)].value).c);
+ c = converttype(c, (yyvsp[(6) - (6)].value).t, (yyvsp[(5) - (6)].classinfo));
c = abc_setslot(c, t->slot_id);
}
*code = code_append(*code, c);
- if((yyvsp[(2) - (5)].token)==KW_CONST) {
+ if((yyvsp[(2) - (6)].token)==KW_CONST) {
t->kind= TRAIT_CONST;
}
(yyval.code)=0;
-;}
+ setstaticfunction(0);
+}
+ }
break;
- case 155:
-/* Line 1455 of yacc.c */
-#line 2087 "parser.y"
- {(yyval.constant)=0;;}
+
+ case 162:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2457 "parser.y"
+ {(yyval.constant)=0;}
+ }
break;
- case 156:
-/* Line 1455 of yacc.c */
-#line 2088 "parser.y"
- {(yyval.constant)=(yyvsp[(2) - (2)].constant);;}
+
+ case 163:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2458 "parser.y"
+ {(yyval.constant)=(yyvsp[(2) - (2)].constant);}
+ }
break;
- case 157:
-/* Line 1455 of yacc.c */
-#line 2090 "parser.y"
- {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_uint));;}
+
+ case 164:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2460 "parser.y"
+ {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_uint));}
+ }
break;
- case 158:
-/* Line 1455 of yacc.c */
-#line 2091 "parser.y"
- {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));;}
+
+ case 165:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2461 "parser.y"
+ {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));}
+ }
break;
- case 159:
-/* Line 1455 of yacc.c */
-#line 2092 "parser.y"
- {(yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));;}
+
+ case 166:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2462 "parser.y"
+ {(yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));}
+ }
break;
- case 160:
-/* Line 1455 of yacc.c */
-#line 2093 "parser.y"
- {(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));;}
+
+ case 167:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2463 "parser.y"
+ {(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));}
+ }
break;
- case 161:
-/* Line 1455 of yacc.c */
-#line 2094 "parser.y"
- {(yyval.constant) = constant_new_string2((yyvsp[(1) - (1)].str).str,(yyvsp[(1) - (1)].str).len);;}
+
+ case 168:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2464 "parser.y"
+ {(yyval.constant) = constant_new_string2((yyvsp[(1) - (1)].str).str,(yyvsp[(1) - (1)].str).len);free((char*)(yyvsp[(1) - (1)].str).str);}
+ }
break;
- case 162:
-/* Line 1455 of yacc.c */
-#line 2096 "parser.y"
- {(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));;}
+
+ case 169:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2466 "parser.y"
+ {(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));}
+ }
break;
- case 163:
-/* Line 1455 of yacc.c */
-#line 2097 "parser.y"
- {(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));;}
+
+ case 170:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2467 "parser.y"
+ {(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));}
+ }
break;
- case 164:
-/* Line 1455 of yacc.c */
-#line 2098 "parser.y"
- {(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));;}
+
+ case 171:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2468 "parser.y"
+ {(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));}
+ }
break;
- case 165:
-/* Line 1455 of yacc.c */
-#line 2103 "parser.y"
+
+ case 172:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2469 "parser.y"
{
+ // TODO
+ as3_warning("Couldn't resolve %s", (yyvsp[(1) - (1)].id));
+ (yyval.constant) = constant_new_null((yyvsp[(1) - (1)].id));
+}
+ }
+ break;
+
+
+
+ case 173:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2478 "parser.y"
+ {
+ PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
-;}
+}
+ }
break;
- case 166:
-/* Line 1455 of yacc.c */
-#line 2106 "parser.y"
+
+ case 174:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2482 "parser.y"
{
+ PASS12
(yyval.params)=(yyvsp[(1) - (1)].params);
-;}
+}
+ }
break;
- case 167:
-/* Line 1455 of yacc.c */
-#line 2111 "parser.y"
+
+ case 175:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2488 "parser.y"
{
+ PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
(yyval.params).varargs=1;
list_append((yyval.params).list, (yyvsp[(2) - (2)].param));
-;}
+}
+ }
break;
- case 168:
-/* Line 1455 of yacc.c */
-#line 2116 "parser.y"
+
+ case 176:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2494 "parser.y"
{
+ PASS12
(yyval.params) =(yyvsp[(1) - (4)].params);
(yyval.params).varargs=1;
list_append((yyval.params).list, (yyvsp[(4) - (4)].param));
-;}
+}
+ }
break;
- case 169:
-/* Line 1455 of yacc.c */
-#line 2123 "parser.y"
+
+ case 177:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2502 "parser.y"
{
+ PASS12
(yyval.params) = (yyvsp[(1) - (3)].params);
list_append((yyval.params).list, (yyvsp[(3) - (3)].param));
-;}
+}
+ }
break;
- case 170:
-/* Line 1455 of yacc.c */
-#line 2127 "parser.y"
+
+ case 178:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2507 "parser.y"
{
+ PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
list_append((yyval.params).list, (yyvsp[(1) - (1)].param));
-;}
+}
+ }
break;
- case 171:
-/* Line 1455 of yacc.c */
-#line 2132 "parser.y"
+
+ case 179:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2513 "parser.y"
{
- (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);
-;}
+}
+ }
break;
- case 172:
-/* Line 1455 of yacc.c */
-#line 2138 "parser.y"
+
+ case 180:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2521 "parser.y"
{
- (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);
-;}
+}
+ }
break;
- case 173:
-/* Line 1455 of yacc.c */
-#line 2144 "parser.y"
- {(yyval.token)=(yyvsp[(1) - (1)].token);;}
+
+ case 181:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2529 "parser.y"
+ {(yyval.token)=(yyvsp[(1) - (1)].token);}
+ }
break;
- case 174:
-/* Line 1455 of yacc.c */
-#line 2145 "parser.y"
- {(yyval.token)=(yyvsp[(1) - (1)].token);;}
+
+ case 182:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2530 "parser.y"
+ {(yyval.token)=(yyvsp[(1) - (1)].token);}
+ }
break;
- case 175:
-/* Line 1455 of yacc.c */
-#line 2146 "parser.y"
- {(yyval.token)=0;;}
+
+ case 183:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2531 "parser.y"
+ {(yyval.token)=0;}
+ }
break;
- case 176:
-/* Line 1455 of yacc.c */
-#line 2149 "parser.y"
- {startfunction(0,(yyvsp[(1) - (9)].flags),(yyvsp[(3) - (9)].token),(yyvsp[(4) - (9)].id),&(yyvsp[(6) - (9)].params),(yyvsp[(8) - (9)].classinfo));}
+
+ case 184:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2534 "parser.y"
+ {PASS12 startfunction(0,(yyvsp[(1) - (9)].flags),(yyvsp[(3) - (9)].token),(yyvsp[(4) - (9)].id),&(yyvsp[(6) - (9)].params),(yyvsp[(8) - (9)].classinfo));}
+ }
break;
- case 177:
-/* Line 1455 of yacc.c */
-#line 2150 "parser.y"
+
+ case 185:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2535 "parser.y"
{
- code_t*c = 0;
- if(state->method->late_binding) {
- c = abc_getlocal_0(c);
- c = abc_pushscope(c);
- }
- if(state->method->is_constructor && !state->method->has_super) {
- // call default constructor
- c = abc_getlocal_0(c);
- c = abc_constructsuper(c, 0);
- }
+ PASS1
+ endfunction(0,(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);
+ PASS12
+ list_deep_free((yyvsp[(6) - (12)].params).list);
(yyval.code)=0;
-;}
+}
+ }
break;
- case 179:
-/* Line 1455 of yacc.c */
-#line 2167 "parser.y"
- {(yyval.id)=0;;}
+
+ case 187:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2551 "parser.y"
+ {PASS12 (yyval.id)=0;}
+ }
break;
- case 180:
-/* Line 1455 of yacc.c */
-#line 2169 "parser.y"
- {
- syntaxerror("nested functions not supported yet");
-;}
+
+ case 188:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2553 "parser.y"
+ {PASS12 innerfunction((yyvsp[(2) - (7)].id),&(yyvsp[(4) - (7)].params),(yyvsp[(6) - (7)].classinfo));}
+ }
break;
- case 181:
-/* Line 1455 of yacc.c */
-#line 2176 "parser.y"
+
+ case 189:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2554 "parser.y"
{
+ PASS1
+ endfunction(0,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");
+
+ code_t*c = method_header(state->method);
+ 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);
+
+ (yyval.value).c = abc_getlocal(0, index);
+ (yyval.value).t = TYPE_FUNCTION(f);
+
+ PASS12 list_deep_free((yyvsp[(4) - (10)].params).list);
+}
+ }
+ break;
+
- /* try current package */
- (yyval.classinfo) = find_class((yyvsp[(1) - (1)].id));
- if(!(yyval.classinfo)) syntaxerror("Could not find class %s\n", (yyvsp[(1) - (1)].id));
-;}
+
+ case 190:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2576 "parser.y"
+ {
+ PASS1 (yyval.classinfo)=0;
+ PASS2
+ slotinfo_t*s = find_class((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;
+}
+ }
break;
- case 182:
-/* Line 1455 of yacc.c */
-#line 2183 "parser.y"
+
+ case 191:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2584 "parser.y"
{
- (yyval.classinfo) = registry_findclass((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id));
- if(!(yyval.classinfo)) syntaxerror("Couldn't find class %s.%s\n", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id));
+ PASS1 static classinfo_t c;
+ memset(&c, 0, sizeof(c));
+ c.package = (yyvsp[(1) - (3)].id);
+ c.name = (yyvsp[(3) - (3)].id);
+ (yyval.classinfo)=&c;
+ PASS2
+ slotinfo_t*s = registry_find((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id));
+ if(!s) syntaxerror("Couldn't find class/method %s.%s\n", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id));
free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0;
-;}
+ (yyval.classinfo) = (classinfo_t*)s;
+}
+ }
break;
- case 185:
-/* Line 1455 of yacc.c */
-#line 2192 "parser.y"
- {(yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));;}
+
+ case 194:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2600 "parser.y"
+ {PASS12 (yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));}
+ }
break;
- case 186:
-/* Line 1455 of yacc.c */
-#line 2193 "parser.y"
- {(yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));;}
+
+ case 195:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2601 "parser.y"
+ {PASS12 (yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));}
+ }
break;
- case 187:
-/* Line 1455 of yacc.c */
-#line 2195 "parser.y"
- {(yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);;}
+
+ case 196:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2603 "parser.y"
+ {(yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);}
+ }
break;
- case 188:
-/* Line 1455 of yacc.c */
-#line 2196 "parser.y"
- {(yyval.classinfo)=registry_getanytype();;}
+
+ case 197:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2604 "parser.y"
+ {(yyval.classinfo)=registry_getanytype();}
+ }
break;
- case 189:
-/* Line 1455 of yacc.c */
-#line 2197 "parser.y"
- {(yyval.classinfo)=registry_getanytype();;}
+
+ case 198:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2605 "parser.y"
+ {(yyval.classinfo)=registry_getanytype();}
+ }
break;
- case 190:
-/* Line 1455 of yacc.c */
-#line 2206 "parser.y"
- {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);;}
+
+ case 199:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2614 "parser.y"
+ {(yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
+ }
break;
- case 191:
-/* Line 1455 of yacc.c */
-#line 2207 "parser.y"
- {(yyval.classinfo)=0;;}
+
+ case 200:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2615 "parser.y"
+ {(yyval.classinfo)=0;}
+ }
break;
- case 192:
-/* Line 1455 of yacc.c */
-#line 2211 "parser.y"
- {(yyval.value_list).cc=0;(yyval.value_list).len=0;;}
+
+ case 201:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2619 "parser.y"
+ {(yyval.value_list).cc=0;(yyval.value_list).len=0;}
+ }
break;
- case 193:
-/* Line 1455 of yacc.c */
-#line 2212 "parser.y"
+
+ case 202:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2620 "parser.y"
{(yyval.value_list)=(yyvsp[(2) - (3)].value_list);}
+ }
break;
- case 194:
-/* Line 1455 of yacc.c */
-#line 2214 "parser.y"
- {(yyval.value_list).cc=0;(yyval.value_list).len=0;;}
+
+ case 203:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2622 "parser.y"
+ {(yyval.value_list).cc=0;(yyval.value_list).len=0;}
+ }
break;
- case 196:
-/* Line 1455 of yacc.c */
-#line 2216 "parser.y"
+
+ case 206:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2626 "parser.y"
{(yyval.value_list).len=1;
(yyval.value_list).cc = (yyvsp[(1) - (1)].value).c;
- ;}
+ }
+ }
break;
- case 197:
-/* Line 1455 of yacc.c */
-#line 2219 "parser.y"
- {
- (yyval.value_list).len= (yyvsp[(1) - (3)].value_list).len+1;
- (yyval.value_list).cc = code_append((yyvsp[(1) - (3)].value_list).cc, (yyvsp[(3) - (3)].value).c);
- ;}
+
+ case 207:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2630 "parser.y"
+ {(yyval.value_list) = (yyvsp[(1) - (2)].value_list);}
+ }
break;
- case 198:
-/* Line 1455 of yacc.c */
-#line 2224 "parser.y"
- {
- MULTINAME(m, (yyvsp[(2) - (3)].classinfo));
- (yyval.value).c = code_new();
+
+ case 208:
+ if(as3_pass==2) {
- if((yyvsp[(2) - (3)].classinfo)->slot) {
- (yyval.value).c = abc_getglobalscope((yyval.value).c);
- (yyval.value).c = abc_getslot((yyval.value).c, (yyvsp[(2) - (3)].classinfo)->slot);
- } else {
- (yyval.value).c = abc_findpropstrict2((yyval.value).c, &m);
+/* Line 1464 of skeleton.m4 */
+#line 2631 "parser.y"
+ {
+ (yyval.value_list).len= (yyvsp[(1) - (2)].value_list).len+1;
+ (yyval.value_list).cc = code_append((yyvsp[(1) - (2)].value_list).cc, (yyvsp[(2) - (2)].value).c);
+ }
}
+ break;
- (yyval.value).c = code_append((yyval.value).c, (yyvsp[(3) - (3)].value_list).cc);
- if((yyvsp[(2) - (3)].classinfo)->slot)
- (yyval.value).c = abc_construct((yyval.value).c, (yyvsp[(3) - (3)].value_list).len);
- else
- (yyval.value).c = abc_constructprop2((yyval.value).c, &m, (yyvsp[(3) - (3)].value_list).len);
- (yyval.value).t = (yyvsp[(2) - (3)].classinfo);
-;}
+
+ case 210:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2637 "parser.y"
+ {
+ (yyval.value).c = (yyvsp[(2) - (4)].value).c;
+ if((yyval.value).c->opcode == OPCODE_COERCE_A) (yyval.value).c = code_cutlast((yyval.value).c);
+
+ code_t*paramcode = (yyvsp[(4) - (4)].value_list).cc;
+ if((yyval.value).c->opcode == OPCODE_GETPROPERTY) {
+ multiname_t*name = (yyval.value).c->data[0];(yyval.value).c->data[0]=0;
+ (yyval.value).c = code_cutlast((yyval.value).c);
+ (yyval.value).c = code_append((yyval.value).c, paramcode);
+ (yyval.value).c = abc_constructprop2((yyval.value).c, name, (yyvsp[(4) - (4)].value_list).len);
+ multiname_destroy(name);
+ } else if((yyval.value).c->opcode == OPCODE_GETSLOT) {
+ int slot = (int)(ptroff_t)(yyval.value).c->data[0];
+ trait_t*t = abc_class_find_slotid(state->cls->abc,slot);//FIXME
+ multiname_t*name = t->name;
+ (yyval.value).c = code_cutlast((yyval.value).c);
+ (yyval.value).c = code_append((yyval.value).c, paramcode);
+ (yyval.value).c = abc_constructprop2((yyval.value).c, name, (yyvsp[(4) - (4)].value_list).len);
+ } else {
+ (yyval.value).c = code_append((yyval.value).c, paramcode);
+ (yyval.value).c = abc_construct((yyval.value).c, (yyvsp[(4) - (4)].value_list).len);
+ }
+
+ (yyval.value).t = TYPE_ANY;
+ if(TYPE_IS_CLASS((yyvsp[(2) - (4)].value).t) && (yyvsp[(2) - (4)].value).t->data) {
+ (yyval.value).t = (yyvsp[(2) - (4)].value).t->data;
+ } else {
+ (yyval.value).c = abc_coerce_a((yyval.value).c);
+ (yyval.value).t = TYPE_ANY;
+ }
+}
+ }
break;
- case 199:
-/* Line 1455 of yacc.c */
-#line 2248 "parser.y"
+
+ case 211:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2673 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (4)].value).c;
(yyval.value).c = abc_callsuper2((yyval.value).c, name, (yyvsp[(3) - (4)].value_list).len);
multiname_destroy(name);
} else {
- (yyval.value).c = abc_getlocal_0((yyval.value).c);
+ (yyval.value).c = abc_getglobalscope((yyval.value).c);
(yyval.value).c = code_append((yyval.value).c, paramcode);
(yyval.value).c = abc_call((yyval.value).c, (yyvsp[(3) - (4)].value_list).len);
}
- memberinfo_t*f = 0;
-
- if(TYPE_IS_FUNCTION((yyvsp[(1) - (4)].value).t) && (yyvsp[(1) - (4)].value).t->function) {
- (yyval.value).t = (yyvsp[(1) - (4)].value).t->function->return_type;
+ if(TYPE_IS_FUNCTION((yyvsp[(1) - (4)].value).t) && (yyvsp[(1) - (4)].value).t->data) {
+ (yyval.value).t = ((methodinfo_t*)((yyvsp[(1) - (4)].value).t->data))->return_type;
} else {
(yyval.value).c = abc_coerce_a((yyval.value).c);
(yyval.value).t = TYPE_ANY;
}
-
-;}
+}
+ }
break;
- case 200:
-/* Line 1455 of yacc.c */
-#line 2296 "parser.y"
+
+ case 212:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2719 "parser.y"
{
if(!state->cls) syntaxerror("super() not allowed outside of a class");
if(!state->method) syntaxerror("super() not allowed outside of a function");
syntaxerror("constructor may call super() only once");
*/
state->method->has_super = 1;
+
(yyval.value).c = abc_constructsuper((yyval.value).c, (yyvsp[(3) - (4)].value_list).len);
(yyval.value).c = abc_pushundefined((yyval.value).c);
(yyval.value).t = TYPE_ANY;
-;}
+}
+ }
break;
- case 201:
-/* Line 1455 of yacc.c */
-#line 2316 "parser.y"
+
+ case 213:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2740 "parser.y"
{
(yyval.value).c = (yyvsp[(2) - (2)].value).c;
if((yyval.value).c->opcode == OPCODE_COERCE_A) {
(yyval.value).c = abc_deleteproperty2((yyval.value).c, &m);
}
(yyval.value).t = TYPE_BOOLEAN;
-;}
+}
+ }
break;
- case 202:
-/* Line 1455 of yacc.c */
-#line 2337 "parser.y"
+
+ case 214:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2761 "parser.y"
{
(yyval.code) = abc_returnvoid(0);
-;}
+}
+ }
break;
- case 203:
-/* Line 1455 of yacc.c */
-#line 2340 "parser.y"
+
+ case 215:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2764 "parser.y"
{
(yyval.code) = (yyvsp[(2) - (2)].value).c;
(yyval.code) = abc_returnvalue((yyval.code));
-;}
+}
+ }
break;
- case 204:
-/* Line 1455 of yacc.c */
-#line 2347 "parser.y"
- {(yyval.value)=(yyvsp[(1) - (1)].value);;}
+
+ case 216:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2771 "parser.y"
+ {(yyval.value)=(yyvsp[(1) - (1)].value);}
+ }
break;
- case 205:
-/* Line 1455 of yacc.c */
-#line 2348 "parser.y"
- {(yyval.value) = (yyvsp[(1) - (1)].value);;}
+
+ case 217:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2772 "parser.y"
+ {(yyval.value) = (yyvsp[(1) - (1)].value);}
+ }
break;
- case 206:
-/* Line 1455 of yacc.c */
-#line 2349 "parser.y"
+
+ case 218:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2773 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (3)].value).c;
(yyval.value).c = cut_last_push((yyval.value).c);
(yyval.value).c = code_append((yyval.value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).t = (yyvsp[(3) - (3)].value).t;
-;}
+}
+ }
break;
- case 207:
-/* Line 1455 of yacc.c */
-#line 2355 "parser.y"
+
+ case 219:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2779 "parser.y"
{
(yyval.code)=cut_last_push((yyvsp[(1) - (1)].value).c);
-;}
+}
+ }
break;
- case 208:
-/* Line 1455 of yacc.c */
-#line 2361 "parser.y"
- {(yyval.value) = (yyvsp[(1) - (1)].value);;}
+
+ case 220:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2785 "parser.y"
+ {(yyval.value) = (yyvsp[(1) - (1)].value);}
+ }
break;
- case 210:
-/* Line 1455 of yacc.c */
-#line 2365 "parser.y"
- {(yyval.value) = (yyvsp[(1) - (1)].value);;}
+
+ case 222:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2789 "parser.y"
+ {(yyval.value) = (yyvsp[(1) - (1)].value);}
+ }
break;
- case 211:
-/* Line 1455 of yacc.c */
-#line 2367 "parser.y"
- {(yyval.value) = (yyvsp[(1) - (1)].value);;}
+
+ case 223:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2791 "parser.y"
+ {(yyval.value) = (yyvsp[(1) - (1)].value);}
+ }
break;
- case 212:
-/* Line 1455 of yacc.c */
-#line 2369 "parser.y"
- {(yyval.value) = (yyvsp[(1) - (1)].value);;}
+
+ case 224:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2793 "parser.y"
+ {(yyval.value) = (yyvsp[(1) - (1)].value);}
+ }
break;
- case 213:
-/* Line 1455 of yacc.c */
-#line 2371 "parser.y"
+
+ case 226:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2797 "parser.y"
{
(yyval.value).c = 0;
namespace_t ns = {ACCESS_PACKAGE, ""};
(yyval.value).c = abc_construct((yyval.value).c, 2);
}
(yyval.value).t = TYPE_REGEXP;
-;}
+}
+ }
break;
- case 214:
-/* Line 1455 of yacc.c */
-#line 2388 "parser.y"
+
+ case 227:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2814 "parser.y"
{(yyval.value).c = abc_pushbyte(0, (yyvsp[(1) - (1)].number_uint));
//MULTINAME(m, registry_getintclass());
//$$.c = abc_coerce2($$.c, &m); // FIXME
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 215:
-/* Line 1455 of yacc.c */
-#line 2393 "parser.y"
+
+ case 228:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2819 "parser.y"
{(yyval.value).c = abc_pushshort(0, (yyvsp[(1) - (1)].number_uint));
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 216:
-/* Line 1455 of yacc.c */
-#line 2396 "parser.y"
+
+ case 229:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2822 "parser.y"
{(yyval.value).c = abc_pushint(0, (yyvsp[(1) - (1)].number_int));
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 217:
-/* Line 1455 of yacc.c */
-#line 2399 "parser.y"
+
+ case 230:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2825 "parser.y"
{(yyval.value).c = abc_pushuint(0, (yyvsp[(1) - (1)].number_uint));
(yyval.value).t = TYPE_UINT;
- ;}
+ }
+ }
break;
- case 218:
-/* Line 1455 of yacc.c */
-#line 2402 "parser.y"
+
+ case 231:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2828 "parser.y"
{(yyval.value).c = abc_pushdouble(0, (yyvsp[(1) - (1)].number_float));
(yyval.value).t = TYPE_FLOAT;
- ;}
+ }
+ }
break;
- case 219:
-/* Line 1455 of yacc.c */
-#line 2405 "parser.y"
- {(yyval.value).c = abc_pushstring2(0, &(yyvsp[(1) - (1)].str));
+
+ case 232:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2831 "parser.y"
+ {(yyval.value).c = abc_pushstring2(0, &(yyvsp[(1) - (1)].str));free((char*)(yyvsp[(1) - (1)].str).str);
(yyval.value).t = TYPE_STRING;
- ;}
+ }
+ }
break;
- case 220:
-/* Line 1455 of yacc.c */
-#line 2408 "parser.y"
+
+ case 233:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2834 "parser.y"
{(yyval.value).c = abc_pushundefined(0);
(yyval.value).t = TYPE_ANY;
- ;}
+ }
+ }
break;
- case 221:
-/* Line 1455 of yacc.c */
-#line 2411 "parser.y"
+
+ case 234:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2837 "parser.y"
{(yyval.value).c = abc_pushtrue(0);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 222:
-/* Line 1455 of yacc.c */
-#line 2414 "parser.y"
+
+ case 235:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2840 "parser.y"
{(yyval.value).c = abc_pushfalse(0);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 223:
-/* Line 1455 of yacc.c */
-#line 2417 "parser.y"
+
+ case 236:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2843 "parser.y"
{(yyval.value).c = abc_pushnull(0);
(yyval.value).t = TYPE_NULL;
- ;}
+ }
+ }
break;
- case 225:
-/* Line 1455 of yacc.c */
-#line 2422 "parser.y"
+
+ case 237:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2847 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterequals((yyval.value).c);(yyval.value).c=abc_not((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 226:
-/* Line 1455 of yacc.c */
-#line 2425 "parser.y"
+
+ case 238:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2850 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterthan((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 227:
-/* Line 1455 of yacc.c */
-#line 2428 "parser.y"
+
+ case 239:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2853 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterthan((yyval.value).c);(yyval.value).c=abc_not((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 228:
-/* Line 1455 of yacc.c */
-#line 2431 "parser.y"
+
+ case 240:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2856 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterequals((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 229:
-/* Line 1455 of yacc.c */
-#line 2434 "parser.y"
+
+ case 241:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2859 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_equals((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 230:
-/* Line 1455 of yacc.c */
-#line 2437 "parser.y"
+
+ case 242:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2862 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_strictequals((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 231:
-/* Line 1455 of yacc.c */
-#line 2440 "parser.y"
+
+ case 243:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2865 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_strictequals((yyval.value).c);(yyval.value).c = abc_not((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 232:
-/* Line 1455 of yacc.c */
-#line 2443 "parser.y"
+
+ case 244:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2868 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_equals((yyval.value).c);(yyval.value).c = abc_not((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 233:
-/* Line 1455 of yacc.c */
-#line 2447 "parser.y"
+
+ case 245:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2872 "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);
(yyval.value).c = converttype((yyval.value).c, (yyvsp[(3) - (3)].value).t, (yyval.value).t);
code_t*label = (yyval.value).c = abc_label((yyval.value).c);
jmp->branch = label;
- ;}
+ }
+ }
break;
- case 234:
-/* Line 1455 of yacc.c */
-#line 2458 "parser.y"
+
+ case 246:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2883 "parser.y"
{
(yyval.value).t = join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'A');
/*printf("%08x:\n",$1.t);
(yyval.value).c = converttype((yyval.value).c, (yyvsp[(3) - (3)].value).t, (yyval.value).t);
code_t*label = (yyval.value).c = abc_label((yyval.value).c);
jmp->branch = label;
- ;}
+ }
+ }
break;
- case 235:
-/* Line 1455 of yacc.c */
-#line 2476 "parser.y"
+
+ case 247:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2901 "parser.y"
{(yyval.value).c=(yyvsp[(2) - (2)].value).c;
(yyval.value).c = abc_not((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 236:
-/* Line 1455 of yacc.c */
-#line 2481 "parser.y"
+
+ case 248:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2906 "parser.y"
{(yyval.value).c=(yyvsp[(2) - (2)].value).c;
(yyval.value).c = abc_bitnot((yyval.value).c);
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 237:
-/* Line 1455 of yacc.c */
-#line 2486 "parser.y"
+
+ case 249:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2911 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_bitand((yyval.value).c);
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 238:
-/* Line 1455 of yacc.c */
-#line 2491 "parser.y"
+
+ case 250:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2916 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_bitxor((yyval.value).c);
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 239:
-/* Line 1455 of yacc.c */
-#line 2496 "parser.y"
+
+ case 251:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2921 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_bitor((yyval.value).c);
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 240:
-/* Line 1455 of yacc.c */
-#line 2501 "parser.y"
+
+ case 252:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2926 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_rshift((yyval.value).c);
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 241:
-/* Line 1455 of yacc.c */
-#line 2505 "parser.y"
+
+ case 253:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2930 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_urshift((yyval.value).c);
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 242:
-/* Line 1455 of yacc.c */
-#line 2509 "parser.y"
+
+ case 254:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2934 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_lshift((yyval.value).c);
(yyval.value).t = TYPE_INT;
- ;}
+ }
+ }
break;
- case 243:
-/* Line 1455 of yacc.c */
-#line 2514 "parser.y"
+
+ case 255:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2939 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_divide((yyval.value).c);
(yyval.value).t = TYPE_NUMBER;
- ;}
+ }
+ }
break;
- case 244:
-/* Line 1455 of yacc.c */
-#line 2518 "parser.y"
+
+ case 256:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2943 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_modulo((yyval.value).c);
(yyval.value).t = TYPE_NUMBER;
- ;}
+ }
+ }
break;
- case 245:
-/* Line 1455 of yacc.c */
-#line 2522 "parser.y"
+
+ case 257:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2947 "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);
(yyval.value).c = abc_add((yyval.value).c);
(yyval.value).t = join_types((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t,'+');
}
- ;}
+ }
+ }
break;
- case 246:
-/* Line 1455 of yacc.c */
-#line 2531 "parser.y"
+
+ case 258:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2956 "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);
(yyval.value).c = abc_subtract((yyval.value).c);
(yyval.value).t = TYPE_NUMBER;
}
- ;}
+ }
+ }
break;
- case 247:
-/* Line 1455 of yacc.c */
-#line 2540 "parser.y"
+
+ case 259:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2965 "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);
(yyval.value).c = abc_multiply((yyval.value).c);
(yyval.value).t = TYPE_NUMBER;
}
- ;}
+ }
+ }
break;
- case 248:
-/* Line 1455 of yacc.c */
-#line 2550 "parser.y"
+
+ case 260:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2975 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_in((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 249:
-/* Line 1455 of yacc.c */
-#line 2555 "parser.y"
+
+ case 261:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2980 "parser.y"
{char use_astype=0; // flash player's astype works differently than astypelate
- if(use_astype && TYPE_IS_CLASS((yyvsp[(3) - (3)].value).t)) {
- MULTINAME(m,(yyvsp[(3) - (3)].value).t->cls);
+ if(use_astype && TYPE_IS_CLASS((yyvsp[(3) - (3)].value).t) && (yyvsp[(3) - (3)].value).t->data) {
+ MULTINAME(m, (classinfo_t*)((yyvsp[(3) - (3)].value).t->data));
(yyval.value).c = abc_astype2((yyvsp[(1) - (3)].value).c, &m);
- (yyval.value).t = (yyvsp[(3) - (3)].value).t->cls;
+ (yyval.value).t = (yyvsp[(3) - (3)].value).t->data;
} else {
(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c, (yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_astypelate((yyval.value).c);
(yyval.value).t = TYPE_ANY;
}
- ;}
+ }
+ }
break;
- case 250:
-/* Line 1455 of yacc.c */
-#line 2568 "parser.y"
+
+ case 262:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2993 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c, (yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_instanceof((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 251:
-/* Line 1455 of yacc.c */
-#line 2573 "parser.y"
+
+ case 263:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2998 "parser.y"
{(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c, (yyvsp[(3) - (3)].value).c);
(yyval.value).c = abc_istypelate((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
- ;}
+ }
+ }
break;
- case 252:
-/* Line 1455 of yacc.c */
-#line 2578 "parser.y"
+
+ case 264:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3003 "parser.y"
{
(yyval.value).c = (yyvsp[(3) - (4)].value).c;
(yyval.value).c = abc_typeof((yyval.value).c);
(yyval.value).t = TYPE_STRING;
- ;}
+ }
+ }
break;
- case 253:
-/* Line 1455 of yacc.c */
-#line 2584 "parser.y"
+
+ case 265:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3009 "parser.y"
{
(yyval.value).c = cut_last_push((yyvsp[(2) - (2)].value).c);
(yyval.value).c = abc_pushundefined((yyval.value).c);
(yyval.value).t = TYPE_ANY;
- ;}
+ }
+ }
break;
- case 254:
-/* Line 1455 of yacc.c */
-#line 2590 "parser.y"
+
+ case 266:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3015 "parser.y"
{ (yyval.value).c = abc_pushundefined(0);
(yyval.value).t = TYPE_ANY;
- ;}
+ }
+ }
break;
- case 255:
-/* Line 1455 of yacc.c */
-#line 2594 "parser.y"
- {(yyval.value)=(yyvsp[(2) - (3)].value);;}
+
+ case 267:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3019 "parser.y"
+ {(yyval.value)=(yyvsp[(2) - (3)].value);}
+ }
break;
- case 256:
-/* Line 1455 of yacc.c */
-#line 2596 "parser.y"
+
+ case 268:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3021 "parser.y"
{
(yyval.value)=(yyvsp[(2) - (2)].value);
if(IS_INT((yyvsp[(2) - (2)].value).t)) {
(yyval.value).c=abc_negate((yyval.value).c);
(yyval.value).t = TYPE_NUMBER;
}
-;}
+}
+ }
break;
- case 257:
-/* Line 1455 of yacc.c */
-#line 2607 "parser.y"
+
+ case 269:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3032 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (4)].value).c;
(yyval.value).c = code_append((yyval.value).c, (yyvsp[(3) - (4)].value).c);
-
+
MULTINAME_LATE(m, (yyvsp[(1) - (4)].value).t?(yyvsp[(1) - (4)].value).t->access:ACCESS_PACKAGE, "");
(yyval.value).c = abc_getproperty2((yyval.value).c, &m);
(yyval.value).t = 0; // array elements have unknown type
-;}
+}
+ }
break;
- case 258:
-/* Line 1455 of yacc.c */
-#line 2616 "parser.y"
+
+ case 270:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3041 "parser.y"
{
(yyval.value).c = code_new();
(yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc);
(yyval.value).c = abc_newarray((yyval.value).c, (yyvsp[(2) - (3)].value_list).len);
(yyval.value).t = registry_getarrayclass();
-;}
+}
+ }
break;
- case 259:
-/* Line 1455 of yacc.c */
-#line 2623 "parser.y"
- {(yyval.value_list).cc=0;(yyval.value_list).len=0;;}
+
+ case 271:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3048 "parser.y"
+ {(yyval.value_list).cc=0;(yyval.value_list).len=0;}
+ }
break;
- case 260:
-/* Line 1455 of yacc.c */
-#line 2624 "parser.y"
+
+ case 272:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3049 "parser.y"
{(yyval.value_list)=(yyvsp[(1) - (1)].value_list);}
+ }
break;
- case 261:
-/* Line 1455 of yacc.c */
-#line 2626 "parser.y"
+
+ case 273:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3051 "parser.y"
{
(yyval.value_list).cc = 0;
(yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(1) - (3)].value).c);
(yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(3) - (3)].value).c);
(yyval.value_list).len = 2;
-;}
+}
+ }
break;
- case 262:
-/* Line 1455 of yacc.c */
-#line 2632 "parser.y"
+
+ case 274:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3057 "parser.y"
{
(yyval.value_list).cc = (yyvsp[(1) - (5)].value_list).cc;
(yyval.value_list).len = (yyvsp[(1) - (5)].value_list).len+2;
(yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(3) - (5)].value).c);
(yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(5) - (5)].value).c);
-;}
+}
+ }
break;
- case 263:
-/* Line 1455 of yacc.c */
-#line 2641 "parser.y"
+
+ case 275:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3066 "parser.y"
{
(yyval.value).c = code_new();
(yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc);
(yyval.value).c = abc_newobject((yyval.value).c, (yyvsp[(2) - (3)].value_list).len/2);
(yyval.value).t = registry_getobjectclass();
-;}
+}
+ }
break;
- case 264:
-/* Line 1455 of yacc.c */
-#line 2648 "parser.y"
+
+ case 276:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3073 "parser.y"
{
code_t*c = (yyvsp[(3) - (3)].value).c;
if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) {
c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '*'), (yyvsp[(1) - (3)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 265:
-/* Line 1455 of yacc.c */
-#line 2660 "parser.y"
+
+ case 277:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3085 "parser.y"
{
code_t*c = abc_modulo((yyvsp[(3) - (3)].value).c);
c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '%'), (yyvsp[(1) - (3)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 266:
-/* Line 1455 of yacc.c */
-#line 2666 "parser.y"
+
+ case 278:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3091 "parser.y"
{
code_t*c = abc_lshift((yyvsp[(3) - (3)].value).c);
c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '<'), (yyvsp[(1) - (3)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 267:
-/* Line 1455 of yacc.c */
-#line 2672 "parser.y"
+
+ case 279:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3097 "parser.y"
{
code_t*c = abc_rshift((yyvsp[(3) - (3)].value).c);
c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '>'), (yyvsp[(1) - (3)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 268:
-/* Line 1455 of yacc.c */
-#line 2678 "parser.y"
+
+ case 280:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3103 "parser.y"
{
code_t*c = abc_urshift((yyvsp[(3) - (3)].value).c);
c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'U'), (yyvsp[(1) - (3)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 269:
-/* Line 1455 of yacc.c */
-#line 2684 "parser.y"
+
+ case 281:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3109 "parser.y"
{
code_t*c = abc_divide((yyvsp[(3) - (3)].value).c);
c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '/'), (yyvsp[(1) - (3)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 270:
-/* Line 1455 of yacc.c */
-#line 2690 "parser.y"
+
+ case 282:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3115 "parser.y"
{
code_t*c = abc_bitor((yyvsp[(3) - (3)].value).c);
c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
+ break;
+
+
+
+ case 283:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3121 "parser.y"
+ {
+ code_t*c = abc_bitxor((yyvsp[(3) - (3)].value).c);
+ c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t);
+ (yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
+ (yyval.value).t = (yyvsp[(1) - (3)].value).t;
+ }
+ }
break;
- case 271:
-/* Line 1455 of yacc.c */
-#line 2696 "parser.y"
+
+ case 284:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3127 "parser.y"
{
code_t*c = (yyvsp[(3) - (3)].value).c;
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 272:
-/* Line 1455 of yacc.c */
-#line 2709 "parser.y"
+
+ case 285:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3140 "parser.y"
{ code_t*c = (yyvsp[(3) - (3)].value).c;
if(TYPE_IS_INT((yyvsp[(1) - (3)].value).t)) {
c=abc_subtract_i(c);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 273:
-/* Line 1455 of yacc.c */
-#line 2720 "parser.y"
+
+ case 286:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3151 "parser.y"
{ code_t*c = 0;
c = code_append(c, (yyvsp[(3) - (3)].value).c);
c = converttype(c, (yyvsp[(3) - (3)].value).t, (yyvsp[(1) - (3)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (3)].value).c, c, 1, 0);
(yyval.value).t = (yyvsp[(1) - (3)].value).t;
- ;}
+ }
+ }
break;
- case 274:
-/* Line 1455 of yacc.c */
-#line 2727 "parser.y"
+
+ case 287:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3158 "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;
(yyval.value).c = code_append((yyval.value).c, (yyvsp[(5) - (5)].value).c);
(yyval.value).c = converttype((yyval.value).c, (yyvsp[(3) - (5)].value).t, (yyval.value).t);
(yyval.value).c = j2->branch = abc_label((yyval.value).c);
- ;}
+ }
+ }
break;
- case 275:
-/* Line 1455 of yacc.c */
-#line 2740 "parser.y"
+
+ case 288:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3171 "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)) {
(yyval.value).c = toreadwrite((yyvsp[(1) - (2)].value).c, c, 0, 1);
(yyval.value).t = (yyvsp[(1) - (2)].value).t;
}
- ;}
+ }
+ }
break;
- case 276:
-/* Line 1455 of yacc.c */
-#line 2767 "parser.y"
+
+ case 289:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3198 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(1) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
c=converttype(c, type, (yyvsp[(1) - (2)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(1) - (2)].value).c, c, 0, 1);
(yyval.value).t = (yyvsp[(1) - (2)].value).t;
- ;}
+ }
+ }
break;
- case 277:
-/* Line 1455 of yacc.c */
-#line 2781 "parser.y"
+
+ case 290:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3212 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(2) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
c=converttype(c, type, (yyvsp[(2) - (2)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(2) - (2)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(2) - (2)].value).t;
- ;}
+ }
+ }
break;
- case 278:
-/* Line 1455 of yacc.c */
-#line 2795 "parser.y"
+
+ case 291:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3226 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(2) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
c=converttype(c, type, (yyvsp[(2) - (2)].value).t);
(yyval.value).c = toreadwrite((yyvsp[(2) - (2)].value).c, c, 0, 0);
(yyval.value).t = (yyvsp[(2) - (2)].value).t;
- ;}
+ }
+ }
break;
- case 279:
-/* Line 1455 of yacc.c */
-#line 2810 "parser.y"
+
+ case 292:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3241 "parser.y"
{ if(!state->cls->info)
syntaxerror("super keyword not allowed outside a class");
classinfo_t*t = state->cls->info->superclass;
if(!t) t = TYPE_OBJECT;
memberinfo_t*f = registry_findmember(t, (yyvsp[(3) - (3)].id), 1);
- namespace_t ns = flags2namespace(f->flags, "");
+ namespace_t ns = {f->access, ""};
MEMBER_MULTINAME(m, f, (yyvsp[(3) - (3)].id));
(yyval.value).c = 0;
(yyval.value).c = abc_getlocal_0((yyval.value).c);
(yyval.value).c = abc_getsuper2((yyval.value).c, &m);
- (yyval.value).t = memberinfo_gettype(f);
- ;}
+ (yyval.value).t = slotinfo_gettype((slotinfo_t*)f);
+ }
+ }
break;
- case 280:
-/* Line 1455 of yacc.c */
-#line 2825 "parser.y"
+
+ case 293:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3255 "parser.y"
+ {
+ // attribute TODO
+ (yyval.value).c = abc_pushundefined(0);
+ (yyval.value).t = 0;
+ as3_warning("ignored @ operator");
+ }
+ }
+ break;
+
+
+
+ case 294:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3262 "parser.y"
+ {
+ // child attribute TODO
+ (yyval.value).c = abc_pushundefined(0);
+ (yyval.value).t = 0;
+ as3_warning("ignored .@ operator");
+ }
+ }
+ break;
+
+
+
+ case 295:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3269 "parser.y"
+ {
+ // namespace declaration TODO
+ (yyval.value).c = abc_pushundefined(0);
+ (yyval.value).t = 0;
+ as3_warning("ignored :: operator");
+ }
+ }
+ break;
+
+
+
+ case 296:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3276 "parser.y"
+ {
+ // descendants TODO
+ (yyval.value).c = abc_pushundefined(0);
+ (yyval.value).t = 0;
+ as3_warning("ignored .. operator");
+ }
+ }
+ break;
+
+
+
+ case 297:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3283 "parser.y"
+ {
+ // filter TODO
+ (yyval.value).c = abc_pushundefined(0);
+ (yyval.value).t = 0;
+ as3_warning("ignored .() operator");
+ }
+ }
+ break;
+
+
+
+ case 298:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3295 "parser.y"
{(yyval.value).c = (yyvsp[(1) - (3)].value).c;
classinfo_t*t = (yyvsp[(1) - (3)].value).t;
char is_static = 0;
- if(TYPE_IS_CLASS(t) && t->cls) {
- t = t->cls;
+ if(TYPE_IS_CLASS(t) && t->data) {
+ t = t->data;
is_static = 1;
}
if(t) {
(yyval.value).c = abc_getproperty2((yyval.value).c, &m);
}
/* determine type */
- (yyval.value).t = memberinfo_gettype(f);
+ (yyval.value).t = slotinfo_gettype((slotinfo_t*)f);
if(!(yyval.value).t)
(yyval.value).c = abc_coerce_a((yyval.value).c);
} else {
(yyval.value).c = abc_coerce_a((yyval.value).c);
(yyval.value).t = registry_getanytype();
}
- ;}
+ }
+ }
break;
- case 281:
-/* Line 1455 of yacc.c */
-#line 2858 "parser.y"
+
+ case 299:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3328 "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 *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));
+ }
+ PASS2
+
(yyval.value).t = 0;
(yyval.value).c = 0;
- classinfo_t*a = 0;
+ slotinfo_t*a = 0;
memberinfo_t*f = 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;
+ }
+
+ int i_am_static = (state->method && state->method->info)?(state->method->info->flags&FLAG_STATIC):FLAG_STATIC;
/* look at current class' members */
- } else if(state->cls && (f = registry_findmember(state->cls->info, (yyvsp[(1) - (1)].id), 1))) {
+ if(state->cls && (f = registry_findmember(state->cls->info, (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);
- int i_am_static = ((state->method && state->method->info)?(state->method->info->flags&FLAG_STATIC):FLAG_STATIC);
- if(var_is_static != i_am_static) {
- /* there doesn't seem to be any "static" way to access
- static properties of a class */
+
+ if(f->kind == INFOTYPE_METHOD) {
+ (yyval.value).t = TYPE_FUNCTION(f);
+ } else {
+ (yyval.value).t = f->type;
+ }
+ if(var_is_static && !i_am_static) {
+ /* access to a static member from a non-static location.
+ do this via findpropstrict:
+ there doesn't seem to be any non-lookup way to access
+ static properties of a class */
state->method->late_binding = 1;
(yyval.value).t = f->type;
- namespace_t ns = {flags2access(f->flags), ""};
+ namespace_t ns = {f->access, ""};
multiname_t m = {QNAME, &ns, 0, (yyvsp[(1) - (1)].id)};
(yyval.value).c = abc_findpropstrict2((yyval.value).c, &m);
(yyval.value).c = abc_getproperty2((yyval.value).c, &m);
+ break;
+ } else if(f->slot>0) {
+ (yyval.value).c = abc_getlocal_0((yyval.value).c);
+ (yyval.value).c = abc_getslot((yyval.value).c, f->slot);
+ break;
} else {
- if(f->slot>0) {
- (yyval.value).c = abc_getlocal_0((yyval.value).c);
- (yyval.value).c = abc_getslot((yyval.value).c, f->slot);
- } else {
- namespace_t ns = {flags2access(f->flags), ""};
- multiname_t m = {QNAME, &ns, 0, (yyvsp[(1) - (1)].id)};
- (yyval.value).c = abc_getlocal_0((yyval.value).c);
- (yyval.value).c = abc_getproperty2((yyval.value).c, &m);
- }
- }
- if(f->kind == MEMBER_METHOD) {
- (yyval.value).t = TYPE_FUNCTION(f);
- } else {
- (yyval.value).t = f->type;
+ namespace_t ns = {f->access, ""};
+ multiname_t m = {QNAME, &ns, 0, (yyvsp[(1) - (1)].id)};
+ (yyval.value).c = abc_getlocal_0((yyval.value).c);
+ (yyval.value).c = abc_getproperty2((yyval.value).c, &m);
+ break;
}
+ }
/* look at actual classes, in the current package and imported */
- } else if((a = find_class((yyvsp[(1) - (1)].id)))) {
- if(a->flags & FLAG_METHOD) {
+ 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->function->kind == MEMBER_METHOD) {
- (yyval.value).t = TYPE_FUNCTION(a->function);
+ if(a->kind == INFOTYPE_METHOD) {
+ methodinfo_t*f = (methodinfo_t*)a;
+ (yyval.value).t = TYPE_FUNCTION(f);
} else {
- (yyval.value).t = a->function->type;
+ varinfo_t*v = (varinfo_t*)a;
+ (yyval.value).t = v->type;
}
} else {
- if(a->slot) {
+ classinfo_t*c = (classinfo_t*)a;
+ if(c->slot) {
(yyval.value).c = abc_getglobalscope((yyval.value).c);
- (yyval.value).c = abc_getslot((yyval.value).c, a->slot);
+ (yyval.value).c = abc_getslot((yyval.value).c, c->slot);
} else {
- MULTINAME(m, a);
+ MULTINAME(m, c);
(yyval.value).c = abc_getlex2((yyval.value).c, &m);
}
- (yyval.value).t = TYPE_CLASS(a);
+ (yyval.value).t = TYPE_CLASS(c);
}
+ break;
+ }
/* unknown object, let the avm2 resolve it */
- } else {
- if(strcmp((yyvsp[(1) - (1)].id),"trace"))
- as3_softwarning("Couldn't resolve '%s', doing late binding", (yyvsp[(1) - (1)].id));
+ if(1) {
+ as3_softwarning("Couldn't resolve '%s', doing late binding", (yyvsp[(1) - (1)].id));
state->method->late_binding = 1;
multiname_t m = {MULTINAME, 0, &nopackage_namespace_set, (yyvsp[(1) - (1)].id)};
(yyval.value).c = abc_findpropstrict2((yyval.value).c, &m);
(yyval.value).c = abc_getproperty2((yyval.value).c, &m);
}
-;}
+}
+ }
break;
- case 282:
-/* Line 1455 of yacc.c */
-#line 2945 "parser.y"
- {(yyval.code)=0;;}
+
+ case 300:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3443 "parser.y"
+ {(yyval.code)=0;}
+ }
break;
- case 283:
-/* Line 1455 of yacc.c */
-#line 2946 "parser.y"
- {(yyval.code)=0;;}
+
+ case 301:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3444 "parser.y"
+ {(yyval.code)=0;}
+ }
break;
- case 284:
-/* Line 1455 of yacc.c */
-#line 2947 "parser.y"
- {(yyval.code)=0;;}
+
+ case 302:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3445 "parser.y"
+ {(yyval.code)=0;}
+ }
break;
- case 285:
-/* Line 1455 of yacc.c */
-#line 2949 "parser.y"
- {(yyval.token)=0;;}
+
+ case 303:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 3447 "parser.y"
+ {
+ PASS12
+ tokenizer_register_namespace((yyvsp[(3) - (3)].id));
+ (yyval.code)=0;
+}
+ }
break;
-/* Line 1455 of yacc.c */
-#line 6170 "parser.tab.c"
+
+/* Line 1464 of skeleton.m4 */
+#line 7787 "parser.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);