From: Matthias Kramm Date: Mon, 6 Apr 2009 04:01:14 +0000 (+0200) Subject: as3: Ast supports brackets now, too. Fixed Math bug in builtins.c X-Git-Tag: release-0-9-0~17 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=5564aa996b3d6fc258138a7bafc4537431db1c48 as3: Ast supports brackets now, too. Fixed Math bug in builtins.c --- diff --git a/lib/Makefile.in b/lib/Makefile.in index 75515af..a592ad2 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -15,7 +15,7 @@ h263_objects = h.263/dct.$(O) h.263/h263tables.$(O) h.263/swfvideo.$(O) as12compiler_objects = action/assembler.$(O) action/compile.$(O) action/lex.swf4.$(O) action/lex.swf5.$(O) action/libming.$(O) action/swf4compiler.tab.$(O) action/swf5compiler.tab.$(O) action/actioncompiler.$(O) as12compiler_in_source = $(as12compiler_objects) -as3compiler_objects = as3/abc.$(O) as3/pool.$(O) as3/files.$(O) as3/opcodes.$(O) as3/code.$(O) as3/registry.$(O) as3/builtin.$(O) as3/parser.tab.$(O) as3/tokenizer.yy.$(O) as3/scripts.$(O) as3/compiler.$(O) as3/import.$(O) as3/ast.$(O) as3/common.$(O) +as3compiler_objects = as3/abc.$(O) as3/pool.$(O) as3/files.$(O) as3/opcodes.$(O) as3/code.$(O) as3/registry.$(O) as3/builtin.$(O) as3/parser.tab.$(O) as3/tokenizer.yy.$(O) as3/scripts.$(O) as3/compiler.$(O) as3/import.$(O) as3/expr.$(O) as3/common.$(O) rfxswf_modules = modules/swfbits.c modules/swfaction.c modules/swfdump.c modules/swfcgi.c modules/swfbutton.c modules/swftext.c modules/swffont.c modules/swftools.c modules/swfsound.c modules/swfshape.c modules/swfobject.c modules/swfdraw.c modules/swffilter.c modules/swfrender.c h.263/swfvideo.c diff --git a/lib/as3/Makefile b/lib/as3/Makefile index 4182ff1..42b63f4 100644 --- a/lib/as3/Makefile +++ b/lib/as3/Makefile @@ -39,14 +39,14 @@ mklib.o: mklib.c parser.tab.h parser.h parser: main.o tokenizer.yy.o ../librfxswf.a ../libbase.a parser.tab.h gcc $(D) main.o ../librfxswf.a ../libbase.a -o parser -lz -rfxswf_modules=../drawer.o ../rfxswf.o ../modules/*.o ../lame/*.o ../action/*.o ../MD5.o abc.o opcodes.o code.o pool.o scripts.o ast.o common.o +rfxswf_modules=../drawer.o ../rfxswf.o ../modules/*.o ../lame/*.o ../action/*.o ../MD5.o abc.o opcodes.o code.o pool.o scripts.o expr.o common.o mklib: mklib.o $(rfxswf_modules) import.o registry.o tokenizer.yy.o parser.tab.o files.o compiler.o ../libbase.a gcc $(D) mklib.o $(rfxswf_modules) import.o registry.o tokenizer.yy.o parser.tab.o files.o compiler.o ../libbase.a -o mklib -lz -lm -lfreetype -ljpeg ../q.o: ../q.c ../q.h ../mem.h cd ..; make q.o; cd - -../librfxswf.a: ../rfxswf.h ../rfxswf.c abc.c abc.h pool.c pool.h files.c files.h code.c code.h registry.c registry.h opcodes.c opcodes.h builtin.c builtin.h compiler.c compiler.h parser.tab.h parser.tab.c tokenizer.yy.c scripts.c import.c import.h ast.c ast.h +../librfxswf.a: ../rfxswf.h ../rfxswf.c abc.c abc.h pool.c pool.h files.c files.h code.c code.h registry.c registry.h opcodes.c opcodes.h builtin.c builtin.h compiler.c compiler.h parser.tab.h parser.tab.c tokenizer.yy.c scripts.c import.c import.h expr.c expr.h cd ..; make librfxswf.a ../libbase.a: ../q.c ../q.h ../mem.c ../mem.h diff --git a/lib/as3/builtin.c b/lib/as3/builtin.c index 4483d41..00c612c 100644 --- a/lib/as3/builtin.c +++ b/lib/as3/builtin.c @@ -36,6 +36,10 @@ static varinfo_t flash_filters_DropShadowFilter_blurY; static varinfo_t flash_filters_DropShadowFilter_distance; static methodinfo_t flash_filters_DropShadowFilter_clone; static classinfo_t adobe_utils_CustomActions; +static varinfo_t adobe_utils_CustomActions_actionsList; +static methodinfo_t adobe_utils_CustomActions_uninstallActions; +static methodinfo_t adobe_utils_CustomActions_getActions; +static methodinfo_t adobe_utils_CustomActions_installActions; static classinfo_t flash_text_engine_TextLineValidity; static classinfo_t flash_display_LineScaleMode; static classinfo_t flash_geom_Transform; @@ -314,6 +318,36 @@ static methodinfo_t flash_geom_Matrix3D_identity; static methodinfo_t flash_geom_Matrix3D_prependTranslation; static methodinfo_t flash_sampler_pauseSampling; static classinfo_t flash_system_Capabilities; +static varinfo_t flash_system_Capabilities_maxLevelIDC; +static varinfo_t flash_system_Capabilities_isDebugger; +static varinfo_t flash_system_Capabilities_hasStreamingAudio; +static varinfo_t flash_system_Capabilities_screenColor; +static varinfo_t flash_system_Capabilities_hasIME; +static varinfo_t flash_system_Capabilities_hasEmbeddedVideo; +static varinfo_t flash_system_Capabilities_hasTLS; +static varinfo_t flash_system_Capabilities_isEmbeddedInAcrobat; +static varinfo_t flash_system_Capabilities_hasScreenPlayback; +static varinfo_t flash_system_Capabilities_hasVideoEncoder; +static varinfo_t flash_system_Capabilities_hasAudioEncoder; +static varinfo_t flash_system_Capabilities_pixelAspectRatio; +static varinfo_t flash_system_Capabilities_hasStreamingVideo; +static varinfo_t flash_system_Capabilities_screenResolutionX; +static varinfo_t flash_system_Capabilities_hasScreenBroadcast; +static varinfo_t flash_system_Capabilities_hasAudio; +static varinfo_t flash_system_Capabilities_language; +static varinfo_t flash_system_Capabilities_manufacturer; +static varinfo_t flash_system_Capabilities_hasPrinting; +static varinfo_t flash_system_Capabilities_os; +static varinfo_t flash_system_Capabilities_localFileReadDisable; +static varinfo_t flash_system_Capabilities_hasMP3; +static varinfo_t flash_system_Capabilities_avHardwareDisable; +static varinfo_t flash_system_Capabilities_hasAccessibility; +static varinfo_t flash_system_Capabilities_version; +static varinfo_t flash_system_Capabilities_screenDPI; +static varinfo_t flash_system_Capabilities_playerType; +static varinfo_t flash_system_Capabilities_screenResolutionY; +static varinfo_t flash_system_Capabilities__internal; +static varinfo_t flash_system_Capabilities_serverString; static methodinfo_t flash_sampler_getSetterInvocationCount; static methodinfo_t flash_sampler_getGetterInvocationCount; static classinfo_t flash_filters_BlurFilter; @@ -390,6 +424,15 @@ static classinfo_t flash_text_engine_DigitWidth; static classinfo_t flash_net_URLRequestMethod; static methodinfo_t adobe_utils_MMExecute; static classinfo_t flash_system_System; +static methodinfo_t flash_system_System_pause; +static varinfo_t flash_system_System_useCodePage; +static methodinfo_t flash_system_System_exit; +static methodinfo_t flash_system_System_setClipboard; +static varinfo_t flash_system_System_totalMemory; +static methodinfo_t flash_system_System_gc; +static methodinfo_t flash_system_System_resume; +static varinfo_t flash_system_System_vmVersion; +static varinfo_t flash_system_System_ime; static classinfo_t flash_filters_BitmapFilterQuality; static classinfo_t flash_display_DisplayObjectContainer; static methodinfo_t flash_display_DisplayObjectContainer_addChild; @@ -435,6 +478,9 @@ static methodinfo_t flash_utils_IDataOutput_writeDouble; static methodinfo_t flash_utils_IDataOutput_writeBytes; static varinfo_t flash_utils_IDataOutput_endian; static classinfo_t flash_geom_Utils3D; +static methodinfo_t flash_geom_Utils3D_projectVectors; +static methodinfo_t flash_geom_Utils3D_projectVector; +static methodinfo_t flash_geom_Utils3D_pointTowards; static classinfo_t flash_events_TextEvent; static methodinfo_t flash_events_TextEvent_toString; static varinfo_t flash_events_TextEvent_text; @@ -505,6 +551,9 @@ static varinfo_t flash_display_Sprite_graphics; static methodinfo_t flash_display_Sprite_startDrag; static varinfo_t flash_display_Sprite_dropTarget; static classinfo_t flash_ui_Keyboard; +static varinfo_t flash_ui_Keyboard_numLock; +static varinfo_t flash_ui_Keyboard_capsLock; +static methodinfo_t flash_ui_Keyboard_isAccessible; static classinfo_t flash_filters_DisplacementMapFilter; static varinfo_t flash_filters_DisplacementMapFilter_scaleY; static varinfo_t flash_filters_DisplacementMapFilter_mapPoint; @@ -536,6 +585,7 @@ static methodinfo_t flash_filters_ColorMatrixFilter_clone; static classinfo_t flash_net_NetStreamPlayTransitions; static classinfo_t flash_media_SoundCodec; static classinfo_t flash_net_ObjectEncoding; +static varinfo_t flash_net_ObjectEncoding_dynamicPropertyWriter; static classinfo_t flash_text_engine_GroupElement; static methodinfo_t flash_text_engine_GroupElement_groupElements; static methodinfo_t flash_text_engine_GroupElement_splitTextElement; @@ -968,8 +1018,19 @@ static methodinfo_t flash_sampler_StackFrame_toString; static classinfo_t flash_system_JPEGLoaderContext; static varinfo_t flash_system_JPEGLoaderContext_deblockingFilter; static classinfo_t flash_system_IME; +static methodinfo_t flash_system_IME_setCompositionString; +static varinfo_t flash_system_IME_enabled; +static methodinfo_t flash_system_IME_doConversion; +static varinfo_t flash_system_IME_conversionMode; static methodinfo_t _isNaN; static classinfo_t flash_system_Security; +static varinfo_t flash_system_Security_disableAVM1Loading; +static methodinfo_t flash_system_Security_allowDomain; +static methodinfo_t flash_system_Security_showSettings; +static methodinfo_t flash_system_Security_allowInsecureDomain; +static methodinfo_t flash_system_Security_loadPolicyFile; +static varinfo_t flash_system_Security_sandboxType; +static varinfo_t flash_system_Security_exactSettings; static classinfo_t flash_display_Bitmap; static varinfo_t flash_display_Bitmap_pixelSnapping; static varinfo_t flash_display_Bitmap_bitmapData; @@ -1147,6 +1208,10 @@ static methodinfo_t flash_text_TextField_insertXMLText; static varinfo_t flash_text_TextField_condenseWhite; static classinfo_t flash_printing_PrintJobOrientation; static classinfo_t flash_text_TextRenderer; +static varinfo_t flash_text_TextRenderer_displayMode; +static varinfo_t flash_text_TextRenderer_antiAliasType; +static varinfo_t flash_text_TextRenderer_maxLevel; +static methodinfo_t flash_text_TextRenderer_setAdvancedAntiAliasingTable; static classinfo_t flash_net_NetConnection; static varinfo_t flash_net_NetConnection_defaultObjectEncoding; static varinfo_t flash_net_NetConnection_nearID; @@ -1205,6 +1270,9 @@ static varinfo_t flash_net_URLStream_endian; static methodinfo_t flash_net_URLStream_readBoolean; static classinfo_t flash_display_BlendMode; static classinfo_t flash_ui_Mouse; +static varinfo_t flash_ui_Mouse_cursor; +static methodinfo_t flash_ui_Mouse_show; +static methodinfo_t flash_ui_Mouse_hide; static classinfo_t flash_errors_InvalidSWFError; static classinfo_t flash_text_engine_RenderingMode; static classinfo_t flash_display_GraphicsTrianglePath; @@ -1325,6 +1393,10 @@ static varinfo_t flash_ui_ContextMenuItem_caption; static methodinfo_t flash_ui_ContextMenuItem_clone; static varinfo_t flash_ui_ContextMenuItem_visible; static classinfo_t flash_trace_Trace; +static methodinfo_t flash_trace_Trace_setListener; +static methodinfo_t flash_trace_Trace_getListener; +static methodinfo_t flash_trace_Trace_setLevel; +static methodinfo_t flash_trace_Trace_getLevel; static classinfo_t flash_events_TimerEvent; static methodinfo_t flash_events_TimerEvent_toString; static methodinfo_t flash_events_TimerEvent_clone; @@ -1367,6 +1439,7 @@ static varinfo_t flash_text_TextLineMetrics_height; static varinfo_t flash_text_TextLineMetrics_x; static classinfo_t flash_text_AntiAliasType; static classinfo_t flash_system_SecurityDomain; +static varinfo_t flash_system_SecurityDomain_currentDomain; static classinfo_t flash_text_Font; static methodinfo_t flash_text_Font_enumerateFonts; static methodinfo_t flash_text_Font_hasGlyphs; @@ -1401,6 +1474,24 @@ static varinfo_t flash_ui_ContextMenu_link; static varinfo_t flash_ui_ContextMenu_clipboardMenu; static classinfo_t flash_text_TextFieldAutoSize; static classinfo_t _Math; +static methodinfo_t _Math_atan; +static methodinfo_t _Math_min; +static methodinfo_t _Math_exp; +static methodinfo_t _Math_abs; +static methodinfo_t _Math_atan2; +static methodinfo_t _Math_round; +static methodinfo_t _Math_log; +static methodinfo_t _Math_sin; +static methodinfo_t _Math_acos; +static methodinfo_t _Math_cos; +static methodinfo_t _Math_asin; +static methodinfo_t _Math_floor; +static methodinfo_t _Math_random; +static methodinfo_t _Math_sqrt; +static methodinfo_t _Math_tan; +static methodinfo_t _Math_max; +static methodinfo_t _Math_pow; +static methodinfo_t _Math_ceil; static classinfo_t flash_display_ColorCorrectionSupport; static classinfo_t flash_errors_IOError; static methodinfo_t _trace; @@ -1419,7 +1510,16 @@ static varinfo_t flash_net_FileReferenceList_fileList; static methodinfo_t flash_net_FileReferenceList_browse; static classinfo_t flash_display_TriangleCulling; static classinfo_t flash_media_SoundMixer; +static methodinfo_t flash_media_SoundMixer_computeSpectrum; +static methodinfo_t flash_media_SoundMixer_areSoundsInaccessible; +static varinfo_t flash_media_SoundMixer_soundTransform; +static varinfo_t flash_media_SoundMixer_bufferTime; +static methodinfo_t flash_media_SoundMixer_stopAll; static classinfo_t adobe_utils_XMLUI; +static methodinfo_t adobe_utils_XMLUI_cancel; +static methodinfo_t adobe_utils_XMLUI_setProperty; +static methodinfo_t adobe_utils_XMLUI_getProperty; +static methodinfo_t adobe_utils_XMLUI_accept; static methodinfo_t _escape; static methodinfo_t flash_utils_setInterval; static classinfo_t flash_events_StatusEvent; @@ -1712,6 +1812,11 @@ static methodinfo_t _decodeURI; static methodinfo_t _encodeURI; static classinfo_t flash_text_engine_TextBaseline; static classinfo_t flash_external_ExternalInterface; +static methodinfo_t flash_external_ExternalInterface_call; +static varinfo_t flash_external_ExternalInterface_available; +static methodinfo_t flash_external_ExternalInterface_addCallback; +static varinfo_t flash_external_ExternalInterface_marshallExceptions; +static varinfo_t flash_external_ExternalInterface_objectID; static classinfo_t _EvalError; static classinfo_t flash_text_engine_DigitCase; static classinfo_t flash_text_TextFormatAlign; @@ -1877,6 +1982,9 @@ static methodinfo_t flash_geom_Matrix_clone; static varinfo_t flash_geom_Matrix_tx; static methodinfo_t flash_geom_Matrix_createBox; static classinfo_t flash_accessibility_Accessibility; +static varinfo_t flash_accessibility_Accessibility_active; +static methodinfo_t flash_accessibility_Accessibility_updateProperties; +static methodinfo_t flash_accessibility_Accessibility_sendEvent; static methodinfo_t flash_net_sendToURL; static classinfo_t flash_filters_GlowFilter; static varinfo_t flash_filters_GlowFilter_blurY; @@ -1939,6 +2047,10 @@ static varinfo_t flash_filters_DropShadowFilter_blurY = {0x01, 0x00, 0x80, 0x16, static varinfo_t flash_filters_DropShadowFilter_distance = {0x01, 0x00, 0x80, 0x16, "", "distance", 0, 0, &flash_filters_DropShadowFilter, 0}; static methodinfo_t flash_filters_DropShadowFilter_clone = {0x02, 0x00, 0x80, 0x16, "", "clone", 0, &flash_filters_BitmapFilter, &flash_filters_DropShadowFilter, 0}; static classinfo_t adobe_utils_CustomActions = {0x03, 0x00, 0x81, 0x16, "adobe.utils", "CustomActions", 0, &_Object, interfaces: {0}}; +static varinfo_t adobe_utils_CustomActions_actionsList = {0x01, 0x00, 0x82, 0x16, "", "actionsList", 0, 0, &adobe_utils_CustomActions, 0}; +static methodinfo_t adobe_utils_CustomActions_uninstallActions = {0x02, 0x00, 0x82, 0x16, "", "uninstallActions", 0, 0, &adobe_utils_CustomActions, 0}; +static methodinfo_t adobe_utils_CustomActions_getActions = {0x02, 0x00, 0x82, 0x16, "", "getActions", 0, &_String, &adobe_utils_CustomActions, 0}; +static methodinfo_t adobe_utils_CustomActions_installActions = {0x02, 0x00, 0x82, 0x16, "", "installActions", 0, 0, &adobe_utils_CustomActions, 0}; static classinfo_t flash_text_engine_TextLineValidity = {0x03, 0x00, 0x81, 0x16, "flash.text.engine", "TextLineValidity", 0, &_Object, interfaces: {0}}; static classinfo_t flash_display_LineScaleMode = {0x03, 0x00, 0x81, 0x16, "flash.display", "LineScaleMode", 0, &_Object, interfaces: {0}}; static classinfo_t flash_geom_Transform = {0x03, 0x00, 0x80, 0x16, "flash.geom", "Transform", 0, &_Object, interfaces: {0}}; @@ -2217,6 +2329,36 @@ static methodinfo_t flash_geom_Matrix3D_identity = {0x02, 0x00, 0x80, 0x16, "", static methodinfo_t flash_geom_Matrix3D_prependTranslation = {0x02, 0x00, 0x80, 0x16, "", "prependTranslation", 0, 0, &flash_geom_Matrix3D, 0}; static methodinfo_t flash_sampler_pauseSampling = {0x02, 0x00, 0x82, 0x16, "flash.sampler", "pauseSampling", 0, 0, 0, 0}; static classinfo_t flash_system_Capabilities = {0x03, 0x00, 0x81, 0x16, "flash.system", "Capabilities", 0, &_Object, interfaces: {0}}; +static varinfo_t flash_system_Capabilities_maxLevelIDC = {0x01, 0x00, 0x82, 0x16, "", "maxLevelIDC", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_isDebugger = {0x01, 0x00, 0x82, 0x16, "", "isDebugger", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasStreamingAudio = {0x01, 0x00, 0x82, 0x16, "", "hasStreamingAudio", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_screenColor = {0x01, 0x00, 0x82, 0x16, "", "screenColor", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasIME = {0x01, 0x00, 0x82, 0x16, "", "hasIME", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasEmbeddedVideo = {0x01, 0x00, 0x82, 0x16, "", "hasEmbeddedVideo", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasTLS = {0x01, 0x00, 0x82, 0x16, "", "hasTLS", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_isEmbeddedInAcrobat = {0x01, 0x00, 0x82, 0x16, "", "isEmbeddedInAcrobat", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasScreenPlayback = {0x01, 0x00, 0x82, 0x16, "", "hasScreenPlayback", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasVideoEncoder = {0x01, 0x00, 0x82, 0x16, "", "hasVideoEncoder", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasAudioEncoder = {0x01, 0x00, 0x82, 0x16, "", "hasAudioEncoder", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_pixelAspectRatio = {0x01, 0x00, 0x82, 0x16, "", "pixelAspectRatio", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasStreamingVideo = {0x01, 0x00, 0x82, 0x16, "", "hasStreamingVideo", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_screenResolutionX = {0x01, 0x00, 0x82, 0x16, "", "screenResolutionX", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasScreenBroadcast = {0x01, 0x00, 0x82, 0x16, "", "hasScreenBroadcast", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasAudio = {0x01, 0x00, 0x82, 0x16, "", "hasAudio", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_language = {0x01, 0x00, 0x82, 0x16, "", "language", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_manufacturer = {0x01, 0x00, 0x82, 0x16, "", "manufacturer", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasPrinting = {0x01, 0x00, 0x82, 0x16, "", "hasPrinting", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_os = {0x01, 0x00, 0x82, 0x16, "", "os", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_localFileReadDisable = {0x01, 0x00, 0x82, 0x16, "", "localFileReadDisable", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasMP3 = {0x01, 0x00, 0x82, 0x16, "", "hasMP3", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_avHardwareDisable = {0x01, 0x00, 0x82, 0x16, "", "avHardwareDisable", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_hasAccessibility = {0x01, 0x00, 0x82, 0x16, "", "hasAccessibility", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_version = {0x01, 0x00, 0x82, 0x16, "", "version", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_screenDPI = {0x01, 0x00, 0x82, 0x16, "", "screenDPI", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_playerType = {0x01, 0x00, 0x82, 0x16, "", "playerType", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_screenResolutionY = {0x01, 0x00, 0x82, 0x16, "", "screenResolutionY", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities__internal = {0x01, 0x00, 0x82, 0x16, "", "_internal", 0, 0, &flash_system_Capabilities, 0}; +static varinfo_t flash_system_Capabilities_serverString = {0x01, 0x00, 0x82, 0x16, "", "serverString", 0, 0, &flash_system_Capabilities, 0}; static methodinfo_t flash_sampler_getSetterInvocationCount = {0x02, 0x00, 0x82, 0x16, "flash.sampler", "getSetterInvocationCount", 0, &_Number, 0, 0}; static methodinfo_t flash_sampler_getGetterInvocationCount = {0x02, 0x00, 0x82, 0x16, "flash.sampler", "getGetterInvocationCount", 0, &_Number, 0, 0}; static classinfo_t flash_filters_BlurFilter = {0x03, 0x00, 0x81, 0x16, "flash.filters", "BlurFilter", 0, &flash_filters_BitmapFilter, interfaces: {0}}; @@ -2293,6 +2435,15 @@ static classinfo_t flash_text_engine_DigitWidth = {0x03, 0x00, 0x81, 0x16, "flas static classinfo_t flash_net_URLRequestMethod = {0x03, 0x00, 0x81, 0x16, "flash.net", "URLRequestMethod", 0, &_Object, interfaces: {0}}; static methodinfo_t adobe_utils_MMExecute = {0x02, 0x00, 0x82, 0x16, "adobe.utils", "MMExecute", 0, &_String, 0, 0}; static classinfo_t flash_system_System = {0x03, 0x00, 0x81, 0x16, "flash.system", "System", 0, &_Object, interfaces: {0}}; +static methodinfo_t flash_system_System_pause = {0x02, 0x00, 0x82, 0x16, "", "pause", 0, 0, &flash_system_System, 0}; +static varinfo_t flash_system_System_useCodePage = {0x01, 0x00, 0x82, 0x16, "", "useCodePage", 0, 0, &flash_system_System, 0}; +static methodinfo_t flash_system_System_exit = {0x02, 0x00, 0x82, 0x16, "", "exit", 0, 0, &flash_system_System, 0}; +static methodinfo_t flash_system_System_setClipboard = {0x02, 0x00, 0x82, 0x16, "", "setClipboard", 0, 0, &flash_system_System, 0}; +static varinfo_t flash_system_System_totalMemory = {0x01, 0x00, 0x82, 0x16, "", "totalMemory", 0, 0, &flash_system_System, 0}; +static methodinfo_t flash_system_System_gc = {0x02, 0x00, 0x82, 0x16, "", "gc", 0, 0, &flash_system_System, 0}; +static methodinfo_t flash_system_System_resume = {0x02, 0x00, 0x82, 0x16, "", "resume", 0, 0, &flash_system_System, 0}; +static varinfo_t flash_system_System_vmVersion = {0x01, 0x00, 0x82, 0x16, "", "vmVersion", 0, 0, &flash_system_System, 0}; +static varinfo_t flash_system_System_ime = {0x01, 0x00, 0x82, 0x16, "", "ime", 0, 0, &flash_system_System, 0}; static classinfo_t flash_filters_BitmapFilterQuality = {0x03, 0x00, 0x81, 0x16, "flash.filters", "BitmapFilterQuality", 0, &_Object, interfaces: {0}}; static classinfo_t flash_display_DisplayObjectContainer = {0x03, 0x00, 0x80, 0x16, "flash.display", "DisplayObjectContainer", 0, &flash_display_InteractiveObject, interfaces: {0}}; static methodinfo_t flash_display_DisplayObjectContainer_addChild = {0x02, 0x00, 0x80, 0x16, "", "addChild", 0, &flash_display_DisplayObject, &flash_display_DisplayObjectContainer, 0}; @@ -2338,6 +2489,9 @@ static methodinfo_t flash_utils_IDataOutput_writeDouble = {0x02, 0x00, 0x80, 0x0 static methodinfo_t flash_utils_IDataOutput_writeBytes = {0x02, 0x00, 0x80, 0x08, "flash.utils:IDataOutput", "writeBytes", 0, 0, &flash_utils_IDataOutput, 0}; static varinfo_t flash_utils_IDataOutput_endian = {0x01, 0x00, 0x80, 0x08, "flash.utils:IDataOutput", "endian", 0, 0, &flash_utils_IDataOutput, 0}; static classinfo_t flash_geom_Utils3D = {0x03, 0x00, 0x80, 0x16, "flash.geom", "Utils3D", 0, &_Object, interfaces: {0}}; +static methodinfo_t flash_geom_Utils3D_projectVectors = {0x02, 0x00, 0x82, 0x16, "", "projectVectors", 0, 0, &flash_geom_Utils3D, 0}; +static methodinfo_t flash_geom_Utils3D_projectVector = {0x02, 0x00, 0x82, 0x16, "", "projectVector", 0, &flash_geom_Vector3D, &flash_geom_Utils3D, 0}; +static methodinfo_t flash_geom_Utils3D_pointTowards = {0x02, 0x00, 0x82, 0x16, "", "pointTowards", 0, &flash_geom_Matrix3D, &flash_geom_Utils3D, 0}; static classinfo_t flash_events_TextEvent = {0x03, 0x00, 0x80, 0x16, "flash.events", "TextEvent", 0, &flash_events_Event, interfaces: {0}}; static methodinfo_t flash_events_TextEvent_toString = {0x02, 0x00, 0x80, 0x16, "", "toString", 0, &_String, &flash_events_TextEvent, 0}; static varinfo_t flash_events_TextEvent_text = {0x01, 0x00, 0x80, 0x16, "", "text", 0, 0, &flash_events_TextEvent, 0}; @@ -2410,6 +2564,9 @@ static varinfo_t flash_display_Sprite_graphics = {0x01, 0x00, 0x80, 0x16, "", "g static methodinfo_t flash_display_Sprite_startDrag = {0x02, 0x00, 0x80, 0x16, "", "startDrag", 0, 0, &flash_display_Sprite, 0}; static varinfo_t flash_display_Sprite_dropTarget = {0x01, 0x00, 0x80, 0x16, "", "dropTarget", 0, 0, &flash_display_Sprite, 0}; static classinfo_t flash_ui_Keyboard = {0x03, 0x00, 0x81, 0x16, "flash.ui", "Keyboard", 0, &_Object, interfaces: {0}}; +static varinfo_t flash_ui_Keyboard_numLock = {0x01, 0x00, 0x82, 0x16, "", "numLock", 0, 0, &flash_ui_Keyboard, 0}; +static varinfo_t flash_ui_Keyboard_capsLock = {0x01, 0x00, 0x82, 0x16, "", "capsLock", 0, 0, &flash_ui_Keyboard, 0}; +static methodinfo_t flash_ui_Keyboard_isAccessible = {0x02, 0x00, 0x82, 0x16, "", "isAccessible", 0, &_Boolean, &flash_ui_Keyboard, 0}; static classinfo_t flash_filters_DisplacementMapFilter = {0x03, 0x00, 0x81, 0x16, "flash.filters", "DisplacementMapFilter", 0, &flash_filters_BitmapFilter, interfaces: {0}}; static varinfo_t flash_filters_DisplacementMapFilter_scaleY = {0x01, 0x00, 0x80, 0x16, "", "scaleY", 0, 0, &flash_filters_DisplacementMapFilter, 0}; static varinfo_t flash_filters_DisplacementMapFilter_mapPoint = {0x01, 0x00, 0x80, 0x16, "", "mapPoint", 0, 0, &flash_filters_DisplacementMapFilter, 0}; @@ -2441,6 +2598,7 @@ static methodinfo_t flash_filters_ColorMatrixFilter_clone = {0x02, 0x00, 0x80, 0 static classinfo_t flash_net_NetStreamPlayTransitions = {0x03, 0x00, 0x80, 0x16, "flash.net", "NetStreamPlayTransitions", 0, &_Object, interfaces: {0}}; static classinfo_t flash_media_SoundCodec = {0x03, 0x00, 0x81, 0x16, "flash.media", "SoundCodec", 0, &_Object, interfaces: {0}}; static classinfo_t flash_net_ObjectEncoding = {0x03, 0x00, 0x81, 0x16, "flash.net", "ObjectEncoding", 0, &_Object, interfaces: {0}}; +static varinfo_t flash_net_ObjectEncoding_dynamicPropertyWriter = {0x01, 0x00, 0x82, 0x16, "", "dynamicPropertyWriter", 0, 0, &flash_net_ObjectEncoding, 0}; static classinfo_t flash_text_engine_GroupElement = {0x03, 0x00, 0x81, 0x16, "flash.text.engine", "GroupElement", 0, &flash_text_engine_ContentElement, interfaces: {0}}; static methodinfo_t flash_text_engine_GroupElement_groupElements = {0x02, 0x00, 0x80, 0x16, "", "groupElements", 0, &flash_text_engine_GroupElement, &flash_text_engine_GroupElement, 0}; static methodinfo_t flash_text_engine_GroupElement_splitTextElement = {0x02, 0x00, 0x80, 0x16, "", "splitTextElement", 0, &flash_text_engine_TextElement, &flash_text_engine_GroupElement, 0}; @@ -2873,8 +3031,19 @@ static methodinfo_t flash_sampler_StackFrame_toString = {0x02, 0x00, 0x80, 0x16, static classinfo_t flash_system_JPEGLoaderContext = {0x03, 0x00, 0x80, 0x16, "flash.system", "JPEGLoaderContext", 0, &flash_system_LoaderContext, interfaces: {0}}; static varinfo_t flash_system_JPEGLoaderContext_deblockingFilter = {0x01, 0x00, 0x80, 0x16, "", "deblockingFilter", 0, &_Number, &flash_system_JPEGLoaderContext, 0}; static classinfo_t flash_system_IME = {0x03, 0x00, 0x81, 0x16, "flash.system", "IME", 0, &flash_events_EventDispatcher, interfaces: {0}}; +static methodinfo_t flash_system_IME_setCompositionString = {0x02, 0x00, 0x82, 0x16, "", "setCompositionString", 0, 0, &flash_system_IME, 0}; +static varinfo_t flash_system_IME_enabled = {0x01, 0x00, 0x82, 0x16, "", "enabled", 0, 0, &flash_system_IME, 0}; +static methodinfo_t flash_system_IME_doConversion = {0x02, 0x00, 0x82, 0x16, "", "doConversion", 0, 0, &flash_system_IME, 0}; +static varinfo_t flash_system_IME_conversionMode = {0x01, 0x00, 0x82, 0x16, "", "conversionMode", 0, 0, &flash_system_IME, 0}; static methodinfo_t _isNaN = {0x02, 0x00, 0x82, 0x16, "", "isNaN", 0, &_Boolean, 0, 0}; static classinfo_t flash_system_Security = {0x03, 0x00, 0x81, 0x16, "flash.system", "Security", 0, &_Object, interfaces: {0}}; +static varinfo_t flash_system_Security_disableAVM1Loading = {0x01, 0x00, 0x82, 0x16, "", "disableAVM1Loading", 0, 0, &flash_system_Security, 0}; +static methodinfo_t flash_system_Security_allowDomain = {0x02, 0x00, 0x82, 0x16, "", "allowDomain", 0, 0, &flash_system_Security, 0}; +static methodinfo_t flash_system_Security_showSettings = {0x02, 0x00, 0x82, 0x16, "", "showSettings", 0, 0, &flash_system_Security, 0}; +static methodinfo_t flash_system_Security_allowInsecureDomain = {0x02, 0x00, 0x82, 0x16, "", "allowInsecureDomain", 0, 0, &flash_system_Security, 0}; +static methodinfo_t flash_system_Security_loadPolicyFile = {0x02, 0x00, 0x82, 0x16, "", "loadPolicyFile", 0, 0, &flash_system_Security, 0}; +static varinfo_t flash_system_Security_sandboxType = {0x01, 0x00, 0x82, 0x16, "", "sandboxType", 0, 0, &flash_system_Security, 0}; +static varinfo_t flash_system_Security_exactSettings = {0x01, 0x00, 0x82, 0x16, "", "exactSettings", 0, 0, &flash_system_Security, 0}; static classinfo_t flash_display_Bitmap = {0x03, 0x00, 0x80, 0x16, "flash.display", "Bitmap", 0, &flash_display_DisplayObject, interfaces: {0}}; static varinfo_t flash_display_Bitmap_pixelSnapping = {0x01, 0x00, 0x80, 0x16, "", "pixelSnapping", 0, 0, &flash_display_Bitmap, 0}; static varinfo_t flash_display_Bitmap_bitmapData = {0x01, 0x00, 0x80, 0x16, "", "bitmapData", 0, 0, &flash_display_Bitmap, 0}; @@ -3052,6 +3221,10 @@ static methodinfo_t flash_text_TextField_insertXMLText = {0x02, 0x00, 0x80, 0x16 static varinfo_t flash_text_TextField_condenseWhite = {0x01, 0x00, 0x80, 0x16, "", "condenseWhite", 0, 0, &flash_text_TextField, 0}; static classinfo_t flash_printing_PrintJobOrientation = {0x03, 0x00, 0x81, 0x16, "flash.printing", "PrintJobOrientation", 0, &_Object, interfaces: {0}}; static classinfo_t flash_text_TextRenderer = {0x03, 0x00, 0x81, 0x16, "flash.text", "TextRenderer", 0, &_Object, interfaces: {0}}; +static varinfo_t flash_text_TextRenderer_displayMode = {0x01, 0x00, 0x82, 0x16, "", "displayMode", 0, 0, &flash_text_TextRenderer, 0}; +static varinfo_t flash_text_TextRenderer_antiAliasType = {0x01, 0x00, 0x82, 0x16, "", "antiAliasType", 0, 0, &flash_text_TextRenderer, 0}; +static varinfo_t flash_text_TextRenderer_maxLevel = {0x01, 0x00, 0x82, 0x16, "", "maxLevel", 0, 0, &flash_text_TextRenderer, 0}; +static methodinfo_t flash_text_TextRenderer_setAdvancedAntiAliasingTable = {0x02, 0x00, 0x82, 0x16, "", "setAdvancedAntiAliasingTable", 0, 0, &flash_text_TextRenderer, 0}; static classinfo_t flash_net_NetConnection = {0x03, 0x00, 0x80, 0x16, "flash.net", "NetConnection", 0, &flash_events_EventDispatcher, interfaces: {0}}; static varinfo_t flash_net_NetConnection_defaultObjectEncoding = {0x01, 0x00, 0x82, 0x16, "", "defaultObjectEncoding", 0, 0, &flash_net_NetConnection, 0}; static varinfo_t flash_net_NetConnection_nearID = {0x01, 0x00, 0x80, 0x16, "", "nearID", 0, 0, &flash_net_NetConnection, 0}; @@ -3110,6 +3283,9 @@ static varinfo_t flash_net_URLStream_endian = {0x01, 0x00, 0x80, 0x16, "", "endi static methodinfo_t flash_net_URLStream_readBoolean = {0x02, 0x00, 0x80, 0x16, "", "readBoolean", 0, &_Boolean, &flash_net_URLStream, 0}; static classinfo_t flash_display_BlendMode = {0x03, 0x00, 0x81, 0x16, "flash.display", "BlendMode", 0, &_Object, interfaces: {0}}; static classinfo_t flash_ui_Mouse = {0x03, 0x00, 0x81, 0x16, "flash.ui", "Mouse", 0, &_Object, interfaces: {0}}; +static varinfo_t flash_ui_Mouse_cursor = {0x01, 0x00, 0x82, 0x16, "", "cursor", 0, 0, &flash_ui_Mouse, 0}; +static methodinfo_t flash_ui_Mouse_show = {0x02, 0x00, 0x82, 0x16, "", "show", 0, 0, &flash_ui_Mouse, 0}; +static methodinfo_t flash_ui_Mouse_hide = {0x02, 0x00, 0x82, 0x16, "", "hide", 0, 0, &flash_ui_Mouse, 0}; static classinfo_t flash_errors_InvalidSWFError = {0x03, 0x00, 0x88, 0x16, "flash.errors", "InvalidSWFError", 0, &_Error, interfaces: {0}}; static classinfo_t flash_text_engine_RenderingMode = {0x03, 0x00, 0x81, 0x16, "flash.text.engine", "RenderingMode", 0, &_Object, interfaces: {0}}; static classinfo_t flash_display_GraphicsTrianglePath = {0x03, 0x00, 0x81, 0x16, "flash.display", "GraphicsTrianglePath", 0, &_Object, interfaces: {&flash_display_IGraphicsPath, &flash_display_IGraphicsData, 0}}; @@ -3230,6 +3406,10 @@ static varinfo_t flash_ui_ContextMenuItem_caption = {0x01, 0x00, 0x80, 0x16, "", static methodinfo_t flash_ui_ContextMenuItem_clone = {0x02, 0x00, 0x80, 0x16, "", "clone", 0, &flash_ui_ContextMenuItem, &flash_ui_ContextMenuItem, 0}; static varinfo_t flash_ui_ContextMenuItem_visible = {0x01, 0x00, 0x80, 0x16, "", "visible", 0, 0, &flash_ui_ContextMenuItem, 0}; static classinfo_t flash_trace_Trace = {0x03, 0x00, 0x80, 0x16, "flash.trace", "Trace", 0, &_Object, interfaces: {0}}; +static methodinfo_t flash_trace_Trace_setListener = {0x02, 0x00, 0x82, 0x16, "", "setListener", 0, 0, &flash_trace_Trace, 0}; +static methodinfo_t flash_trace_Trace_getListener = {0x02, 0x00, 0x82, 0x16, "", "getListener", 0, &_Function, &flash_trace_Trace, 0}; +static methodinfo_t flash_trace_Trace_setLevel = {0x02, 0x00, 0x82, 0x16, "", "setLevel", 0, 0, &flash_trace_Trace, 0}; +static methodinfo_t flash_trace_Trace_getLevel = {0x02, 0x00, 0x82, 0x16, "", "getLevel", 0, &_int, &flash_trace_Trace, 0}; static classinfo_t flash_events_TimerEvent = {0x03, 0x00, 0x80, 0x16, "flash.events", "TimerEvent", 0, &flash_events_Event, interfaces: {0}}; static methodinfo_t flash_events_TimerEvent_toString = {0x02, 0x00, 0x80, 0x16, "", "toString", 0, &_String, &flash_events_TimerEvent, 0}; static methodinfo_t flash_events_TimerEvent_clone = {0x02, 0x00, 0x80, 0x16, "", "clone", 0, &flash_events_Event, &flash_events_TimerEvent, 0}; @@ -3272,6 +3452,7 @@ static varinfo_t flash_text_TextLineMetrics_height = {0x01, 0x00, 0x80, 0x16, "" static varinfo_t flash_text_TextLineMetrics_x = {0x01, 0x00, 0x80, 0x16, "", "x", 0, &_Number, &flash_text_TextLineMetrics, 0}; static classinfo_t flash_text_AntiAliasType = {0x03, 0x00, 0x81, 0x16, "flash.text", "AntiAliasType", 0, &_Object, interfaces: {0}}; static classinfo_t flash_system_SecurityDomain = {0x03, 0x00, 0x80, 0x16, "flash.system", "SecurityDomain", 0, &_Object, interfaces: {0}}; +static varinfo_t flash_system_SecurityDomain_currentDomain = {0x01, 0x00, 0x82, 0x16, "", "currentDomain", 0, 0, &flash_system_SecurityDomain, 0}; static classinfo_t flash_text_Font = {0x03, 0x00, 0x80, 0x16, "flash.text", "Font", 0, &_Object, interfaces: {0}}; static methodinfo_t flash_text_Font_enumerateFonts = {0x02, 0x00, 0x82, 0x16, "", "enumerateFonts", 0, &_Array, &flash_text_Font, 0}; static methodinfo_t flash_text_Font_hasGlyphs = {0x02, 0x00, 0x80, 0x16, "", "hasGlyphs", 0, &_Boolean, &flash_text_Font, 0}; @@ -3306,6 +3487,24 @@ static varinfo_t flash_ui_ContextMenu_link = {0x01, 0x00, 0x80, 0x16, "", "link" static varinfo_t flash_ui_ContextMenu_clipboardMenu = {0x01, 0x00, 0x80, 0x16, "", "clipboardMenu", 0, 0, &flash_ui_ContextMenu, 0}; static classinfo_t flash_text_TextFieldAutoSize = {0x03, 0x00, 0x81, 0x16, "flash.text", "TextFieldAutoSize", 0, &_Object, interfaces: {0}}; static classinfo_t _Math = {0x03, 0x00, 0x81, 0x16, "", "Math", 0, &_Object, interfaces: {0}}; +static methodinfo_t _Math_atan = {0x02, 0x00, 0x82, 0x16, "", "atan", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_min = {0x02, 0x00, 0x82, 0x16, "", "min", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_exp = {0x02, 0x00, 0x82, 0x16, "", "exp", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_abs = {0x02, 0x00, 0x82, 0x16, "", "abs", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_atan2 = {0x02, 0x00, 0x82, 0x16, "", "atan2", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_round = {0x02, 0x00, 0x82, 0x16, "", "round", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_log = {0x02, 0x00, 0x82, 0x16, "", "log", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_sin = {0x02, 0x00, 0x82, 0x16, "", "sin", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_acos = {0x02, 0x00, 0x82, 0x16, "", "acos", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_cos = {0x02, 0x00, 0x82, 0x16, "", "cos", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_asin = {0x02, 0x00, 0x82, 0x16, "", "asin", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_floor = {0x02, 0x00, 0x82, 0x16, "", "floor", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_random = {0x02, 0x00, 0x82, 0x16, "", "random", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_sqrt = {0x02, 0x00, 0x82, 0x16, "", "sqrt", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_tan = {0x02, 0x00, 0x82, 0x16, "", "tan", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_max = {0x02, 0x00, 0x82, 0x16, "", "max", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_pow = {0x02, 0x00, 0x82, 0x16, "", "pow", 0, &_Number, &_Math, 0}; +static methodinfo_t _Math_ceil = {0x02, 0x00, 0x82, 0x16, "", "ceil", 0, &_Number, &_Math, 0}; static classinfo_t flash_display_ColorCorrectionSupport = {0x03, 0x00, 0x81, 0x16, "flash.display", "ColorCorrectionSupport", 0, &_Object, interfaces: {0}}; static classinfo_t flash_errors_IOError = {0x03, 0x00, 0x88, 0x16, "flash.errors", "IOError", 0, &_Error, interfaces: {0}}; static methodinfo_t _trace = {0x02, 0x00, 0x82, 0x16, "", "trace", 0, 0, 0, 0}; @@ -3324,7 +3523,16 @@ static varinfo_t flash_net_FileReferenceList_fileList = {0x01, 0x00, 0x80, 0x16, static methodinfo_t flash_net_FileReferenceList_browse = {0x02, 0x00, 0x80, 0x16, "", "browse", 0, &_Boolean, &flash_net_FileReferenceList, 0}; static classinfo_t flash_display_TriangleCulling = {0x03, 0x00, 0x81, 0x16, "flash.display", "TriangleCulling", 0, &_Object, interfaces: {0}}; static classinfo_t flash_media_SoundMixer = {0x03, 0x00, 0x81, 0x16, "flash.media", "SoundMixer", 0, &_Object, interfaces: {0}}; +static methodinfo_t flash_media_SoundMixer_computeSpectrum = {0x02, 0x00, 0x82, 0x16, "", "computeSpectrum", 0, 0, &flash_media_SoundMixer, 0}; +static methodinfo_t flash_media_SoundMixer_areSoundsInaccessible = {0x02, 0x00, 0x82, 0x16, "", "areSoundsInaccessible", 0, &_Boolean, &flash_media_SoundMixer, 0}; +static varinfo_t flash_media_SoundMixer_soundTransform = {0x01, 0x00, 0x82, 0x16, "", "soundTransform", 0, 0, &flash_media_SoundMixer, 0}; +static varinfo_t flash_media_SoundMixer_bufferTime = {0x01, 0x00, 0x82, 0x16, "", "bufferTime", 0, 0, &flash_media_SoundMixer, 0}; +static methodinfo_t flash_media_SoundMixer_stopAll = {0x02, 0x00, 0x82, 0x16, "", "stopAll", 0, 0, &flash_media_SoundMixer, 0}; static classinfo_t adobe_utils_XMLUI = {0x03, 0x00, 0x81, 0x16, "adobe.utils", "XMLUI", 0, &_Object, interfaces: {0}}; +static methodinfo_t adobe_utils_XMLUI_cancel = {0x02, 0x00, 0x82, 0x16, "", "cancel", 0, 0, &adobe_utils_XMLUI, 0}; +static methodinfo_t adobe_utils_XMLUI_setProperty = {0x02, 0x00, 0x82, 0x16, "", "setProperty", 0, 0, &adobe_utils_XMLUI, 0}; +static methodinfo_t adobe_utils_XMLUI_getProperty = {0x02, 0x00, 0x82, 0x16, "", "getProperty", 0, &_String, &adobe_utils_XMLUI, 0}; +static methodinfo_t adobe_utils_XMLUI_accept = {0x02, 0x00, 0x82, 0x16, "", "accept", 0, 0, &adobe_utils_XMLUI, 0}; static methodinfo_t _escape = {0x02, 0x00, 0x82, 0x16, "", "escape", 0, &_String, 0, 0}; static methodinfo_t flash_utils_setInterval = {0x02, 0x00, 0x82, 0x16, "flash.utils", "setInterval", 0, &_uint, 0, 0}; static classinfo_t flash_events_StatusEvent = {0x03, 0x00, 0x80, 0x16, "flash.events", "StatusEvent", 0, &flash_events_Event, interfaces: {0}}; @@ -3619,6 +3827,11 @@ static methodinfo_t _decodeURI = {0x02, 0x00, 0x82, 0x16, "", "decodeURI", 0, &_ static methodinfo_t _encodeURI = {0x02, 0x00, 0x82, 0x16, "", "encodeURI", 0, &_String, 0, 0}; static classinfo_t flash_text_engine_TextBaseline = {0x03, 0x00, 0x81, 0x16, "flash.text.engine", "TextBaseline", 0, &_Object, interfaces: {0}}; static classinfo_t flash_external_ExternalInterface = {0x03, 0x00, 0x81, 0x16, "flash.external", "ExternalInterface", 0, &_Object, interfaces: {0}}; +static methodinfo_t flash_external_ExternalInterface_call = {0x02, 0x00, 0x82, 0x16, "", "call", 0, 0, &flash_external_ExternalInterface, 0}; +static varinfo_t flash_external_ExternalInterface_available = {0x01, 0x00, 0x82, 0x16, "", "available", 0, 0, &flash_external_ExternalInterface, 0}; +static methodinfo_t flash_external_ExternalInterface_addCallback = {0x02, 0x00, 0x82, 0x16, "", "addCallback", 0, 0, &flash_external_ExternalInterface, 0}; +static varinfo_t flash_external_ExternalInterface_marshallExceptions = {0x01, 0x00, 0x82, 0x16, "", "marshallExceptions", 0, &_Boolean, &flash_external_ExternalInterface, 0}; +static varinfo_t flash_external_ExternalInterface_objectID = {0x01, 0x00, 0x82, 0x16, "", "objectID", 0, 0, &flash_external_ExternalInterface, 0}; static classinfo_t _EvalError = {0x03, 0x00, 0x88, 0x16, "", "EvalError", 0, &_Error, interfaces: {0}}; static classinfo_t flash_text_engine_DigitCase = {0x03, 0x00, 0x81, 0x16, "flash.text.engine", "DigitCase", 0, &_Object, interfaces: {0}}; static classinfo_t flash_text_TextFormatAlign = {0x03, 0x00, 0x81, 0x16, "flash.text", "TextFormatAlign", 0, &_Object, interfaces: {0}}; @@ -3785,6 +3998,9 @@ static methodinfo_t flash_geom_Matrix_clone = {0x02, 0x00, 0x80, 0x16, "", "clon static varinfo_t flash_geom_Matrix_tx = {0x01, 0x00, 0x80, 0x16, "", "tx", 0, &_Number, &flash_geom_Matrix, 0}; static methodinfo_t flash_geom_Matrix_createBox = {0x02, 0x00, 0x80, 0x16, "", "createBox", 0, 0, &flash_geom_Matrix, 0}; static classinfo_t flash_accessibility_Accessibility = {0x03, 0x00, 0x81, 0x16, "flash.accessibility", "Accessibility", 0, &_Object, interfaces: {0}}; +static varinfo_t flash_accessibility_Accessibility_active = {0x01, 0x00, 0x82, 0x16, "", "active", 0, 0, &flash_accessibility_Accessibility, 0}; +static methodinfo_t flash_accessibility_Accessibility_updateProperties = {0x02, 0x00, 0x82, 0x16, "", "updateProperties", 0, 0, &flash_accessibility_Accessibility, 0}; +static methodinfo_t flash_accessibility_Accessibility_sendEvent = {0x02, 0x00, 0x82, 0x16, "", "sendEvent", 0, 0, &flash_accessibility_Accessibility, 0}; static methodinfo_t flash_net_sendToURL = {0x02, 0x00, 0x82, 0x16, "flash.net", "sendToURL", 0, 0, 0, 0}; static classinfo_t flash_filters_GlowFilter = {0x03, 0x00, 0x81, 0x16, "flash.filters", "GlowFilter", 0, &flash_filters_BitmapFilter, interfaces: {0}}; static varinfo_t flash_filters_GlowFilter_blurY = {0x01, 0x00, 0x80, 0x16, "", "blurY", 0, 0, &flash_filters_GlowFilter, 0}; @@ -3855,6 +4071,10 @@ dict_t* builtin_getclasses() dict_put(&flash_filters_DropShadowFilter.members, &flash_filters_DropShadowFilter_clone, &flash_filters_DropShadowFilter_clone); dict_put(d, &adobe_utils_CustomActions, &adobe_utils_CustomActions); dict_init2(&adobe_utils_CustomActions.members, &memberinfo_type, 8); + dict_put(&adobe_utils_CustomActions.members, &adobe_utils_CustomActions_actionsList, &adobe_utils_CustomActions_actionsList); + dict_put(&adobe_utils_CustomActions.members, &adobe_utils_CustomActions_uninstallActions, &adobe_utils_CustomActions_uninstallActions); + dict_put(&adobe_utils_CustomActions.members, &adobe_utils_CustomActions_getActions, &adobe_utils_CustomActions_getActions); + dict_put(&adobe_utils_CustomActions.members, &adobe_utils_CustomActions_installActions, &adobe_utils_CustomActions_installActions); dict_put(d, &flash_text_engine_TextLineValidity, &flash_text_engine_TextLineValidity); dict_init2(&flash_text_engine_TextLineValidity.members, &memberinfo_type, 8); dict_put(d, &flash_display_LineScaleMode, &flash_display_LineScaleMode); @@ -4164,7 +4384,37 @@ dict_t* builtin_getclasses() dict_put(&flash_geom_Matrix3D.members, &flash_geom_Matrix3D_prependTranslation, &flash_geom_Matrix3D_prependTranslation); dict_put(d, &flash_sampler_pauseSampling, &flash_sampler_pauseSampling); dict_put(d, &flash_system_Capabilities, &flash_system_Capabilities); - dict_init2(&flash_system_Capabilities.members, &memberinfo_type, 8); + dict_init2(&flash_system_Capabilities.members, &memberinfo_type, 63); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_maxLevelIDC, &flash_system_Capabilities_maxLevelIDC); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_isDebugger, &flash_system_Capabilities_isDebugger); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasStreamingAudio, &flash_system_Capabilities_hasStreamingAudio); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_screenColor, &flash_system_Capabilities_screenColor); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasIME, &flash_system_Capabilities_hasIME); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasEmbeddedVideo, &flash_system_Capabilities_hasEmbeddedVideo); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasTLS, &flash_system_Capabilities_hasTLS); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_isEmbeddedInAcrobat, &flash_system_Capabilities_isEmbeddedInAcrobat); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasScreenPlayback, &flash_system_Capabilities_hasScreenPlayback); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasVideoEncoder, &flash_system_Capabilities_hasVideoEncoder); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasAudioEncoder, &flash_system_Capabilities_hasAudioEncoder); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_pixelAspectRatio, &flash_system_Capabilities_pixelAspectRatio); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasStreamingVideo, &flash_system_Capabilities_hasStreamingVideo); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_screenResolutionX, &flash_system_Capabilities_screenResolutionX); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasScreenBroadcast, &flash_system_Capabilities_hasScreenBroadcast); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasAudio, &flash_system_Capabilities_hasAudio); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_language, &flash_system_Capabilities_language); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_manufacturer, &flash_system_Capabilities_manufacturer); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasPrinting, &flash_system_Capabilities_hasPrinting); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_os, &flash_system_Capabilities_os); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_localFileReadDisable, &flash_system_Capabilities_localFileReadDisable); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasMP3, &flash_system_Capabilities_hasMP3); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_avHardwareDisable, &flash_system_Capabilities_avHardwareDisable); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_hasAccessibility, &flash_system_Capabilities_hasAccessibility); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_version, &flash_system_Capabilities_version); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_screenDPI, &flash_system_Capabilities_screenDPI); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_playerType, &flash_system_Capabilities_playerType); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_screenResolutionY, &flash_system_Capabilities_screenResolutionY); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities__internal, &flash_system_Capabilities__internal); + dict_put(&flash_system_Capabilities.members, &flash_system_Capabilities_serverString, &flash_system_Capabilities_serverString); dict_put(d, &flash_sampler_getSetterInvocationCount, &flash_sampler_getSetterInvocationCount); dict_put(d, &flash_sampler_getGetterInvocationCount, &flash_sampler_getGetterInvocationCount); dict_put(d, &flash_filters_BlurFilter, &flash_filters_BlurFilter); @@ -4251,7 +4501,16 @@ dict_t* builtin_getclasses() dict_init2(&flash_net_URLRequestMethod.members, &memberinfo_type, 8); dict_put(d, &adobe_utils_MMExecute, &adobe_utils_MMExecute); dict_put(d, &flash_system_System, &flash_system_System); - dict_init2(&flash_system_System.members, &memberinfo_type, 8); + dict_init2(&flash_system_System.members, &memberinfo_type, 15); + dict_put(&flash_system_System.members, &flash_system_System_pause, &flash_system_System_pause); + dict_put(&flash_system_System.members, &flash_system_System_useCodePage, &flash_system_System_useCodePage); + dict_put(&flash_system_System.members, &flash_system_System_exit, &flash_system_System_exit); + dict_put(&flash_system_System.members, &flash_system_System_setClipboard, &flash_system_System_setClipboard); + dict_put(&flash_system_System.members, &flash_system_System_totalMemory, &flash_system_System_totalMemory); + dict_put(&flash_system_System.members, &flash_system_System_gc, &flash_system_System_gc); + dict_put(&flash_system_System.members, &flash_system_System_resume, &flash_system_System_resume); + dict_put(&flash_system_System.members, &flash_system_System_vmVersion, &flash_system_System_vmVersion); + dict_put(&flash_system_System.members, &flash_system_System_ime, &flash_system_System_ime); dict_put(d, &flash_filters_BitmapFilterQuality, &flash_filters_BitmapFilterQuality); dict_init2(&flash_filters_BitmapFilterQuality.members, &memberinfo_type, 8); dict_put(d, &flash_display_DisplayObjectContainer, &flash_display_DisplayObjectContainer); @@ -4304,6 +4563,9 @@ dict_t* builtin_getclasses() dict_put(&flash_utils_IDataOutput.members, &flash_utils_IDataOutput_endian, &flash_utils_IDataOutput_endian); dict_put(d, &flash_geom_Utils3D, &flash_geom_Utils3D); dict_init2(&flash_geom_Utils3D.members, &memberinfo_type, 8); + dict_put(&flash_geom_Utils3D.members, &flash_geom_Utils3D_projectVectors, &flash_geom_Utils3D_projectVectors); + dict_put(&flash_geom_Utils3D.members, &flash_geom_Utils3D_projectVector, &flash_geom_Utils3D_projectVector); + dict_put(&flash_geom_Utils3D.members, &flash_geom_Utils3D_pointTowards, &flash_geom_Utils3D_pointTowards); dict_put(d, &flash_events_TextEvent, &flash_events_TextEvent); dict_init2(&flash_events_TextEvent.members, &memberinfo_type, 8); dict_put(&flash_events_TextEvent.members, &flash_events_TextEvent_toString, &flash_events_TextEvent_toString); @@ -4387,6 +4649,9 @@ dict_t* builtin_getclasses() dict_put(&flash_display_Sprite.members, &flash_display_Sprite_dropTarget, &flash_display_Sprite_dropTarget); dict_put(d, &flash_ui_Keyboard, &flash_ui_Keyboard); dict_init2(&flash_ui_Keyboard.members, &memberinfo_type, 8); + dict_put(&flash_ui_Keyboard.members, &flash_ui_Keyboard_numLock, &flash_ui_Keyboard_numLock); + dict_put(&flash_ui_Keyboard.members, &flash_ui_Keyboard_capsLock, &flash_ui_Keyboard_capsLock); + dict_put(&flash_ui_Keyboard.members, &flash_ui_Keyboard_isAccessible, &flash_ui_Keyboard_isAccessible); dict_put(d, &flash_filters_DisplacementMapFilter, &flash_filters_DisplacementMapFilter); dict_init2(&flash_filters_DisplacementMapFilter.members, &memberinfo_type, 31); dict_put(&flash_filters_DisplacementMapFilter.members, &flash_filters_DisplacementMapFilter_scaleY, &flash_filters_DisplacementMapFilter_scaleY); @@ -4426,6 +4691,7 @@ dict_t* builtin_getclasses() dict_init2(&flash_media_SoundCodec.members, &memberinfo_type, 8); dict_put(d, &flash_net_ObjectEncoding, &flash_net_ObjectEncoding); dict_init2(&flash_net_ObjectEncoding.members, &memberinfo_type, 8); + dict_put(&flash_net_ObjectEncoding.members, &flash_net_ObjectEncoding_dynamicPropertyWriter, &flash_net_ObjectEncoding_dynamicPropertyWriter); dict_put(d, &flash_text_engine_GroupElement, &flash_text_engine_GroupElement); dict_init2(&flash_text_engine_GroupElement.members, &memberinfo_type, 8); dict_put(&flash_text_engine_GroupElement.members, &flash_text_engine_GroupElement_groupElements, &flash_text_engine_GroupElement_groupElements); @@ -4905,9 +5171,20 @@ dict_t* builtin_getclasses() dict_put(&flash_system_JPEGLoaderContext.members, &flash_system_JPEGLoaderContext_deblockingFilter, &flash_system_JPEGLoaderContext_deblockingFilter); dict_put(d, &flash_system_IME, &flash_system_IME); dict_init2(&flash_system_IME.members, &memberinfo_type, 8); + dict_put(&flash_system_IME.members, &flash_system_IME_setCompositionString, &flash_system_IME_setCompositionString); + dict_put(&flash_system_IME.members, &flash_system_IME_enabled, &flash_system_IME_enabled); + dict_put(&flash_system_IME.members, &flash_system_IME_doConversion, &flash_system_IME_doConversion); + dict_put(&flash_system_IME.members, &flash_system_IME_conversionMode, &flash_system_IME_conversionMode); dict_put(d, &_isNaN, &_isNaN); dict_put(d, &flash_system_Security, &flash_system_Security); dict_init2(&flash_system_Security.members, &memberinfo_type, 8); + dict_put(&flash_system_Security.members, &flash_system_Security_disableAVM1Loading, &flash_system_Security_disableAVM1Loading); + dict_put(&flash_system_Security.members, &flash_system_Security_allowDomain, &flash_system_Security_allowDomain); + dict_put(&flash_system_Security.members, &flash_system_Security_showSettings, &flash_system_Security_showSettings); + dict_put(&flash_system_Security.members, &flash_system_Security_allowInsecureDomain, &flash_system_Security_allowInsecureDomain); + dict_put(&flash_system_Security.members, &flash_system_Security_loadPolicyFile, &flash_system_Security_loadPolicyFile); + dict_put(&flash_system_Security.members, &flash_system_Security_sandboxType, &flash_system_Security_sandboxType); + dict_put(&flash_system_Security.members, &flash_system_Security_exactSettings, &flash_system_Security_exactSettings); dict_put(d, &flash_display_Bitmap, &flash_display_Bitmap); dict_init2(&flash_display_Bitmap.members, &memberinfo_type, 8); dict_put(&flash_display_Bitmap.members, &flash_display_Bitmap_pixelSnapping, &flash_display_Bitmap_pixelSnapping); @@ -5109,6 +5386,10 @@ dict_t* builtin_getclasses() dict_init2(&flash_printing_PrintJobOrientation.members, &memberinfo_type, 8); dict_put(d, &flash_text_TextRenderer, &flash_text_TextRenderer); dict_init2(&flash_text_TextRenderer.members, &memberinfo_type, 8); + dict_put(&flash_text_TextRenderer.members, &flash_text_TextRenderer_displayMode, &flash_text_TextRenderer_displayMode); + dict_put(&flash_text_TextRenderer.members, &flash_text_TextRenderer_antiAliasType, &flash_text_TextRenderer_antiAliasType); + dict_put(&flash_text_TextRenderer.members, &flash_text_TextRenderer_maxLevel, &flash_text_TextRenderer_maxLevel); + dict_put(&flash_text_TextRenderer.members, &flash_text_TextRenderer_setAdvancedAntiAliasingTable, &flash_text_TextRenderer_setAdvancedAntiAliasingTable); dict_put(d, &flash_net_NetConnection, &flash_net_NetConnection); dict_init2(&flash_net_NetConnection.members, &memberinfo_type, 31); dict_put(&flash_net_NetConnection.members, &flash_net_NetConnection_defaultObjectEncoding, &flash_net_NetConnection_defaultObjectEncoding); @@ -5177,6 +5458,9 @@ dict_t* builtin_getclasses() dict_init2(&flash_display_BlendMode.members, &memberinfo_type, 8); dict_put(d, &flash_ui_Mouse, &flash_ui_Mouse); dict_init2(&flash_ui_Mouse.members, &memberinfo_type, 8); + dict_put(&flash_ui_Mouse.members, &flash_ui_Mouse_cursor, &flash_ui_Mouse_cursor); + dict_put(&flash_ui_Mouse.members, &flash_ui_Mouse_show, &flash_ui_Mouse_show); + dict_put(&flash_ui_Mouse.members, &flash_ui_Mouse_hide, &flash_ui_Mouse_hide); dict_put(d, &flash_errors_InvalidSWFError, &flash_errors_InvalidSWFError); dict_init2(&flash_errors_InvalidSWFError.members, &memberinfo_type, 8); dict_put(d, &flash_text_engine_RenderingMode, &flash_text_engine_RenderingMode); @@ -5307,6 +5591,10 @@ dict_t* builtin_getclasses() dict_put(&flash_ui_ContextMenuItem.members, &flash_ui_ContextMenuItem_visible, &flash_ui_ContextMenuItem_visible); dict_put(d, &flash_trace_Trace, &flash_trace_Trace); dict_init2(&flash_trace_Trace.members, &memberinfo_type, 8); + dict_put(&flash_trace_Trace.members, &flash_trace_Trace_setListener, &flash_trace_Trace_setListener); + dict_put(&flash_trace_Trace.members, &flash_trace_Trace_getListener, &flash_trace_Trace_getListener); + dict_put(&flash_trace_Trace.members, &flash_trace_Trace_setLevel, &flash_trace_Trace_setLevel); + dict_put(&flash_trace_Trace.members, &flash_trace_Trace_getLevel, &flash_trace_Trace_getLevel); dict_put(d, &flash_events_TimerEvent, &flash_events_TimerEvent); dict_init2(&flash_events_TimerEvent.members, &memberinfo_type, 8); dict_put(&flash_events_TimerEvent.members, &flash_events_TimerEvent_toString, &flash_events_TimerEvent_toString); @@ -5359,6 +5647,7 @@ dict_t* builtin_getclasses() dict_init2(&flash_text_AntiAliasType.members, &memberinfo_type, 8); dict_put(d, &flash_system_SecurityDomain, &flash_system_SecurityDomain); dict_init2(&flash_system_SecurityDomain.members, &memberinfo_type, 8); + dict_put(&flash_system_SecurityDomain.members, &flash_system_SecurityDomain_currentDomain, &flash_system_SecurityDomain_currentDomain); dict_put(d, &flash_text_Font, &flash_text_Font); dict_init2(&flash_text_Font.members, &memberinfo_type, 8); dict_put(&flash_text_Font.members, &flash_text_Font_enumerateFonts, &flash_text_Font_enumerateFonts); @@ -5398,7 +5687,25 @@ dict_t* builtin_getclasses() dict_put(d, &flash_text_TextFieldAutoSize, &flash_text_TextFieldAutoSize); dict_init2(&flash_text_TextFieldAutoSize.members, &memberinfo_type, 8); dict_put(d, &_Math, &_Math); - dict_init2(&_Math.members, &memberinfo_type, 8); + dict_init2(&_Math.members, &memberinfo_type, 31); + dict_put(&_Math.members, &_Math_atan, &_Math_atan); + dict_put(&_Math.members, &_Math_min, &_Math_min); + dict_put(&_Math.members, &_Math_exp, &_Math_exp); + dict_put(&_Math.members, &_Math_abs, &_Math_abs); + dict_put(&_Math.members, &_Math_atan2, &_Math_atan2); + dict_put(&_Math.members, &_Math_round, &_Math_round); + dict_put(&_Math.members, &_Math_log, &_Math_log); + dict_put(&_Math.members, &_Math_sin, &_Math_sin); + dict_put(&_Math.members, &_Math_acos, &_Math_acos); + dict_put(&_Math.members, &_Math_cos, &_Math_cos); + dict_put(&_Math.members, &_Math_asin, &_Math_asin); + dict_put(&_Math.members, &_Math_floor, &_Math_floor); + dict_put(&_Math.members, &_Math_random, &_Math_random); + dict_put(&_Math.members, &_Math_sqrt, &_Math_sqrt); + dict_put(&_Math.members, &_Math_tan, &_Math_tan); + dict_put(&_Math.members, &_Math_max, &_Math_max); + dict_put(&_Math.members, &_Math_pow, &_Math_pow); + dict_put(&_Math.members, &_Math_ceil, &_Math_ceil); dict_put(d, &flash_display_ColorCorrectionSupport, &flash_display_ColorCorrectionSupport); dict_init2(&flash_display_ColorCorrectionSupport.members, &memberinfo_type, 8); dict_put(d, &flash_errors_IOError, &flash_errors_IOError); @@ -5423,8 +5730,17 @@ dict_t* builtin_getclasses() dict_init2(&flash_display_TriangleCulling.members, &memberinfo_type, 8); dict_put(d, &flash_media_SoundMixer, &flash_media_SoundMixer); dict_init2(&flash_media_SoundMixer.members, &memberinfo_type, 8); + dict_put(&flash_media_SoundMixer.members, &flash_media_SoundMixer_computeSpectrum, &flash_media_SoundMixer_computeSpectrum); + dict_put(&flash_media_SoundMixer.members, &flash_media_SoundMixer_areSoundsInaccessible, &flash_media_SoundMixer_areSoundsInaccessible); + dict_put(&flash_media_SoundMixer.members, &flash_media_SoundMixer_soundTransform, &flash_media_SoundMixer_soundTransform); + dict_put(&flash_media_SoundMixer.members, &flash_media_SoundMixer_bufferTime, &flash_media_SoundMixer_bufferTime); + dict_put(&flash_media_SoundMixer.members, &flash_media_SoundMixer_stopAll, &flash_media_SoundMixer_stopAll); dict_put(d, &adobe_utils_XMLUI, &adobe_utils_XMLUI); dict_init2(&adobe_utils_XMLUI.members, &memberinfo_type, 8); + dict_put(&adobe_utils_XMLUI.members, &adobe_utils_XMLUI_cancel, &adobe_utils_XMLUI_cancel); + dict_put(&adobe_utils_XMLUI.members, &adobe_utils_XMLUI_setProperty, &adobe_utils_XMLUI_setProperty); + dict_put(&adobe_utils_XMLUI.members, &adobe_utils_XMLUI_getProperty, &adobe_utils_XMLUI_getProperty); + dict_put(&adobe_utils_XMLUI.members, &adobe_utils_XMLUI_accept, &adobe_utils_XMLUI_accept); dict_put(d, &_escape, &_escape); dict_put(d, &flash_utils_setInterval, &flash_utils_setInterval); dict_put(d, &flash_events_StatusEvent, &flash_events_StatusEvent); @@ -5773,6 +6089,11 @@ dict_t* builtin_getclasses() dict_init2(&flash_text_engine_TextBaseline.members, &memberinfo_type, 8); dict_put(d, &flash_external_ExternalInterface, &flash_external_ExternalInterface); dict_init2(&flash_external_ExternalInterface.members, &memberinfo_type, 8); + dict_put(&flash_external_ExternalInterface.members, &flash_external_ExternalInterface_call, &flash_external_ExternalInterface_call); + dict_put(&flash_external_ExternalInterface.members, &flash_external_ExternalInterface_available, &flash_external_ExternalInterface_available); + dict_put(&flash_external_ExternalInterface.members, &flash_external_ExternalInterface_addCallback, &flash_external_ExternalInterface_addCallback); + dict_put(&flash_external_ExternalInterface.members, &flash_external_ExternalInterface_marshallExceptions, &flash_external_ExternalInterface_marshallExceptions); + dict_put(&flash_external_ExternalInterface.members, &flash_external_ExternalInterface_objectID, &flash_external_ExternalInterface_objectID); dict_put(d, &_EvalError, &_EvalError); dict_init2(&_EvalError.members, &memberinfo_type, 8); dict_put(d, &flash_text_engine_DigitCase, &flash_text_engine_DigitCase); @@ -5962,6 +6283,9 @@ dict_t* builtin_getclasses() dict_put(&flash_geom_Matrix.members, &flash_geom_Matrix_createBox, &flash_geom_Matrix_createBox); dict_put(d, &flash_accessibility_Accessibility, &flash_accessibility_Accessibility); dict_init2(&flash_accessibility_Accessibility.members, &memberinfo_type, 8); + dict_put(&flash_accessibility_Accessibility.members, &flash_accessibility_Accessibility_active, &flash_accessibility_Accessibility_active); + dict_put(&flash_accessibility_Accessibility.members, &flash_accessibility_Accessibility_updateProperties, &flash_accessibility_Accessibility_updateProperties); + dict_put(&flash_accessibility_Accessibility.members, &flash_accessibility_Accessibility_sendEvent, &flash_accessibility_Accessibility_sendEvent); dict_put(d, &flash_net_sendToURL, &flash_net_sendToURL); dict_put(d, &flash_filters_GlowFilter, &flash_filters_GlowFilter); dict_init2(&flash_filters_GlowFilter.members, &memberinfo_type, 8); diff --git a/lib/as3/code.c b/lib/as3/code.c index d9b35cf..403c85a 100644 --- a/lib/as3/code.c +++ b/lib/as3/code.c @@ -371,15 +371,15 @@ code_t*code_parse(TAG*tag, int len, abc_file_t*file, pool_t*pool, codelookup_t** if(c) { opcode_t*op = opcode_get(c->opcode); if(op->flags & (OP_JUMP|OP_BRANCH)) { - printf("%5d) %02x %s %d\n", t, tag->data[start+t], op->name, c->data[0]); + printf("%50d) %02x %s %d\n", t, tag->data[start+t], op->name, c->data[0]); } else { - printf("%5d) %02x %s\n", t, tag->data[start+t], op->name); + printf("%50d) %02x %s\n", t, tag->data[start+t], op->name); } } else { - printf("%5d) %02x\n", t, tag->data[start+t]); + printf("%50d) %02x\n", t, tag->data[start+t]); } } - //printf("%5d) %02x\n", t, tag->data[start+t]); + //printf("%05d) %02x\n", t, tag->data[start+t]); #endif code_t*c = head; @@ -625,7 +625,7 @@ static void dumpstack(currentstats_t*stats) for(t=0;tnum;t++) { code_t*c = stats->stack[t].code; opcode_t*op = opcode_get(c->opcode); - printf("%5d) %c %d:%d %s", t, (stats->stack[t].flags&FLAG_SEEN)?'x':'|', + printf("%05d) %c %d:%d %s", t, (stats->stack[t].flags&FLAG_SEEN)?'x':'|', stats->stack[t].stackpos, stats->stack[t].scopepos, op->name); @@ -812,17 +812,17 @@ static currentstats_t* code_get_stats(code_t*code, abc_exception_list_t*exceptio for(t=0;topcode); if(op->flags & (OP_JUMP|OP_BRANCH)) { - printf("%5d) %s %08x\n", t, op->name, c->branch); + printf("%05d) %s %08x\n", t, op->name, c->branch); } else if(op->params[0]=='2') { - printf("%5d) %s %s\n", t, op->name, multiname_tostring(c->data[0])); + printf("%05d) %s %s\n", t, op->name, multiname_tostring(c->data[0])); } else if(op->params[0]=='N') { - printf("%5d) %s %s\n", t, op->name, namespace_tostring(c->data[0])); + printf("%05d) %s %s\n", t, op->name, namespace_tostring(c->data[0])); } else { - printf("%5d) %s\n", t, op->name); + printf("%05d) %s\n", t, op->name); } c = c->next; } - //printf("%5d) %02x\n", t, tag->data[start+t]); + //printf("%05d) %02x\n", t, tag->data[start+t]); #endif num = 0; @@ -903,13 +903,13 @@ int code_dump2(code_t*c, abc_exception_list_t*exceptions, abc_file_t*file, char* if(stats) { int f = stats->stack[c->pos].flags; - fprintf(fo, "%s%5d) %c %d:%d %s ", prefix, c->pos, + fprintf(fo, "%s%05d) %c %d:%d %s ", prefix, c->pos, (f&FLAG_ERROR)?'E':((f&FLAG_SEEN)?'+':'|'), stats->stack[c->pos].stackpos, stats->stack[c->pos].scopepos, op->name); } else { - fprintf(fo, "%s%5d) ? ?:? %s ", prefix, c->pos, op->name); + fprintf(fo, "%s%05d) ? ?:? %s ", prefix, c->pos, op->name); } while(*p) { diff --git a/lib/as3/expr.c b/lib/as3/expr.c new file mode 100644 index 0000000..4177815 --- /dev/null +++ b/lib/as3/expr.c @@ -0,0 +1,2448 @@ +/* ast.c + + Extension module for the rfxswf library. + Part of the swftools package. + + Copyright (c) 2009 Matthias Kramm + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "expr.h" +#include "common.h" +#include "tokenizer.h" + +#define IS_INT(a) (TYPE_IS_INT((a)) || TYPE_IS_UINT((a))) +#define BOTH_INT(a,b) (IS_INT(a) && IS_INT(b)) + +#define READ_HEADER_LEFTRIGHT \ + typedcode_t left = n->child[0]->type->read(n->child[0]);\ + typedcode_t right = n->child[1]->type->read(n->child[1]);\ + code_t*c=0;\ + classinfo_t*t=0; + +#define READ_HEADER_ONE \ + typedcode_t x = n->child[0]->type->read(n->child[0]);\ + code_t*c=0;\ + classinfo_t*t=0; + +#define EXEC_HEADER_ONE \ + code_t* x = n->child[0]->type->exec(n->child[0]);\ + code_t*c=0;\ + classinfo_t*t=0; + +#define EXEC_HEADER_LEFTRIGHT \ + code_t* left = n->child[0]->type->exec(n->child[0]);\ + code_t* right = n->child[1]->type->exec(n->child[1]);\ + code_t*c=0;\ + classinfo_t*t=0; + +#define RET \ + typedcode_t r; \ + r.c = c; \ + r.t = t; \ + return r; + +static classinfo_t*join_types(classinfo_t*type1, classinfo_t*type2, nodetype_t*t) +{ + if(!type1 || !type2) + return registry_getanytype(); + if(TYPE_IS_ANY(type1) || TYPE_IS_ANY(type2)) + return registry_getanytype(); + if(type1 == type2) + return type1; + return registry_getanytype(); +} +static char is_getlocal(code_t*c) +{ + if(!c || c->prev || c->next) + return 0; + return(c->opcode == OPCODE_GETLOCAL + || c->opcode == OPCODE_GETLOCAL_0 + || c->opcode == OPCODE_GETLOCAL_1 + || c->opcode == OPCODE_GETLOCAL_2 + || c->opcode == OPCODE_GETLOCAL_3); +} +static int getlocalnr(code_t*c) +{ + if(c->opcode == OPCODE_GETLOCAL) {return (ptroff_t)c->data[0];} + else if(c->opcode == OPCODE_GETLOCAL_0) {return 0;} + else if(c->opcode == OPCODE_GETLOCAL_1) {return 1;} + else if(c->opcode == OPCODE_GETLOCAL_2) {return 2;} + else if(c->opcode == OPCODE_GETLOCAL_3) {return 3;} + else syntaxerror("Internal error: opcode %02x is not a getlocal call", c->opcode); + return 0; +} + + +int gettempvar(); /* FIXME: we should use a function pointer here */ + + +static code_t* toreadwrite(code_t*in, code_t*middlepart, char justassign, char readbefore, char pushvalue) +{ + /* converts this: + + [prefix code] [read instruction] + + to this: + + [prefix code] ([dup]) [read instruction] [middlepart] [setvar] [write instruction] [getvar] + */ + if(in && in->opcode == OPCODE_COERCE_A) { + in = code_cutlast(in); + } + if(in->next) + syntaxerror("internal error"); + + /* chop off read instruction */ + code_t*prefix = in; + code_t*r = in; + if(r->prev) { + prefix = r->prev;r->prev = 0; + prefix->next=0; + } else { + prefix = 0; + } + + char use_temp_var = readbefore; + + /* generate the write instruction, and maybe append a dup to the prefix code */ + code_t* write = abc_nop(0); + if(r->opcode == OPCODE_GETPROPERTY) { + write->opcode = OPCODE_SETPROPERTY; + multiname_t*m = (multiname_t*)r->data[0]; + write->data[0] = multiname_clone(m); + if(m->type == QNAME || m->type == MULTINAME) { + if(!justassign) { + prefix = abc_dup(prefix); // we need the object, too + } + use_temp_var = 1; + } else if(m->type == MULTINAMEL) { + if(!justassign) { + /* dupping two values on the stack requires 5 operations and one register- + couldn't adobe just have given us a dup2? */ + int temp = gettempvar(); + prefix = abc_setlocal(prefix, temp); + prefix = abc_dup(prefix); + prefix = abc_getlocal(prefix, temp); + prefix = abc_swap(prefix); + prefix = abc_getlocal(prefix, temp); + if(!use_temp_var); + prefix = abc_kill(prefix, temp); + } + use_temp_var = 1; + } else { + syntaxerror("illegal lvalue: can't assign a value to this expression (not a qname/multiname)"); + } + } else if(r->opcode == OPCODE_GETSLOT) { + write->opcode = OPCODE_SETSLOT; + write->data[0] = r->data[0]; + if(!justassign) { + prefix = abc_dup(prefix); // we need the object, too + } + use_temp_var = 1; + } else if(r->opcode == OPCODE_GETLOCAL) { + write->opcode = OPCODE_SETLOCAL; + write->data[0] = r->data[0]; + } else if(r->opcode == OPCODE_GETLOCAL_0) { + write->opcode = OPCODE_SETLOCAL_0; + } else if(r->opcode == OPCODE_GETLOCAL_1) { + write->opcode = OPCODE_SETLOCAL_1; + } else if(r->opcode == OPCODE_GETLOCAL_2) { + write->opcode = OPCODE_SETLOCAL_2; + } else if(r->opcode == OPCODE_GETLOCAL_3) { + write->opcode = OPCODE_SETLOCAL_3; + } else if(r->opcode == OPCODE_GETSUPER) { + write->opcode = OPCODE_SETSUPER; + multiname_t*m = (multiname_t*)r->data[0]; + write->data[0] = multiname_clone(m); + } else { + code_dump(r); + syntaxerror("illegal lvalue: can't assign a value to this expression"); + } + code_t* c = 0; + + int temp = -1; + if(!justassign) { + if(use_temp_var) { + /* with getproperty/getslot, we have to be extra careful not + to execute the read code twice, as it might have side-effects + (e.g. if the property is in fact a setter/getter combination) + + So read the value, modify it, and write it again, + using prefix only once and making sure (by using a temporary + register) that the return value is what we just wrote */ + temp = gettempvar(); + c = code_append(c, prefix); + c = code_append(c, r); + if(pushvalue && readbefore) { + c = abc_dup(c); + c = abc_setlocal(c, temp); + } + c = code_append(c, middlepart); + if(pushvalue && !readbefore) { + c = abc_dup(c); + c = abc_setlocal(c, temp); + } + c = code_append(c, write); + if(pushvalue) { + c = abc_getlocal(c, temp); + c = abc_kill(c, temp); + } + } else { + /* if we're allowed to execute the read code twice *and* + the middlepart doesn't modify the code, things are easier. + */ + //c = code_append(c, prefix); + if(prefix) syntaxerror("internal error (prefix)"); + code_t* r2 = 0; + if(pushvalue) { + r2 = code_dup(r); + } + c = code_append(c, r); + c = code_append(c, middlepart); + c = code_append(c, write); + if(pushvalue) { + c = code_append(c, r2); + } + } + } else { + /* even smaller version: overwrite the value without reading + it out first */ + if(!use_temp_var) { + if(prefix) { + c = code_append(c, prefix); + c = abc_dup(c); + } + c = code_append(c, middlepart); + c = code_append(c, write); + if(pushvalue) { + c = code_append(c, r); + } + } else { + code_free(r);r=0; + temp = gettempvar(); + if(prefix) { + c = code_append(c, prefix); + } + c = code_append(c, middlepart); + if(pushvalue) { + c = abc_dup(c); + c = abc_setlocal(c, temp); + } + c = code_append(c, write); + if(pushvalue) { + c = abc_getlocal(c, temp); + c = abc_kill(c, temp); + } + } + } + return c; +} + +code_t*converttype(code_t*c, classinfo_t*from, classinfo_t*to); + +// -------------------------- x + y ----------------------------------- + +typedcode_t node_plus_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_plus_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c, right.c); + if(BOTH_INT(left.t, right.t)) { + c = abc_add_i(c); + t = TYPE_INT; + } else { + c = abc_add(c); + t = join_types(left.t,right.t,n->type); + } + RET; +} +code_t* node_plus_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_plus = +{ +name:"plus", +flags:NODE_HAS_CHILDREN, +write:node_plus_write, +read:node_plus_read, +exec:node_plus_exec, +}; + +// -------------------------- x - y ----------------------------------- + +typedcode_t node_minus_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_minus_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c, right.c); + if(BOTH_INT(left.t,right.t)) { + c = abc_subtract_i(c); + t = TYPE_INT; + } else { + c = abc_subtract(c); + t = TYPE_NUMBER; + } + RET; +} +code_t* node_minus_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_minus = +{ +name:"minus", +flags:NODE_HAS_CHILDREN, +write: node_minus_write, +read: node_minus_read, +exec: node_minus_exec +}; + +// ---------------------------- ++x ----------------------------------- + +typedcode_t node_lplusplus_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_lplusplus_read(node_t*n) +{ + READ_HEADER_ONE; + t = x.t; + if(is_getlocal(x.c) && (TYPE_IS_INT(x.t) || TYPE_IS_NUMBER(x.t))) { + int nr = getlocalnr(x.c); + code_free(x.c);x.c=0; + if(TYPE_IS_INT(x.t)) { + c = abc_inclocal_i(c, nr); + c = abc_getlocal(c, nr); + } else if(TYPE_IS_NUMBER(x.t)) { + c = abc_inclocal(c, nr); + c = abc_getlocal(c, nr); + } else syntaxerror("internal error"); + } else { + if(TYPE_IS_INT(x.t) || TYPE_IS_UINT(x.t)) { + c = abc_increment_i(c); + t = TYPE_INT; + } else { + c = abc_increment(c); + t = TYPE_NUMBER; + } + c = converttype(c, t, x.t); + c = toreadwrite(x.c, c, 0, 0, 1); + t = x.t; + } + RET +} +code_t* node_lplusplus_exec(node_t*n) +{ + typedcode_t x = n->child[0]->type->read(n->child[0]); + code_t*c=0; + if(is_getlocal(x.c) && (TYPE_IS_INT(x.t) || TYPE_IS_NUMBER(x.t))) { + int nr = getlocalnr(x.c); + code_free(x.c);x.c=0; + if(TYPE_IS_INT(x.t)) { + c = abc_inclocal_i(c, nr); + } else if(TYPE_IS_NUMBER(x.t)) { + c = abc_inclocal(c, nr); + } else syntaxerror("internal error"); + } else { + classinfo_t*t; + if(TYPE_IS_INT(x.t) || TYPE_IS_UINT(x.t)) { + c = abc_increment_i(c); + t = TYPE_INT; + } else { + c = abc_increment(c); + t = TYPE_NUMBER; + } + c = converttype(c, t, x.t); //convert back to original type + c = toreadwrite(x.c, c, 0, 0, 0); + t = x.t; + } + return c; +} +nodetype_t node_lplusplus = +{ +name: "lplusplus", +flags:NODE_HAS_CHILDREN, +write: node_lplusplus_write, +read: node_lplusplus_read, +exec: node_lplusplus_exec +}; + + +// ---------------------------- --x ----------------------------------- + +typedcode_t node_lminusminus_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_lminusminus_read(node_t*n) +{ + READ_HEADER_ONE; + t = x.t; + if(is_getlocal(x.c) && (TYPE_IS_INT(x.t) || TYPE_IS_NUMBER(x.t))) { + int nr = getlocalnr(x.c); + code_free(x.c);x.c=0; + if(TYPE_IS_INT(x.t)) { + c = abc_declocal_i(c, nr); + c = abc_getlocal(c, nr); + } else if(TYPE_IS_NUMBER(x.t)) { + c = abc_declocal(c, nr); + c = abc_getlocal(c, nr); + } else syntaxerror("internal error"); + } else { + if(TYPE_IS_INT(x.t) || TYPE_IS_UINT(x.t)) { + c = abc_decrement_i(c); + t = TYPE_INT; + } else { + c = abc_decrement(c); + t = TYPE_NUMBER; + } + c = converttype(c, t, x.t); + c = toreadwrite(x.c, c, 0, 0, 1); + t = x.t; + } + RET +} +code_t* node_lminusminus_exec(node_t*n) +{ + typedcode_t x = n->child[0]->type->read(n->child[0]); + code_t*c=0; + if(is_getlocal(x.c) && (TYPE_IS_INT(x.t) || TYPE_IS_NUMBER(x.t))) { + int nr = getlocalnr(x.c); + code_free(x.c);x.c=0; + if(TYPE_IS_INT(x.t)) { + c = abc_declocal_i(c, nr); + } else if(TYPE_IS_NUMBER(x.t)) { + c = abc_declocal(c, nr); + } else syntaxerror("internal error"); + } else { + classinfo_t*t; + if(TYPE_IS_INT(x.t) || TYPE_IS_UINT(x.t)) { + c = abc_decrement_i(c); + t = TYPE_INT; + } else { + c = abc_decrement(c); + t = TYPE_NUMBER; + } + c = converttype(c, t, x.t); //convert back to original type + c = toreadwrite(x.c, c, 0, 0, 0); + t = x.t; + } + return c; +} +nodetype_t node_lminusminus = +{ +name: "lminusminus", +flags:NODE_HAS_CHILDREN, +write: node_lminusminus_write, +read: node_lminusminus_read, +exec: node_lminusminus_exec +}; + + + +// ---------------------------- x++ ----------------------------------- + +typedcode_t node_rplusplus_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_rplusplus_read(node_t*n) +{ + READ_HEADER_ONE; + t = x.t; + if(is_getlocal(x.c) && (TYPE_IS_INT(x.t) || TYPE_IS_NUMBER(x.t))) { + int nr = getlocalnr(x.c); + code_free(x.c);x.c=0; + if(TYPE_IS_INT(x.t)) { + c = abc_getlocal(0, nr); + c = abc_inclocal_i(c, nr); + } else if(TYPE_IS_NUMBER(x.t)) { + c = abc_getlocal(0, nr); + c = abc_inclocal(c, nr); + } else syntaxerror("internal error"); + } else { + if(TYPE_IS_INT(x.t) || TYPE_IS_UINT(x.t)) { + c = abc_increment_i(c); + t = TYPE_INT; + } else { + c = abc_increment(c); + t = TYPE_NUMBER; + } + c = converttype(c, t, x.t); + c = toreadwrite(x.c, c, 0, 1, 1); + t = x.t; + } + RET +} +code_t* node_rplusplus_exec(node_t*n) +{ + typedcode_t x = n->child[0]->type->read(n->child[0]); + code_t*c=0; + if(is_getlocal(x.c) && (TYPE_IS_INT(x.t) || TYPE_IS_NUMBER(x.t))) { + int nr = getlocalnr(x.c); + code_free(x.c);x.c=0; + if(TYPE_IS_INT(x.t)) { + c = abc_inclocal_i(c, nr); + } else if(TYPE_IS_NUMBER(x.t)) { + c = abc_inclocal(c, nr); + } else syntaxerror("internal error"); + } else { + classinfo_t*t; + if(TYPE_IS_INT(x.t) || TYPE_IS_UINT(x.t)) { + c = abc_increment_i(c); + t = TYPE_INT; + } else { + c = abc_increment(c); + t = TYPE_NUMBER; + } + c = converttype(c, t, x.t); //convert back to original type + c = toreadwrite(x.c, c, 0, 1, 0); + t = x.t; + } + return c; +} +nodetype_t node_rplusplus = +{ +name: "rplusplus", +flags:NODE_HAS_CHILDREN, +write: node_rplusplus_write, +read: node_rplusplus_read, +exec: node_rplusplus_exec +}; + +// ---------------------------- x-- ----------------------------------- + +typedcode_t node_rminusminus_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_rminusminus_read(node_t*n) +{ + READ_HEADER_ONE; + t = x.t; + if(is_getlocal(x.c) && (TYPE_IS_INT(x.t) || TYPE_IS_NUMBER(x.t))) { + int nr = getlocalnr(x.c); + code_free(x.c);x.c=0; + if(TYPE_IS_INT(x.t)) { + c = abc_getlocal(0, nr); + c = abc_declocal_i(c, nr); + } else if(TYPE_IS_NUMBER(x.t)) { + c = abc_getlocal(0, nr); + c = abc_declocal(c, nr); + } else syntaxerror("internal error"); + } else { + if(TYPE_IS_INT(x.t) || TYPE_IS_UINT(x.t)) { + c = abc_decrement_i(c); + t = TYPE_INT; + } else { + c = abc_decrement(c); + t = TYPE_NUMBER; + } + c = converttype(c, t, x.t); + c = toreadwrite(x.c, c, 0, 1, 1); + t = x.t; + } + RET +} +code_t* node_rminusminus_exec(node_t*n) +{ + typedcode_t x = n->child[0]->type->read(n->child[0]); + code_t*c=0; + if(is_getlocal(x.c) && (TYPE_IS_INT(x.t) || TYPE_IS_NUMBER(x.t))) { + int nr = getlocalnr(x.c); + code_free(x.c);x.c=0; + if(TYPE_IS_INT(x.t)) { + c = abc_declocal_i(c, nr); + } else if(TYPE_IS_NUMBER(x.t)) { + c = abc_declocal(c, nr); + } else syntaxerror("internal error"); + } else { + classinfo_t*t; + if(TYPE_IS_INT(x.t) || TYPE_IS_UINT(x.t)) { + c = abc_decrement_i(c); + t = TYPE_INT; + } else { + c = abc_decrement(c); + t = TYPE_NUMBER; + } + c = converttype(c, t, x.t); //convert back to original type + c = toreadwrite(x.c, c, 0, 1, 0); + t = x.t; + } + return c; +} +nodetype_t node_rminusminus = +{ +name: "rminusminus", +flags:NODE_HAS_CHILDREN, +write: node_rminusminus_write, +read: node_rminusminus_read, +exec: node_rminusminus_exec +}; + +// ---------------------------- x*y ----------------------------------- + +typedcode_t node_multiply_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_multiply_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + if(BOTH_INT(left.t,right.t)) { + c = abc_multiply_i(c); + t = TYPE_INT; + } else { + c = abc_multiply(c); + t = TYPE_NUMBER; + } + RET +} +code_t* node_multiply_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_multiply = +{ +name: "multiply", +flags:NODE_HAS_CHILDREN, +write: node_multiply_write, +read: node_multiply_read, +exec: node_multiply_exec +}; + +// ---------------------------- x/y ----------------------------------- + +typedcode_t node_div_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_div_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c, right.c); + c = abc_divide(c); + t = TYPE_NUMBER; + RET +} +code_t* node_div_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_div = +{ +name: "div", +flags:NODE_HAS_CHILDREN, +write: node_div_write, +read: node_div_read, +exec: node_div_exec +}; + +// ---------------------------- x%y ----------------------------------- + +typedcode_t node_mod_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_mod_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c, right.c); + c = abc_modulo(c); + t = TYPE_NUMBER; + RET +} +code_t* node_mod_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_mod = +{ +name: "mod", +flags:NODE_HAS_CHILDREN, +write: node_mod_write, +read: node_mod_read, +exec: node_mod_exec +}; + +// ---------------------------- xy ----------------------------------- + +typedcode_t node_gt_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_gt_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_greaterthan(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_gt_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_gt = +{ +name: "gt", +flags:NODE_HAS_CHILDREN, +write: node_gt_write, +read: node_gt_read, +exec: node_gt_exec +}; + +// ---------------------------- x<=y ---------------------------------- + +typedcode_t node_le_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_le_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_lessequals(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_le_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_le = //<= +{ +name: "le", +flags:NODE_HAS_CHILDREN, +write: node_le_write, +read: node_le_read, +exec: node_le_exec +}; + +// ---------------------------- x>=y ---------------------------------- + +typedcode_t node_ge_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_ge_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_greaterequals(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_ge_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_ge = //>= +{ +name: "ge", +flags:NODE_HAS_CHILDREN, +write: node_ge_write, +read: node_ge_read, +exec: node_ge_exec +}; + +// ---------------------------- x==y ---------------------------------- + +typedcode_t node_eqeq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_eqeq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_equals(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_eqeq_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_eqeq = //== +{ +name: "eqeq", +flags:NODE_HAS_CHILDREN, +write: node_eqeq_write, +read: node_eqeq_read, +exec: node_eqeq_exec +}; + +// --------------------------- x===y ---------------------------------- + +typedcode_t node_eqeqeq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_eqeqeq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_strictequals(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_eqeqeq_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_eqeqeq = //=== +{ +name: "eqeqeq", +flags:NODE_HAS_CHILDREN, +write: node_eqeqeq_write, +read: node_eqeqeq_read, +exec: node_eqeqeq_exec +}; + +// --------------------------- x!==y ---------------------------------- + +typedcode_t node_noteqeq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_noteqeq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_strictequals(c); + c = abc_not(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_noteqeq_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_noteqeq = //!== +{ +name: "noteqeq", +flags:NODE_HAS_CHILDREN, +write: node_noteqeq_write, +read: node_noteqeq_read, +exec: node_noteqeq_exec +}; + +// --------------------------- x!=y ---------------------------------- + +typedcode_t node_noteq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_noteq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_equals(c); + c = abc_not(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_noteq_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_noteq = //!= +{ +name: "noteq", +flags:NODE_HAS_CHILDREN, +write: node_noteq_write, +read: node_noteq_read, +exec: node_noteq_exec +}; + +// --------------------------- x||y ---------------------------------- + +typedcode_t node_oror_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_oror_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + t = join_types(left.t, right.t, n->type); + c = left.c; + c = converttype(c, left.t, t); + c = abc_dup(c); + code_t*jmp = c = abc_iftrue(c, 0); + c = cut_last_push(c); + c = code_append(c, right.c); + c = converttype(c, right.t, t); + code_t*label = c = abc_label(c); + jmp->branch = label; + RET; +} +code_t* node_oror_exec(node_t*n) +{ + typedcode_t left = n->child[0]->type->read(n->child[0]); + code_t* right = n->child[1]->type->exec(n->child[1]); + code_t*c = left.c; + code_t*jmp = c = abc_iftrue(c, 0); + c = code_append(c, right); + code_t*label = c = abc_label(c); + jmp->branch = label; + return c; +} +nodetype_t node_oror = //|| +{ +name: "oror", +flags:NODE_HAS_CHILDREN, +write: node_oror_write, +read: node_oror_read, +exec: node_oror_exec +}; + +// --------------------------- x&&y ---------------------------------- + +typedcode_t node_andand_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_andand_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + t = join_types(left.t, right.t, &node_andand); + c = left.c; + c = converttype(c, left.t, t); + c = abc_dup(c); + code_t*jmp = c = abc_iffalse(c, 0); + c = cut_last_push(c); + c = code_append(c,right.c); + c = converttype(c, right.t, t); + code_t*label = c = abc_label(c); + jmp->branch = label; + RET; +} +code_t* node_andand_exec(node_t*n) +{ + typedcode_t left = n->child[0]->type->read(n->child[0]);\ + code_t* right = n->child[1]->type->exec(n->child[1]);\ + code_t*c = left.c; + code_t*jmp = c = abc_iffalse(c, 0); + c = code_append(c, right); + code_t*label = c = abc_label(c); + jmp->branch = label; + return c; +} +nodetype_t node_andand = //&& +{ +name: "andand", +flags:NODE_HAS_CHILDREN, +write: node_andand_write, +read: node_andand_read, +exec: node_andand_exec +}; + +// ----------------------------- !x ----------------------------------- + +typedcode_t node_not_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_not_read(node_t*n) +{ + READ_HEADER_ONE; + c = x.c; + c = abc_not(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_not_exec(node_t*n) +{ + EXEC_HEADER_ONE; + return x; +} +nodetype_t node_not = +{ +name: "not", +flags:NODE_HAS_CHILDREN, +write: node_not_write, +read: node_not_read, +exec: node_not_exec +}; + +// ----------------------------- ~x ----------------------------------- + +typedcode_t node_bitnot_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_bitnot_read(node_t*n) +{ + READ_HEADER_ONE; + c = x.c; + c = abc_bitnot(c); + t = TYPE_INT; + RET; +} +code_t* node_bitnot_exec(node_t*n) +{ + EXEC_HEADER_ONE; + return x; +} +nodetype_t node_bitnot = +{ +name: "bitnot", +flags:NODE_HAS_CHILDREN, +write: node_bitnot_write, +read: node_bitnot_read, +exec: node_bitnot_exec +}; + +// ----------------------------- x&y ----------------------------------- + +typedcode_t node_bitand_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_bitand_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_bitand(c); + t = TYPE_INT; + RET; +} +code_t* node_bitand_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_bitand = +{ +name: "bitand", +flags:NODE_HAS_CHILDREN, +write: node_bitand_write, +read: node_bitand_read, +exec: node_bitand_exec +}; + +// ----------------------------- x^y ----------------------------------- + +typedcode_t node_bitxor_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_bitxor_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_bitxor(c); + t = TYPE_INT; + RET; +} +code_t* node_bitxor_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_bitxor = +{ +name: "bitxor", +flags:NODE_HAS_CHILDREN, +write: node_bitxor_write, +read: node_bitxor_read, +exec: node_bitxor_exec +}; + +// ----------------------------- x|y ----------------------------------- + +typedcode_t node_bitor_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_bitor_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_bitor(c); + t = TYPE_INT; + RET; +} +code_t* node_bitor_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_bitor = +{ +name: "bitor", +flags:NODE_HAS_CHILDREN, +write: node_bitor_write, +read: node_bitor_read, +exec: node_bitor_exec +}; + +// ---------------------------- x>>y ----------------------------------- + +typedcode_t node_shr_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_shr_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_rshift(c); + t = TYPE_INT; + RET; +} +code_t* node_shr_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_shr = //>> +{ +name: "shr", +flags:NODE_HAS_CHILDREN, +write: node_shr_write, +read: node_shr_read, +exec: node_shr_exec +}; + +// ---------------------------- x<>>y ----------------------------------- + +typedcode_t node_ushr_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_ushr_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_urshift(c); + t = TYPE_INT; + RET; +} +code_t* node_ushr_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_ushr = //>>> +{ +name: "ushr", +flags:NODE_HAS_CHILDREN, +write: node_ushr_write, +read: node_ushr_read, +exec: node_ushr_exec +}; + +// ---------------------------- x in y ---------------------------------- + +typedcode_t node_in_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_in_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c,right.c); + c = abc_in(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_in_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_in = //in +{ +name: "in", +flags:NODE_HAS_CHILDREN, +write: node_in_write, +read: node_in_read, +exec: node_in_exec +}; + +// ---------------------------- x as y ---------------------------------- + +typedcode_t node_as_write(node_t*n) +{ + /* ? */ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_as_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c, right.c); + c = abc_astypelate(c); + t = TYPE_ANY; + RET; +} +code_t* node_as_exec(node_t*n) +{ + /* we assume here that "as" doesn't have side-effects (like + early run time type checking) */ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_as = //as +{ +name: "as", +flags:NODE_HAS_CHILDREN, +write: node_as_write, +read: node_as_read, +exec: node_as_exec +}; + +// ------------------------- x instanceof y ----------------------------- + +typedcode_t node_instanceof_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_instanceof_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c, right.c); + c = abc_instanceof(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_instanceof_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_instanceof = //instanceof +{ +name: "instanceof", +flags:NODE_HAS_CHILDREN, +write: node_instanceof_write, +read: node_instanceof_read, +exec: node_instanceof_exec +}; + +// ------------------------- x is y -------------------------------------- + +typedcode_t node_is_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_is_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c, right.c); + c = abc_istypelate(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_is_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_is = //is +{ +name: "is", +flags:NODE_HAS_CHILDREN, +write: node_is_write, +read: node_is_read, +exec: node_is_exec +}; + +// ------------------------- x[y] -------------------------------------- + +typedcode_t node_arraylookup_write(node_t*n) +{ + syntaxerror("not implemented yet"); +} +typedcode_t node_arraylookup_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = code_append(left.c, right.c); + + /* XXX not sure whether this access logic is correct */ + namespace_t ns = {left.t?left.t->access:ACCESS_PACKAGE, ""}; + namespace_set_t nsset; + namespace_list_t l;l.next = 0; + nsset.namespaces = &l; + l.namespace = &ns; + multiname_t m = {MULTINAMEL, 0, &nsset, 0}; + + c = abc_getproperty2(c, &m); + t = 0; // array elements have unknown type + RET; +} +code_t* node_arraylookup_exec(node_t*n) +{ + EXEC_HEADER_LEFTRIGHT; + return code_append(left, right); +} +nodetype_t node_arraylookup = +{ +name: "arraylookup", +flags:NODE_HAS_CHILDREN, +write: node_arraylookup_write, +read: node_arraylookup_read, +exec: node_arraylookup_exec +}; + +// ------------------------- typeof(x) ------------------------------------ + +typedcode_t node_typeof_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_typeof_read(node_t*n) +{ + READ_HEADER_ONE; + c = x.c; + c = abc_typeof(c); + t = TYPE_BOOLEAN; + RET; +} +code_t* node_typeof_exec(node_t*n) +{ + EXEC_HEADER_ONE; + return x; +} +nodetype_t node_typeof = //typeof +{ +name: "typeof", +flags:NODE_HAS_CHILDREN, +write: node_typeof_write, +read: node_typeof_read, +exec: node_typeof_exec +}; + +// ------------------------- (void)(x) ------------------------------------ + +typedcode_t node_void_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_void_read(node_t*n) +{ + code_t*c = n->type->exec(n); + c = abc_pushundefined(c); + classinfo_t*t = TYPE_ANY; + RET; +} +code_t* node_void_exec(node_t*n) +{ + EXEC_HEADER_ONE; + return x; +} +nodetype_t node_void = //void +{ +name: "void", +flags:NODE_HAS_CHILDREN, +write: node_void_write, +read: node_void_read, +exec: node_void_exec +}; + +// ---------------------------- -x ---------------------------------------- + +typedcode_t node_neg_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_neg_read(node_t*n) +{ + READ_HEADER_ONE; + c = x.c; + if(IS_INT(x.t)) { + c = abc_negate_i(c); + t = TYPE_INT; + } else { + c = abc_negate(c); + t = TYPE_NUMBER; + } + RET; +} +code_t* node_neg_exec(node_t*n) +{ + EXEC_HEADER_ONE; + return x; +} +nodetype_t node_neg = //- +{ +name: "neg", +flags:NODE_HAS_CHILDREN, +write: node_neg_write, +read: node_neg_read, +exec: node_neg_exec +}; + +// ---------------------------- x*=y ---------------------------------------- + +typedcode_t node_muleq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_muleq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = right.c; + classinfo_t*f = 0; + if(BOTH_INT(left.t,right.t)) { + c=abc_multiply_i(c); + f = TYPE_INT; + } else { + c=abc_multiply(c); + f = TYPE_NUMBER; + } + c=converttype(c, f, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_muleq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = right.c; + classinfo_t*f = 0; + if(BOTH_INT(left.t,right.t)) { + c=abc_multiply_i(c); + f = TYPE_INT; + } else { + c=abc_multiply(c); + f = TYPE_NUMBER; + } + c = converttype(c, f, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_muleq = +{ +name: "muleq", +flags:NODE_HAS_CHILDREN, +write: node_muleq_write, +read: node_muleq_read, +exec: node_muleq_exec +}; + +// ---------------------------- x%=y ---------------------------------------- + +typedcode_t node_modeq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_modeq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_modulo(right.c); + c = converttype(c, TYPE_NUMBER, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_modeq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_modulo(right.c); + c = converttype(c, TYPE_NUMBER, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_modeq = //%= +{ +name: "modeq", +flags:NODE_HAS_CHILDREN, +write: node_modeq_write, +read: node_modeq_read, +exec: node_modeq_exec +}; + +// ---------------------------- x<<=y ---------------------------------------- + +typedcode_t node_shleq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_shleq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_lshift(right.c); + c = converttype(c, TYPE_INT, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_shleq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_lshift(right.c); + c = converttype(c, TYPE_INT, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_shleq = //<<= +{ +name: "shleq", +flags:NODE_HAS_CHILDREN, +write: node_shleq_write, +read: node_shleq_read, +exec: node_shleq_exec +}; + +// ---------------------------- x>>=y ---------------------------------------- + +typedcode_t node_shreq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_shreq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_rshift(right.c); + c = converttype(c, TYPE_INT, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_shreq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_rshift(right.c); + c = converttype(c, TYPE_INT, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_shreq = //>>= +{ +name: "shreq", +flags:NODE_HAS_CHILDREN, +write: node_shreq_write, +read: node_shreq_read, +exec: node_shreq_exec +}; + +// --------------------------- x>>>=y ---------------------------------------- + +typedcode_t node_ushreq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_ushreq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_urshift(right.c); + c = converttype(c, TYPE_UINT, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_ushreq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_urshift(right.c); + c = converttype(c, TYPE_UINT, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_ushreq = //>>>= +{ +name: "ushreq", +flags:NODE_HAS_CHILDREN, +write: node_ushreq_write, +read: node_ushreq_read, +exec: node_ushreq_exec +}; + +// --------------------------- x/=y ---------------------------------------- + +typedcode_t node_diveq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_diveq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_divide(right.c); + c = converttype(c, TYPE_NUMBER, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_diveq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_divide(right.c); + c = converttype(c, TYPE_NUMBER, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_diveq = +{ +name: "diveq", +flags:NODE_HAS_CHILDREN, +write: node_diveq_write, +read: node_diveq_read, +exec: node_diveq_exec +}; + +// --------------------------- x|=y ---------------------------------------- + +typedcode_t node_bitoreq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_bitoreq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_bitor(right.c); + c = converttype(c, TYPE_INT, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_bitoreq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_bitor(right.c); + c = converttype(c, TYPE_INT, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_bitoreq = //|= +{ +name: "bitoreq", +flags:NODE_HAS_CHILDREN, +write: node_bitoreq_write, +read: node_bitoreq_read, +exec: node_bitoreq_exec +}; + +// --------------------------- x^=y ---------------------------------------- + +typedcode_t node_bitxoreq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_bitxoreq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_bitxor(right.c); + c = converttype(c, TYPE_INT, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_bitxoreq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_bitxor(right.c); + c = converttype(c, TYPE_INT, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_bitxoreq = //^= +{ +name: "bitxoreq", +flags:NODE_HAS_CHILDREN, +write: node_bitxoreq_write, +read: node_bitxoreq_read, +exec: node_bitxoreq_exec +}; + +// --------------------------- x&=y ---------------------------------------- + +typedcode_t node_bitandeq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_bitandeq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_bitand(right.c); + c = converttype(c, TYPE_INT, left.t); + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_bitandeq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = abc_bitand(right.c); + c = converttype(c, TYPE_INT, left.t); + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_bitandeq = //^= +{ +name: "bitandeq", +flags:NODE_HAS_CHILDREN, +write: node_bitandeq_write, +read: node_bitandeq_read, +exec: node_bitandeq_exec +}; + +// --------------------------- x+=y ---------------------------------------- + +typedcode_t node_pluseq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_pluseq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = right.c; + if(TYPE_IS_INT(left.t)) { + c = abc_add_i(c); + } else { + c = abc_add(c); + c = converttype(c, TYPE_NUMBER, left.t); + } + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_pluseq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = right.c; + if(TYPE_IS_INT(left.t)) { + c = abc_add_i(c); + } else { + c = abc_add(c); + c = converttype(c, TYPE_NUMBER, left.t); + } + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_pluseq = //+= +{ +name: "pluseq", +flags:NODE_HAS_CHILDREN, +write: node_pluseq_write, +read: node_pluseq_read, +exec: node_pluseq_exec +}; + +// --------------------------- x-=y ---------------------------------------- + +typedcode_t node_minuseq_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_minuseq_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = right.c; + if(TYPE_IS_INT(left.t)) { + c = abc_subtract_i(c); + } else { + c = abc_subtract(c); + c = converttype(c, TYPE_NUMBER, left.t); + } + c = toreadwrite(left.c, c, 0, 0, 1); + t = left.t; + RET; +} +code_t* node_minuseq_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = right.c; + if(TYPE_IS_INT(left.t)) { + c = abc_subtract_i(c); + } else { + c = abc_subtract(c); + c = converttype(c, TYPE_NUMBER, left.t); + } + return toreadwrite(left.c, c, 0, 0, 0); +} +nodetype_t node_minuseq = //-= +{ +name: "minuseq", +flags:NODE_HAS_CHILDREN, +write: node_minuseq_write, +read: node_minuseq_read, +exec: node_minuseq_exec +}; + +// --------------------------- x=y ----------------------------------------- + +typedcode_t node_assign_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_assign_read(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = right.c; + c = converttype(c, right.t, left.t); + c = toreadwrite(left.c, c, 1, 0, 1); + t = left.t; + RET; +} +code_t* node_assign_exec(node_t*n) +{ + READ_HEADER_LEFTRIGHT; + c = right.c; + c = converttype(c, right.t, left.t); + return toreadwrite(left.c, c, 1, 0, 0); +} +nodetype_t node_assign = +{ +name: "assign", +flags:NODE_HAS_CHILDREN, +write: node_assign_write, +read: node_assign_read, +exec: node_assign_exec +}; + +// --------------------------- x?y1:y2 -------------------------------------- + +typedcode_t node_tenary_write(node_t*n) +{ + /* TODO: this might actually be kinda useful. + (global?global.x:this.x) = 3; + */ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_tenary_read(node_t*n) +{ + typedcode_t cond = n->child[0]->type->read(n->child[0]); + typedcode_t left = n->child[1]->type->read(n->child[1]); + typedcode_t right = n->child[2]->type->read(n->child[2]); + classinfo_t*t = join_types(left.t,right.t,&node_tenary); + code_t* c = cond.c; + code_t*j1 = c = abc_iffalse(c, 0); + c = code_append(c, left.c); + c = converttype(c, left.t, t); + code_t*j2 = c = abc_jump(c, 0); + c = j1->branch = abc_label(c); + c = code_append(c, right.c); + c = converttype(c, right.t, t); + c = j2->branch = abc_label(c); + RET; +} +code_t* node_tenary_exec(node_t*n) +{ + typedcode_t cond = n->child[0]->type->read(n->child[0]); + code_t* left = n->child[1]->type->exec(n->child[1]); + code_t* right = n->child[2]->type->exec(n->child[2]); + code_t* c = cond.c; + code_t*j1 = c = abc_iffalse(c, 0); + c = code_append(c, left); + code_t*j2 = c = abc_jump(c, 0); + c = j1->branch = abc_label(c); + c = code_append(c, right); + c = j2->branch = abc_label(c); + return c; +} +nodetype_t node_tenary = +{ +name: "tenary", +flags:NODE_HAS_CHILDREN, +write: node_tenary_write, +read: node_tenary_read, +exec: node_tenary_exec +}; + +// ---------------------------- comma ---------------------------------------- + +typedcode_t node_comma_write(node_t*n) +{ + syntaxerror("can't assign to this expression"); +} +typedcode_t node_comma_read(node_t*n) +{ + code_t*c = 0; + classinfo_t*t = 0; + int i; + for(i=0;inum_children-1;i++) { + c = code_append(c, n->child[i]->type->exec(n->child[i])); + } + typedcode_t o = n->child[i]->type->read(n->child[i]); + c = code_append(c, o.c); + t = o.t; + RET; +} +code_t* node_comma_exec(node_t*n) +{ + int t; + code_t*c = 0; + for(t=0;tnum_children;t++) { + c = code_append(c, n->child[t]->type->exec(n->child[t])); + } + return c; +} +nodetype_t node_comma = +{ +name: "expr", +flags: NODE_HAS_CHILDREN, +write: node_comma_write, +read: node_comma_read, +exec: node_comma_exec +}; + + +#if 0 +// -------------------------- new x ----------------------------------- + +typedcode_t node_new_write(node_t*n) +{ +} +typedcode_t node_new_read(node_t*n) +{ +} +code_t* node_new_exec(node_t*n) +{ +} +nodetype_t node_new = //new +{ +write: node_new_write, +read: node_new_read, +exec: node_new_exec +}; + +// ------------------------ delete x ---------------------------------- + +typedcode_t node_delete_write(node_t*n) +{ +} +typedcode_t node_delete_read(node_t*n) +{ +} +code_t* node_delete_exec(node_t*n) +{ +} +nodetype_t node_delete = //delete +{ +write: node_delete_write, +read: node_delete_read, +exec: node_delete_exec +}; + +// ---------------------------- x.y ----------------------------------- + +typedcode_t node_dot_write(node_t*n) +{ +} +typedcode_t node_dot_read(node_t*n) +{ +} +code_t* node_dot_exec(node_t*n) +{ +} +nodetype_t node_dot = +{ +write: node_dot_write, +read: node_dot_read, +exec: node_dot_exec +}; + +// --------------------------- x..y ----------------------------------- + +typedcode_t node_dotdot_write(node_t*n) +{ +} +typedcode_t node_dotdot_read(node_t*n) +{ +} +code_t* node_dotdot_exec(node_t*n) +{ + +} +nodetype_t node_dotdot = //.. +{ +write: node_dotdot_write, +read: node_dotdot_read, +exec: node_dotdot_exec +}; + +// --------------------------- x.@y ----------------------------------- + +typedcode_t node_dotat_write(node_t*n) +{ +} +typedcode_t node_dotat_read(node_t*n) +{ +} +code_t* node_dotat_exec(node_t*n) +{ +} +nodetype_t node_dotat = //.@ +{ +write: node_dotat_write, +read: node_dotat_read, +exec: node_dotat_exec +}; + +// --------------------------- x.*y ----------------------------------- + +typedcode_t node_dotstar_write(node_t*n) +{ +} +typedcode_t node_dotstar_read(node_t*n) +{ +} +code_t* node_dotstar_exec(node_t*n) +{ +} +nodetype_t node_dotstar = //.* +{ +write: node_dotstar_write, +read: node_dotstar_read, +exec: node_dotstar_exec +}; + +// -------------------------- x.(y) ----------------------------------- + +typedcode_t node_filter_write(node_t*n) +{ +} +typedcode_t node_filter_read(node_t*n) +{ +} +code_t* node_filter_exec(node_t*n) +{ +} +nodetype_t node_filter = //.( +{ +write: node_filter_write, +read: node_filter_read, +exec: node_filter_exec +}; + +// ------------------------ x(y1,...,yn) ------------------------------ + +typedcode_t node_call_write(node_t*n) +{ +} +typedcode_t node_call_read(node_t*n) +{ +} +code_t* node_call_exec(node_t*n) +{ +} +nodetype_t node_call = //functioncall +{ +write: node_call_write, +read: node_call_read, +exec: node_call_exec +}; + +// ------------------------------ @x ---------------------------------------- + +typedcode_t node_at_write(node_t*n) +{ +} +typedcode_t node_at_read(node_t*n) +{ +} +code_t* node_at_exec(node_t*n) +{ +} +nodetype_t node_at = //@ +{ +write: node_at_write, +read: node_at_read, +exec: node_at_exec +}; + +// ---------------------------- x.ns::y ---------------------------------------- + +typedcode_t node_dotns_write(node_t*n) +{ +} +typedcode_t node_dotns_read(node_t*n) +{ +} +code_t* node_dotns_exec(node_t*n) +{ +} +nodetype_t node_dotns = //.:: +{ +write: node_dotns_write, +read: node_dotns_read, +exec: node_dotns_exec +}; +#endif + +// ------------------------ constant ------------------------------ + +typedcode_t node_const_write(node_t*n) +{ + syntaxerror("can't assign a value to a constant"); +} +typedcode_t node_const_read(node_t*n) +{ + constant_t*v = n->value; + code_t*c=0; + classinfo_t*t=0; + switch(v->type) { + case CONSTANT_INT: + if(v->i>-128 && v->i<128) { + c = abc_pushbyte(0,v->i); + } else if(v->i>=-32768 && v->i<32768) { + c = abc_pushshort(0,v->i); + } else { + c = abc_pushint(0,v->i); + } + t = TYPE_INT; + break; + case CONSTANT_UINT: + c = abc_pushuint(0,v->u); + if(v->u<128) { + c = abc_pushbyte(0,v->u); + } else if(v->u<32768) { + c = abc_pushshort(0,v->u); + } else { + c = abc_pushint(0,v->u); + } + t = TYPE_UINT; + break; + case CONSTANT_FLOAT: + c = abc_pushdouble(0,v->f); + t = TYPE_FLOAT; + break; + case CONSTANT_TRUE: + c = abc_pushtrue(0); + t = TYPE_BOOLEAN; + break; + case CONSTANT_FALSE: + c = abc_pushfalse(0); + t = TYPE_BOOLEAN; + break; + case CONSTANT_NULL: + c = abc_pushnull(0); + t = TYPE_NULL; + break; + case CONSTANT_STRING: + c = abc_pushstring2(0,v->s); + t = TYPE_STRING; + break; + case CONSTANT_UNDEFINED: + c = abc_pushundefined(0); + t = 0; + break; + case CONSTANT_NAMESPACE: + case CONSTANT_NAMESPACE_PACKAGE: + case CONSTANT_NAMESPACE_PACKAGEINTERNAL: + case CONSTANT_NAMESPACE_PROTECTED: + case CONSTANT_NAMESPACE_EXPLICIT: + case CONSTANT_NAMESPACE_STATICPROTECTED: + case CONSTANT_NAMESPACE_PRIVATE: + c = abc_pushnamespace(0, v->ns); + break; + default: syntaxerror("invalid constant"); + } + RET; +} + +code_t* node_const_exec(node_t*n) +{ + return 0; +} +nodetype_t node_const = +{ +name: "const", +flags:0, +write: node_const_write, +read: node_const_read, +exec: node_const_exec +}; + +// ------------------------ code node ------------------------------ + +typedcode_t node_code_write(node_t*n) +{ + syntaxerror("not implemented yet"); +} +typedcode_t node_code_read(node_t*n) +{ + /* TODO: this dup might be unnecessary- n->code.c is only read out once */ + typedcode_t t; + t.c = code_dup(n->code.c); + t.t = n->code.t; + return t; +} +code_t* node_code_exec(node_t*n) +{ + code_t*c = code_dup(n->code.c); + c = cut_last_push(c); + return c; +} +nodetype_t node_code = +{ +name: "code", +flags:0, +write: node_code_write, +read: node_code_read, +exec: node_code_exec +}; + +// ------------------------ code node ------------------------------ + +typedcode_t node_dummy_write(node_t*n) +{ + syntaxerror("not implemented yet"); +} +typedcode_t node_dummy_read(node_t*n) +{ + typedcode_t t; + t.c = abc_pushundefined(0); + t.t = 0; + return t; +} +code_t* node_dummy_exec(node_t*n) +{ + return 0; +} +nodetype_t node_dummy = +{ +name: "dummy", +flags:0, +write: node_dummy_write, +read: node_dummy_read, +exec: node_dummy_exec +}; + +// ======================== node handling ============================== + +node_t* mkdummynode() +{ + node_t*n = (node_t*)rfx_calloc(sizeof(node_t)); + n->type = &node_dummy; + return n; +} + +node_t* mkconstnode(constant_t*c) +{ + node_t*n = (node_t*)malloc(sizeof(node_t)); + n->type = &node_const; + n->parent = 0; + n->value = c; + return n; +} + +node_t* mkcodenode(typedcode_t c) +{ + node_t*n = (node_t*)malloc(sizeof(node_t)); + n->type = &node_code; + n->parent = 0; + n->code = c; + return n; +} + +node_t* mkmultinode(nodetype_t*t, node_t*one) +{ + node_t*n = (node_t*)malloc(sizeof(node_t)); + n->type = t; + n->parent = 0; + n->child = (node_t**)malloc(sizeof(node_t*)*1); + n->child[0] = one; + n->num_children = 1; + return n; +} + +node_t* multinode_extend(node_t*n, node_t*add) +{ + n->child = realloc(n->child, (n->num_children+1)*sizeof(node_t*)); + n->child[n->num_children] = add; + n->num_children++; + return n; +} + +node_t* mknode1(nodetype_t*t, node_t*node) +{ + node_t*n = (node_t*)malloc(sizeof(node_t)+sizeof(node_t*)*2); + node_t**x = (node_t**)&n[1]; + n->type = t; + n->parent = 0; + n->child = x; + n->num_children = 1; + x[0] = node; + x[1] = 0; + return n; +}; + +node_t* mknode2(nodetype_t*t, node_t*left, node_t*right) +{ + node_t*n = (node_t*)malloc(sizeof(node_t)+sizeof(node_t*)*3); + node_t**x = (node_t**)&n[1]; + n->type = t; + n->parent = 0; + n->child = x; + n->num_children = 2; + x[0] = left; + x[1] = right; + x[2] = 0; + return n; +} +node_t* mknode3(nodetype_t*t, node_t*one, node_t*two, node_t*three) +{ + node_t*n = (node_t*)malloc(sizeof(node_t)+sizeof(node_t*)*4); + node_t**x = (node_t**)&n[1]; + n->type = t; + n->parent = 0; + n->child = x; + n->num_children = 3; + x[0] = one; + x[1] = two; + x[2] = three; + x[3] = 0; + return n; +} + +void node_free(node_t*n) +{ + int t; + if(n->type == &node_const) { + constant_free(n->value);n->value = 0; + } + else if(n->type == &node_code) { + code_free(n->code.c);n->code.c = 0; + } + else for(t=0;tnum_children;t++) { + node_free(n->child[t]);n->child[t] = 0; + } + free(n); +} + +typedcode_t node_read(node_t*n) +{ + typedcode_t t = n->type->read(n); + node_free(n); + return t; +} +code_t* node_exec(node_t*n) +{ + code_t*c = n->type->exec(n); + node_free(n); + return c; +} + +/* + | + +-add + | | + | +-code + | | + | +-code + | | + | + + | + +-div + +*/ +void node_dump2(node_t*n, const char*p1, const char*p2, FILE*fi) +{ + if(n->type->flags&NODE_HAS_CHILDREN) { + fprintf(fi, "%s%s\n", p1, n->type->name); + int t; + char*o2 = malloc(strlen(p2)+3); + strcpy(o2, p2);strcat(o2, "| "); + char*o3 = malloc(strlen(p2)+3); + strcpy(o3, p2);strcat(o3, "+-"); + char*o4 = malloc(strlen(p2)+3); + strcpy(o4, p2);strcat(o4, " "); + + for(t=0;tnum_children;t++) { + fprintf(fi, "%s\n", o2); + node_dump2(n->child[t], o3, tnum_children-1?o2:o4, fi); + } + free(o2); + free(o3); + free(o4); + } else if(n->type == &node_const) { + char*s = constant_tostring(n->value); + fprintf(fi, "%s%s (%s)\n", p1, n->type->name, s); + free(s); + } else if(n->type == &node_code) { + fprintf(fi, "%s%s\n", p1, n->type->name); + code_dump2(n->code.c, 0, 0, (char*)p2, fi); + } else { + fprintf(fi, "%s%s\n", p1, n->type->name); + } +} + +void node_dump(node_t*n) +{ + printf("---------------------------VVVV\n"); + node_dump2(n,"","",stdout); + printf("---------------------------^^^^\n"); +} + diff --git a/lib/as3/expr.h b/lib/as3/expr.h new file mode 100644 index 0000000..e43ecc1 --- /dev/null +++ b/lib/as3/expr.h @@ -0,0 +1,143 @@ +/* ast.h + + Extension module for the rfxswf library. + Part of the swftools package. + + Copyright (c) 2009 Matthias Kramm + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef __expr_h__ +#define __expr_h__ + +#include "../q.h" +#include "code.h" +#include "registry.h" + +DECLARE(node); +DECLARE(typedcode); +DECLARE(nodetype); +DECLARE_LIST(node); + +struct _typedcode { + code_t*c; + classinfo_t*t; +}; + +#define NODE_HAS_CHILDREN 1 + +struct _nodetype { + char*name; + int flags; + typedcode_t (*write)(node_t*n); + typedcode_t (*read)(node_t*n); + code_t* (*exec)(node_t*n); +}; + +extern nodetype_t node_plus; +extern nodetype_t node_minus; +extern nodetype_t node_lplusplus; //++x +extern nodetype_t node_lminusminus; //--x +extern nodetype_t node_rplusplus; //x++ +extern nodetype_t node_rminusminus; //x-- +extern nodetype_t node_multiply; +extern nodetype_t node_div; +extern nodetype_t node_mod; +extern nodetype_t node_dot; +extern nodetype_t node_lt; +extern nodetype_t node_gt; +extern nodetype_t node_le; //<= +extern nodetype_t node_ge; //>= +extern nodetype_t node_eqeq; //== +extern nodetype_t node_eqeqeq; //=== +extern nodetype_t node_noteqeq; //!== +extern nodetype_t node_noteq; //!= +extern nodetype_t node_oror; //|| +extern nodetype_t node_andand; //&& +extern nodetype_t node_not; +extern nodetype_t node_bitnot; +extern nodetype_t node_bitand; +extern nodetype_t node_bitxor; +extern nodetype_t node_bitor; +extern nodetype_t node_shr; //>> +extern nodetype_t node_shl; //<< +extern nodetype_t node_ushr; //>>> +extern nodetype_t node_in; //in +extern nodetype_t node_as; //as +extern nodetype_t node_instanceof; //instanceof +extern nodetype_t node_is; //is +extern nodetype_t node_typeof; //typeof +extern nodetype_t node_void; //void +extern nodetype_t node_neg; //- +extern nodetype_t node_muleq; //*= +extern nodetype_t node_modeq; //%= +extern nodetype_t node_shleq; //<<= +extern nodetype_t node_shreq; //>>= +extern nodetype_t node_ushreq; //>>>= +extern nodetype_t node_diveq; ///= +extern nodetype_t node_bitoreq; //|= +extern nodetype_t node_bitxoreq; //^= +extern nodetype_t node_bitandeq; //&= +extern nodetype_t node_pluseq; //+= +extern nodetype_t node_minuseq; //-= +extern nodetype_t node_assign; //-= +extern nodetype_t node_tenary; //?: +extern nodetype_t node_arraylookup; //x[y] +extern nodetype_t node_comma; //(y1,y2,...,yn) + +extern nodetype_t node_const; +extern nodetype_t node_code; + +#if 0 +extern nodetype_t node_dotdot; //.. +extern nodetype_t node_dotat; //.@ +extern nodetype_t node_dotstar; //.* +extern nodetype_t node_filter; //.( +extern nodetype_t node_new; //new +extern nodetype_t node_delete; //delete +extern nodetype_t node_call; //functioncall +extern nodetype_t node_at; //@ +extern nodetype_t node_dotns; //.:: +#endif + +node_t* multinode_extend(node_t*n, node_t*add); + +struct _node { + nodetype_t*type; + node_t*parent; + union { + struct { + node_t**child; + int num_children; + }; + constant_t*value; + char*id; + typedcode_t code; + }; +}; + +node_t* mkdummynode(); +node_t* mkconstnode(constant_t*c); +node_t* mkcodenode(typedcode_t c); +node_t* mkmultinode(nodetype_t*t, node_t*one); +node_t* mknode1(nodetype_t*t, node_t*node); +node_t* mknode2(nodetype_t*t, node_t*left, node_t*right); +node_t* mknode3(nodetype_t*t, node_t*one, node_t*two, node_t*three); +void node_free(node_t*n); +typedcode_t node_read(node_t*n); //read and free +code_t* node_exec(node_t*n); //exec and free +void node_dump(node_t*n); + +#endif diff --git a/lib/as3/import.c b/lib/as3/import.c index b8a7236..fb3c7de 100644 --- a/lib/as3/import.c +++ b/lib/as3/import.c @@ -176,6 +176,10 @@ static void import_code(void*_abc, char*filename, int pass) trait_list_t*l=0; char is_static = 0; l = cls->traits; + if(!l) { + l = cls->static_traits; + is_static = 1; + } while(l) { trait_t*trait = l->trait; U8 access = trait->name->ns->access; diff --git a/lib/as3/parser.tab.c b/lib/as3/parser.tab.c index a151c33..3c0ca8a 100644 --- a/lib/as3/parser.tab.c +++ b/lib/as3/parser.tab.c @@ -90,7 +90,7 @@ #include "code.h" #include "opcodes.h" #include "compiler.h" -#include "ast.h" +#include "expr.h" extern int a3_lex(); @@ -1952,7 +1952,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar) /* Line 274 of skeleton.m4 */ -#line 3387 "parser.y" +#line 3392 "parser.y" void add_active_url(const char*url) { @@ -2179,16 +2179,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 147 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3104 +#define YYLAST 3105 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 133 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 114 +#define YYNNTS 115 /* YYNRULES -- Number of rules. */ -#define YYNRULES 302 +#define YYNRULES 303 /* YYNRULES -- Number of states. */ -#define YYNSTATES 516 +#define YYNSTATES 517 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -2266,15 +2266,15 @@ static const yytype_uint16 yyprhs[] = 515, 528, 530, 531, 532, 543, 545, 549, 551, 553, 555, 559, 561, 563, 565, 568, 569, 570, 574, 575, 577, 579, 581, 584, 587, 588, 593, 598, 603, 606, - 608, 611, 613, 615, 619, 621, 625, 626, 628, 632, - 638, 640, 642, 644, 646, 648, 650, 652, 654, 658, - 662, 666, 670, 674, 678, 682, 686, 690, 694, 698, - 702, 705, 708, 712, 716, 720, 724, 728, 732, 736, - 740, 744, 748, 752, 756, 760, 764, 768, 773, 776, - 778, 782, 785, 790, 794, 798, 802, 806, 810, 814, - 818, 822, 826, 830, 834, 838, 844, 847, 850, 853, - 856, 860, 863, 868, 874, 878, 884, 888, 890, 893, - 898, 903, 906 + 608, 611, 613, 615, 617, 621, 623, 627, 628, 630, + 634, 640, 642, 644, 646, 648, 650, 652, 654, 656, + 660, 664, 668, 672, 676, 680, 684, 688, 692, 696, + 700, 704, 707, 710, 714, 718, 722, 726, 730, 734, + 738, 742, 746, 750, 754, 758, 762, 766, 770, 775, + 778, 780, 784, 787, 792, 796, 800, 804, 808, 812, + 816, 820, 824, 828, 832, 836, 840, 846, 849, 852, + 855, 858, 862, 865, 870, 876, 880, 886, 890, 892, + 895, 900, 905, 908 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -2288,7 +2288,7 @@ static const yytype_int16 yyrhs[] = 147, 125, 138, 131, -1, 99, -1, 142, -1, -1, 142, 144, -1, 144, -1, 188, -1, 158, -1, 159, -1, 160, -1, 162, -1, 170, -1, 153, -1, 182, - -1, 178, -1, 238, -1, 246, -1, 245, -1, 125, + -1, 178, -1, 239, -1, 247, -1, 246, -1, 125, 142, 131, -1, 125, 131, -1, 99, -1, 143, -1, 149, -1, 164, -1, 165, -1, 235, -1, 180, -1, 147, 125, 142, 131, -1, 144, 99, -1, 144, -1, @@ -2296,15 +2296,15 @@ static const yytype_int16 yyrhs[] = 45, 150, -1, 31, 150, -1, 151, -1, 150, 100, 151, -1, 3, 226, 148, -1, -1, 64, 145, -1, -1, 63, 121, 154, 237, 132, 145, 152, -1, -1, - 149, -1, 238, -1, 45, 3, 226, -1, 3, -1, + 149, -1, 239, -1, 45, 3, 226, -1, 3, -1, 11, 121, -1, 11, 49, 121, -1, 157, 155, 99, - 237, 99, 238, 132, 145, -1, 157, 156, 67, 237, + 237, 99, 239, 132, 145, -1, 157, 156, 67, 237, 132, 145, -1, -1, 12, 121, 161, 237, 132, 145, -1, -1, 13, 163, 145, 12, 121, 237, 132, -1, 65, -1, 65, 3, -1, 29, -1, 29, 3, -1, -1, 167, -1, 169, -1, 167, 169, -1, 168, -1, - 167, 168, -1, 33, 241, 104, 141, -1, 61, 104, - 141, -1, -1, 14, 121, 171, 241, 132, 125, 166, + 167, 168, -1, 33, 242, 104, 141, -1, 61, 104, + 141, -1, -1, 14, 121, 171, 242, 132, 125, 166, 131, -1, -1, 32, 121, 3, 226, 132, 173, 125, 141, 131, -1, -1, 26, 125, 175, 141, 131, -1, 172, -1, 176, 172, -1, 176, -1, 176, 174, -1, @@ -2338,39 +2338,40 @@ static const yytype_int16 yyrhs[] = -1, 221, -1, 223, -1, 224, 100, 223, -1, 223, -1, 114, -1, 35, -1, 104, 225, -1, -1, -1, 121, 228, 132, -1, -1, 229, -1, 230, -1, 236, - -1, 229, 100, -1, 230, 236, -1, -1, 23, 241, - 231, 227, -1, 241, 121, 228, 132, -1, 52, 121, - 228, 132, -1, 62, 241, -1, 41, -1, 41, 237, - -1, 241, -1, 241, -1, 237, 100, 241, -1, 241, - -1, 238, 100, 241, -1, -1, 240, -1, 236, 104, - 236, -1, 240, 100, 236, 104, 236, -1, 219, -1, - 243, -1, 242, -1, 232, -1, 234, -1, 233, -1, - 211, -1, 6, -1, 123, 228, 124, -1, 69, 239, - 131, -1, 241, 108, 241, -1, 241, 109, 241, -1, - 241, 74, 241, -1, 241, 75, 241, -1, 241, 70, - 241, -1, 241, 71, 241, -1, 241, 73, 241, -1, - 241, 72, 241, -1, 241, 87, 241, -1, 241, 88, - 241, -1, 117, 241, -1, 116, 241, -1, 241, 107, - 241, -1, 241, 106, 241, -1, 241, 105, 241, -1, - 241, 96, 241, -1, 241, 95, 241, -1, 241, 94, - 241, -1, 241, 113, 241, -1, 241, 115, 241, -1, - 241, 112, 241, -1, 241, 111, 241, -1, 241, 114, - 241, -1, 241, 67, 241, -1, 241, 68, 241, -1, - 241, 39, 241, -1, 241, 66, 241, -1, 42, 121, - 241, 132, -1, 35, 241, -1, 35, -1, 121, 237, - 132, -1, 111, 241, -1, 241, 123, 241, 124, -1, - 241, 79, 241, -1, 241, 78, 241, -1, 241, 85, - 241, -1, 241, 84, 241, -1, 241, 86, 241, -1, - 241, 77, 241, -1, 241, 76, 241, -1, 241, 83, - 241, -1, 241, 80, 241, -1, 241, 81, 241, -1, - 241, 82, 241, -1, 241, 102, 241, -1, 241, 103, - 241, 104, 241, -1, 241, 91, -1, 241, 90, -1, - 91, 241, -1, 90, 241, -1, 52, 126, 3, -1, - 127, 3, -1, 241, 126, 127, 3, -1, 241, 126, - 3, 89, 3, -1, 241, 92, 3, -1, 241, 126, - 121, 241, 132, -1, 241, 126, 3, -1, 3, -1, - 16, 3, -1, 16, 3, 102, 3, -1, 16, 3, - 102, 5, -1, 189, 244, -1, 21, 16, 223, -1 + -1, 229, 100, -1, 230, 236, -1, -1, 23, 242, + 231, 227, -1, 242, 121, 228, 132, -1, 52, 121, + 228, 132, -1, 62, 242, -1, 41, -1, 41, 237, + -1, 242, -1, 238, -1, 242, -1, 238, 100, 242, + -1, 242, -1, 239, 100, 242, -1, -1, 241, -1, + 236, 104, 236, -1, 241, 100, 236, 104, 236, -1, + 219, -1, 244, -1, 243, -1, 232, -1, 234, -1, + 233, -1, 211, -1, 6, -1, 123, 228, 124, -1, + 69, 240, 131, -1, 242, 108, 242, -1, 242, 109, + 242, -1, 242, 74, 242, -1, 242, 75, 242, -1, + 242, 70, 242, -1, 242, 71, 242, -1, 242, 73, + 242, -1, 242, 72, 242, -1, 242, 87, 242, -1, + 242, 88, 242, -1, 117, 242, -1, 116, 242, -1, + 242, 107, 242, -1, 242, 106, 242, -1, 242, 105, + 242, -1, 242, 96, 242, -1, 242, 95, 242, -1, + 242, 94, 242, -1, 242, 113, 242, -1, 242, 115, + 242, -1, 242, 112, 242, -1, 242, 111, 242, -1, + 242, 114, 242, -1, 242, 67, 242, -1, 242, 68, + 242, -1, 242, 39, 242, -1, 242, 66, 242, -1, + 42, 121, 242, 132, -1, 35, 242, -1, 35, -1, + 121, 238, 132, -1, 111, 242, -1, 242, 123, 242, + 124, -1, 242, 79, 242, -1, 242, 78, 242, -1, + 242, 85, 242, -1, 242, 84, 242, -1, 242, 86, + 242, -1, 242, 77, 242, -1, 242, 76, 242, -1, + 242, 83, 242, -1, 242, 80, 242, -1, 242, 81, + 242, -1, 242, 82, 242, -1, 242, 102, 242, -1, + 242, 103, 242, 104, 242, -1, 242, 91, -1, 242, + 90, -1, 91, 242, -1, 90, 242, -1, 52, 126, + 3, -1, 127, 3, -1, 242, 126, 127, 3, -1, + 242, 126, 3, 89, 3, -1, 242, 92, 3, -1, + 242, 126, 121, 242, 132, -1, 242, 126, 3, -1, + 3, -1, 16, 3, -1, 16, 3, 102, 3, -1, + 16, 3, 102, 5, -1, 189, 245, -1, 21, 16, + 223, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -2398,15 +2399,15 @@ static const yytype_uint16 yyrline[] = 2743, 2760, 2761, 2763, 2762, 2786, 2805, 2819, 2820, 2822, 2823, 2825, 2826, 2827, 2836, 2837, 2841, 2842, 2844, 2845, 2846, 2848, 2852, 2853, 2858, 2859, 2896, 2943, 2964, 2986, - 2989, 2996, 2997, 2998, 3005, 3006, 3011, 3012, 3014, 3020, - 3029, 3030, 3031, 3032, 3033, 3034, 3036, 3041, 3061, 3071, - 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, - 3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, - 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, - 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, - 3120, 3121, 3122, 3123, 3124, 3125, 3127, 3128, 3129, 3130, - 3132, 3147, 3153, 3159, 3165, 3171, 3184, 3242, 3351, 3358, - 3365, 3372, 3396 + 2989, 2996, 2999, 3002, 3005, 3008, 3011, 3016, 3017, 3019, + 3025, 3034, 3035, 3036, 3037, 3038, 3039, 3041, 3046, 3066, + 3076, 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3093, + 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, + 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, + 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, + 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3132, 3133, 3134, + 3135, 3137, 3152, 3158, 3164, 3170, 3176, 3189, 3247, 3356, + 3363, 3370, 3377, 3401 }; #endif @@ -2461,8 +2462,9 @@ static const char *const yytname[] = "TYPE", "MAYBETYPE", "MAYBE_PARAM_VALUES", "MAYBE_EXPRESSION_LIST", "EXPRESSION_LIST", "EXPRESSION_LIST_AND_COMMA", "XX", "NEW", "FUNCTIONCALL", "DELETE", "RETURN", "NONCOMMAEXPRESSION", "EXPRESSION", - "VOIDEXPRESSION", "MAYBE_EXPRPAIR_LIST", "EXPRPAIR_LIST", "E", "MEMBER", - "VAR_READ", "NAMESPACE_ID", "NAMESPACE_DECLARATION", "USE_NAMESPACE", 0 + "COMMA_EXPRESSION", "VOIDEXPRESSION", "MAYBE_EXPRPAIR_LIST", + "EXPRPAIR_LIST", "E", "MEMBER", "VAR_READ", "NAMESPACE_ID", + "NAMESPACE_DECLARATION", "USE_NAMESPACE", 0 }; #endif @@ -2513,15 +2515,15 @@ static const yytype_uint8 yyr1[] = 216, 218, 218, 220, 219, 221, 222, 223, 223, 224, 224, 225, 225, 225, 226, 226, 227, 227, 228, 228, 228, 229, 230, 229, 231, 232, 233, 233, 234, 235, - 235, 236, 237, 237, 238, 238, 239, 239, 240, 240, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 242, 243, 244, 244, - 244, 245, 246 + 235, 236, 237, 238, 238, 239, 239, 240, 240, 241, + 241, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 243, 244, 245, + 245, 245, 246, 247 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -2549,15 +2551,15 @@ static const yytype_uint8 yyr2[] = 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, 3, 0, 1, 3, 5, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 2, 1, 1, 1, 3, 1, 3, 0, 1, 3, + 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 4, 2, 1, - 3, 2, 4, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 5, 2, 2, 2, 2, - 3, 2, 4, 5, 3, 5, 3, 1, 2, 4, - 4, 2, 3 + 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 4, 2, + 1, 3, 2, 4, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 5, 2, 2, 2, + 2, 3, 2, 4, 5, 3, 5, 3, 1, 2, + 4, 4, 2, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -2565,151 +2567,151 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 120, 297, 133, 172, 237, 169, 170, 171, 0, 0, + 120, 298, 133, 172, 238, 169, 170, 171, 0, 0, 78, 0, 0, 126, 124, 125, 0, 132, 0, 131, - 192, 176, 177, 269, 127, 0, 0, 0, 175, 128, - 130, 129, 0, 0, 174, 173, 0, 0, 226, 0, + 192, 176, 177, 270, 127, 0, 0, 0, 175, 128, + 130, 129, 0, 0, 174, 173, 0, 0, 227, 0, 0, 14, 0, 0, 0, 0, 208, 120, 0, 0, 2, 120, 5, 54, 12, 0, 36, 67, 31, 32, 33, 34, 35, 38, 120, 37, 7, 30, 0, 121, - 122, 9, 8, 11, 236, 10, 230, 233, 235, 234, - 39, 224, 232, 231, 41, 40, 0, 0, 72, 76, - 120, 92, 109, 111, 110, 116, 113, 0, 0, 297, - 214, 191, 0, 268, 0, 0, 118, 0, 103, 208, - 0, 218, 65, 0, 0, 227, 221, 289, 288, 271, - 251, 250, 0, 222, 0, 209, 210, 211, 82, 0, + 122, 9, 8, 11, 237, 10, 231, 234, 236, 235, + 39, 225, 233, 232, 41, 40, 0, 0, 72, 76, + 120, 92, 109, 111, 110, 116, 113, 0, 0, 298, + 214, 191, 0, 269, 0, 0, 118, 0, 103, 208, + 0, 218, 65, 0, 0, 228, 221, 290, 289, 272, + 252, 251, 0, 223, 0, 209, 210, 211, 82, 0, 106, 219, 0, 80, 44, 43, 120, 45, 29, 0, - 46, 47, 48, 50, 0, 49, 291, 1, 6, 120, - 297, 0, 68, 0, 0, 69, 53, 108, 0, 188, - 0, 161, 0, 160, 162, 301, 123, 0, 0, 0, + 46, 47, 48, 50, 0, 49, 292, 1, 6, 120, + 298, 0, 68, 0, 0, 69, 53, 108, 0, 188, + 0, 161, 0, 160, 162, 302, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 287, 286, 0, 0, 0, 0, 0, 0, 0, + 0, 288, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 55, 73, 0, 0, 0, 120, 114, 0, - 195, 0, 198, 197, 302, 206, 178, 0, 0, 0, - 27, 0, 290, 0, 0, 239, 0, 0, 270, 238, - 212, 213, 83, 205, 59, 60, 105, 220, 58, 81, - 42, 28, 120, 0, 205, 0, 0, 52, 298, 187, - 186, 0, 134, 136, 0, 225, 265, 266, 263, 264, - 244, 245, 247, 246, 242, 243, 279, 278, 274, 273, - 281, 282, 283, 280, 276, 275, 277, 248, 249, 294, - 257, 256, 255, 284, 0, 254, 253, 252, 240, 241, - 261, 260, 258, 262, 259, 0, 0, 296, 0, 0, - 0, 0, 0, 25, 0, 120, 17, 23, 0, 20, - 19, 22, 21, 120, 112, 0, 208, 215, 167, 0, - 0, 179, 183, 107, 119, 196, 267, 0, 26, 217, - 0, 228, 0, 223, 0, 57, 0, 120, 13, 57, - 0, 0, 0, 0, 0, 138, 0, 0, 205, 163, - 164, 0, 216, 272, 0, 0, 292, 120, 0, 0, - 117, 18, 120, 0, 0, 0, 0, 185, 180, 205, - 0, 0, 120, 0, 203, 202, 201, 204, 0, 62, - 61, 51, 0, 120, 299, 300, 178, 135, 0, 0, - 199, 137, 142, 57, 0, 285, 293, 295, 77, 0, - 84, 0, 115, 207, 168, 167, 0, 0, 182, 0, - 0, 98, 102, 100, 104, 63, 229, 56, 0, 75, - 0, 139, 140, 0, 120, 166, 165, 79, 0, 0, - 0, 85, 88, 86, 24, 184, 193, 181, 96, 0, - 99, 101, 120, 66, 120, 205, 120, 200, 0, 157, - 0, 0, 120, 155, 0, 27, 93, 89, 87, 27, - 27, 205, 64, 74, 0, 148, 152, 0, 0, 0, - 120, 146, 150, 151, 158, 188, 143, 156, 27, 91, - 0, 0, 0, 189, 120, 141, 147, 0, 90, 194, - 97, 94, 27, 0, 0, 0, 0, 149, 178, 27, - 190, 0, 0, 205, 95, 159 + 195, 0, 198, 197, 303, 206, 178, 0, 222, 0, + 0, 27, 0, 291, 0, 0, 240, 0, 0, 271, + 239, 212, 213, 83, 205, 59, 60, 105, 220, 58, + 81, 42, 28, 120, 0, 205, 0, 0, 52, 299, + 187, 186, 0, 134, 136, 0, 226, 266, 267, 264, + 265, 245, 246, 248, 247, 243, 244, 280, 279, 275, + 274, 282, 283, 284, 281, 277, 276, 278, 249, 250, + 295, 258, 257, 256, 285, 0, 255, 254, 253, 241, + 242, 262, 261, 259, 263, 260, 0, 0, 297, 0, + 0, 0, 0, 0, 25, 0, 120, 17, 23, 0, + 20, 19, 22, 21, 120, 112, 0, 208, 215, 167, + 0, 0, 179, 183, 107, 119, 196, 268, 0, 26, + 217, 0, 229, 0, 224, 0, 57, 0, 120, 13, + 57, 0, 0, 0, 0, 0, 138, 0, 0, 205, + 163, 164, 0, 216, 273, 0, 0, 293, 120, 0, + 0, 117, 18, 120, 0, 0, 0, 0, 185, 180, + 205, 0, 0, 120, 0, 203, 202, 201, 204, 0, + 62, 61, 51, 0, 120, 300, 301, 178, 135, 0, + 0, 199, 137, 142, 57, 0, 286, 294, 296, 77, + 0, 84, 0, 115, 207, 168, 167, 0, 0, 182, + 0, 0, 98, 102, 100, 104, 63, 230, 56, 0, + 75, 0, 139, 140, 0, 120, 166, 165, 79, 0, + 0, 0, 85, 88, 86, 24, 184, 193, 181, 96, + 0, 99, 101, 120, 66, 120, 205, 120, 200, 0, + 157, 0, 0, 120, 155, 0, 27, 93, 89, 87, + 27, 27, 205, 64, 74, 0, 148, 152, 0, 0, + 0, 120, 146, 150, 151, 158, 188, 143, 156, 27, + 91, 0, 0, 0, 189, 120, 141, 147, 0, 90, + 194, 97, 94, 27, 0, 0, 0, 0, 149, 178, + 27, 190, 0, 0, 205, 95, 159 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 49, 50, 51, 52, 314, 315, 316, 337, 338, - 137, 138, 157, 317, 139, 389, 140, 248, 245, 453, - 56, 233, 153, 154, 57, 58, 59, 60, 214, 61, - 90, 141, 142, 440, 441, 442, 443, 62, 216, 421, - 505, 422, 470, 423, 424, 63, 230, 143, 64, 65, - 220, 221, 66, 323, 217, 67, 144, 69, 70, 355, - 357, 399, 319, 456, 320, 434, 479, 480, 481, 461, - 462, 463, 164, 321, 264, 359, 360, 377, 74, 330, - 331, 332, 261, 322, 502, 102, 76, 469, 222, 223, - 386, 401, 387, 345, 327, 124, 125, 126, 225, 77, - 78, 79, 145, 127, 122, 80, 114, 115, 81, 82, - 83, 165, 84, 85 + -1, 49, 50, 51, 52, 315, 316, 317, 338, 339, + 137, 138, 157, 318, 139, 390, 140, 249, 246, 454, + 56, 234, 153, 154, 57, 58, 59, 60, 214, 61, + 90, 141, 142, 441, 442, 443, 444, 62, 216, 422, + 506, 423, 471, 424, 425, 63, 231, 143, 64, 65, + 220, 221, 66, 324, 217, 67, 144, 69, 70, 356, + 358, 400, 320, 457, 321, 435, 480, 481, 482, 462, + 463, 464, 164, 322, 265, 360, 361, 378, 74, 331, + 332, 333, 262, 323, 503, 102, 76, 470, 222, 223, + 387, 402, 388, 346, 328, 124, 125, 126, 225, 77, + 78, 79, 145, 127, 227, 228, 80, 114, 115, 81, + 82, 83, 165, 84, 85 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -381 +#define YYPACT_NINF -406 static const yytype_int16 yypact[] = { - 1660, -45, -381, -381, -381, -381, -381, -381, -36, -74, - -381, -47, 55, -381, -381, -381, 68, -381, 2103, -381, - 62, -381, -381, 2158, -381, -28, 117, -9, -381, -381, - -381, -381, 5, -81, -381, -381, 2103, 8, 2103, 2103, - 2103, -381, 2103, 2103, 2103, 2103, 2103, 628, 123, 131, - -381, 499, -381, -381, -381, 7, -381, 2033, -381, -381, - -381, -381, -381, -381, 1910, -381, -381, -381, 222, 250, - -381, -381, -381, -381, -381, -381, -381, -381, -381, -381, - 35, 2612, -381, -381, -381, -381, 133, 19, -381, -381, - 1910, -381, -381, -381, -381, -381, -381, -89, 117, -381, - -53, -381, 20, 167, 2103, 18, -381, 2103, -381, 2103, - 135, 167, -381, 38, 14, 43, 2612, 167, 167, 594, - 167, 167, -76, 2612, 22, 48, 2103, -381, 199, 201, - 2103, 2103, 201, 206, -381, -381, 757, -381, -381, 85, - -381, -381, -381, -381, 196, -381, -381, -381, -381, 1015, - 147, 223, -381, 126, 163, 35, 134, -381, 229, 32, - 232, -381, 233, -381, -381, -381, -381, 2103, 2103, 2103, - 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, - 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, - 2103, -381, -381, 236, 2103, 2103, 2103, 2103, 2103, 2103, - 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, - 2103, 12, -381, -381, 2103, 228, 2103, 1144, -381, 117, - 115, 118, -381, -381, -381, 124, 16, -54, 86, 2216, - 1785, 114, -381, 2103, 2103, -381, 2103, 2103, -381, -381, - -381, -381, -381, 152, 173, -381, 178, 178, 173, -381, - -381, -381, 1910, 132, 152, 2103, 2103, -381, 181, -381, - -381, 282, 239, 247, 283, 2612, 328, 491, 491, 491, - 2978, 2978, 2978, 2978, 328, 328, 2612, 2612, 2612, 2612, - 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2673, 2734, -381, - 217, 217, 217, 2612, 2429, 2795, 2856, 2917, 328, 328, - 594, 594, 167, 167, 167, 157, 2490, 212, 2103, 309, - -25, 193, 2287, -381, 187, 1273, -381, -381, 194, -381, - -381, -381, -381, 1144, -381, 117, 2103, -381, -40, 317, - 189, 227, -381, -381, -381, 207, -381, 191, 1785, -381, - -21, -381, 231, 2612, 64, 234, 201, 886, -381, -39, - 23, -17, 99, 218, 117, 327, 117, 219, 152, 245, - -381, 2103, -381, -381, 344, 2358, -381, 1910, 2103, 224, - -381, -381, 1144, 220, 221, 33, 64, -381, -381, 152, - 17, 60, 1910, 2103, -381, -381, -381, -381, 2103, -381, - -381, -381, 2103, 1910, -381, -381, 16, -381, 117, 225, - -381, 252, -381, 234, 283, 2612, -381, -381, -381, -5, - 15, 226, -381, -381, -381, 256, 238, 317, -381, 240, - 243, -381, -381, 60, -381, 296, -381, -381, 47, -381, - 244, 252, -381, 117, 257, -381, -381, -381, 2103, 264, - 230, 15, -381, -381, -381, -381, -381, -381, -381, 374, - -381, -381, 1910, -381, 1910, 152, 1402, -381, 375, -381, - 354, 254, 362, -381, 2551, 1785, -381, -381, -381, 1785, - 1785, 152, -381, -381, 258, -381, -381, 262, 235, 259, - 1531, -381, -381, -381, -381, 32, -381, -381, 1785, -381, - 260, 261, 263, -381, 1402, -381, -381, 386, -381, -381, - -381, -381, 1785, 266, 272, 269, 270, -381, 16, 1785, - -381, 268, 273, 152, -381, -381 + 1661, -65, -406, -406, -406, -406, -406, -406, -10, -85, + -406, -59, 54, -406, -406, -406, 66, -406, 2104, -406, + 101, -406, -406, 2159, -406, -9, 89, -6, -406, -406, + -406, -406, -3, -51, -406, -406, 2104, 7, 2104, 2104, + 2104, -406, 2104, 2104, 2104, 2104, 2104, 629, 120, 130, + -406, 500, -406, -406, -406, -1, -406, 2034, -406, -406, + -406, -406, -406, -406, 1911, -406, -406, -406, 244, 364, + -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, + 31, 2613, -406, -406, -406, -406, 129, 12, -406, -406, + 1911, -406, -406, -406, -406, -406, -406, -81, 89, -406, + -54, -406, 18, 119, 2104, 8, -406, 2104, -406, 2104, + 132, 119, -406, 36, 5, 43, 2613, 119, 119, 595, + 119, 119, -53, 2613, 21, 46, 2104, -406, 144, 145, + 2104, 2104, 145, 177, -406, -406, 758, -406, -406, 77, + -406, -406, -406, -406, 188, -406, -406, -406, -406, 1016, + 140, 209, -406, 115, 148, 31, 117, -406, 217, 14, + 223, -406, 224, -406, -406, -406, -406, 2104, 2104, 2104, + 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, + 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, + 2104, -406, -406, 227, 2104, 2104, 2104, 2104, 2104, 2104, + 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, + 2104, 17, -406, -406, 2104, 219, 2104, 1145, -406, 89, + 107, 108, -406, -406, -406, 118, 15, 104, 141, 64, + 2217, 1786, 116, -406, 2104, 2104, -406, 2104, 2104, -406, + -406, -406, -406, -406, 143, 156, -406, -406, -406, 156, + -406, -406, -406, 1911, 126, 143, 2104, 2104, -406, 157, + -406, -406, 255, 208, 211, 259, 2613, 492, 328, 328, + 328, 2979, 2979, 2979, 2979, 492, 492, 2613, 2613, 2613, + 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2674, 2735, + -406, 354, 354, 354, 2613, 2430, 2796, 2857, 2918, 492, + 492, 595, 595, 119, 119, 119, 135, 2491, 181, 2104, + 269, 149, 152, 2288, -406, 151, 1274, -406, -406, 155, + -406, -406, -406, -406, 1145, -406, 89, 2104, -406, -19, + 281, 154, 191, -406, -406, -406, 162, -406, 163, 1786, + -406, 161, -406, 193, 2613, 86, 196, 145, 887, -406, + -24, 200, 169, 124, 174, 89, 287, 89, 178, 143, + 213, -406, 2104, -406, -406, 306, 2359, -406, 1911, 2104, + 190, -406, -406, 1145, 189, 187, 32, 86, -406, -406, + 143, 16, 94, 1911, 2104, -406, -406, -406, -406, 2104, + -406, -406, -406, 2104, 1911, -406, -406, 15, -406, 89, + 197, -406, 228, -406, 196, 259, 2613, -406, -406, -406, + 204, 13, 198, -406, -406, -406, 235, 214, 281, -406, + 215, 220, -406, -406, 94, -406, 257, -406, -406, -37, + -406, 212, 228, -406, 89, 231, -406, -406, -406, 2104, + 239, 222, 13, -406, -406, -406, -406, -406, -406, -406, + 342, -406, -406, 1911, -406, 1911, 143, 1403, -406, 343, + -406, 323, 226, 286, -406, 2552, 1786, -406, -406, -406, + 1786, 1786, 143, -406, -406, 225, -406, -406, 229, 221, + 230, 1532, -406, -406, -406, -406, 14, -406, -406, 1786, + -406, 232, 233, 234, -406, 1403, -406, -406, 348, -406, + -406, -406, -406, 1786, 238, 237, 240, 246, -406, 15, + 1786, -406, 247, 249, 143, -406, -406 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -381, -381, 265, -381, 355, -301, -381, 90, -254, -30, - 1, -56, -83, 49, 2, 10, 358, 287, 65, -381, - -381, -381, -381, -381, -381, -381, -381, -381, -381, -381, - -381, -381, -381, -381, -381, -24, -20, -381, -381, -11, - -381, 6, -381, -381, -381, -381, -381, -381, -381, -381, - 9, 93, -381, -381, -381, -381, 0, -381, 357, -381, - -381, -381, 50, -381, 57, -381, -67, -381, -52, -381, - -381, -32, -381, 3, -381, -381, 27, 29, 58, -380, - -381, -311, -50, 4, -381, -381, -381, -381, -381, 406, - -92, 40, 69, -242, -381, -95, -381, -381, -381, -381, - -381, -381, -381, -29, -6, -46, -381, -381, -13, -381, - -381, -381, -381, -381 + -406, -406, 203, -406, 308, -296, -406, 62, -405, -30, + 1, -56, -83, 49, 2, -23, 330, 260, 44, -406, + -406, -406, -406, -406, -406, -406, -406, -406, -406, -406, + -406, -406, -406, -406, -406, -52, -50, -406, -406, -31, + -406, -26, -406, -406, -406, -406, -406, -406, -406, -406, + 9, 76, -406, -406, -406, -406, 0, -406, 331, -406, + -406, -406, 50, -406, 56, -406, -91, -406, -76, -406, + -406, -57, -406, 3, -406, -406, 10, -8, 33, -384, + -406, -308, -79, 4, -406, -406, -406, -406, -406, 387, + -92, 22, 37, -243, -406, -95, -406, -406, -406, -406, + -406, -406, -406, -29, -115, 371, -46, -406, -406, -13, + -406, -406, -406, -406, -406 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -2720,81 +2722,94 @@ static const yytype_int16 yypgoto[] = static const yytype_int16 yytable[] = { 68, 53, 55, 73, 75, 100, 224, 215, 156, 113, - 103, 155, 349, 87, 231, 307, 430, 136, 378, 328, - 328, 96, 373, 111, 237, 116, 117, 118, -70, 119, - 120, 121, 123, 116, 156, 96, 218, 219, 3, 193, - 109, 5, 6, 7, 86, 110, 237, 89, 438, 54, - 71, 68, 53, 55, 73, 75, 238, 72, 92, 93, - 21, 22, 375, 388, 376, 101, 259, 92, 93, 418, - 210, 411, 94, 211, 91, 237, 439, 28, 333, 237, - 251, 94, 260, 237, 98, 88, 419, 34, 35, 92, - 93, 123, 420, 104, 229, 237, 116, 241, 227, 384, - 54, 71, 394, 94, 395, 97, 447, 367, 72, 329, - 417, 382, 107, 116, 305, 393, 403, 123, 123, 105, - 92, 93, 392, 237, 246, 247, 146, 437, 511, 112, - 108, 147, 149, 308, 94, 167, 212, 416, 232, 309, - 213, 226, 234, 236, 228, 235, 239, 167, 240, 68, - 53, 55, 73, 75, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 385, 454, - 95, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 116, 306, 54, 71, - 334, 123, 242, 312, 243, 341, 72, 342, 310, 249, - 252, 489, 158, 474, -71, 490, 491, 68, 53, 318, - 123, 116, 347, 116, 343, 255, 254, 340, 324, 492, - 256, 374, 258, 257, 498, 262, 263, 335, 158, 289, - 311, -113, 123, 123, 325, 326, 339, 159, 506, 350, - 351, 158, 160, 161, 2, 512, 344, 191, 192, 193, - 159, 2, 397, 348, 400, 162, 161, 163, 13, 14, - 15, 515, 17, 346, 19, 13, 14, 15, 237, 17, - 163, 19, 251, 352, 408, 353, 358, 24, 209, 362, - 210, 251, 354, 211, 24, 365, 29, 30, 31, 425, - 356, 364, 458, 29, 30, 31, 400, 191, 192, 193, - 429, 156, 366, 116, 368, 68, 53, 318, 370, 372, - 328, 379, 381, 68, 53, 318, 156, 380, 204, 205, - 206, 207, 208, -112, 335, 383, 388, 156, 209, 396, - 210, 457, 398, 211, 402, 404, 428, 406, 405, 410, - 432, 412, 433, 413, 426, 123, 459, 444, 375, 427, - 452, 466, 409, 446, 449, 448, 2, -155, 465, 472, - 116, 473, 68, 53, 318, 116, 455, 471, 484, 485, - 13, 14, 15, 493, 17, 486, 19, 494, -153, 504, - 495, 499, 500, 508, 509, 501, 156, 507, 156, 24, - 513, 510, -155, -155, 514, 371, 148, 458, 29, 30, - 31, 390, 450, 435, 253, 152, 244, 467, 191, 192, - 193, 468, 194, 195, 196, 464, 166, 503, 496, 451, - 487, 436, 106, 414, 460, 497, -155, -155, 431, 204, - 205, 206, 207, 208, 445, 415, 0, 0, 0, 209, - 0, 210, 0, 0, 211, 0, 478, 476, 477, 482, - 483, 459, 460, 0, 0, 0, 0, 0, 0, 0, + 103, 155, 350, 431, 232, 247, 248, 136, 329, 329, + 308, 96, 379, 111, 86, 116, 117, 118, 374, 119, + 120, 121, 123, 116, 156, 96, 89, 3, 193, 87, + 5, 6, 7, -70, 218, 219, 439, 238, 260, 54, + 71, 68, 53, 55, 73, 75, 72, 92, 93, 21, + 22, 490, 91, 167, 261, 491, 492, 92, 93, 210, + 109, 94, 211, 419, 440, 110, 28, 412, 389, 239, + 252, 94, 98, 376, 499, 377, 34, 35, 97, 92, + 93, 123, 92, 93, 230, 455, 116, 242, 507, 311, + 54, 71, 105, 94, 101, 513, 94, 72, 330, 418, + 448, 88, 104, 116, 306, 107, 404, 123, 123, 341, + 420, 385, 108, 146, 149, 512, 421, 395, 112, 396, + 147, 167, 212, 213, 229, 233, 236, 417, 309, 226, + 235, 351, 352, 237, 310, 240, 241, 243, 244, 68, + 53, 55, 73, 75, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 335, 95, + 250, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 116, 307, 54, 71, + 386, 123, 253, 313, 158, 72, 342, -71, 343, 191, + 192, 193, 255, 475, 256, 257, 258, 68, 53, 319, + 259, 123, 116, 348, 116, 344, 263, 264, 325, 493, + 290, 312, 375, -113, 326, 2, 334, 158, 336, 327, + 209, 238, 210, 123, 123, 211, 159, 345, 340, 13, + 14, 15, 161, 17, 410, 19, 347, 349, 354, 353, + 158, 355, 359, 398, 357, 401, 163, 363, 24, 159, + 365, 516, 367, 369, 160, 161, 459, 29, 30, 31, + 373, 368, 371, 252, 329, 409, 380, 162, -112, 163, + 2, 381, 252, 383, 382, 397, 366, 384, 389, 393, + 426, 394, 399, 403, 13, 14, 15, 401, 17, 407, + 19, 430, 156, 405, 116, 411, 68, 53, 319, 414, + 413, 453, 433, 24, 68, 53, 319, 156, 434, 445, + 460, 459, 29, 30, 31, 336, 438, 376, 156, 447, + 449, 450, 458, 466, 456, 472, 485, 429, 486, 406, + 494, 505, 254, 467, 495, 427, 123, 487, 509, 148, + 428, 496, -153, 500, 501, 510, 502, 168, 2, 508, + 473, 116, 474, 68, 53, 319, 116, 511, 372, 514, + 515, 436, 13, 14, 15, 460, 17, 152, 19, 245, + 468, 391, 469, 451, -155, -155, -155, 156, 452, 156, + 166, 24, 176, 177, 504, 497, 488, 498, 446, 415, + 29, 30, 31, 106, 416, 437, 122, -154, 191, 192, + 193, 432, 194, 195, 196, 0, 465, 0, 0, 0, + 0, 0, 0, 0, 0, 461, 202, 203, 0, 204, + 205, 206, 207, 208, 191, 192, 193, 0, 0, 209, + 0, 210, 0, 0, 211, 0, 0, 479, 477, 478, + 483, 484, 0, 461, 0, 204, 205, 206, 207, 208, + 0, 0, 0, 0, 0, 209, 0, 210, 0, 0, + 211, 479, 477, 478, 483, 484, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 479, 477, 478, 483, 484, + -4, 0, 0, 1, 2, 3, 4, 0, 5, 6, + 7, 8, 9, 10, 11, 0, 0, 12, 13, 14, + 15, 16, 17, 18, 19, 0, 0, 21, 22, 0, + 0, -155, 0, 0, 0, 23, 0, 24, 25, 0, + 26, 0, 27, 0, 28, 0, 29, 30, 31, 0, + 0, 32, 33, 0, 34, 35, 0, 0, 0, 0, + 0, 0, 36, 37, 0, 0, -155, -155, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 478, 476, 477, 482, 483, 0, 0, 0, 0, 0, - 0, 0, 0, -154, 478, 476, 477, 482, 483, -4, - 0, 0, 1, 2, 3, 4, 0, 5, 6, 7, - 8, 9, 10, 11, 0, 0, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 21, 22, 0, 0, - 168, 0, 0, 0, 23, 0, 24, 25, 0, 26, - 0, 27, 0, 28, 0, 29, 30, 31, 0, 0, - 32, 33, 0, 34, 35, 0, 0, -155, -155, -155, - 0, 36, 37, 0, 0, 176, 177, 0, 38, 0, + 0, 0, 191, 192, 193, 0, 194, 195, 196, 0, + 39, 40, 0, 0, 0, 0, 0, 0, 0, 41, + -155, -155, 0, 204, 205, 206, 207, 208, 0, 0, + 0, 42, 0, 209, 0, 210, 43, 44, 211, 0, + 0, 45, 0, 46, 0, 47, 0, 48, 0, 0, + 0, -4, 1, 2, 3, 4, 0, 5, 6, 7, + 8, 9, 10, 11, 0, 0, 0, 13, 14, 15, + 16, 17, 18, 19, 20, 0, 21, 22, 128, 0, + 129, 0, 0, 0, 23, 130, 24, 25, 0, 26, + 131, 27, 0, 28, 132, 29, 30, 31, 0, 0, + 32, 33, 0, 34, 35, 191, 192, 193, 0, 0, + 0, 36, 37, 0, 133, 0, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 206, 207, + 208, 0, 0, 0, 0, 0, 209, 0, 210, 39, + 40, 211, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 192, 193, 0, 194, 195, 196, 0, 39, - 40, 0, 0, 0, 0, 0, 0, 0, 41, 202, - 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, - 42, 0, 209, 0, 210, 43, 44, 211, 0, 0, + 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, 0, 47, 0, 48, 0, 0, 0, - -4, 1, 2, 3, 4, 0, 5, 6, 7, 8, + 135, 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 0, 21, 22, 128, 0, 129, 0, 0, 0, 23, 130, 24, 25, 0, 26, 131, 27, 0, 28, 132, 29, 30, 31, 0, 0, 32, - 33, 0, 34, 35, 191, 192, 193, 0, 0, 0, + 33, 0, 34, 35, 0, 0, 0, 0, 0, 0, 36, 37, 0, 133, 0, 0, 0, 38, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 206, 207, 208, - 0, 0, 0, 0, 0, 209, 0, 210, 39, 40, - 211, 0, 0, 0, 0, 0, 0, 134, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, - 0, 46, 0, 47, 0, 48, 0, 0, 0, 135, + 0, 46, 0, 47, 0, 48, 0, 0, 0, 251, 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 0, 21, 22, 128, 0, 129, 0, @@ -2807,22 +2822,22 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, 0, - 46, 0, 47, 0, 48, 0, 0, 0, 250, 1, + 46, 0, 47, 0, 48, 0, 0, 0, 392, 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, - 11, 0, 0, 0, 13, 14, 15, 16, 17, 18, - 19, 20, 0, 21, 22, 128, 0, 129, 0, 0, - 0, 23, 130, 24, 25, 0, 26, 131, 27, 0, - 28, 132, 29, 30, 31, 0, 0, 32, 33, 0, + 11, 0, 0, 12, 13, 14, 15, 16, 17, 18, + 19, 0, 0, 21, 22, 0, 0, 0, 0, 0, + 0, 23, 0, 24, 25, 0, 26, 0, 27, 0, + 28, 0, 29, 30, 31, 0, 0, 32, 33, 0, 34, 35, 0, 0, 0, 0, 0, 0, 36, 37, - 0, 133, 0, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, - 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, - 0, 47, 0, 48, 0, 0, 0, 391, 1, 2, + 0, 47, 0, 48, 0, 0, 0, -3, 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, - 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, + 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 23, 0, 24, 25, 0, 26, 0, 27, 0, 28, 0, 29, 30, 31, 0, 0, 32, 33, 0, 34, @@ -2830,10 +2845,10 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, - 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, 0, - 47, 0, 48, 0, 0, 0, -3, 1, 2, 3, + 47, 0, 48, 0, 0, 0, -15, 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 23, @@ -2843,10 +2858,10 @@ static const yytype_int16 yytable[] = 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, - 0, 0, 0, 313, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, 0, 47, - 0, 48, 0, 0, 0, -15, 1, 2, 3, 4, + 0, 48, 0, 0, 0, -16, 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 23, 0, @@ -2856,10 +2871,10 @@ static const yytype_int16 yytable[] = 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, - 0, 0, 313, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, 0, 47, 0, - 48, 0, 0, 0, -16, 1, 2, 3, 4, 0, + 48, 0, 0, 0, -144, 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 23, 0, 24, @@ -2869,11 +2884,11 @@ static const yytype_int16 yytable[] = 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, - 0, 475, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, 0, 47, 0, 48, - 0, 0, 0, -144, 1, 2, 3, 4, 0, 5, - 6, 7, 8, 9, 10, 11, 0, 0, 0, 13, + 0, -3, 0, -145, 1, 2, 3, 4, 0, 5, + 6, 7, 8, 9, 10, 11, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 23, 0, 24, 25, 0, 26, 0, 27, 0, 28, 0, 29, 30, 31, @@ -2882,85 +2897,65 @@ static const yytype_int16 yytable[] = 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 0, - 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, - 0, 0, 45, 0, 46, 0, 47, 0, 48, 0, - -3, 0, -145, 1, 2, 3, 4, 0, 5, 6, - 7, 8, 9, 10, 11, 0, 0, 12, 13, 14, - 15, 16, 17, 18, 19, 0, 0, 21, 22, 0, - 0, 0, 0, 0, 0, 23, 0, 24, 25, 0, - 26, 0, 27, 0, 28, 0, 29, 30, 31, 0, - 0, 32, 33, 0, 34, 35, 0, 0, 0, 0, - 0, 0, 36, 37, 0, 0, 0, 0, 0, 38, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 39, 40, 0, 0, 0, 0, 0, 0, 0, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, - 0, 45, 0, 46, 0, 47, 0, 48, 1, 2, - 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, - 0, -120, 0, 13, 14, 15, 16, 17, 18, 19, - 20, 0, 21, 22, 128, 0, 129, 0, 0, 0, - 23, 130, 24, 25, 0, 26, 131, 27, 0, 28, - 132, 29, 30, 31, 0, 0, 32, 33, 0, 34, - 35, 0, 0, 0, 0, 0, 0, 36, 37, 0, - 133, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 46, 0, 47, 0, 48, 1, + 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, + 11, 0, -120, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 0, 21, 22, 128, 0, 129, 0, 0, + 0, 23, 130, 24, 25, 0, 26, 131, 27, 0, + 28, 132, 29, 30, 31, 0, 0, 32, 33, 0, + 34, 35, 0, 0, 0, 0, 0, 0, 36, 37, + 0, 133, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, - 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, - 0, 43, 44, 0, 0, 0, 45, 0, 46, 0, - 47, 0, 48, 1, 2, 3, 4, 0, 5, 6, - 7, 8, 9, 10, 11, 0, 0, 0, 13, 14, - 15, 16, 17, 18, 19, 20, 0, 21, 22, 128, - 0, 129, 0, 0, 0, 23, 130, 24, 25, 0, - 26, 131, 27, 0, 28, 132, 29, 30, 31, 0, - 0, 32, 33, 0, 34, 35, 0, 0, 0, 0, - 0, 0, 36, 37, 0, 133, 0, 0, 0, 38, + 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, + 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, + 0, 0, 43, 44, 0, 0, 0, 45, 0, 46, + 0, 47, 0, 48, 1, 2, 3, 4, 0, 5, + 6, 7, 8, 9, 10, 11, 0, 0, 0, 13, + 14, 15, 16, 17, 18, 19, 20, 0, 21, 22, + 128, 0, 129, 0, 0, 0, 23, 130, 24, 25, + 0, 26, 131, 27, 0, 28, 132, 29, 30, 31, + 0, 0, 32, 33, 0, 34, 35, 0, 0, 0, + 0, 0, 0, 36, 37, 0, 133, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 40, 0, 0, 0, 0, 0, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42, 0, 0, 0, 0, 43, 44, 0, + 0, 0, 45, 0, 46, 0, 47, 150, 48, 3, + 4, 0, 5, 6, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 20, + 0, 21, 22, 0, 0, 129, 0, 0, 0, 23, + 0, 0, 0, 0, 0, 0, 27, 0, 28, 151, + 0, 0, 0, 0, 0, 0, 33, 0, 34, 35, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 99, 0, 3, + 4, 0, 5, 6, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 40, 0, 18, 0, 20, + 0, 21, 22, 0, 0, 0, 0, 0, 0, 23, + 0, 0, 0, 0, 0, 42, 27, 0, 28, 0, + 43, 44, 0, 0, 0, 45, 33, 46, 34, 35, + 0, 48, 99, 0, 3, 4, 36, 5, 6, 7, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 18, 0, 20, 0, 21, 22, 0, 0, + 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 0, 33, 0, 34, 35, 42, 0, 0, 0, 0, + 43, 44, 0, 0, 0, 45, 0, 46, 38, 0, + 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 39, 40, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42, 0, 0, 0, 0, 43, 44, 0, 0, - 0, 45, 0, 46, 0, 47, 150, 48, 3, 4, - 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 0, 20, 0, - 21, 22, 0, 0, 129, 0, 0, 0, 23, 0, - 0, 0, 0, 0, 0, 27, 0, 28, 151, 0, - 0, 0, 0, 0, 0, 33, 0, 34, 35, 0, - 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, - 0, 0, 38, 0, 0, 0, 99, 0, 3, 4, - 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 39, 40, 0, 18, 0, 20, 0, - 21, 22, 0, 0, 0, 0, 0, 0, 23, 0, - 0, 0, 0, 0, 42, 27, 0, 28, 0, 43, - 44, 0, 0, 0, 45, 33, 46, 34, 35, 0, - 48, 99, 0, 3, 4, 36, 5, 6, 7, 0, - 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 20, 0, 21, 22, 0, 0, 0, - 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, - 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 34, 35, 42, 0, 0, 0, 0, 43, - 44, 0, 0, 0, 45, 0, 46, 38, 0, 0, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, - 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, - 0, 46, 169, 170, 171, 48, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 0, 191, 192, 193, 0, - 194, 195, 196, 0, 0, 0, 0, 0, 197, 198, - 0, 199, 200, 201, 202, 203, 168, 204, 205, 206, - 207, 208, 0, 0, 0, 0, 0, 209, 0, 210, - 0, 0, 211, 0, 0, 0, 0, 0, 336, 0, - 0, 0, 0, 169, 170, 171, 0, 172, 173, 174, + 45, 0, 46, 169, 170, 171, 48, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 192, 193, 0, 194, 195, 196, 0, 0, 0, 0, 0, 197, 198, 0, 199, 200, 201, 202, 203, 168, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, 0, - 210, 0, 0, 211, 0, 0, 0, 0, 0, 369, + 210, 0, 0, 211, 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 192, @@ -2968,40 +2963,41 @@ static const yytype_int16 yytable[] = 197, 198, 0, 199, 200, 201, 202, 203, 168, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, 0, 210, 0, 0, 211, 0, 0, 0, 0, 0, - 407, 0, 0, 0, 0, 169, 170, 171, 0, 172, + 370, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, - 192, 193, 0, 194, 195, 196, 0, 0, 0, 168, - 0, 197, 198, 361, 199, 200, 201, 202, 203, 0, + 192, 193, 0, 194, 195, 196, 0, 0, 0, 0, + 0, 197, 198, 0, 199, 200, 201, 202, 203, 168, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, - 209, 0, 210, 0, 0, 211, 169, 170, 171, 0, + 209, 0, 210, 0, 0, 211, 0, 0, 0, 0, + 0, 408, 0, 0, 0, 0, 169, 170, 171, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 192, 193, 0, 194, 195, 196, 0, 0, 0, - 168, 0, 197, 198, 0, 199, 200, 201, 202, 203, + 168, 0, 197, 198, 362, 199, 200, 201, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, 0, - 0, 209, 0, 210, 363, 0, 211, 169, 170, 171, + 0, 209, 0, 210, 0, 0, 211, 169, 170, 171, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 192, 193, 0, 194, 195, 196, 0, 0, - 0, 168, 0, 197, 198, 488, 199, 200, 201, 202, + 0, 168, 0, 197, 198, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, - 0, 0, 209, 0, 210, 0, 0, 211, 169, 170, + 0, 0, 209, 0, 210, 364, 0, 211, 169, 170, 171, 0, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 0, 191, 192, 193, 0, 194, 195, 196, 0, - 0, 0, 168, 0, 197, 198, 0, 199, 200, 201, + 0, 0, 168, 0, 197, 198, 489, 199, 200, 201, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, 0, 210, 0, 0, 211, 169, - 170, 171, 0, 172, 173, 174, 175, 176, 177, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 190, 0, 191, 192, 193, 0, 194, 195, 196, - 0, 0, 0, 168, 0, 0, 0, 0, 199, 200, + 170, 171, 0, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 0, 191, 192, 193, 0, 194, 195, 196, + 0, 0, 0, 168, 0, 197, 198, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, 0, 210, 0, 0, 211, 169, 170, 171, 0, 172, 173, 174, 175, 176, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 192, 193, 0, 194, 195, + 0, 0, 190, 0, 191, 192, 193, 0, 194, 195, 196, 0, 0, 0, 168, 0, 0, 0, 0, 199, 200, 201, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, 0, 210, 0, 0, @@ -3009,104 +3005,123 @@ static const yytype_int16 yytable[] = 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 0, 194, 195, 196, 0, 0, 0, 168, 0, 0, 0, 0, - 0, 200, 201, 202, 203, 0, 204, 205, 206, 207, + 199, 200, 201, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, 0, 210, 0, 0, 211, 169, 170, 171, 0, 172, 173, 174, 175, 176, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 0, 194, 195, 196, 0, 0, 0, 168, 0, 0, 0, - 0, 0, 0, 201, 202, 203, 0, 204, 205, 206, + 0, 0, 200, 201, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, 0, 210, 0, 0, 211, 169, 170, 171, 0, 172, 173, 174, 175, 176, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, 193, 0, 194, 195, 196, 0, 0, 0, 168, 0, 0, - 0, 0, 0, 0, -155, 202, 203, 0, 204, 205, + 0, 0, 0, 0, 201, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, 0, - 210, 0, 0, 211, 169, 170, 171, 0, -155, -155, - -155, -155, 176, 177, 0, 0, 0, 0, 0, 0, + 210, 0, 0, 211, 169, 170, 171, 0, 172, 173, + 174, 175, 176, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 192, - 193, 0, 194, 195, 196, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 202, 203, 0, 204, + 193, 0, 194, 195, 196, 0, 0, 0, 168, 0, + 0, 0, 0, 0, 0, -155, 202, 203, 0, 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, 209, - 0, 210, 0, 0, 211 + 0, 210, 0, 0, 211, 169, 170, 171, 0, -155, + -155, -155, -155, 176, 177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, + 192, 193, 0, 194, 195, 196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 202, 203, 0, + 204, 205, 206, 207, 208, 0, 0, 0, 0, 0, + 209, 0, 210, 0, 0, 211 }; static const yytype_int16 yycheck[] = { 0, 0, 0, 0, 0, 18, 98, 90, 64, 38, - 23, 57, 254, 49, 109, 3, 396, 47, 329, 3, - 3, 12, 323, 36, 100, 38, 39, 40, 67, 42, - 43, 44, 45, 46, 90, 26, 125, 126, 5, 92, - 121, 8, 9, 10, 89, 126, 100, 121, 33, 0, - 0, 51, 51, 51, 51, 51, 132, 0, 3, 4, - 27, 28, 102, 102, 104, 3, 34, 3, 4, 380, - 123, 372, 17, 126, 121, 100, 61, 44, 132, 100, - 136, 17, 50, 100, 16, 121, 26, 54, 55, 3, - 4, 104, 32, 121, 107, 100, 109, 126, 104, 35, - 51, 51, 3, 17, 5, 12, 417, 132, 51, 93, - 93, 132, 121, 126, 209, 132, 358, 130, 131, 26, - 3, 4, 99, 100, 130, 131, 3, 132, 508, 121, - 125, 0, 125, 121, 17, 100, 3, 379, 3, 127, - 121, 121, 104, 100, 126, 131, 124, 100, 100, 149, + 23, 57, 255, 397, 109, 130, 131, 47, 3, 3, + 3, 12, 330, 36, 89, 38, 39, 40, 324, 42, + 43, 44, 45, 46, 90, 26, 121, 5, 92, 49, + 8, 9, 10, 67, 125, 126, 33, 100, 34, 0, + 0, 51, 51, 51, 51, 51, 0, 3, 4, 27, + 28, 466, 121, 100, 50, 470, 471, 3, 4, 123, + 121, 17, 126, 381, 61, 126, 44, 373, 102, 132, + 136, 17, 16, 102, 489, 104, 54, 55, 12, 3, + 4, 104, 3, 4, 107, 132, 109, 126, 503, 214, + 51, 51, 26, 17, 3, 510, 17, 51, 93, 93, + 418, 121, 121, 126, 209, 121, 359, 130, 131, 234, + 26, 35, 125, 3, 125, 509, 32, 3, 121, 5, + 0, 100, 3, 121, 126, 3, 131, 380, 121, 121, + 104, 256, 257, 100, 127, 124, 100, 3, 3, 149, 149, 149, 149, 149, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 114, 132, - 125, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 183, 184, 185, 186, 187, 188, 189, 190, 114, 125, + 3, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 149, 149, - 114, 214, 3, 216, 3, 234, 149, 236, 214, 3, - 125, 465, 16, 455, 67, 469, 470, 217, 217, 217, - 233, 234, 252, 236, 237, 99, 3, 233, 219, 471, - 67, 326, 3, 99, 488, 3, 3, 228, 16, 3, - 12, 126, 255, 256, 126, 121, 132, 25, 502, 255, - 256, 16, 30, 31, 4, 509, 104, 90, 91, 92, - 25, 4, 354, 131, 356, 43, 31, 45, 18, 19, - 20, 513, 22, 100, 24, 18, 19, 20, 100, 22, - 45, 24, 338, 102, 367, 3, 3, 37, 121, 132, - 123, 347, 53, 126, 37, 308, 46, 47, 48, 382, - 53, 89, 45, 46, 47, 48, 398, 90, 91, 92, - 393, 367, 3, 326, 121, 315, 315, 315, 131, 125, - 3, 132, 131, 323, 323, 323, 382, 100, 111, 112, - 113, 114, 115, 126, 325, 104, 102, 393, 121, 121, - 123, 433, 15, 126, 125, 100, 392, 3, 361, 125, - 125, 131, 100, 132, 383, 368, 99, 131, 102, 388, - 64, 131, 368, 125, 121, 125, 4, 39, 104, 452, - 383, 454, 372, 372, 372, 388, 132, 3, 3, 25, - 18, 19, 20, 125, 22, 131, 24, 125, 131, 3, - 131, 131, 131, 121, 125, 132, 452, 131, 454, 37, - 132, 131, 74, 75, 131, 315, 51, 45, 46, 47, - 48, 346, 423, 403, 149, 57, 129, 441, 90, 91, - 92, 441, 94, 95, 96, 438, 69, 494, 480, 423, - 462, 404, 26, 375, 434, 485, 108, 109, 398, 111, - 112, 113, 114, 115, 415, 376, -1, -1, -1, 121, - -1, 123, -1, -1, 126, -1, 456, 456, 456, 456, - 456, 99, 462, -1, -1, -1, -1, -1, -1, -1, + 114, 214, 125, 216, 16, 149, 235, 67, 237, 90, + 91, 92, 3, 456, 99, 67, 99, 217, 217, 217, + 3, 234, 235, 253, 237, 238, 3, 3, 219, 472, + 3, 12, 327, 126, 126, 4, 132, 16, 229, 121, + 121, 100, 123, 256, 257, 126, 25, 104, 132, 18, + 19, 20, 31, 22, 369, 24, 100, 131, 3, 102, + 16, 53, 3, 355, 53, 357, 45, 132, 37, 25, + 89, 514, 3, 121, 30, 31, 45, 46, 47, 48, + 125, 132, 131, 339, 3, 368, 132, 43, 126, 45, + 4, 100, 348, 132, 131, 121, 309, 104, 102, 99, + 383, 132, 15, 125, 18, 19, 20, 399, 22, 3, + 24, 394, 368, 100, 327, 125, 316, 316, 316, 132, + 131, 64, 125, 37, 324, 324, 324, 383, 100, 131, + 99, 45, 46, 47, 48, 326, 132, 102, 394, 125, + 125, 121, 434, 104, 132, 3, 3, 393, 25, 362, + 125, 3, 149, 131, 125, 384, 369, 131, 121, 51, + 389, 131, 131, 131, 131, 125, 132, 39, 4, 131, + 453, 384, 455, 373, 373, 373, 389, 131, 316, 132, + 131, 404, 18, 19, 20, 99, 22, 57, 24, 129, + 442, 347, 442, 424, 66, 67, 68, 453, 424, 455, + 69, 37, 74, 75, 495, 481, 463, 486, 416, 376, + 46, 47, 48, 26, 377, 405, 45, 131, 90, 91, + 92, 399, 94, 95, 96, -1, 439, -1, -1, -1, + -1, -1, -1, -1, -1, 435, 108, 109, -1, 111, + 112, 113, 114, 115, 90, 91, 92, -1, -1, 121, + -1, 123, -1, -1, 126, -1, -1, 457, 457, 457, + 457, 457, -1, 463, -1, 111, 112, 113, 114, 115, + -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, + 126, 481, 481, 481, 481, 481, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 495, 495, 495, 495, 495, + 0, -1, -1, 3, 4, 5, 6, -1, 8, 9, + 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, + 20, 21, 22, 23, 24, -1, -1, 27, 28, -1, + -1, 39, -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, 74, 75, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 480, 480, 480, 480, 480, -1, -1, -1, -1, -1, - -1, -1, -1, 131, 494, 494, 494, 494, 494, 0, - -1, -1, 3, 4, 5, 6, -1, 8, 9, 10, - 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, - 21, 22, 23, 24, -1, -1, 27, 28, -1, -1, - 39, -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, 66, 67, 68, - -1, 62, 63, -1, -1, 74, 75, -1, 69, -1, + -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, + 90, 91, -1, -1, -1, -1, -1, -1, -1, 99, + 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, + -1, 111, -1, 121, -1, 123, 116, 117, 126, -1, + -1, 121, -1, 123, -1, 125, -1, 127, -1, -1, + -1, 131, 3, 4, 5, 6, -1, 8, 9, 10, + 11, 12, 13, 14, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 24, 25, -1, 27, 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, 90, 91, 92, -1, -1, + -1, 62, 63, -1, 65, -1, -1, -1, 69, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 113, 114, + 115, -1, -1, -1, -1, -1, 121, -1, 123, 90, + 91, 126, -1, -1, -1, -1, -1, -1, 99, -1, -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, 108, - 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, - 111, -1, 121, -1, 123, 116, 117, 126, -1, -1, + 111, -1, -1, -1, -1, 116, 117, -1, -1, -1, 121, -1, 123, -1, 125, -1, 127, -1, -1, -1, 131, 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, 25, -1, 27, 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, 90, 91, 92, -1, -1, -1, + 52, -1, 54, 55, -1, -1, -1, -1, -1, -1, 62, 63, -1, 65, -1, -1, -1, 69, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, - -1, -1, -1, -1, -1, 121, -1, 123, 90, 91, - 126, -1, -1, -1, -1, -1, -1, 99, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 90, 91, + -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, 116, 117, -1, -1, -1, 121, -1, 123, -1, 125, -1, 127, -1, -1, -1, 131, @@ -3124,12 +3139,12 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 116, 117, -1, -1, -1, 121, -1, 123, -1, 125, -1, 127, -1, -1, -1, 131, 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, 13, - 14, -1, -1, -1, 18, 19, 20, 21, 22, 23, - 24, 25, -1, 27, 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, + 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, + 24, -1, -1, 27, 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, 65, -1, -1, -1, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, 91, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, @@ -3137,7 +3152,7 @@ static const yytype_int16 yycheck[] = -1, -1, 116, 117, -1, -1, -1, 121, -1, 123, -1, 125, -1, 127, -1, -1, -1, 131, 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, - -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, + -1, -1, -1, 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, 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, @@ -3187,8 +3202,8 @@ static const yytype_int16 yycheck[] = -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, 116, 117, -1, -1, -1, 121, -1, 123, -1, 125, -1, 127, - -1, -1, -1, 131, 3, 4, 5, 6, -1, 8, - 9, 10, 11, 12, 13, 14, -1, -1, -1, 18, + -1, 0, -1, 131, 3, 4, 5, 6, -1, 8, + 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, 28, -1, -1, -1, -1, -1, -1, 35, -1, 37, 38, -1, 40, -1, 42, -1, 44, -1, 46, 47, 48, @@ -3199,77 +3214,57 @@ static const yytype_int16 yycheck[] = -1, 90, 91, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, -1, 116, 117, -1, - -1, -1, 121, -1, 123, -1, 125, -1, 127, -1, - 0, -1, 131, 3, 4, 5, 6, -1, 8, 9, - 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, - 20, 21, 22, 23, 24, -1, -1, 27, 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, 69, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, 91, -1, -1, -1, -1, -1, -1, -1, 99, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 111, -1, -1, -1, -1, 116, 117, -1, -1, - -1, 121, -1, 123, -1, 125, -1, 127, 3, 4, - 5, 6, -1, 8, 9, 10, 11, 12, 13, 14, - -1, 16, -1, 18, 19, 20, 21, 22, 23, 24, - 25, -1, 27, 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, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, 91, -1, -1, -1, - -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, - -1, 116, 117, -1, -1, -1, 121, -1, 123, -1, - 125, -1, 127, 3, 4, 5, 6, -1, 8, 9, - 10, 11, 12, 13, 14, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 24, 25, -1, 27, 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, 69, + -1, -1, 121, -1, 123, -1, 125, -1, 127, 3, + 4, 5, 6, -1, 8, 9, 10, 11, 12, 13, + 14, -1, 16, -1, 18, 19, 20, 21, 22, 23, + 24, 25, -1, 27, 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, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 90, 91, -1, -1, + -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, + -1, -1, 116, 117, -1, -1, -1, 121, -1, 123, + -1, 125, -1, 127, 3, 4, 5, 6, -1, 8, + 9, 10, 11, 12, 13, 14, -1, -1, -1, 18, + 19, 20, 21, 22, 23, 24, 25, -1, 27, 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, + 69, -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, 90, 91, -1, -1, -1, -1, -1, -1, -1, + 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 111, -1, -1, -1, -1, 116, 117, -1, + -1, -1, 121, -1, 123, -1, 125, 3, 127, 5, + 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 23, -1, 25, + -1, 27, 28, -1, -1, 31, -1, -1, -1, 35, + -1, -1, -1, -1, -1, -1, 42, -1, 44, 45, + -1, -1, -1, -1, -1, -1, 52, -1, 54, 55, + -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, + -1, -1, -1, 69, -1, -1, -1, 3, -1, 5, + 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 90, 91, -1, 23, -1, 25, + -1, 27, 28, -1, -1, -1, -1, -1, -1, 35, + -1, -1, -1, -1, -1, 111, 42, -1, 44, -1, + 116, 117, -1, -1, -1, 121, 52, 123, 54, 55, + -1, 127, 3, -1, 5, 6, 62, 8, 9, 10, + -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, + -1, -1, 23, -1, 25, -1, 27, 28, -1, -1, + -1, -1, -1, -1, 90, 91, -1, -1, -1, -1, + -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, 52, -1, 54, 55, 111, -1, -1, -1, -1, + 116, 117, -1, -1, -1, 121, -1, 123, 69, -1, + -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, + 91, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 111, -1, -1, -1, -1, 116, 117, -1, -1, - -1, 121, -1, 123, -1, 125, 3, 127, 5, 6, - -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 23, -1, 25, -1, - 27, 28, -1, -1, 31, -1, -1, -1, 35, -1, - -1, -1, -1, -1, -1, 42, -1, 44, 45, -1, - -1, -1, -1, -1, -1, 52, -1, 54, 55, -1, - -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, - -1, -1, 69, -1, -1, -1, 3, -1, 5, 6, - -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 90, 91, -1, 23, -1, 25, -1, - 27, 28, -1, -1, -1, -1, -1, -1, 35, -1, - -1, -1, -1, -1, 111, 42, -1, 44, -1, 116, - 117, -1, -1, -1, 121, 52, 123, 54, 55, -1, - 127, 3, -1, 5, 6, 62, 8, 9, 10, -1, - -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, - -1, 23, -1, 25, -1, 27, 28, -1, -1, -1, - -1, -1, -1, 90, 91, -1, -1, -1, -1, -1, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - 52, -1, 54, 55, 111, -1, -1, -1, -1, 116, - 117, -1, -1, -1, 121, -1, 123, 69, -1, -1, - 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 90, 91, - -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 121, - -1, 123, 66, 67, 68, 127, 70, 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, 103, - -1, 105, 106, 107, 108, 109, 39, 111, 112, 113, - 114, 115, -1, -1, -1, -1, -1, 121, -1, 123, - -1, -1, 126, -1, -1, -1, -1, -1, 132, -1, - -1, -1, -1, 66, 67, 68, -1, 70, 71, 72, + 121, -1, 123, 66, 67, 68, 127, 70, 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, @@ -3286,37 +3281,38 @@ static const yytype_int16 yycheck[] = 132, -1, -1, -1, -1, 66, 67, 68, -1, 70, 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, 39, - -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, + 91, 92, -1, 94, 95, 96, -1, -1, -1, -1, + -1, 102, 103, -1, 105, 106, 107, 108, 109, 39, 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, - 121, -1, 123, -1, -1, 126, 66, 67, 68, -1, + 121, -1, 123, -1, -1, 126, -1, -1, -1, -1, + -1, 132, -1, -1, -1, -1, 66, 67, 68, -1, 70, 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, - 39, -1, 102, 103, -1, 105, 106, 107, 108, 109, + 39, -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, -1, - -1, 121, -1, 123, 124, -1, 126, 66, 67, 68, + -1, 121, -1, 123, -1, -1, 126, 66, 67, 68, -1, 70, 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, 39, -1, 102, 103, 104, 105, 106, 107, 108, + -1, 39, -1, 102, 103, -1, 105, 106, 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, - -1, -1, 121, -1, 123, -1, -1, 126, 66, 67, + -1, -1, 121, -1, 123, 124, -1, 126, 66, 67, 68, -1, 70, 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, 39, -1, 102, 103, -1, 105, 106, 107, + -1, -1, 39, -1, 102, 103, 104, 105, 106, 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, 126, 66, - 67, 68, -1, 70, 71, 72, 73, 74, 75, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 88, -1, 90, 91, 92, -1, 94, 95, 96, - -1, -1, -1, 39, -1, -1, -1, -1, 105, 106, + 67, 68, -1, 70, 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, 39, -1, 102, 103, -1, 105, 106, 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, 126, 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 90, 91, 92, -1, 94, 95, + -1, -1, 88, -1, 90, 91, 92, -1, 94, 95, 96, -1, -1, -1, 39, -1, -1, -1, -1, 105, 106, 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, @@ -3324,13 +3320,13 @@ static const yytype_int16 yycheck[] = 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, -1, -1, 39, -1, -1, -1, -1, - -1, 106, 107, 108, 109, -1, 111, 112, 113, 114, + 105, 106, 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, 126, 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, 91, 92, -1, 94, 95, 96, -1, -1, -1, 39, -1, -1, -1, - -1, -1, -1, 107, 108, 109, -1, 111, 112, 113, + -1, -1, 106, 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, 121, -1, 123, -1, -1, 126, 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, -1, -1, -1, -1, -1, -1, -1, @@ -3341,10 +3337,16 @@ static const yytype_int16 yycheck[] = 123, -1, -1, 126, 66, 67, 68, -1, 70, 71, 72, 73, 74, 75, -1, -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, 108, 109, -1, 111, + 92, -1, 94, 95, 96, -1, -1, -1, 39, -1, + -1, -1, -1, -1, -1, 107, 108, 109, -1, 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, 121, - -1, 123, -1, -1, 126 + -1, 123, -1, -1, 126, 66, 67, 68, -1, 70, + 71, 72, 73, 74, 75, -1, -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, 108, 109, -1, + 111, 112, 113, 114, 115, -1, -1, -1, -1, -1, + 121, -1, 123, -1, -1, 126 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -3359,50 +3361,50 @@ static const yytype_uint8 yystos[] = 135, 136, 137, 143, 146, 147, 153, 157, 158, 159, 160, 162, 170, 178, 181, 182, 185, 188, 189, 190, 191, 195, 197, 206, 211, 216, 219, 232, 233, 234, - 238, 241, 242, 243, 245, 246, 89, 49, 121, 121, + 239, 242, 243, 244, 246, 247, 89, 49, 121, 121, 163, 121, 3, 4, 17, 125, 183, 184, 16, 3, - 241, 3, 218, 241, 121, 184, 222, 121, 125, 121, - 126, 241, 121, 236, 239, 240, 241, 241, 241, 241, - 241, 241, 237, 241, 228, 229, 230, 236, 29, 31, + 242, 3, 218, 242, 121, 184, 222, 121, 125, 121, + 126, 242, 121, 236, 240, 241, 242, 242, 242, 242, + 242, 242, 238, 242, 228, 229, 230, 236, 29, 31, 36, 41, 45, 65, 99, 131, 142, 143, 144, 147, 149, 164, 165, 180, 189, 235, 3, 0, 137, 125, - 3, 45, 149, 155, 156, 238, 144, 145, 16, 25, - 30, 31, 43, 45, 205, 244, 191, 100, 39, 66, + 3, 45, 149, 155, 156, 239, 144, 145, 16, 25, + 30, 31, 43, 45, 205, 245, 191, 100, 39, 66, 67, 68, 70, 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, 103, 105, 106, 107, 108, 109, 111, 112, 113, 114, 115, 121, 123, 126, 3, 121, 161, 145, 171, 187, 125, 126, - 183, 184, 221, 222, 223, 231, 121, 237, 126, 241, - 179, 228, 3, 154, 104, 131, 100, 100, 132, 124, - 100, 236, 3, 3, 150, 151, 237, 237, 150, 3, - 131, 144, 125, 135, 3, 99, 67, 99, 3, 34, - 50, 215, 3, 3, 207, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 3, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 228, 241, 3, 121, 127, - 237, 12, 241, 99, 138, 139, 140, 146, 147, 195, - 197, 206, 216, 186, 183, 126, 121, 227, 3, 93, - 212, 213, 214, 132, 114, 183, 132, 141, 142, 132, - 237, 236, 236, 241, 104, 226, 100, 142, 131, 226, - 237, 237, 102, 3, 53, 192, 53, 193, 3, 208, - 209, 104, 132, 124, 89, 241, 3, 132, 121, 132, - 131, 140, 125, 138, 228, 102, 104, 210, 214, 132, - 100, 131, 132, 104, 35, 114, 223, 225, 102, 148, - 151, 131, 99, 132, 3, 5, 121, 223, 15, 194, - 223, 224, 125, 226, 100, 241, 3, 132, 145, 237, - 125, 138, 131, 132, 211, 225, 226, 93, 214, 26, - 32, 172, 174, 176, 177, 145, 236, 236, 238, 145, - 212, 224, 125, 100, 198, 148, 209, 132, 33, 61, - 166, 167, 168, 169, 131, 210, 125, 214, 125, 121, - 172, 174, 64, 152, 132, 132, 196, 223, 45, 99, - 189, 202, 203, 204, 241, 104, 131, 168, 169, 220, - 175, 3, 145, 145, 226, 99, 143, 147, 189, 199, - 200, 201, 206, 216, 3, 25, 131, 204, 104, 141, - 141, 141, 226, 125, 125, 131, 201, 215, 141, 131, - 131, 132, 217, 199, 3, 173, 141, 131, 121, 125, - 131, 212, 141, 132, 131, 226 + 183, 184, 221, 222, 223, 231, 121, 237, 238, 126, + 242, 179, 228, 3, 154, 104, 131, 100, 100, 132, + 124, 100, 236, 3, 3, 150, 151, 237, 237, 150, + 3, 131, 144, 125, 135, 3, 99, 67, 99, 3, + 34, 50, 215, 3, 3, 207, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 3, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 228, 242, 3, 121, + 127, 237, 12, 242, 99, 138, 139, 140, 146, 147, + 195, 197, 206, 216, 186, 183, 126, 121, 227, 3, + 93, 212, 213, 214, 132, 114, 183, 132, 141, 142, + 132, 237, 236, 236, 242, 104, 226, 100, 142, 131, + 226, 237, 237, 102, 3, 53, 192, 53, 193, 3, + 208, 209, 104, 132, 124, 89, 242, 3, 132, 121, + 132, 131, 140, 125, 138, 228, 102, 104, 210, 214, + 132, 100, 131, 132, 104, 35, 114, 223, 225, 102, + 148, 151, 131, 99, 132, 3, 5, 121, 223, 15, + 194, 223, 224, 125, 226, 100, 242, 3, 132, 145, + 237, 125, 138, 131, 132, 211, 225, 226, 93, 214, + 26, 32, 172, 174, 176, 177, 145, 236, 236, 239, + 145, 212, 224, 125, 100, 198, 148, 209, 132, 33, + 61, 166, 167, 168, 169, 131, 210, 125, 214, 125, + 121, 172, 174, 64, 152, 132, 132, 196, 223, 45, + 99, 189, 202, 203, 204, 242, 104, 131, 168, 169, + 220, 175, 3, 145, 145, 226, 99, 143, 147, 189, + 199, 200, 201, 206, 216, 3, 25, 131, 204, 104, + 141, 141, 141, 226, 125, 125, 131, 201, 215, 141, + 131, 131, 132, 217, 199, 3, 173, 141, 131, 121, + 125, 131, 212, 141, 132, 131, 226 }; #define yyerrok (yyerrstatus = 0) @@ -6627,7 +6629,9 @@ PASS12 /* Line 1464 of skeleton.m4 */ #line 2996 "parser.y" - {(yyval.value) = node_read((yyvsp[(1) - (1)].node));} + { + (yyval.value) = node_read((yyvsp[(1) - (1)].node)); +} } break; @@ -6637,8 +6641,10 @@ PASS12 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2997 "parser.y" - {(yyval.value) = node_read((yyvsp[(1) - (1)].node));} +#line 2999 "parser.y" + { + (yyval.value) = node_read((yyvsp[(1) - (1)].node)); +} } break; @@ -6648,13 +6654,9 @@ PASS12 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2998 "parser.y" +#line 3002 "parser.y" { - (yyval.value).c = (yyvsp[(1) - (3)].value).c; - (yyval.value).c = cut_last_push((yyval.value).c); - typedcode_t v = node_read((yyvsp[(3) - (3)].node)); - (yyval.value).c = code_append((yyval.value).c,v.c); - (yyval.value).t = v.t; + (yyval.node) = mkmultinode(&node_comma, (yyvsp[(1) - (1)].node)); } } break; @@ -6666,7 +6668,9 @@ PASS12 /* Line 1464 of skeleton.m4 */ #line 3005 "parser.y" - { (yyval.code)=node_exec((yyvsp[(1) - (1)].node)); } + { + (yyval.node) = multinode_extend((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); +} } break; @@ -6676,10 +6680,9 @@ PASS12 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3006 "parser.y" +#line 3008 "parser.y" { - (yyval.code) = (yyvsp[(1) - (3)].code); - (yyval.code) = code_append((yyval.code), node_exec((yyvsp[(3) - (3)].node))); + (yyval.code) = node_exec((yyvsp[(1) - (1)].node)); } } break; @@ -6691,7 +6694,10 @@ PASS12 /* Line 1464 of skeleton.m4 */ #line 3011 "parser.y" - {(yyval.value_list).cc=0;(yyval.value_list).number=0;} + { + (yyval.code) = (yyvsp[(1) - (3)].code); + (yyval.code) = code_append((yyval.code), node_exec((yyvsp[(3) - (3)].node))); +} } break; @@ -6701,8 +6707,8 @@ PASS12 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3012 "parser.y" - {(yyval.value_list)=(yyvsp[(1) - (1)].value_list);} +#line 3016 "parser.y" + {(yyval.value_list).cc=0;(yyval.value_list).number=0;} } break; @@ -6712,7 +6718,18 @@ PASS12 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3014 "parser.y" +#line 3017 "parser.y" + {(yyval.value_list)=(yyvsp[(1) - (1)].value_list);} + } + break; + + + + case 229: + if(as3_pass==2) { + +/* Line 1464 of skeleton.m4 */ +#line 3019 "parser.y" { (yyval.value_list).cc = 0; (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(1) - (3)].value).c); @@ -6724,11 +6741,11 @@ PASS12 - case 229: + case 230: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3020 "parser.y" +#line 3025 "parser.y" { (yyval.value_list).cc = (yyvsp[(1) - (5)].value_list).cc; (yyval.value_list).number = (yyvsp[(1) - (5)].value_list).number+2; @@ -6740,77 +6757,77 @@ PASS12 - case 230: + case 231: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3029 "parser.y" +#line 3034 "parser.y" {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));} } break; - case 231: + case 232: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3030 "parser.y" +#line 3035 "parser.y" {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));} } break; - case 232: + case 233: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3031 "parser.y" +#line 3036 "parser.y" {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));} } break; - case 233: + case 234: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3032 "parser.y" +#line 3037 "parser.y" {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));} } break; - case 234: + case 235: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3033 "parser.y" +#line 3038 "parser.y" {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));} } break; - case 235: + case 236: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3034 "parser.y" +#line 3039 "parser.y" {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));} } break; - case 236: + case 237: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3036 "parser.y" +#line 3041 "parser.y" { (yyval.node) = mkconstnode((yyvsp[(1) - (1)].constant)); } @@ -6819,11 +6836,11 @@ PASS12 - case 237: + case 238: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3041 "parser.y" +#line 3046 "parser.y" { typedcode_t v; v.c = 0; @@ -6847,11 +6864,11 @@ PASS12 - case 238: + case 239: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3061 "parser.y" +#line 3066 "parser.y" { typedcode_t v; v.c = code_new(); @@ -6865,11 +6882,11 @@ PASS12 - case 239: + case 240: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3071 "parser.y" +#line 3076 "parser.y" { typedcode_t v; v.c = code_new(); @@ -6883,561 +6900,561 @@ PASS12 - case 240: + case 241: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3080 "parser.y" +#line 3085 "parser.y" {(yyval.node) = mknode2(&node_lt,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 241: + case 242: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3081 "parser.y" +#line 3086 "parser.y" {(yyval.node) = mknode2(&node_gt,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 242: + case 243: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3082 "parser.y" +#line 3087 "parser.y" {(yyval.node) = mknode2(&node_le,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 243: + case 244: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3083 "parser.y" +#line 3088 "parser.y" {(yyval.node) = mknode2(&node_ge,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 244: + case 245: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3084 "parser.y" +#line 3089 "parser.y" {(yyval.node) = mknode2(&node_eqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 245: + case 246: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3085 "parser.y" +#line 3090 "parser.y" {(yyval.node) = mknode2(&node_eqeqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 246: + case 247: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3086 "parser.y" +#line 3091 "parser.y" {(yyval.node) = mknode2(&node_noteqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 247: + case 248: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3087 "parser.y" +#line 3092 "parser.y" {(yyval.node) = mknode2(&node_noteq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 248: + case 249: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3088 "parser.y" +#line 3093 "parser.y" {(yyval.node) = mknode2(&node_oror,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 249: + case 250: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3089 "parser.y" +#line 3094 "parser.y" {(yyval.node) = mknode2(&node_andand,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));} } break; - case 250: + case 251: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3090 "parser.y" +#line 3095 "parser.y" {(yyval.node) = mknode1(&node_not, (yyvsp[(2) - (2)].node));} } break; - case 251: + case 252: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3091 "parser.y" +#line 3096 "parser.y" {(yyval.node) = mknode1(&node_bitnot, (yyvsp[(2) - (2)].node));} } break; - case 252: + case 253: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3092 "parser.y" +#line 3097 "parser.y" {(yyval.node) = mknode2(&node_bitand, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 253: + case 254: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3093 "parser.y" +#line 3098 "parser.y" {(yyval.node) = mknode2(&node_bitxor, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 254: + case 255: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3094 "parser.y" +#line 3099 "parser.y" {(yyval.node) = mknode2(&node_bitor, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 255: + case 256: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3095 "parser.y" +#line 3100 "parser.y" {(yyval.node) = mknode2(&node_shr, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 256: + case 257: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3096 "parser.y" +#line 3101 "parser.y" {(yyval.node) = mknode2(&node_ushr, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 257: + case 258: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3097 "parser.y" +#line 3102 "parser.y" {(yyval.node) = mknode2(&node_shl, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 258: + case 259: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3098 "parser.y" +#line 3103 "parser.y" {(yyval.node) = mknode2(&node_div, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 259: + case 260: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3099 "parser.y" +#line 3104 "parser.y" {(yyval.node) = mknode2(&node_mod, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 260: + case 261: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3100 "parser.y" +#line 3105 "parser.y" {(yyval.node) = mknode2(&node_plus, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 261: + case 262: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3101 "parser.y" +#line 3106 "parser.y" {(yyval.node) = mknode2(&node_minus, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 262: + case 263: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3102 "parser.y" +#line 3107 "parser.y" {(yyval.node) = mknode2(&node_multiply, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 263: + case 264: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3103 "parser.y" +#line 3108 "parser.y" {(yyval.node) = mknode2(&node_in, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 264: + case 265: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3104 "parser.y" +#line 3109 "parser.y" {(yyval.node) = mknode2(&node_as, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 265: + case 266: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3105 "parser.y" +#line 3110 "parser.y" {(yyval.node) = mknode2(&node_instanceof, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 266: + case 267: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3106 "parser.y" +#line 3111 "parser.y" {(yyval.node) = mknode2(&node_is, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 267: + case 268: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3107 "parser.y" +#line 3112 "parser.y" {(yyval.node) = mknode1(&node_typeof, (yyvsp[(3) - (4)].node));} } break; - case 268: + case 269: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3108 "parser.y" +#line 3113 "parser.y" {(yyval.node) = mknode1(&node_void, (yyvsp[(2) - (2)].node));} } break; - case 269: + case 270: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3109 "parser.y" +#line 3114 "parser.y" { (yyval.node) = mkconstnode(constant_new_undefined());} } break; - case 270: + case 271: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3110 "parser.y" - { /*allow commas in here, too */ (yyval.node)=mkcodenode((yyvsp[(2) - (3)].value));} +#line 3115 "parser.y" + { (yyval.node)=(yyvsp[(2) - (3)].node);} } break; - case 271: + case 272: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3111 "parser.y" +#line 3116 "parser.y" {(yyval.node) = mknode1(&node_neg, (yyvsp[(2) - (2)].node));} } break; - case 272: + case 273: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3112 "parser.y" +#line 3117 "parser.y" {(yyval.node) = mknode2(&node_arraylookup, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node));} } break; - case 273: + case 274: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3113 "parser.y" +#line 3118 "parser.y" {(yyval.node) = mknode2(&node_muleq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 274: + case 275: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3114 "parser.y" +#line 3119 "parser.y" {(yyval.node) = mknode2(&node_modeq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 275: + case 276: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3115 "parser.y" +#line 3120 "parser.y" {(yyval.node) = mknode2(&node_shleq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 276: + case 277: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3116 "parser.y" +#line 3121 "parser.y" {(yyval.node) = mknode2(&node_shreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 277: + case 278: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3117 "parser.y" +#line 3122 "parser.y" {(yyval.node) = mknode2(&node_ushreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 278: + case 279: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3118 "parser.y" +#line 3123 "parser.y" { (yyval.node) = mknode2(&node_diveq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 279: + case 280: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3119 "parser.y" +#line 3124 "parser.y" { (yyval.node) = mknode2(&node_bitoreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 280: + case 281: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3120 "parser.y" +#line 3125 "parser.y" { (yyval.node) = mknode2(&node_bitxoreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 281: + case 282: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3121 "parser.y" +#line 3126 "parser.y" { (yyval.node) = mknode2(&node_bitandeq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 282: + case 283: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3122 "parser.y" +#line 3127 "parser.y" { (yyval.node) = mknode2(&node_pluseq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 283: + case 284: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3123 "parser.y" +#line 3128 "parser.y" { (yyval.node) = mknode2(&node_minuseq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 284: + case 285: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3124 "parser.y" +#line 3129 "parser.y" { (yyval.node) = mknode2(&node_assign, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));} } break; - case 285: + case 286: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3125 "parser.y" +#line 3130 "parser.y" { (yyval.node) = mknode3(&node_tenary, (yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node));} } break; - case 286: + case 287: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3127 "parser.y" +#line 3132 "parser.y" { (yyval.node) = mknode1(&node_rplusplus, (yyvsp[(1) - (2)].node));} } break; - case 287: + case 288: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3128 "parser.y" +#line 3133 "parser.y" { (yyval.node) = mknode1(&node_rminusminus, (yyvsp[(1) - (2)].node));} } break; - case 288: + case 289: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3129 "parser.y" +#line 3134 "parser.y" {(yyval.node) = mknode1(&node_lplusplus, (yyvsp[(2) - (2)].node)); } } break; - case 289: + case 290: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3130 "parser.y" +#line 3135 "parser.y" {(yyval.node) = mknode1(&node_lminusminus, (yyvsp[(2) - (2)].node)); } } break; - case 290: + case 291: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3133 "parser.y" +#line 3138 "parser.y" { if(!state->cls->info) syntaxerror("super keyword not allowed outside a class"); classinfo_t*t = state->cls->info->superclass; @@ -7456,11 +7473,11 @@ PASS12 - case 291: + case 292: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3147 "parser.y" +#line 3152 "parser.y" { // attribute TODO (yyval.node) = mkdummynode(); @@ -7471,11 +7488,11 @@ PASS12 - case 292: + case 293: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3153 "parser.y" +#line 3158 "parser.y" { // child attribute TODO (yyval.node) = mkdummynode(); @@ -7486,11 +7503,11 @@ PASS12 - case 293: + case 294: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3159 "parser.y" +#line 3164 "parser.y" { // namespace declaration TODO (yyval.node) = mkdummynode(); @@ -7501,11 +7518,11 @@ PASS12 - case 294: + case 295: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3165 "parser.y" +#line 3170 "parser.y" { // descendants TODO (yyval.node) = mkdummynode(); @@ -7516,11 +7533,11 @@ PASS12 - case 295: + case 296: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3171 "parser.y" +#line 3176 "parser.y" { // filter TODO (yyval.node) = mkdummynode(); @@ -7531,11 +7548,11 @@ PASS12 - case 296: + case 297: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3184 "parser.y" +#line 3189 "parser.y" { typedcode_t v1 = node_read((yyvsp[(1) - (3)].node)); (yyval.value).c = v1.c; @@ -7598,11 +7615,11 @@ PASS12 - case 297: + case 298: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3242 "parser.y" +#line 3247 "parser.y" { PASS1 /* Queue unresolved identifiers for checking against the parent @@ -7714,11 +7731,11 @@ PASS12 - case 298: + case 299: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3351 "parser.y" +#line 3356 "parser.y" { PASS12 NEW(namespace_decl_t,n); @@ -7731,11 +7748,11 @@ PASS12 - case 299: + case 300: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3358 "parser.y" +#line 3363 "parser.y" { PASS12 NEW(namespace_decl_t,n); @@ -7748,11 +7765,11 @@ PASS12 - case 300: + case 301: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3365 "parser.y" +#line 3370 "parser.y" { PASS12 NEW(namespace_decl_t,n); @@ -7765,11 +7782,11 @@ PASS12 - case 301: + case 302: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3372 "parser.y" +#line 3377 "parser.y" { PASS12 trie_put(active_namespaces, (yyvsp[(2) - (2)].namespace_decl)->name, (void*)(yyvsp[(2) - (2)].namespace_decl)->url); @@ -7789,11 +7806,11 @@ PASS12 - case 302: + case 303: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3396 "parser.y" +#line 3401 "parser.y" { PASS12 const char*url = (yyvsp[(3) - (3)].classinfo)->name; @@ -7822,7 +7839,7 @@ PASS12 /* Line 1464 of skeleton.m4 */ -#line 7826 "parser.tab.c" +#line 7843 "parser.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/lib/as3/parser.y b/lib/as3/parser.y index ed5b001..67f800d 100644 --- a/lib/as3/parser.y +++ b/lib/as3/parser.y @@ -33,7 +33,7 @@ #include "code.h" #include "opcodes.h" #include "compiler.h" -#include "ast.h" +#include "expr.h" extern int a3_lex(); @@ -193,7 +193,7 @@ extern int a3_lex(); %type EXPRESSION NONCOMMAEXPRESSION %type MAYBEEXPRESSION %type DELETE -%type E +%type E COMMA_EXPRESSION %type FOR FOR_IN IF WHILE DO_WHILE MAYBEELSE BREAK RETURN CONTINUE TRY %type INNERFUNCTION %type USE_NAMESPACE @@ -2993,16 +2993,21 @@ RETURN: "return" EXPRESSION { // ----------------------- expression types ------------------------------------- -NONCOMMAEXPRESSION : E %prec below_minus {$$ = node_read($1);} -EXPRESSION : E %prec below_minus {$$ = node_read($1);} -EXPRESSION : EXPRESSION ',' E %prec below_minus { - $$.c = $1.c; - $$.c = cut_last_push($$.c); - typedcode_t v = node_read($3); - $$.c = code_append($$.c,v.c); - $$.t = v.t; +NONCOMMAEXPRESSION : E %prec below_minus { + $$ = node_read($1); +} +EXPRESSION : COMMA_EXPRESSION { + $$ = node_read($1); +} +COMMA_EXPRESSION : E %prec below_minus { + $$ = mkmultinode(&node_comma, $1); +} +COMMA_EXPRESSION : COMMA_EXPRESSION ',' E %prec below_minus { + $$ = multinode_extend($1, $3); +} +VOIDEXPRESSION : E %prec below_minus { + $$ = node_exec($1); } -VOIDEXPRESSION : E %prec below_minus { $$=node_exec($1); } VOIDEXPRESSION : VOIDEXPRESSION ',' E %prec below_minus { $$ = $1; $$ = code_append($$, node_exec($3)); @@ -3107,7 +3112,7 @@ E : E "is" E {$$ = mknode2(&node_is, $1, $3);} E : "typeof" '(' E ')' {$$ = mknode1(&node_typeof, $3);} E : "void" E {$$ = mknode1(&node_void, $2);} E : "void" { $$ = mkconstnode(constant_new_undefined());} -E : '(' EXPRESSION ')' { /*allow commas in here, too */ $$=mkcodenode($2);} +E : '(' COMMA_EXPRESSION ')' { $$=$2;} E : '-' E {$$ = mknode1(&node_neg, $2);} E : E '[' E ']' {$$ = mknode2(&node_arraylookup, $1,$3);} E : E "*=" E {$$ = mknode2(&node_muleq, $1, $3);} diff --git a/lib/as3/tokenizer.h b/lib/as3/tokenizer.h index 0da4f12..9f66120 100644 --- a/lib/as3/tokenizer.h +++ b/lib/as3/tokenizer.h @@ -27,7 +27,7 @@ #include "registry.h" #include "code.h" #include "opcodes.h" -#include "ast.h" +#include "expr.h" DECLARE(token); DECLARE_LIST(token);