From e3b6c5cbe5c41467cdc130a25569f69289617dbe Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 1 Sep 2025 20:05:31 +0200 Subject: [PATCH] Berry animation simplify transpiler (#23865) --- lib/libesp32/berry_animation/README.md | 1 + .../anim_examples/compiled/aurora_borealis.be | 16 +- .../compiled/breathing_colors.be | 9 +- .../anim_examples/compiled/christmas_tree.be | 8 +- .../anim_examples/compiled/cylon_red_green.be | 63 - .../compiled/demo_pattern_fire_opacity.be | 7 +- .../compiled/demo_shutter_rainbow.be | 50 +- .../anim_examples/compiled/disco_strobe.be | 10 +- .../anim_examples/compiled/fire_flicker.be | 8 +- .../anim_examples/compiled/lava_lamp.be | 8 +- .../anim_examples/compiled/lightning_storm.be | 6 +- .../anim_examples/compiled/matrix_rain.be | 8 +- .../anim_examples/compiled/neon_glow.be | 7 +- .../anim_examples/compiled/ocean_waves.be | 8 +- .../anim_examples/compiled/palette_demo.be | 27 +- .../compiled/palette_showcase.be | 36 +- .../anim_examples/compiled/plasma_wave.be | 9 +- .../anim_examples/compiled/sunrise_sunset.be | 12 +- .../anim_examples/demo_shutter_rainbow.anim | 22 +- .../anim_examples/palette_demo.anim | 15 +- .../berry_animation/docs/DSL_REFERENCE.md | 2 + .../berry_animation/docs/DSL_TRANSPILATION.md | 9 +- .../docs/TRANSPILER_ARCHITECTURE.md | 543 + lib/libesp32/berry_animation/src/animation.be | 2 +- .../src/core/animation_engine.be | 25 +- .../src/core/sequence_manager.be | 114 +- .../berry_animation/src/dsl/transpiler.be | 815 +- .../src/solidify/solidified_animation.h | 3259 ++-- .../src/solidify/solidified_animation_dsl.h | 15066 ++++++++-------- .../src/tests/animation_engine_test.be | 26 +- .../src/tests/animation_opacity_test.be | 10 +- .../src/tests/black_frame_fix_test.be | 349 + .../src/tests/breathe_animation_test.be | 2 +- .../src/tests/comet_animation_test.be | 2 +- .../src/tests/fast_loop_integration_test.be | 4 +- .../tests/sequence_manager_layering_test.be | 28 +- .../src/tests/sequence_manager_test.be | 14 +- .../berry_animation/src/tests/test_all.be | 1 + 38 files changed, 10447 insertions(+), 10154 deletions(-) delete mode 100644 lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_green.be create mode 100644 lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md create mode 100644 lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be diff --git a/lib/libesp32/berry_animation/README.md b/lib/libesp32/berry_animation/README.md index 27ae4a166..70f074d0a 100644 --- a/lib/libesp32/berry_animation/README.md +++ b/lib/libesp32/berry_animation/README.md @@ -128,6 +128,7 @@ run rgb_show ### Advanced - **[User Functions](docs/USER_FUNCTIONS.md)** - Create custom animation functions - **[Animation Development](docs/ANIMATION_DEVELOPMENT.md)** - Create custom animations +- **[Transpiler Architecture](docs/TRANSPILER_ARCHITECTURE.md)** - DSL transpiler internals and processing flow ## šŸŽÆ Core Concepts diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be b/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be index 96437aa71..853bdbdf0 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/aurora_borealis.be @@ -13,9 +13,21 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var aurora_colors_ = bytes("00000022" "40004400" "8000AA44" "C044AA88" "FF88FFAA") +var aurora_colors_ = bytes( + "00000022" # Dark night sky + "40004400" # Dark green + "8000AA44" # Aurora green + "C044AA88" # Light green + "FF88FFAA" # Bright aurora +) # Secondary purple palette -var aurora_purple_ = bytes("00220022" "40440044" "808800AA" "C0AA44CC" "FFCCAAFF") +var aurora_purple_ = bytes( + "00220022" # Dark purple + "40440044" # Medium purple + "808800AA" # Bright purple + "C0AA44CC" # Light purple + "FFCCAAFF" # Pale purple +) # Base aurora animation with slow flowing colors var aurora_base_ = animation.rich_palette_animation(engine) aurora_base_.palette = aurora_colors_ # palette diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be b/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be index ba4cc22b4..dcb1a1578 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/breathing_colors.be @@ -19,7 +19,14 @@ var breathe_blue_ = 0xFF0000FF var breathe_purple_ = 0xFF800080 var breathe_orange_ = 0xFFFF8000 # Create breathing animation that cycles through colors -var breathe_palette_ = bytes("00FF0000" "33FF8000" "66FFFF00" "9900FF00" "CC0000FF" "FF800080") +var breathe_palette_ = bytes( + "00FF0000" # Red + "33FF8000" # Orange + "66FFFF00" # Yellow + "9900FF00" # Green + "CC0000FF" # Blue + "FF800080" # Purple +) # Create a rich palette color provider var palette_pattern_ = animation.rich_palette(engine) palette_pattern_.palette = breathe_palette_ # palette diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be b/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be index 8c0fced93..b2032d85f 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/christmas_tree.be @@ -17,7 +17,13 @@ var tree_green_ = 0xFF006600 var tree_base_ = animation.solid(engine) tree_base_.color = tree_green_ # Define ornament colors -var ornament_colors_ = bytes("00FF0000" "40FFD700" "800000FF" "C0FFFFFF" "FFFF00FF") +var ornament_colors_ = bytes( + "00FF0000" # Red + "40FFD700" # Gold + "800000FF" # Blue + "C0FFFFFF" # White + "FFFF00FF" # Magenta +) # Colorful ornaments as twinkling lights var ornament_pattern_ = animation.rich_palette(engine) ornament_pattern_.palette = ornament_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_green.be b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_green.be deleted file mode 100644 index b964d4684..000000000 --- a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_red_green.be +++ /dev/null @@ -1,63 +0,0 @@ -# Generated Berry code from Animation DSL -# Source: cylon_red_green.anim -# -# This file was automatically generated by compile_all_examples.sh -# Do not edit manually - changes will be overwritten - -import animation - -# Cylon Red Eye -# Automatically adapts to the length of the strip -# Auto-generated strip initialization (using Tasmota configuration) -var engine = animation.init_strip() - -var strip_len_ = animation.strip_length(engine) -var red_eye_ = animation.beacon_animation(engine) -red_eye_.color = 0xFFFF0000 -red_eye_.pos = (def (engine) - var provider = animation.cosine_osc(engine) - provider.min_value = 0 - provider.max_value = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - 2 end) - provider.duration = 5000 - return provider -end)(engine) -red_eye_.beacon_size = 3 # small 3 pixels eye -red_eye_.slew_size = 2 # with 2 pixel shading around -red_eye_.priority = 10 -var green_eye_ = animation.beacon_animation(engine) -green_eye_.color = 0xFF008000 -green_eye_.pos = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - self.resolve(red_eye_, 'pos') end) -green_eye_.beacon_size = 3 # small 3 pixels eye -green_eye_.slew_size = 2 # with 2 pixel shading around -green_eye_.priority = 15 # behind red eye -engine.add_animation(red_eye_) -engine.add_animation(green_eye_) -engine.start() - - -#- Original DSL source: -# Cylon Red Eye -# Automatically adapts to the length of the strip - -set strip_len = strip_length() - -animation red_eye = beacon_animation( - color = red - pos = cosine_osc(min_value = 0, max_value = strip_len - 2, duration = 5s) - beacon_size = 3 # small 3 pixels eye - slew_size = 2 # with 2 pixel shading around - priority = 10 -) - -animation green_eye = beacon_animation( - color = green - pos = strip_len - red_eye.pos - beacon_size = 3 # small 3 pixels eye - slew_size = 2 # with 2 pixel shading around - priority = 15 # behind red eye -) - -run red_eye -run green_eye - --# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be index 89e0ef855..e1d9d6819 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_pattern_fire_opacity.be @@ -11,7 +11,12 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var fire_colors_ = bytes("FF800000" "FFFF0000" "FFFF4500" "FFFFFF00") +var fire_colors_ = bytes( + "FF800000" # Dark red + "FFFF0000" # Red + "FFFF4500" # Orange red + "FFFFFF00" # Yellow +) var strip_len_ = animation.strip_length(engine) var fire_color_ = animation.rich_palette(engine) fire_color_.palette = fire_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be index 287ec9864..acaa1e714 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/demo_shutter_rainbow.be @@ -8,12 +8,12 @@ import animation # Demo Shutter Rainbow # -# Shutter from left to right iterating in all colors +# Shutter from left to right iterating in all colors, then right to left # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -# Template function: shutter_left_right -def shutter_left_right_template(engine, colors_, duration_) +# Template function: shutter_bidir +def shutter_bidir_template(engine, colors_, duration_) var strip_len_ = animation.strip_length(engine) var shutter_size_ = (def (engine) var provider = animation.sawtooth(engine) @@ -29,6 +29,7 @@ def shutter_left_right_template(engine, colors_, duration_) col2_.palette = colors_ col2_.cycle_period = 0 col2_.next = 1 + # shutter moving from left to right var shutter_lr_animation_ = animation.beacon_animation(engine) shutter_lr_animation_.color = col2_ shutter_lr_animation_.back_color = col1_ @@ -36,6 +37,7 @@ def shutter_left_right_template(engine, colors_, duration_) shutter_lr_animation_.beacon_size = shutter_size_ shutter_lr_animation_.slew_size = 0 shutter_lr_animation_.priority = 5 + # shutter moving from right to left var shutter_rl_animation_ = animation.beacon_animation(engine) shutter_rl_animation_.color = col1_ shutter_rl_animation_.back_color = col2_ @@ -43,9 +45,8 @@ def shutter_left_right_template(engine, colors_, duration_) shutter_rl_animation_.beacon_size = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - self.resolve(shutter_size_) end) shutter_rl_animation_.slew_size = 0 shutter_rl_animation_.priority = 5 - var shutter_seq_ = animation.SequenceManager(engine) - #repeat col1.palette_size times { - .push_repeat_subsequence(animation.SequenceManager(engine, 7) + var shutter_seq_ = animation.SequenceManager(engine, -1) + .push_repeat_subsequence(animation.SequenceManager(engine, def (engine) return col1_.palette_size end) .push_closure_step(def (engine) shutter_size_.start(engine.time_ms) end) .push_play_step(shutter_lr_animation_, duration_) .push_closure_step(def (engine) col1_.next = 1 end) @@ -60,20 +61,27 @@ def shutter_left_right_template(engine, colors_, duration_) engine.add(shutter_seq_) end -animation.register_user_function('shutter_left_right', shutter_left_right_template) +animation.register_user_function('shutter_bidir', shutter_bidir_template) -var Violet_ = 0xFF112233 -var rainbow_with_white_ = bytes("FFFF0000" "FFFFA500" "FFFFFF00" "FF008000" "FF0000FF" "FF4B0082" "FFFFFFFF") -shutter_left_right_template(engine, rainbow_with_white_, 1500) +var rainbow_with_white_ = bytes( + "FFFF0000" + "FFFFA500" + "FFFFFF00" + "FF008000" # comma left on-purpose to test transpiler + "FF0000FF" # need for a lighter blue + "FF4B0082" + "FFFFFFFF" +) +shutter_bidir_template(engine, rainbow_with_white_, 1500) engine.start() #- Original DSL source: # Demo Shutter Rainbow # -# Shutter from left to right iterating in all colors +# Shutter from left to right iterating in all colors, then right to left -template shutter_left_right { +template shutter_bidir { param colors type palette param duration @@ -84,6 +92,7 @@ template shutter_left_right { color col2 = color_cycle(palette=colors, cycle_period=0) col2.next = 1 + # shutter moving from left to right animation shutter_lr_animation = beacon_animation( color = col2 back_color = col1 @@ -93,6 +102,7 @@ template shutter_left_right { priority = 5 ) + # shutter moving from right to left animation shutter_rl_animation = beacon_animation( color = col1 back_color = col2 @@ -102,9 +112,8 @@ template shutter_left_right { priority = 5 ) - sequence shutter_seq { - #repeat col1.palette_size times { - repeat 7 times { + sequence shutter_seq repeat forever { + repeat col1.palette_size times { reset shutter_size play shutter_lr_animation for duration col1.next = 1 @@ -121,18 +130,15 @@ template shutter_left_right { run shutter_seq } -color Violet = 0x112233 - -palette rainbow_with_white = [ - red +palette rainbow_with_white = [ red orange yellow - green - blue + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue indigo white ] -shutter_left_right(rainbow_with_white, 1.5s) +shutter_bidir(rainbow_with_white, 1.5s) -# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be b/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be index 4cf7fc0f4..52ae0bf2b 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/disco_strobe.be @@ -13,7 +13,15 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var disco_colors_ = bytes("00FF0000" "2AFF8000" "55FFFF00" "8000FF00" "AA0000FF" "D58000FF" "FFFF00FF") +var disco_colors_ = bytes( + "00FF0000" # Red + "2AFF8000" # Orange + "55FFFF00" # Yellow + "8000FF00" # Green + "AA0000FF" # Blue + "D58000FF" # Purple + "FFFF00FF" # Magenta +) # Fast color cycling base var disco_base_ = animation.rich_palette_animation(engine) disco_base_.palette = disco_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be b/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be index 48fba431a..04da2eda7 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/fire_flicker.be @@ -13,7 +13,13 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var fire_colors_ = bytes("00000000" "40800000" "80FF0000" "C0FF4500" "FFFFFF00") +var fire_colors_ = bytes( + "00000000" # Black + "40800000" # Dark red + "80FF0000" # Red + "C0FF4500" # Orange red + "FFFFFF00" # Yellow +) # Create base fire animation with palette var fire_base_ = animation.rich_palette_animation(engine) fire_base_.palette = fire_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be b/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be index e764f544c..167ff639e 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/lava_lamp.be @@ -13,7 +13,13 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var lava_colors_ = bytes("00330000" "40660000" "80CC3300" "C0FF6600" "FFFFAA00") +var lava_colors_ = bytes( + "00330000" # Dark red + "40660000" # Medium red + "80CC3300" # Bright red + "C0FF6600" # Orange + "FFFFAA00" # Yellow-orange +) # Base lava animation - very slow color changes var lava_base_ = animation.rich_palette_animation(engine) lava_base_.palette = lava_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be b/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be index 017c332b3..0b97cb934 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/lightning_storm.be @@ -13,7 +13,11 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var storm_colors_ = bytes("00000011" "80110022" "FF220033") +var storm_colors_ = bytes( + "00000011" # Very dark blue + "80110022" # Dark purple + "FF220033" # Slightly lighter purple +) var storm_bg_ = animation.rich_palette_animation(engine) storm_bg_.palette = storm_colors_ storm_bg_.cycle_period = 12000 diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be b/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be index 8860c2203..61f646b6d 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/matrix_rain.be @@ -18,7 +18,13 @@ var background_ = animation.solid(engine) background_.color = matrix_bg_ background_.priority = 50 # Define matrix green palette -var matrix_greens_ = bytes("00000000" "40003300" "80006600" "C000AA00" "FF00FF00") +var matrix_greens_ = bytes( + "00000000" # Black + "40003300" # Dark green + "80006600" # Medium green + "C000AA00" # Bright green + "FF00FF00" # Neon green +) # Create multiple cascading streams var stream1_pattern_ = animation.rich_palette(engine) stream1_pattern_.palette = matrix_greens_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be b/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be index 6657549a4..cc4a2f51d 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/neon_glow.be @@ -13,7 +13,12 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var neon_colors_ = bytes("00FF0080" "5500FF80" "AA8000FF" "FFFF8000") +var neon_colors_ = bytes( + "00FF0080" # Hot pink + "5500FF80" # Neon green + "AA8000FF" # Electric purple + "FFFF8000" # Neon orange +) # Main neon glow with color cycling var neon_main_ = animation.rich_palette_animation(engine) neon_main_.palette = neon_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be b/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be index 0b00d5ced..4403d9dba 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/ocean_waves.be @@ -13,7 +13,13 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var ocean_colors_ = bytes("00000080" "400040C0" "800080FF" "C040C0FF" "FF80FFFF") +var ocean_colors_ = bytes( + "00000080" # Deep blue + "400040C0" # Ocean blue + "800080FF" # Light blue + "C040C0FF" # Cyan + "FF80FFFF" # Light cyan +) # Base ocean animation with slow color cycling var ocean_base_ = animation.rich_palette_animation(engine) ocean_base_.palette = ocean_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be index 34e90675b..284ac6c31 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_demo.be @@ -15,7 +15,13 @@ var engine = animation.init_strip() var fire_colors_ = bytes("00000000" "40800000" "80FF0000" "C0FF8000" "FFFFFF00") # Define an ocean palette -var ocean_colors_ = bytes("00000080" "400000FF" "8000FFFF" "C000FF80" "FF008000") +var ocean_colors_ = bytes( + "00000080" # Navy blue + "400000FF" # Blue + "8000FFFF" # Cyan + "C000FF80" # Spring green + "FF008000" # Green +) # Create animations using the palettes var fire_anim_ = animation.rich_palette_animation(engine) fire_anim_.palette = fire_colors_ @@ -23,6 +29,9 @@ fire_anim_.cycle_period = 5000 var ocean_anim_ = animation.rich_palette_animation(engine) ocean_anim_.palette = ocean_colors_ ocean_anim_.cycle_period = 8000 +var forest_anim_ = animation.rich_palette_animation(engine) +forest_anim_.palette = animation.PALETTE_FOREST +forest_anim_.cycle_period = 8000 # Sequence to show both palettes var palette_demo_ = animation.SequenceManager(engine) .push_play_step(fire_anim_, 10000) @@ -32,6 +41,7 @@ var palette_demo_ = animation.SequenceManager(engine) .push_repeat_subsequence(animation.SequenceManager(engine, 2) .push_play_step(fire_anim_, 3000) .push_play_step(ocean_anim_, 3000) + .push_play_step(forest_anim_, 3000) ) engine.add(palette_demo_) engine.start() @@ -44,19 +54,13 @@ engine.start() #strip length 30 # Define a fire palette -palette fire_colors = [ - (0, 0x000000), # Black - (64, 0x800000), # Dark red - (128, 0xFF0000), # Red - (192, 0xFF8000), # Orange - (255, 0xFFFF00) # Yellow -] +palette fire_colors = [ (0, 0x000000), (64, 0x800000), (128, 0xFF0000), (192, 0xFF8000), (255, 0xFFFF00) ] # Define an ocean palette palette ocean_colors = [ - (0, 0x000080), # Navy blue + (0, 0x000080) # Navy blue (64, 0x0000FF), # Blue - (128, 0x00FFFF), # Cyan + (128, 0x00FFFF) # Cyan (192, 0x00FF80), # Spring green (255, 0x008000) # Green ] @@ -66,6 +70,8 @@ animation fire_anim = rich_palette_animation(palette=fire_colors, cycle_period=5 animation ocean_anim = rich_palette_animation(palette=ocean_colors, cycle_period=8s) +animation forest_anim = rich_palette_animation(palette=PALETTE_FOREST, cycle_period=8s) + # Sequence to show both palettes sequence palette_demo { play fire_anim for 10s @@ -75,6 +81,7 @@ sequence palette_demo { repeat 2 times { play fire_anim for 3s play ocean_anim for 3s + play forest_anim for 3s } } diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be b/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be index 24af7a886..ee588cc87 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/palette_showcase.be @@ -13,13 +13,41 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var fire_gradient_ = bytes("00000000" "20330000" "40660000" "60CC0000" "80FF3300" "A0FF6600" "C0FF9900" "E0FFCC00" "FFFFFF00") +var fire_gradient_ = bytes( + "00000000" # Black (no fire) + "20330000" # Very dark red + "40660000" # Dark red + "60CC0000" # Red + "80FF3300" # Red-orange + "A0FF6600" # Orange + "C0FF9900" # Light orange + "E0FFCC00" # Yellow-orange + "FFFFFF00" # Bright yellow +) # Example 2: Ocean palette with named colors -var ocean_depths_ = bytes("00000000" "40000080" "800000FF" "C000FFFF" "FFFFFFFF") +var ocean_depths_ = bytes( + "00000000" # Deep ocean + "40000080" # Deep blue + "800000FF" # Ocean blue + "C000FFFF" # Shallow water + "FFFFFFFF" # Foam/waves +) # Example 3: Aurora palette (from the original example) -var aurora_borealis_ = bytes("00000022" "40004400" "8000AA44" "C044AA88" "FF88FFAA") +var aurora_borealis_ = bytes( + "00000022" # Dark night sky + "40004400" # Dark green + "8000AA44" # Aurora green + "C044AA88" # Light green + "FF88FFAA" # Bright aurora +) # Example 4: Sunset palette mixing hex and named colors -var sunset_sky_ = bytes("00191970" "40800080" "80FF69B4" "C0FFA500" "FFFFFF00") +var sunset_sky_ = bytes( + "00191970" # Midnight blue + "40800080" # Purple twilight + "80FF69B4" # Hot pink + "C0FFA500" # Sunset orange + "FFFFFF00" # Sun +) # Create animations using each palette var fire_effect_ = animation.rich_palette_animation(engine) fire_effect_.palette = fire_gradient_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be b/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be index bd1fc54bc..0dc7c78e4 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/plasma_wave.be @@ -13,7 +13,14 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var plasma_colors_ = bytes("00FF0080" "33FF8000" "66FFFF00" "9980FF00" "CC00FF80" "FF0080FF") +var plasma_colors_ = bytes( + "00FF0080" # Magenta + "33FF8000" # Orange + "66FFFF00" # Yellow + "9980FF00" # Yellow-green + "CC00FF80" # Cyan-green + "FF0080FF" # Blue +) # Base plasma animation with medium speed var plasma_base_ = animation.rich_palette_animation(engine) plasma_base_.palette = plasma_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be b/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be index ed4d88a69..e68d56569 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/sunrise_sunset.be @@ -13,7 +13,17 @@ import animation # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() -var daylight_colors_ = bytes("00000011" "20001133" "40FF4400" "60FFAA00" "80FFFF88" "A0FFAA44" "C0FF6600" "E0AA2200" "FF220011") +var daylight_colors_ = bytes( + "00000011" # Night - dark blue + "20001133" # Pre-dawn + "40FF4400" # Sunrise orange + "60FFAA00" # Morning yellow + "80FFFF88" # Midday bright + "A0FFAA44" # Afternoon + "C0FF6600" # Sunset orange + "E0AA2200" # Dusk red + "FF220011" # Night - dark red +) # Main daylight cycle - very slow transition var daylight_cycle_ = animation.rich_palette_animation(engine) daylight_cycle_.palette = daylight_colors_ diff --git a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow.anim b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow.anim index f73483d7c..09fd05994 100644 --- a/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow.anim +++ b/lib/libesp32/berry_animation/anim_examples/demo_shutter_rainbow.anim @@ -1,8 +1,8 @@ # Demo Shutter Rainbow # -# Shutter from left to right iterating in all colors +# Shutter from left to right iterating in all colors, then right to left -template shutter_left_right { +template shutter_bidir { param colors type palette param duration @@ -13,6 +13,7 @@ template shutter_left_right { color col2 = color_cycle(palette=colors, cycle_period=0) col2.next = 1 + # shutter moving from left to right animation shutter_lr_animation = beacon_animation( color = col2 back_color = col1 @@ -22,6 +23,7 @@ template shutter_left_right { priority = 5 ) + # shutter moving from right to left animation shutter_rl_animation = beacon_animation( color = col1 back_color = col2 @@ -31,9 +33,8 @@ template shutter_left_right { priority = 5 ) - sequence shutter_seq { - #repeat col1.palette_size times { - repeat 7 times { + sequence shutter_seq repeat forever { + repeat col1.palette_size times { reset shutter_size play shutter_lr_animation for duration col1.next = 1 @@ -50,16 +51,13 @@ template shutter_left_right { run shutter_seq } -color Violet = 0x112233 - -palette rainbow_with_white = [ - red +palette rainbow_with_white = [ red orange yellow - green - blue + green, # comma left on-purpose to test transpiler + blue # need for a lighter blue indigo white ] -shutter_left_right(rainbow_with_white, 1.5s) +shutter_bidir(rainbow_with_white, 1.5s) diff --git a/lib/libesp32/berry_animation/anim_examples/palette_demo.anim b/lib/libesp32/berry_animation/anim_examples/palette_demo.anim index cf58d0882..53d38bc34 100644 --- a/lib/libesp32/berry_animation/anim_examples/palette_demo.anim +++ b/lib/libesp32/berry_animation/anim_examples/palette_demo.anim @@ -4,19 +4,13 @@ #strip length 30 # Define a fire palette -palette fire_colors = [ - (0, 0x000000), # Black - (64, 0x800000), # Dark red - (128, 0xFF0000), # Red - (192, 0xFF8000), # Orange - (255, 0xFFFF00) # Yellow -] +palette fire_colors = [ (0, 0x000000), (64, 0x800000), (128, 0xFF0000), (192, 0xFF8000), (255, 0xFFFF00) ] # Define an ocean palette palette ocean_colors = [ - (0, 0x000080), # Navy blue + (0, 0x000080) # Navy blue (64, 0x0000FF), # Blue - (128, 0x00FFFF), # Cyan + (128, 0x00FFFF) # Cyan (192, 0x00FF80), # Spring green (255, 0x008000) # Green ] @@ -26,6 +20,8 @@ animation fire_anim = rich_palette_animation(palette=fire_colors, cycle_period=5 animation ocean_anim = rich_palette_animation(palette=ocean_colors, cycle_period=8s) +animation forest_anim = rich_palette_animation(palette=PALETTE_FOREST, cycle_period=8s) + # Sequence to show both palettes sequence palette_demo { play fire_anim for 10s @@ -35,6 +31,7 @@ sequence palette_demo { repeat 2 times { play fire_anim for 3s play ocean_anim for 3s + play forest_anim for 3s } } diff --git a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md index c068cfba5..990ba5542 100644 --- a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md +++ b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md @@ -2,6 +2,8 @@ This document provides a comprehensive reference for the Animation DSL syntax, keywords, and grammar. It focuses purely on the language specification without implementation details. +For detailed information about the DSL transpiler's internal architecture and processing flow, see [TRANSPILER_ARCHITECTURE.md](TRANSPILER_ARCHITECTURE.md). + ## Language Overview The Animation DSL is a declarative language for defining LED strip animations. It uses natural, readable syntax with named parameters and supports colors, animations, sequences, and property assignments. diff --git a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md index 08dc1c3eb..f0fdee265 100644 --- a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md +++ b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md @@ -36,6 +36,10 @@ import animation_dsl # DSL compiler and runtime (required for DSL) - Integrating with existing Berry code - Firmware size is constrained (DSL module can be excluded) +## Transpiler Architecture + +For detailed information about the DSL transpiler's internal architecture, including the core processing flow and expression processing chain, see [TRANSPILER_ARCHITECTURE.md](TRANSPILER_ARCHITECTURE.md). + ## DSL API Functions ### Core Functions @@ -287,7 +291,7 @@ def pulse_effect(engine, color, speed) pulse_.color = color pulse_.period = speed engine.add(pulse_) - engine.start_animation(pulse_) + engine.start() end animation.register_user_function("pulse_effect", pulse_effect) @@ -342,9 +346,8 @@ def comet_chase(engine, trail_color, bg_color, chase_speed) comet_.color = trail_color comet_.speed = chase_speed engine.add(background_) - engine.start_animation(background_) engine.add(comet_) - engine.start_animation(comet_) + engine.start() end animation.register_user_function("comet_chase", comet_chase) diff --git a/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md b/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md new file mode 100644 index 000000000..052b42d42 --- /dev/null +++ b/lib/libesp32/berry_animation/docs/TRANSPILER_ARCHITECTURE.md @@ -0,0 +1,543 @@ +# DSL Transpiler Architecture + +This document provides a detailed overview of the Berry Animation DSL transpiler architecture, including the core processing flow and expression processing chain. + +## Overview + +The DSL transpiler (`transpiler.be`) converts Animation DSL code into executable Berry code. It uses a **ultra-simplified single-pass architecture** with comprehensive validation and code generation capabilities. The refactored transpiler emphasizes simplicity, robustness, and maintainability while providing extensive compile-time validation. + +### Single-Pass Architecture Clarification + +The transpiler is truly **single-pass** - it processes the token stream once from start to finish. When the documentation mentions "sequential steps" (like in template processing), these refer to **sequential operations within the single pass**, not separate passes over the data. For example: + +- Template processing collects parameters, then collects body tokens **sequentially** in one pass +- Expression transformation handles mathematical functions, then user variables **sequentially** in one operation +- The transpiler never backtracks or re-processes the same tokens multiple times + +## Core Processing Flow + +The transpiler follows an **ultra-simplified single-pass architecture** with the following main flow: + +``` +transpile() +ā”œā”€ā”€ add("import animation") +ā”œā”€ā”€ while !at_end() +│ └── process_statement() +│ ā”œā”€ā”€ Handle comments (preserve in output) +│ ā”œā”€ā”€ Skip whitespace/newlines +│ ā”œā”€ā”€ Auto-initialize strip if needed +│ ā”œā”€ā”€ process_color() +│ │ ā”œā”€ā”€ validate_user_name() +│ │ ā”œā”€ā”€ _validate_color_provider_factory_exists() +│ │ └── _process_named_arguments_for_color_provider() +│ ā”œā”€ā”€ process_palette() +│ │ ā”œā”€ā”€ validate_user_name() +│ │ ā”œā”€ā”€ Detect tuple vs alternative syntax +│ │ └── process_palette_color() (strict validation) +│ ā”œā”€ā”€ process_animation() +│ │ ā”œā”€ā”€ validate_user_name() +│ │ ā”œā”€ā”€ _validate_animation_factory_creates_animation() +│ │ └── _process_named_arguments_for_animation() +│ ā”œā”€ā”€ process_set() +│ │ ā”œā”€ā”€ validate_user_name() +│ │ └── process_value() +│ ā”œā”€ā”€ process_template() +│ │ ā”œā”€ā”€ validate_user_name() +│ │ ā”œā”€ā”€ Collect parameters with type annotations +│ │ ā”œā”€ā”€ Collect body tokens +│ │ └── generate_template_function() +│ ā”œā”€ā”€ process_sequence() +│ │ ā”œā”€ā”€ validate_user_name() +│ │ ā”œā”€ā”€ Parse repeat syntax (multiple variants) +│ │ └── process_sequence_statement() (fluent interface) +│ │ ā”œā”€ā”€ process_play_statement_fluent() +│ │ ā”œā”€ā”€ process_wait_statement_fluent() +│ │ ā”œā”€ā”€ process_log_statement_fluent() +│ │ ā”œā”€ā”€ process_reset_restart_statement_fluent() +│ │ └── process_sequence_assignment_fluent() +│ ā”œā”€ā”€ process_import() (direct Berry import generation) +│ ā”œā”€ā”€ process_run() (collect for single engine.start()) +│ └── process_property_assignment() +└── generate_engine_start() (single call for all run statements) +``` + +### Statement Processing Details + +#### Color Processing +``` +process_color() +ā”œā”€ā”€ expect_identifier() → color name +ā”œā”€ā”€ validate_user_name() → check against reserved names +ā”œā”€ā”€ expect_assign() → '=' +ā”œā”€ā”€ Check if function call (color provider) +│ ā”œā”€ā”€ Check template_definitions first +│ ā”œā”€ā”€ _validate_color_provider_factory_exists() +│ ā”œā”€ā”€ add("var name_ = animation.func(engine)") +│ ā”œā”€ā”€ Track in symbol_table for validation +│ └── _process_named_arguments_for_color_provider() +└── OR process_value() → static color value with symbol tracking +``` + +#### Animation Processing +``` +process_animation() +ā”œā”€ā”€ expect_identifier() → animation name +ā”œā”€ā”€ validate_user_name() → check against reserved names +ā”œā”€ā”€ expect_assign() → '=' +ā”œā”€ā”€ Check if function call (animation factory) +│ ā”œā”€ā”€ Check template_definitions first +│ ā”œā”€ā”€ _validate_animation_factory_creates_animation() +│ ā”œā”€ā”€ add("var name_ = animation.func(engine)") +│ ā”œā”€ā”€ Track in symbol_table for validation +│ └── _process_named_arguments_for_animation() +└── OR process_value() → reference or literal with symbol tracking +``` + +#### Sequence Processing (Enhanced) +``` +process_sequence() +ā”œā”€ā”€ expect_identifier() → sequence name +ā”œā”€ā”€ validate_user_name() → check against reserved names +ā”œā”€ā”€ Track in sequence_names and symbol_table +ā”œā”€ā”€ Parse multiple repeat syntaxes: +│ ā”œā”€ā”€ "sequence name repeat N times { ... }" +│ ā”œā”€ā”€ "sequence name forever { ... }" +│ ā”œā”€ā”€ "sequence name N times { ... }" +│ └── "sequence name { repeat ... }" +ā”œā”€ā”€ expect_left_brace() → '{' +ā”œā”€ā”€ add("var name_ = animation.SequenceManager(engine, repeat_count)") +ā”œā”€ā”€ while !check_right_brace() +│ └── process_sequence_statement() (fluent interface) +└── expect_right_brace() → '}' +``` + +#### Template Processing (New) +``` +process_template() +ā”œā”€ā”€ expect_identifier() → template name +ā”œā”€ā”€ validate_user_name() → check against reserved names +ā”œā”€ā”€ expect_left_brace() → '{' +ā”œā”€ā”€ Sequential step 1: collect parameters with type annotations +ā”œā”€ā”€ Sequential step 2: collect body tokens +ā”œā”€ā”€ expect_right_brace() → '}' +ā”œā”€ā”€ Store in template_definitions +ā”œā”€ā”€ generate_template_function() +│ ā”œā”€ā”€ Create new transpiler instance for body +│ ā”œā”€ā”€ Transpile body with fresh symbol table +│ ā”œā”€ā”€ Generate Berry function with engine parameter +│ └── Register as user function +└── Track in symbol_table as "template" +``` + +## Expression Processing Chain + +The transpiler uses a **unified recursive descent parser** for expressions with **raw mode support** for closure contexts: + +``` +process_value(context) +└── process_additive_expression(context, is_top_level=true, raw_mode=false) + ā”œā”€ā”€ process_multiplicative_expression(context, is_top_level, raw_mode) + │ ā”œā”€ā”€ process_unary_expression(context, is_top_level, raw_mode) + │ │ └── process_primary_expression(context, is_top_level, raw_mode) + │ │ ā”œā”€ā”€ Parenthesized expression → recursive call + │ │ ā”œā”€ā”€ Function call handling: + │ │ │ ā”œā”€ā”€ Raw mode: mathematical functions → self.method() + │ │ │ ā”œā”€ā”€ Raw mode: template calls → template_func(self.engine, ...) + │ │ │ ā”œā”€ā”€ Regular mode: process_function_call() or process_nested_function_call() + │ │ │ └── Simple function detection → _is_simple_function_call() + │ │ ā”œā”€ā”€ Color literal → convert_color() (enhanced ARGB support) + │ │ ā”œā”€ā”€ Time literal → process_time_value() (with variable support) + │ │ ā”œā”€ā”€ Percentage → process_percentage_value() + │ │ ā”œā”€ā”€ Number literal → return as-is + │ │ ā”œā”€ā”€ String literal → quote and return + │ │ ā”œā”€ā”€ Array literal → process_array_literal() (not in raw mode) + │ │ ā”œā”€ā”€ Identifier → enhanced symbol resolution + │ │ │ ā”œā”€ā”€ Object property → "obj.prop" with validation + │ │ │ ā”œā”€ā”€ User function → _process_user_function_call() + │ │ │ ā”œā”€ā”€ Palette constant → "animation.PALETTE_RAINBOW" etc. + │ │ │ ā”œā”€ā”€ Named color → get_named_color_value() + │ │ │ └── Consolidated symbol resolution → resolve_symbol_reference() + │ │ └── Boolean keywords → true/false + │ └── Handle unary operators (-, +) + └── Handle multiplicative operators (*, /) +└── Handle additive operators (+, -) +└── Closure wrapping logic: + ā”œā”€ā”€ Skip in raw_mode + ā”œā”€ā”€ Special handling for repeat_count context + ā”œā”€ā”€ is_computed_expression_string() detection + └── create_computation_closure_from_string() +``` + +### Expression Context Handling + +The expression processor handles different contexts with **enhanced validation and processing**: + +- **`"color"`** - Color definitions and assignments +- **`"animation"`** - Animation definitions and assignments +- **`"argument"`** - Function call arguments +- **`"property"`** - Property assignments with validation +- **`"variable"`** - Variable assignments with type tracking +- **`"repeat_count"`** - Sequence repeat counts (special closure handling) +- **`"time"`** - Time value processing with variable support +- **`"array_element"`** - Array literal elements +- **`"event_param"`** - Event handler parameters +- **`"expression"`** - Raw expression context (for closures) + +### Computed Expression Detection (Enhanced) + +The transpiler automatically detects computed expressions that need closures with **improved accuracy**: + +``` +is_computed_expression_string(expr_str) +ā”œā”€ā”€ Check for arithmetic operators (+, -, *, /) with spaces +ā”œā”€ā”€ Check for function calls (excluding simple functions) +│ ā”œā”€ā”€ Extract function name before parenthesis +│ ā”œā”€ā”€ Use _is_simple_function_call() to filter +│ └── Only mark complex functions as needing closures +ā”œā”€ā”€ Exclude simple parenthesized literals like (-1) +└── Return true only for actual computations + +create_computation_closure_from_string(expr_str) +ā”œā”€ā”€ transform_expression_for_closure() +│ ā”œā”€ā”€ Sequential step 1: Transform mathematical functions → self.method() +│ │ ā”œā”€ā”€ Use dynamic introspection with is_math_method() +│ │ ā”œā”€ā”€ Check for existing "self." prefix +│ │ └── Only transform if not already prefixed +│ ā”œā”€ā”€ Sequential step 2: Transform user variables → self.resolve(var_) +│ │ ā”œā”€ā”€ Find variables ending with _ +│ │ ā”œā”€ā”€ Check for existing resolve() calls +│ │ ā”œā”€ā”€ Avoid double-wrapping +│ │ └── Handle identifier character boundaries +│ └── Clean up extra spaces +└── Return "animation.create_closure_value(engine, closure)" + +is_anonymous_function(expr_str) +ā”œā”€ā”€ Check if expression starts with "(def " +ā”œā”€ā”€ Check if expression ends with ")(engine)" +└── Skip closure wrapping for already-wrapped functions +``` + +## Validation System (Comprehensive) + +The transpiler includes **extensive compile-time validation** with robust error handling: + +### Factory Function Validation (Enhanced) +``` +_validate_factory_function(func_name, expected_base_class) +ā”œā”€ā”€ Check if function exists in animation module using introspection +ā”œā”€ā”€ Check if it's callable (function or class) +ā”œā”€ā”€ Create mock instance with MockEngine for type checking +ā”œā”€ā”€ Validate instance type matches expected base class +ā”œā”€ā”€ Handle mathematical functions separately (skip validation) +└── Graceful error handling with try/catch + +MockEngine class provides: +ā”œā”€ā”€ time_ms property for validation +ā”œā”€ā”€ get_strip_length() method returning default 30 +└── Minimal interface for instance creation +``` + +### Parameter Validation (Real-time) +``` +_validate_single_parameter(func_name, param_name, animation_instance) +ā”œā”€ā”€ Use introspection to check if parameter exists +ā”œā”€ā”€ Call instance._has_param(param_name) for validation +ā”œā”€ā”€ Report detailed error messages with line numbers +ā”œā”€ā”€ Validate immediately as parameters are parsed +└── Graceful error handling to ensure transpiler robustness + +_create_instance_for_validation(func_name) +ā”œā”€ā”€ Create MockEngine for validation +ā”œā”€ā”€ Call factory function with mock engine +ā”œā”€ā”€ Return instance for parameter validation +└── Handle creation failures gracefully +``` + +### Reference Validation (Consolidated) +``` +resolve_symbol_reference(name) - Unified symbol resolution +ā”œā”€ā”€ Check if it's a named color → get_named_color_value() +ā”œā”€ā”€ Check symbol_table for user-defined objects → name_ +ā”œā”€ā”€ Check sequence_names for sequences → name_ +ā”œā”€ā”€ Check animation module using introspection → animation.name +└── Default to user-defined format → name_ + +validate_symbol_reference(name, context) - With error reporting +ā”œā”€ā”€ Use symbol_exists() to check all sources +ā”œā”€ā”€ Report detailed error with context information +└── Return validation status + +symbol_exists(name) - Existence check +ā”œā”€ā”€ Check animation_dsl.is_color_name(name) +ā”œā”€ā”€ Check symbol_table.contains(name) +ā”œā”€ā”€ Check sequence_names.contains(name) +ā”œā”€ā”€ Check introspect.contains(animation, name) +└── Return boolean result +``` + +### User Name Validation (Reserved Names) +``` +validate_user_name(name, definition_type) +ā”œā”€ā”€ Check against predefined color names +ā”œā”€ā”€ Check against DSL statement keywords +ā”œā”€ā”€ Report conflicts with suggestions for alternatives +└── Prevent redefinition of reserved identifiers +``` + +### Value Provider Validation (New) +``` +_validate_value_provider_reference(object_name, context) +ā”œā”€ā”€ Check if symbol exists using validate_symbol_reference() +ā”œā”€ā”€ Check symbol_table markers for type information +ā”œā”€ā”€ Validate instance types using isinstance() +ā”œā”€ā”€ Ensure only value providers/animations can be reset/restarted +└── Provide detailed error messages for invalid types +``` + +## Code Generation Patterns + +### Engine-First Pattern (Consistent) +All factory functions use the engine-first pattern with **automatic strip initialization**: +```berry +# DSL: animation pulse = pulsating_animation(color=red, period=2s) +# Generated: +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +var pulse_ = animation.pulsating_animation(engine) +pulse_.color = animation.red +pulse_.period = 2000 +``` + +### Symbol Resolution (Consolidated) +The transpiler resolves symbols at compile time using **unified resolution logic**: +```berry +# Built-in symbols from animation module → animation.symbol +animation.red, animation.PALETTE_RAINBOW, animation.SINE, animation.COSINE + +# User-defined symbols → symbol_ +my_color_, my_animation_, my_sequence_ + +# Named colors → direct ARGB values (resolved at compile time) +red → 0xFFFF0000, blue → 0xFF0000FF + +# Template calls → template_function(engine, args) +my_template(red, 2s) → my_template_template(engine, 0xFFFF0000, 2000) +``` + +### Closure Generation (Enhanced) +Dynamic expressions are wrapped in closures with **mathematical function support**: +```berry +# DSL: animation.opacity = strip_length() / 2 + 50 +# Generated: +animation.opacity = animation.create_closure_value(engine, + def (self) return self.resolve(strip_length_(engine)) / 2 + 50 end) + +# DSL: animation.opacity = max(100, min(255, user.rand_demo() + 50)) +# Generated: +animation.opacity = animation.create_closure_value(engine, + def (self) return self.max(100, self.min(255, animation.get_user_function('rand_demo')(self.engine) + 50)) end) + +# Mathematical functions are automatically detected and prefixed with self. +# User functions are wrapped with animation.get_user_function() calls +``` + +### Template Generation (New) +Templates are transpiled into Berry functions and registered as user functions: +```berry +# DSL Template: +template pulse_effect { + param color type color + param speed + + animation pulse = pulsating_animation(color=color, period=speed) + run pulse +} + +# Generated: +def pulse_effect_template(engine, color_, speed_) + var pulse_ = animation.pulsating_animation(engine) + pulse_.color = color_ + pulse_.period = speed_ + engine.add(pulse_) +end + +animation.register_user_function('pulse_effect', pulse_effect_template) +``` + +### Sequence Generation (Fluent Interface) +Sequences use fluent interface pattern for better readability: +```berry +# DSL: sequence demo { play anim for 2s; wait 1s } +# Generated: +var demo_ = animation.SequenceManager(engine) + .push_play_step(anim_, 2000) + .push_wait_step(1000) + +# Nested repeats use sub-sequences: +var demo_ = animation.SequenceManager(engine) + .push_repeat_subsequence(animation.SequenceManager(engine, 3) + .push_play_step(anim_, 1000) + ) +``` + +## Template System (Enhanced) + +Templates are transpiled into Berry functions with **comprehensive parameter handling**: + +``` +process_template() +ā”œā”€ā”€ expect_identifier() → template name +ā”œā”€ā”€ validate_user_name() → check against reserved names +ā”œā”€ā”€ expect_left_brace() → '{' +ā”œā”€ā”€ Sequential step 1: collect parameters with type annotations +│ ā”œā”€ā”€ Parse "param name type annotation" syntax +│ ā”œā”€ā”€ Store parameter names and optional types +│ └── Support both typed and untyped parameters +ā”œā”€ā”€ Sequential step 2: collect body tokens until closing brace +│ ā”œā”€ā”€ Handle nested braces correctly +│ ā”œā”€ā”€ Preserve all tokens for later transpilation +│ └── Track brace depth for proper parsing +ā”œā”€ā”€ expect_right_brace() → '}' +ā”œā”€ā”€ Store in template_definitions for call resolution +ā”œā”€ā”€ generate_template_function() +│ ā”œā”€ā”€ Create new SimpleDSLTranspiler instance for body +│ ā”œā”€ā”€ Set up fresh symbol table with parameters +│ ā”œā”€ā”€ Mark strip as initialized (templates assume engine exists) +│ ā”œā”€ā”€ Transpile body using transpile_template_body() +│ ā”œā”€ā”€ Generate Berry function with engine + parameters +│ ā”œā”€ā”€ Handle transpilation errors gracefully +│ └── Register as user function automatically +└── Track in symbol_table as "template" +``` + +### Template Call Resolution (Multiple Contexts) +```berry +# DSL template call in animation context: +animation my_anim = my_template(red, 2s) +# Generated: var my_anim_ = my_template_template(engine, 0xFFFF0000, 2000) + +# DSL template call in property context: +animation.opacity = my_template(blue, 1s) +# Generated: animation.opacity = my_template_template(self.engine, 0xFF0000FF, 1000) + +# DSL standalone template call: +my_template(green, 3s) +# Generated: my_template_template(engine, 0xFF008000, 3000) +``` + +### Template Body Transpilation +Templates use a **separate transpiler instance** with isolated symbol table: +- Fresh symbol table prevents name conflicts +- Parameters are added as "parameter" markers +- Run statements are processed immediately (not collected) +- Template calls can be nested (templates calling other templates) +- Error handling preserves context information + +## Error Handling (Robust) + +The transpiler provides **comprehensive error reporting** with graceful degradation: + +### Error Categories +- **Syntax errors** - Invalid DSL syntax with line numbers +- **Factory validation** - Non-existent animation/color factories with suggestions +- **Parameter validation** - Invalid parameter names with class context +- **Reference validation** - Undefined object references with context information +- **Constraint validation** - Parameter values outside valid ranges +- **Type validation** - Incorrect parameter types with expected types +- **Template errors** - Template definition and call validation +- **Reserved name conflicts** - User names conflicting with built-ins + +### Error Reporting Features +```berry +error(msg) +ā”œā”€ā”€ Capture current line number from token +ā”œā”€ā”€ Format error with context: "Line X: message" +ā”œā”€ā”€ Store in errors array for batch reporting +└── Continue transpilation for additional error discovery + +get_error_report() +ā”œā”€ā”€ Check if errors exist +ā”œā”€ā”€ Format comprehensive error report +ā”œā”€ā”€ Include all errors with line numbers +└── Provide user-friendly error messages +``` + +### Graceful Error Handling +- **Try-catch blocks** around validation to prevent crashes +- **Robust validation** that continues on individual failures +- **Skip statement** functionality to recover from parse errors +- **Default values** when validation fails to maintain transpilation flow +- **Context preservation** in error messages for better debugging + +## Performance Considerations + +### Ultra-Simplified Architecture +- **Single-pass processing** - tokens processed once from start to finish +- **Incremental symbol table** - builds validation context as it parses +- **Immediate validation** - catches errors as soon as they're encountered +- **Minimal state tracking** - only essential information is maintained + +### Compile-Time Optimization +- **Symbol resolution at transpile time** - eliminates runtime lookups +- **Parameter validation during parsing** - catches errors early +- **Template pre-compilation** - templates become efficient Berry functions +- **Closure detection** - only wraps expressions that actually need it +- **Mathematical function detection** - uses dynamic introspection for accuracy + +### Memory Efficiency +- **Streaming token processing** - no large intermediate AST structures +- **Direct code generation** - output generated as parsing proceeds +- **Minimal intermediate representations** - tokens and symbol table only +- **Template isolation** - separate transpiler instances prevent memory leaks +- **Graceful error handling** - prevents memory issues from validation failures + +### Validation Efficiency +- **MockEngine pattern** - lightweight validation without full engine +- **Introspection caching** - validation results can be cached +- **Early termination** - stops processing invalid constructs quickly +- **Batch error reporting** - collects multiple errors in single pass + +## Integration Points + +### Animation Module Integration +- **Factory function discovery** via introspection with existence checking +- **Parameter validation** using instance methods and _has_param() +- **Symbol resolution** using module contents with fallback handling +- **Mathematical function detection** using dynamic introspection of ClosureValueProvider +- **Automatic strip initialization** when no explicit strip configuration + +### User Function Integration +- **Template registration** as user functions with automatic naming +- **User function call detection** with user. prefix handling +- **Closure generation** for computed parameters with mathematical functions +- **Template call resolution** in multiple contexts (animation, property, standalone) +- **Import statement processing** for user function modules + +### DSL Language Integration +- **Comment preservation** in generated Berry code +- **Inline comment handling** with proper spacing +- **Multiple syntax support** for sequences (repeat variants) +- **Palette syntax flexibility** (tuple vs alternative syntax) +- **Time unit conversion** with variable support +- **Percentage conversion** to 0-255 range + +### Robustness Features +- **Graceful error recovery** - continues parsing after errors +- **Validation isolation** - validation failures don't crash transpiler +- **Symbol table tracking** - maintains context for validation +- **Template isolation** - separate transpiler instances prevent conflicts +- **Reserved name protection** - prevents conflicts with built-in identifiers + +## Key Architectural Changes + +The refactored transpiler emphasizes: + +1. **Simplicity** - Ultra-simplified single-pass architecture +2. **Robustness** - Comprehensive error handling and graceful degradation +3. **Validation** - Extensive compile-time validation with detailed error messages +4. **Flexibility** - Support for templates, multiple syntax variants, and user functions +5. **Performance** - Efficient processing with minimal memory overhead +6. **Maintainability** - Clear separation of concerns and unified processing methods + +This architecture ensures robust, efficient transpilation from DSL to executable Berry code while providing comprehensive validation, detailed error reporting, and extensive language features. \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/animation.be b/lib/libesp32/berry_animation/src/animation.be index 465840b57..16bc58444 100644 --- a/lib/libesp32/berry_animation/src/animation.be +++ b/lib/libesp32/berry_animation/src/animation.be @@ -13,7 +13,7 @@ # import animation # var engine = animation.create_engine(strip) # var pulse_anim = animation.pulse(animation.solid(0xFF0000), 2000, 50, 255) -# engine.add_animation(pulse_anim).start() +# engine.add(pulse_anim).start() # # Launch standalone with: "./berry -s -g -m lib/libesp32/berry_animation" diff --git a/lib/libesp32/berry_animation/src/core/animation_engine.be b/lib/libesp32/berry_animation/src/core/animation_engine.be index 20b674ff8..846ce08a7 100644 --- a/lib/libesp32/berry_animation/src/core/animation_engine.be +++ b/lib/libesp32/berry_animation/src/core/animation_engine.be @@ -90,7 +90,7 @@ class AnimationEngine # # @param anim: animation - The animation instance to add (if not already listed) # @return true if succesful (TODO always true) - def add_animation(anim) + def _add_animation(anim) if (self.animations.find(anim) == nil) # not already in list # Add and sort by priority (higher priority first) self.animations.push(anim) @@ -140,7 +140,7 @@ class AnimationEngine end # Add a sequence manager - def add_sequence_manager(sequence_manager) + def _add_sequence_manager(sequence_manager) self.sequence_managers.push(sequence_manager) return self end @@ -153,11 +153,10 @@ class AnimationEngine def add(obj) # Check if it's a SequenceManager if isinstance(obj, animation.SequenceManager) - return self.add_sequence_manager(obj) + return self._add_sequence_manager(obj) # Check if it's an Animation (or subclass) elif isinstance(obj, animation.animation) - self.add_animation(obj) - return self + return self._add_animation(obj) else # Unknown type - provide helpful error message import introspect @@ -166,6 +165,22 @@ class AnimationEngine end end + # Generic remove method that delegates to specific remove methods + # @param obj: Animation or SequenceManager - The object to remove + # @return self for method chaining + def remove(obj) + # Check if it's a SequenceManager + if isinstance(obj, animation.SequenceManager) + return self.remove_sequence_manager(obj) + # Check if it's an Animation (or subclass) + elif isinstance(obj, animation.animation) + return self.remove_animation(obj) + else + # Unknown type - provide helpful error message + raise "type_error", f"Cannot remove object of type '{classname(obj)}' from engine. Expected Animation or SequenceManager." + end + end + # Remove a sequence manager def remove_sequence_manager(sequence_manager) var index = -1 diff --git a/lib/libesp32/berry_animation/src/core/sequence_manager.be b/lib/libesp32/berry_animation/src/core/sequence_manager.be index d4935c3ef..f488c2b38 100644 --- a/lib/libesp32/berry_animation/src/core/sequence_manager.be +++ b/lib/libesp32/berry_animation/src/core/sequence_manager.be @@ -75,11 +75,11 @@ class SequenceManager end # Start this sequence + # FIXED: More conservative engine clearing to avoid black frames def start(time_ms) # Stop any current sequence if self.is_running self.is_running = false - self.engine.clear() # Stop any sub-sequences self.stop_all_subsequences() end @@ -92,7 +92,24 @@ class SequenceManager # Start executing if we have steps if size(self.steps) > 0 - self.execute_current_step(time_ms) + # Execute all consecutive closure steps at the beginning atomically + while self.step_index < size(self.steps) + var step = self.steps[self.step_index] + if step["type"] == "closure" + var closure_func = step["closure"] + if closure_func != nil + closure_func(self.engine) + end + self.step_index += 1 + else + break + end + end + + # Now execute the next non-closure step (usually play) + if self.step_index < size(self.steps) + self.execute_current_step(time_ms) + end end return self @@ -108,15 +125,14 @@ class SequenceManager var current_step = self.steps[self.step_index] if current_step["type"] == "play" var anim = current_step["animation"] - self.engine.remove_animation(anim) + self.engine.remove(anim) elif current_step["type"] == "subsequence" var sub_seq = current_step["sequence_manager"] sub_seq.stop() end end - # Clear engine and stop all sub-sequences - self.engine.clear() + # Stop all sub-sequences (but don't clear entire engine) self.stop_all_subsequences() end return self @@ -151,9 +167,9 @@ class SequenceManager self.advance_to_next_step(current_time) end elif current_step["type"] == "closure" - # Assign steps are handled in batches by advance_to_next_step + # Closure steps are handled in batches by advance_to_next_step # This should not happen in normal flow, but handle it just in case - self.execute_assign_steps_batch(current_time) + self.execute_closure_steps_batch(current_time) else # Handle regular steps with duration if current_step.contains("duration") && current_step["duration"] > 0 @@ -181,7 +197,7 @@ class SequenceManager if step["type"] == "play" var anim = step["animation"] - self.engine.add_animation(anim) + self.engine.add(anim) anim.start(current_time) elif step["type"] == "wait" @@ -190,10 +206,10 @@ class SequenceManager elif step["type"] == "stop" var anim = step["animation"] - self.engine.remove_animation(anim) + self.engine.remove(anim) elif step["type"] == "closure" - # Closure steps should be handled in batches by execute_assign_steps_batch + # Closure steps should be handled in batches by execute_closure_steps_batch # This should not happen in normal flow, but handle it for safety var closure_func = step["closure"] if closure_func != nil @@ -210,27 +226,34 @@ class SequenceManager end # Advance to the next step in the sequence + # FIXED: Atomic transition to eliminate black frames def advance_to_next_step(current_time) - # Stop current animations if step had duration + # Get current step info BEFORE advancing var current_step = self.steps[self.step_index] + var current_anim = nil + + # Store reference to current animation but DON'T remove it yet if current_step["type"] == "play" && current_step.contains("duration") - var anim = current_step["animation"] - self.engine.remove_animation(anim) + current_anim = current_step["animation"] end self.step_index += 1 if self.step_index >= size(self.steps) + # Only remove animation when completing iteration + if current_anim != nil + self.engine.remove(current_anim) + end self.complete_iteration(current_time) else - # Execute all consecutive assign steps atomically - self.execute_assign_steps_batch(current_time) + # Execute closures and start next animation BEFORE removing current one + self.execute_closure_steps_batch_atomic(current_time, current_anim) end end # Execute all consecutive closure steps in a batch to avoid black frames - def execute_assign_steps_batch(current_time) - # Execute all consecutive closure steps (including both assign and log steps) + def execute_closure_steps_batch(current_time) + # Execute all consecutive closure steps while self.step_index < size(self.steps) var step = self.steps[self.step_index] if step["type"] == "closure" @@ -245,7 +268,7 @@ class SequenceManager end end - # Now execute the next non-assign step + # Now execute the next non-closure step if self.step_index < size(self.steps) self.execute_current_step(current_time) else @@ -253,7 +276,40 @@ class SequenceManager end end + # ADDED: Atomic batch execution to eliminate black frames + def execute_closure_steps_batch_atomic(current_time, previous_anim) + # Execute all consecutive closure steps + while self.step_index < size(self.steps) + var step = self.steps[self.step_index] + if step["type"] == "closure" + var closure_func = step["closure"] + if closure_func != nil + closure_func(self.engine) + end + self.step_index += 1 + else + break + end + end + + # Start the next animation BEFORE removing the previous one + if self.step_index < size(self.steps) + self.execute_current_step(current_time) + end + + # NOW it's safe to remove the previous animation (no gap) + if previous_anim != nil + self.engine.remove(previous_anim) + end + + # Handle completion + if self.step_index >= size(self.steps) + self.complete_iteration(current_time) + end + end + # Complete current iteration and check if we should repeat + # FIXED: Ensure atomic transitions during repeat iterations def complete_iteration(current_time) self.current_iteration += 1 @@ -262,9 +318,27 @@ class SequenceManager # Check if we should continue repeating if resolved_repeat_count == -1 || self.current_iteration < resolved_repeat_count - # Start next iteration + # Start next iteration - execute all initial closures atomically self.step_index = 0 - self.execute_current_step(current_time) + + # Execute all consecutive closure steps at the beginning atomically + while self.step_index < size(self.steps) + var step = self.steps[self.step_index] + if step["type"] == "closure" + var closure_func = step["closure"] + if closure_func != nil + closure_func(self.engine) + end + self.step_index += 1 + else + break + end + end + + # Now execute the next non-closure step (usually play) + if self.step_index < size(self.steps) + self.execute_current_step(current_time) + end else # All iterations complete self.is_running = false diff --git a/lib/libesp32/berry_animation/src/dsl/transpiler.be b/lib/libesp32/berry_animation/src/dsl/transpiler.be index d5f66d3a8..f44b04621 100644 --- a/lib/libesp32/berry_animation/src/dsl/transpiler.be +++ b/lib/libesp32/berry_animation/src/dsl/transpiler.be @@ -76,7 +76,7 @@ class SimpleDSLTranspiler # User functions use positional parameters with engine as first argument # In closure context, use self.engine to access the engine from the ClosureValueProvider - var args = self.process_function_arguments_for_expression() + var args = self.process_function_arguments(true) var full_args = args != "" ? f"self.engine, {args}" : "self.engine" return f"animation.get_user_function('{func_name}')({full_args})" else @@ -242,7 +242,7 @@ class SimpleDSLTranspiler # Check if this is a template call first if self.template_definitions.contains(func_name) # This is a template call - treat like user function - var args = self.process_function_arguments() + var args = self.process_function_arguments(false) var full_args = args != "" ? f"engine, {args}" : "engine" self.add(f"{func_name}_template({full_args}){inline_comment}") else @@ -309,6 +309,7 @@ class SimpleDSLTranspiler # Expect array literal self.expect_left_bracket() var palette_entries = [] + var palette_comments = [] # Store comments for each entry # Detect syntax type by looking at the first entry self.skip_whitespace_including_newlines() @@ -366,45 +367,83 @@ class SimpleDSLTranspiler palette_entries.push(vrgb_int) end - # Skip whitespace but preserve newlines for separator detection - while !self.at_end() - var tok = self.current() - if tok != nil && tok.type == animation_dsl.Token.COMMENT - self.next() - else - break - end - end - # Check for entry separator: comma OR newline OR end of palette + # Also collect any comment that comes after the separator + var entry_comment = "" + if self.current() != nil && self.current().type == animation_dsl.Token.COMMA self.next() # skip comma - self.skip_whitespace_including_newlines() + + # Check for comment immediately after comma + if self.current() != nil && self.current().type == animation_dsl.Token.COMMENT + entry_comment = self.current().value + self.next() + end + + # Skip remaining whitespace/newlines + while !self.at_end() + var tok = self.current() + if tok != nil && tok.type == animation_dsl.Token.NEWLINE + self.next() + else + break + end + end elif self.current() != nil && self.current().type == animation_dsl.Token.NEWLINE # Newline acts as entry separator - skip it and continue self.next() # skip newline self.skip_whitespace_including_newlines() elif !self.check_right_bracket() - self.error("Expected ',' or ']' in palette definition") - break + # For the last entry, check if there's a comment before the closing bracket + if self.current() != nil && self.current().type == animation_dsl.Token.COMMENT + entry_comment = self.current().value + self.next() + elif !self.check_right_bracket() + self.error("Expected ',' or ']' in palette definition") + break + end end + + palette_comments.push(entry_comment) # Store comment (empty string if no comment) end self.expect_right_bracket() var inline_comment = self.collect_inline_comment() - # Generate Berry bytes object - convert integers to hex strings for bytes() constructor - var palette_data = "" - for i : 0..size(palette_entries)-1 - if i > 0 - palette_data += " " + # Generate Berry bytes object with comments preserved + # Check if we have any comments to preserve + var has_comments = false + for comment : palette_comments + if comment != "" + has_comments = true + break end - # Convert integer back to hex string for bytes() constructor - var hex_str = format("%08X", palette_entries[i]) - palette_data += f'"{hex_str}"' end - self.add(f"var {name}_ = bytes({palette_data}){inline_comment}") + if has_comments + # Multi-line format with comments + self.add(f"var {name}_ = bytes({inline_comment}") + for i : 0..size(palette_entries)-1 + var hex_str = format("%08X", palette_entries[i]) + var comment = palette_comments[i] + var comment_suffix = comment != "" ? f" {comment}" : "" + self.add(f" \"{hex_str}\"{comment_suffix}") + end + self.add(")") + else + # Single-line format (original behavior when no comments) + var palette_data = "" + for i : 0..size(palette_entries)-1 + if i > 0 + palette_data += " " + end + # Convert integer back to hex string for bytes() constructor + var hex_str = format("%08X", palette_entries[i]) + palette_data += f'"{hex_str}"' + end + + self.add(f"var {name}_ = bytes({palette_data}){inline_comment}") + end end # Process animation definition: animation pulse_red = pulse(color=red, period=2s) @@ -439,7 +478,7 @@ class SimpleDSLTranspiler # Check if this is a template call first if self.template_definitions.contains(func_name) # This is a template call - treat like user function - var args = self.process_function_arguments() + var args = self.process_function_arguments(false) var full_args = args != "" ? f"engine, {args}" : "engine" self.add(f"{func_name}_template({full_args}){inline_comment}") else @@ -849,15 +888,7 @@ class SimpleDSLTranspiler # Generate assignment step with closure # The closure receives the engine as parameter and performs the assignment - import introspect - var object_ref = "" - if introspect.contains(animation, object_name) - # Symbol exists in animation module, use it directly - object_ref = f"animation.{object_name}" - else - # Symbol doesn't exist in animation module, use underscore suffix - object_ref = f"{object_name}_" - end + var object_ref = self.resolve_symbol_reference(object_name) # Create closure that performs the assignment var closure_code = f"def (engine) {object_ref}.{property_name} = {value} end" @@ -1030,7 +1061,7 @@ class SimpleDSLTranspiler if self.current() != nil && self.current().type == animation_dsl.Token.LEFT_PAREN # Special case for log function - allow as standalone if object_name == "log" - var args = self.process_function_arguments() + var args = self.process_function_arguments(false) var inline_comment = self.collect_inline_comment() # Use unified log processing var log_code = self.process_log_call(args, "standalone", inline_comment) @@ -1040,7 +1071,7 @@ class SimpleDSLTranspiler # This is a standalone function call - check if it's a template if self.template_definitions.contains(object_name) - var args = self.process_function_arguments() + var args = self.process_function_arguments(false) var full_args = args != "" ? f"engine, {args}" : "engine" var inline_comment = self.collect_inline_comment() self.add(f"{object_name}_template({full_args}){inline_comment}") @@ -1079,16 +1110,8 @@ class SimpleDSLTranspiler var value = self.process_value("property") var inline_comment = self.collect_inline_comment() - # NEW: Use symbol resolution logic for property assignments - import introspect - var object_ref = "" - if introspect.contains(animation, object_name) - # Symbol exists in animation module, use it directly - object_ref = f"animation.{object_name}" - else - # Symbol doesn't exist in animation module, use underscore suffix - object_ref = f"{object_name}_" - end + # Use consolidated symbol resolution for property assignments + var object_ref = self.resolve_symbol_reference(object_name) # Generate property assignment self.add(f"{object_ref}.{property_name} = {value}{inline_comment}") @@ -1101,7 +1124,7 @@ class SimpleDSLTranspiler # Process any value - unified approach def process_value(context) - return self.process_additive_expression(context, true) # true = top-level expression + return self.process_additive_expression(context, true, false) # true = top-level, false = not raw mode end # Process palette color with strict validation @@ -1138,22 +1161,27 @@ class SimpleDSLTranspiler return "0xFFFFFFFF" end - # Process additive expressions (+ and -) - def process_additive_expression(context, is_top_level) - var left = self.process_multiplicative_expression(context, is_top_level) + # Process additive expressions (+ and -) - unified method + def process_additive_expression(context, is_top_level, raw_mode) + var left = self.process_multiplicative_expression(context, is_top_level, raw_mode) while !self.at_end() var tok = self.current() if tok != nil && (tok.type == animation_dsl.Token.PLUS || tok.type == animation_dsl.Token.MINUS) var op = tok.value self.next() # consume operator - var right = self.process_multiplicative_expression(context, false) # sub-expressions are not top-level + var right = self.process_multiplicative_expression(context, false, raw_mode) # sub-expressions are not top-level left = f"{left} {op} {right}" else break end end + # Skip closure wrapping in raw mode + if raw_mode + return left + end + # Only create closures at the top level, but not for anonymous functions if is_top_level && !self.is_anonymous_function(left) # Special handling for repeat_count context - always create simple function for property access @@ -1174,16 +1202,16 @@ class SimpleDSLTranspiler end end - # Process multiplicative expressions (* and /) - def process_multiplicative_expression(context, is_top_level) - var left = self.process_unary_expression(context, is_top_level) + # Process multiplicative expressions (* and /) - unified method + def process_multiplicative_expression(context, is_top_level, raw_mode) + var left = self.process_unary_expression(context, is_top_level, raw_mode) while !self.at_end() var tok = self.current() if tok != nil && (tok.type == animation_dsl.Token.MULTIPLY || tok.type == animation_dsl.Token.DIVIDE) var op = tok.value self.next() # consume operator - var right = self.process_unary_expression(context, false) # sub-expressions are not top-level + var right = self.process_unary_expression(context, false, raw_mode) # sub-expressions are not top-level left = f"{left} {op} {right}" else break @@ -1193,8 +1221,8 @@ class SimpleDSLTranspiler return left end - # Process unary expressions (- and +) - def process_unary_expression(context, is_top_level) + # Process unary expressions (- and +) - unified method + def process_unary_expression(context, is_top_level, raw_mode) var tok = self.current() if tok == nil self.error("Expected value") @@ -1204,21 +1232,21 @@ class SimpleDSLTranspiler # Handle unary minus for negative numbers if tok.type == animation_dsl.Token.MINUS self.next() # consume the minus - var expr = self.process_unary_expression(context, false) # sub-expressions are not top-level + var expr = self.process_unary_expression(context, false, raw_mode) # sub-expressions are not top-level return f"(-{expr})" end # Handle unary plus (optional) if tok.type == animation_dsl.Token.PLUS self.next() # consume the plus - return self.process_unary_expression(context, false) # sub-expressions are not top-level + return self.process_unary_expression(context, false, raw_mode) # sub-expressions are not top-level end - return self.process_primary_expression(context, is_top_level) + return self.process_primary_expression(context, is_top_level, raw_mode) end - # Process primary expressions (literals, identifiers, function calls, parentheses) - def process_primary_expression(context, is_top_level) + # Process primary expressions (literals, identifiers, function calls, parentheses) - unified method + def process_primary_expression(context, is_top_level, raw_mode) var tok = self.current() if tok == nil self.error("Expected value") @@ -1228,7 +1256,7 @@ class SimpleDSLTranspiler # Parenthesized expression if tok.type == animation_dsl.Token.LEFT_PAREN self.next() # consume '(' - var expr = self.process_additive_expression(context, false) # parenthesized expressions are not top-level + var expr = self.process_additive_expression(context, false, raw_mode) # parenthesized expressions are not top-level self.expect_right_paren() return f"({expr})" end @@ -1237,15 +1265,45 @@ class SimpleDSLTranspiler if (tok.type == animation_dsl.Token.KEYWORD || tok.type == animation_dsl.Token.IDENTIFIER) && self.peek() != nil && self.peek().type == animation_dsl.Token.LEFT_PAREN - # Check if this is a simple function call first var func_name = tok.value - if self._is_simple_function_call(func_name) - return self.process_function_call(context) - # Check if this is a nested function call or a variable assignment with named parameters - elif context == "argument" || context == "property" || context == "variable" - return self.process_nested_function_call() + + # In raw mode, handle function calls differently + if raw_mode + self.next() + + # Check if this is a mathematical function + if self.is_math_method(func_name) + var args = self.process_function_arguments(true) + return f"self.{func_name}({args})" + end + + # Special case for log function in expressions + if func_name == "log" + var args = self.process_function_arguments(true) + return self.process_log_call(args, "expression", "") + end + + # Check if this is a template call + if self.template_definitions.contains(func_name) + var args = self.process_function_arguments(true) + var full_args = args != "" ? f"self.engine, {args}" : "self.engine" + return f"{func_name}_template({full_args})" + end + + # For other functions, this shouldn't happen in expression context + self.error(f"Function '{func_name}' not supported in expression context") + return "nil" else - return self.process_function_call(context) + # Regular mode - existing logic + # Check if this is a simple function call first + if self._is_simple_function_call(func_name) + return self.process_function_call(context) + # Check if this is a nested function call or a variable assignment with named parameters + elif context == "argument" || context == "property" || context == "variable" + return self.process_nested_function_call() + else + return self.process_function_call(context) + end end end @@ -1279,8 +1337,8 @@ class SimpleDSLTranspiler return f'"{value}"' end - # Array literal - if tok.type == animation_dsl.Token.LEFT_BRACKET + # Array literal (not supported in raw mode) + if tok.type == animation_dsl.Token.LEFT_BRACKET && !raw_mode return self.process_array_literal() end @@ -1299,8 +1357,8 @@ class SimpleDSLTranspiler return self._process_user_function_call(property_name) end - # Validate that the property exists on the referenced object - if self.symbol_table.contains(name) + # Validate that the property exists on the referenced object (skip in raw mode) + if !raw_mode && self.symbol_table.contains(name) var instance = self.symbol_table[name] # Only validate parameters for actual instances, not sequence markers if type(instance) != "string" @@ -1313,20 +1371,11 @@ class SimpleDSLTranspiler end end - # Create a closure that resolves the object property at runtime - # Use symbol resolution logic for the object reference - import introspect - var object_ref = "" - if introspect.contains(animation, name) - # Symbol exists in animation module, use it directly - object_ref = f"animation.{name}" - else - # Symbol doesn't exist in animation module, use underscore suffix - object_ref = f"{name}_" - end + # Use consolidated symbol resolution for the object reference + var object_ref = self.resolve_symbol_reference(name) - # For repeat_count context, generate simple property access - if context == "repeat_count" + # In raw mode or repeat_count context, generate simple property access + if raw_mode || context == "repeat_count" return f"{object_ref}.{property_name}" else # Return a closure expression that will be wrapped by the caller if needed @@ -1334,26 +1383,8 @@ class SimpleDSLTranspiler end end - # Check for palette constants - import string - if string.startswith(name, "PALETTE_") - return f"animation.{name}" - end - - # Check if it's a named color - if animation_dsl.is_color_name(name) - return self.get_named_color_value(name) - end - - # NEW: Check at transpile time if symbol exists in animation module - import introspect - if introspect.contains(animation, name) - # Symbol exists in animation module, use it directly - return f"animation.{name}" - else - # Symbol doesn't exist in animation module, use underscore suffix - return f"{name}_" - end + # Use consolidated symbol resolution + return self.resolve_symbol_reference(name) end # Boolean keywords @@ -1677,18 +1708,18 @@ class SimpleDSLTranspiler # Check if this is a mathematical function - handle with positional arguments if self.is_math_method(func_name) # Mathematical functions use positional arguments, not named parameters - var args = self.process_function_arguments() + var args = self.process_function_arguments(false) return f"{func_name}({args})" # Return as-is for transformation in closure end # Special case for log function - call global log function directly if func_name == "log" - var args = self.process_function_arguments() + var args = self.process_function_arguments(false) # Use unified log processing (return expression for use in contexts) return self.process_log_call(args, "expression", "") end - var args = self.process_function_arguments() + var args = self.process_function_arguments(false) # Check if it's a template call first if self.template_definitions.contains(func_name) @@ -1723,7 +1754,7 @@ class SimpleDSLTranspiler # Validate that the variable exists before processing self._validate_object_reference(var_name, "duration") - var expr = self.process_primary_expression("time", true) + var expr = self.process_primary_expression("time", true, false) return expr else self.error("Expected time value") @@ -1835,8 +1866,10 @@ class SimpleDSLTranspiler return false end - # Process function arguments (legacy - kept for compatibility) - def process_function_arguments() + # Process function arguments with unified implementation + # @param raw_mode: boolean - If true, returns raw expressions without closures (for expression contexts) + # If false, processes values normally with closure wrapping (for statement contexts) + def process_function_arguments(raw_mode) self.expect_left_paren() var args = [] @@ -1847,7 +1880,14 @@ class SimpleDSLTranspiler break end - var arg = self.process_value("argument") + var arg + if raw_mode + # For expression contexts - use raw mode to avoid closure wrapping + arg = self.process_additive_expression("argument", true, true) # raw_mode = true + else + # For statement contexts - use normal processing with closure wrapping + arg = self.process_value("argument") + end args.push(arg) self.skip_whitespace() @@ -1874,243 +1914,9 @@ class SimpleDSLTranspiler return result end - # Process function arguments for expressions (returns raw expressions without closures) - def process_function_arguments_for_expression() - self.expect_left_paren() - var args = [] - - while !self.at_end() && !self.check_right_paren() - self.skip_whitespace() - - if self.check_right_paren() - break - end - - var arg = self.process_expression_argument() - args.push(arg) - - self.skip_whitespace() - - if self.current() != nil && self.current().type == animation_dsl.Token.COMMA - self.next() # skip comma - self.skip_whitespace() - elif !self.check_right_paren() - self.error("Expected ',' or ')' in function arguments") - break - end - end - - self.expect_right_paren() - - # Join arguments with commas - var result = "" - for i : 0..size(args)-1 - if i > 0 - result += ", " - end - result += args[i] - end - return result - end - # Process expression argument (raw expression without closure wrapping) - def process_expression_argument() - # Just process as a raw additive expression - this handles all cases - return self.process_additive_expression_raw() - end - # Process additive expression without closure wrapping (for function arguments) - def process_additive_expression_raw() - var left = self.process_multiplicative_expression_raw() - - while !self.at_end() - var tok = self.current() - if tok != nil && (tok.type == animation_dsl.Token.PLUS || tok.type == animation_dsl.Token.MINUS) - var op = tok.value - self.next() # consume operator - var right = self.process_multiplicative_expression_raw() - left = f"{left} {op} {right}" - else - break - end - end - - return left - end - # Process multiplicative expression without closure wrapping (for function arguments) - def process_multiplicative_expression_raw() - var left = self.process_unary_expression_raw() - - while !self.at_end() - var tok = self.current() - if tok != nil && (tok.type == animation_dsl.Token.MULTIPLY || tok.type == animation_dsl.Token.DIVIDE) - var op = tok.value - self.next() # consume operator - var right = self.process_unary_expression_raw() - left = f"{left} {op} {right}" - else - break - end - end - - return left - end - - # Process unary expression without closure wrapping (for function arguments) - def process_unary_expression_raw() - var tok = self.current() - if tok == nil - self.error("Expected value") - return "nil" - end - - # Handle unary minus for negative numbers - if tok.type == animation_dsl.Token.MINUS - self.next() # consume the minus - var expr = self.process_unary_expression_raw() - return f"(-{expr})" - end - - # Handle unary plus (optional) - if tok.type == animation_dsl.Token.PLUS - self.next() # consume the plus - return self.process_unary_expression_raw() - end - - return self.process_primary_expression_raw() - end - - # Process primary expression without closure wrapping (for function arguments) - def process_primary_expression_raw() - var tok = self.current() - if tok == nil - self.error("Expected value") - return "nil" - end - - # Parenthesized expression - if tok.type == animation_dsl.Token.LEFT_PAREN - self.next() # consume '(' - var expr = self.process_additive_expression_raw() - self.expect_right_paren() - return f"({expr})" - end - - # Function call: identifier or easing keyword followed by '(' - if (tok.type == animation_dsl.Token.KEYWORD || tok.type == animation_dsl.Token.IDENTIFIER) && - self.peek() != nil && self.peek().type == animation_dsl.Token.LEFT_PAREN - - var func_name = tok.value - self.next() - - # Check if this is a mathematical function - if self.is_math_method(func_name) - var args = self.process_function_arguments_for_expression() - return f"self.{func_name}({args})" - end - - # Special case for log function in expressions - if func_name == "log" - var args = self.process_function_arguments_for_expression() - # Use unified log processing - return self.process_log_call(args, "expression", "") - end - - # Check if this is a template call - if self.template_definitions.contains(func_name) - # This is a template call - treat like user function - var args = self.process_function_arguments_for_expression() - var full_args = args != "" ? f"self.engine, {args}" : "self.engine" - return f"{func_name}_template({full_args})" - end - - # For other functions, this shouldn't happen in expression context - self.error(f"Function '{func_name}' not supported in expression context") - return "nil" - end - - # Color value - if tok.type == animation_dsl.Token.COLOR - self.next() - return self.convert_color(tok.value) - end - - # Time value - if tok.type == animation_dsl.Token.TIME - return str(self.process_time_value()) - end - - # Percentage value - if tok.type == animation_dsl.Token.PERCENTAGE - return str(self.process_percentage_value()) - end - - # Number value - if tok.type == animation_dsl.Token.NUMBER - var value = tok.value - self.next() - return value - end - - # String value - if tok.type == animation_dsl.Token.STRING - var value = tok.value - self.next() - return f'"{value}"' - end - - # Identifier - variable reference or object property reference - if tok.type == animation_dsl.Token.IDENTIFIER - var name = tok.value - self.next() - - # Check if this is an object property reference (identifier.property) - if self.current() != nil && self.current().type == animation_dsl.Token.DOT - self.next() # consume '.' - var property_name = self.expect_identifier() - - # Special handling for user.function_name() calls - if name == "user" - return self._process_user_function_call(property_name) - end - - # Validate that the property exists on the referenced object - if self.symbol_table.contains(name) - var instance = self.symbol_table[name] - # Only validate parameters for actual instances, not sequence markers - if type(instance) != "string" - var class_name = classname(instance) - self._validate_single_parameter(class_name, property_name, instance) - else - # This is a sequence marker - sequences don't have properties - self.error(f"Sequences like '{name}' do not have properties. Property references are only valid for animations and color providers.") - return "nil" - end - end - - # Use symbol resolution logic for the object reference - import introspect - var object_ref = "" - if introspect.contains(animation, name) - # Symbol exists in animation module, use it directly - object_ref = f"animation.{name}" - else - # Symbol doesn't exist in animation module, use underscore suffix - object_ref = f"{name}_" - end - - # Return a resolve call for the object property - return f"self.resolve({object_ref}, '{property_name}')" - end - - # Regular variable reference - return f"self.resolve({name}_)" - end - - self.error(f"Unexpected token in expression: {tok.value}") - return "nil" - end # Process nested function call (generates temporary variable or raw expression) def process_nested_function_call() @@ -2129,13 +1935,13 @@ class SimpleDSLTranspiler # Check if this is a mathematical function - handle with positional arguments if self.is_math_method(func_name) # Mathematical functions use positional arguments, not named parameters - var args = self.process_function_arguments_for_expression() + var args = self.process_function_arguments(true) return f"self.{func_name}({args})" # Prefix with self. for closure context end # Special case for log function in nested calls if func_name == "log" - var args = self.process_function_arguments_for_expression() + var args = self.process_function_arguments(true) # Use unified log processing return self.process_log_call(args, "expression", "") end @@ -2143,14 +1949,14 @@ class SimpleDSLTranspiler # Check if this is a template call if self.template_definitions.contains(func_name) # This is a template call - treat like user function - var args = self.process_function_arguments_for_expression() + var args = self.process_function_arguments(true) var full_args = args != "" ? f"self.engine, {args}" : "self.engine" return f"{func_name}_template({full_args})" else # Check if this is a simple function call without named parameters if self._is_simple_function_call(func_name) # For simple functions like strip_length(), do direct assignment - var args = self.process_function_arguments() + var args = self.process_function_arguments(false) if args != "" return f"animation.{func_name}(engine, {args})" else @@ -2173,72 +1979,7 @@ class SimpleDSLTranspiler # Process named arguments for a variable (new simpler pattern with parameter validation) def process_named_arguments_for_variable(var_name) - self.expect_left_paren() - - # Extract function name from variable name for validation - var func_name = "" - import string - if string.find(var_name, "temp_") == 0 - # Extract function name from temp variable: temp_breathe_123 -> breathe - var parts = string.split(var_name, "_") - if size(parts) >= 2 - func_name = parts[1] - end - end - - # Create animation instance once for parameter validation - var animation_instance = nil - if func_name != "" - animation_instance = self._create_instance_for_validation(func_name) - end - - while !self.at_end() && !self.check_right_paren() - self.skip_whitespace_including_newlines() - - if self.check_right_paren() - break - end - - # Parse named argument: param_name=value - var param_name = self.expect_identifier() - - # Validate parameter immediately as it's parsed - if animation_instance != nil && func_name != "" - self._validate_single_parameter(func_name, param_name, animation_instance) - end - - self.expect_assign() - var param_value = self.process_value("argument") - var inline_comment = self.collect_inline_comment() - - # Generate parameter assignment immediately - self.add(f"{var_name}.{param_name} = {param_value}{inline_comment}") - - # Skip whitespace but preserve newlines for separator detection - while !self.at_end() - var tok = self.current() - if tok != nil && tok.type == animation_dsl.Token.COMMENT - self.next() - else - break - end - end - - # Check for parameter separator: comma OR newline OR end of parameters - if self.current() != nil && self.current().type == animation_dsl.Token.COMMA - self.next() # skip comma - self.skip_whitespace_including_newlines() - elif self.current() != nil && self.current().type == animation_dsl.Token.NEWLINE - # Newline acts as parameter separator - skip it and continue - self.next() # skip newline - self.skip_whitespace_including_newlines() - elif !self.check_right_paren() - self.error("Expected ',' or ')' in function arguments") - break - end - end - - self.expect_right_paren() + self._process_named_arguments_unified(var_name, "", "variable") end def expect_assign() @@ -2736,60 +2477,7 @@ class SimpleDSLTranspiler # @param var_name: string - Variable name to assign parameters to # @param func_name: string - Animation function name for validation def _process_named_arguments_for_animation(var_name, func_name) - # Debug: print that we're entering this method - # print(f"DEBUG: Entering _process_named_arguments_for_animation for {func_name}") - self.expect_left_paren() - - # Create animation instance once for parameter validation - var animation_instance = self._create_instance_for_validation(func_name) - - while !self.at_end() && !self.check_right_paren() - self.skip_whitespace_including_newlines() - - if self.check_right_paren() - break - end - - # Parse named argument: param_name=value - var param_name = self.expect_identifier() - - # Validate parameter immediately as it's parsed - if animation_instance != nil - self._validate_single_parameter(func_name, param_name, animation_instance) - end - - self.expect_assign() - var param_value = self.process_value("argument") - var inline_comment = self.collect_inline_comment() - - # Generate parameter assignment immediately - self.add(f"{var_name}.{param_name} = {param_value}{inline_comment}") - - # Skip whitespace but preserve newlines for separator detection - while !self.at_end() - var tok = self.current() - if tok != nil && tok.type == animation_dsl.Token.COMMENT - self.next() - else - break - end - end - - # Check for parameter separator: comma OR newline OR end of parameters - if self.current() != nil && self.current().type == animation_dsl.Token.COMMA - self.next() # skip comma - self.skip_whitespace_including_newlines() - elif self.current() != nil && self.current().type == animation_dsl.Token.NEWLINE - # Newline acts as parameter separator - skip it and continue - self.next() # skip newline - self.skip_whitespace_including_newlines() - elif !self.check_right_paren() - self.error("Expected ',' or ')' in function arguments") - break - end - end - - self.expect_right_paren() + self._process_named_arguments_unified(var_name, func_name, "animation") end # Create instance for parameter validation at transpile time @@ -2839,26 +2527,8 @@ class SimpleDSLTranspiler # @param context: string - Context where the reference occurs (for error messages) def _validate_object_reference(object_name, context) try - import introspect - - # Check if object exists in symbol table (user-defined) - if self.symbol_table.contains(object_name) - return # Object exists, validation passed - end - - # Check if object exists in animation module (built-in) - if introspect.contains(animation, object_name) - return # Object exists, validation passed - end - - # Check if it's a sequence name - if self.sequence_names.contains(object_name) - return # Sequence exists, validation passed - end - - # Object not found - report error - self.error(f"Undefined reference '{object_name}' in {context}. Make sure the object is defined before use.") - + # Use consolidated symbol resolution + self.validate_symbol_reference(object_name, context) except .. as e, msg # If validation fails for any reason, just continue # This ensures the transpiler is robust even if validation has issues @@ -2926,10 +2596,56 @@ class SimpleDSLTranspiler return self._validate_factory_function(func_name, animation.value_provider) end + # Consolidated symbol resolution - returns the symbol reference string + def resolve_symbol_reference(name) + import introspect + + # Check if it's a named color + if animation_dsl.is_color_name(name) + return self.get_named_color_value(name) + end + + # Check symbol table, sequences, then animation module + if self.symbol_table.contains(name) || self.sequence_names.contains(name) + return f"{name}_" + elif introspect.contains(animation, name) + return f"animation.{name}" + else + return f"{name}_" # Assume user-defined if not found + end + end + + # Check if a symbol exists (for validation) + def symbol_exists(name) + import introspect + + return ( + animation_dsl.is_color_name(name) || + self.symbol_table.contains(name) || + self.sequence_names.contains(name) || + introspect.contains(animation, name) + ) + end + + # Validate symbol reference with error reporting + def validate_symbol_reference(name, context) + if !self.symbol_exists(name) + self.error(f"Undefined reference '{name}' in {context}. Make sure the object is defined before use.") + return false + end + return true + end + # Validate that a referenced object is a value provider or animation def _validate_value_provider_reference(object_name, context) try - # Check if object exists in symbol table (user-defined) + # First check if symbol exists + if !self.symbol_exists(object_name) + self.error(f"Undefined reference '{object_name}' in {context} statement. Make sure the value provider or animation is defined before use.") + return false + end + + # Check if it's a user-defined object in symbol table if self.symbol_table.contains(object_name) var marker = self.symbol_table[object_name] @@ -2951,9 +2667,8 @@ class SimpleDSLTranspiler end end - # Object not found in symbol table - self.error(f"Undefined reference '{object_name}' in {context} statement. Make sure the value provider or animation is defined before use.") - return false + # For built-in symbols or sequences, assume they're valid (can't validate at compile time) + return true except .. as e, msg # If validation fails for any reason, report error but continue @@ -2962,12 +2677,31 @@ class SimpleDSLTranspiler end end - # Process named arguments with parameter validation at transpile time - def _process_named_arguments_generic(var_name, func_name) - self.expect_left_paren() + # Core parameter processing logic that can be used by different contexts + # @param func_name: string - Function name for validation (can be empty for variable mode) + # @param validation_type: string - Type of validation: "animation", "color_provider", "value_provider", "variable", or "generic" + # @param assignment_callback: function - Callback to handle parameter assignments, receives (param_name, param_value, inline_comment) + def _process_parameters_core(func_name, validation_type, assignment_callback) + # Create instance once for parameter validation based on validation type + var instance = nil + var effective_func_name = func_name - # Create instance once for parameter validation - var instance = self._create_instance_for_validation(func_name) + if validation_type == "variable" + # Extract function name from variable name for validation + import string + if string.find(func_name, "temp_") == 0 + # Extract function name from temp variable: temp_breathe_123 -> breathe + var parts = string.split(func_name, "_") + if size(parts) >= 2 + effective_func_name = parts[1] + end + end + end + + # Create validation instance if we have a function name + if effective_func_name != "" + instance = self._create_instance_for_validation(effective_func_name) + end while !self.at_end() && !self.check_right_paren() self.skip_whitespace_including_newlines() @@ -2980,16 +2714,16 @@ class SimpleDSLTranspiler var param_name = self.expect_identifier() # Validate parameter immediately as it's parsed - if instance != nil - self._validate_single_parameter(func_name, param_name, instance) + if instance != nil && effective_func_name != "" + self._validate_single_parameter(effective_func_name, param_name, instance) end self.expect_assign() var param_value = self.process_value("argument") var inline_comment = self.collect_inline_comment() - # Generate parameter assignment immediately - self.add(f"{var_name}.{param_name} = {param_value}{inline_comment}") + # Call the assignment callback to handle the parameter + assignment_callback(param_name, param_value, inline_comment) # Skip whitespace but preserve newlines for separator detection while !self.at_end() @@ -3014,13 +2748,31 @@ class SimpleDSLTranspiler break end end + end + + # Unified parameter processing method with validation type parameter + # @param var_name: string - Variable name to assign parameters to + # @param func_name: string - Function name for validation (can be empty for variable mode) + # @param validation_type: string - Type of validation: "animation", "color_provider", "value_provider", "variable", or "generic" + def _process_named_arguments_unified(var_name, func_name, validation_type) + self.expect_left_paren() + # Use the core processing logic with a callback for standard assignments + var assignment_callback = def (param_name, param_value, inline_comment) + self.add(f"{var_name}.{param_name} = {param_value}{inline_comment}") + end + + self._process_parameters_core(func_name, validation_type, assignment_callback) self.expect_right_paren() end - # Process named arguments for color provider declarations with parameter validation + # Legacy wrapper methods for backward compatibility + def _process_named_arguments_generic(var_name, func_name) + self._process_named_arguments_unified(var_name, func_name, "generic") + end + def _process_named_arguments_for_color_provider(var_name, func_name) - self._process_named_arguments_generic(var_name, func_name) + self._process_named_arguments_unified(var_name, func_name, "color_provider") end # Check if this is a simple function call that doesn't need anonymous function treatment @@ -3050,55 +2802,12 @@ class SimpleDSLTranspiler # Process named arguments and collect them self.expect_left_paren() - # Create animation instance once for parameter validation - var animation_instance = self._create_instance_for_validation(func_name) - - while !self.at_end() && !self.check_right_paren() - self.skip_whitespace_including_newlines() - - if self.check_right_paren() - break - end - - # Parse named argument: param_name=value - var param_name = self.expect_identifier() - - # Validate parameter immediately as it's parsed - if animation_instance != nil - self._validate_single_parameter(func_name, param_name, animation_instance) - end - - self.expect_assign() - var param_value = self.process_value("argument") - var inline_comment = self.collect_inline_comment() - - # Add parameter assignment to the anonymous function + # Use the core processing logic with a callback for anonymous function assignments + var assignment_callback = def (param_name, param_value, inline_comment) lines.push(f" provider.{param_name} = {param_value}{inline_comment}") - - # Skip whitespace but preserve newlines for separator detection - while !self.at_end() - var tok = self.current() - if tok != nil && tok.type == animation_dsl.Token.COMMENT - self.next() - else - break - end - end - - # Check for parameter separator: comma OR newline OR end of parameters - if self.current() != nil && self.current().type == animation_dsl.Token.COMMA - self.next() # skip comma - self.skip_whitespace_including_newlines() - elif self.current() != nil && self.current().type == animation_dsl.Token.NEWLINE - # Newline acts as parameter separator - skip it and continue - self.next() # skip newline - self.skip_whitespace_including_newlines() - elif !self.check_right_paren() - self.error("Expected ',' or ')' in function arguments") - break - end end + self._process_parameters_core(func_name, "generic", assignment_callback) self.expect_right_paren() # Complete the anonymous function diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h index 9ed62bec9..c1a2350e7 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h @@ -2084,59 +2084,140 @@ be_local_class(EventManager, })), be_str_weak(EventManager) ); -// compact class 'SequenceManager' ktab size: 40, total: 137 (saved 776 bytes) +// compact class 'SequenceManager' ktab size: 40, total: 151 (saved 888 bytes) static const bvalue be_ktab_class_SequenceManager[40] = { - /* K0 */ be_nested_str_weak(is_running), - /* K1 */ be_nested_str_weak(step_index), - /* K2 */ be_nested_str_weak(steps), - /* K3 */ be_nested_str_weak(total_steps), - /* K4 */ be_nested_str_weak(current_step), - /* K5 */ be_nested_str_weak(elapsed_ms), + /* K0 */ be_nested_str_weak(step_index), + /* K1 */ be_nested_str_weak(steps), + /* K2 */ be_nested_str_weak(complete_iteration), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(play), + /* K5 */ be_nested_str_weak(animation), /* K6 */ be_nested_str_weak(engine), - /* K7 */ be_nested_str_weak(time_ms), - /* K8 */ be_nested_str_weak(step_start_time), - /* K9 */ be_nested_str_weak(repeat_count), - /* K10 */ be_nested_str_weak(current_iteration), - /* K11 */ be_nested_str_weak(is_repeat_sequence), - /* K12 */ be_nested_str_weak(push), - /* K13 */ be_nested_str_weak(type), - /* K14 */ be_nested_str_weak(play), - /* K15 */ be_nested_str_weak(animation), - /* K16 */ be_nested_str_weak(duration), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(wait), - /* K19 */ be_nested_str_weak(complete_iteration), - /* K20 */ be_nested_str_weak(add_animation), - /* K21 */ be_nested_str_weak(start), - /* K22 */ be_nested_str_weak(stop), - /* K23 */ be_nested_str_weak(remove_animation), - /* K24 */ be_nested_str_weak(closure), - /* K25 */ be_nested_str_weak(subsequence), - /* K26 */ be_nested_str_weak(sequence_manager), - /* K27 */ be_nested_str_weak(update), - /* K28 */ be_nested_str_weak(advance_to_next_step), - /* K29 */ be_nested_str_weak(execute_assign_steps_batch), - /* K30 */ be_nested_str_weak(contains), - /* K31 */ be_const_int(1), - /* K32 */ be_nested_str_weak(clear), - /* K33 */ be_nested_str_weak(stop_all_subsequences), + /* K7 */ be_nested_str_weak(add), + /* K8 */ be_nested_str_weak(start), + /* K9 */ be_nested_str_weak(wait), + /* K10 */ be_nested_str_weak(stop), + /* K11 */ be_nested_str_weak(remove), + /* K12 */ be_nested_str_weak(closure), + /* K13 */ be_nested_str_weak(subsequence), + /* K14 */ be_nested_str_weak(sequence_manager), + /* K15 */ be_nested_str_weak(step_start_time), + /* K16 */ be_nested_str_weak(stop_iteration), + /* K17 */ be_nested_str_weak(push), + /* K18 */ be_nested_str_weak(duration), + /* K19 */ be_const_int(0), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_str_weak(execute_current_step), + /* K22 */ be_nested_str_weak(is_running), + /* K23 */ be_nested_str_weak(update), + /* K24 */ be_nested_str_weak(advance_to_next_step), + /* K25 */ be_nested_str_weak(execute_closure_steps_batch), + /* K26 */ be_nested_str_weak(contains), + /* K27 */ be_nested_str_weak(total_steps), + /* K28 */ be_nested_str_weak(current_step), + /* K29 */ be_nested_str_weak(elapsed_ms), + /* K30 */ be_nested_str_weak(time_ms), + /* K31 */ be_nested_str_weak(repeat_count), + /* K32 */ be_nested_str_weak(current_iteration), + /* K33 */ be_nested_str_weak(is_repeat_sequence), /* K34 */ be_nested_str_weak(get_resolved_repeat_count), - /* K35 */ be_nested_str_weak(execute_current_step), - /* K36 */ be_nested_str_weak(active_sequence), - /* K37 */ be_nested_str_weak(sequence_state), - /* K38 */ be_nested_str_weak(function), - /* K39 */ be_nested_str_weak(stop_iteration), + /* K35 */ be_nested_str_weak(active_sequence), + /* K36 */ be_nested_str_weak(sequence_state), + /* K37 */ be_nested_str_weak(stop_all_subsequences), + /* K38 */ be_nested_str_weak(execute_closure_steps_batch_atomic), + /* K39 */ be_nested_str_weak(function), }; extern const bclass be_class_SequenceManager; /******************************************************************** -** Solidified function: get_current_step_info +** Solidified function: execute_current_step ********************************************************************/ -be_local_closure(class_SequenceManager_get_current_step_info, /* name */ +be_local_closure(class_SequenceManager_execute_current_step, /* name */ be_nested_proto( - 4, /* nstack */ + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SequenceManager, /* shared constants */ + be_str_weak(execute_current_step), + &be_const_str_solidified, + ( &(const binstruction[58]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x28080403, // 0004 GE R2 R2 R3 + 0x780A0003, // 0005 JMPF R2 #000A + 0x8C080102, // 0006 GETMET R2 R0 K2 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80000400, // 0009 RET 0 + 0x88080101, // 000A GETMBR R2 R0 K1 + 0x880C0100, // 000B GETMBR R3 R0 K0 + 0x94080403, // 000C GETIDX R2 R2 R3 + 0x940C0503, // 000D GETIDX R3 R2 K3 + 0x1C0C0704, // 000E EQ R3 R3 K4 + 0x780E0008, // 000F JMPF R3 #0019 + 0x940C0505, // 0010 GETIDX R3 R2 K5 + 0x88100106, // 0011 GETMBR R4 R0 K6 + 0x8C100907, // 0012 GETMET R4 R4 K7 + 0x5C180600, // 0013 MOVE R6 R3 + 0x7C100400, // 0014 CALL R4 2 + 0x8C100708, // 0015 GETMET R4 R3 K8 + 0x5C180200, // 0016 MOVE R6 R1 + 0x7C100400, // 0017 CALL R4 2 + 0x7002001E, // 0018 JMP #0038 + 0x940C0503, // 0019 GETIDX R3 R2 K3 + 0x1C0C0709, // 001A EQ R3 R3 K9 + 0x780E0000, // 001B JMPF R3 #001D + 0x7002001A, // 001C JMP #0038 + 0x940C0503, // 001D GETIDX R3 R2 K3 + 0x1C0C070A, // 001E EQ R3 R3 K10 + 0x780E0005, // 001F JMPF R3 #0026 + 0x940C0505, // 0020 GETIDX R3 R2 K5 + 0x88100106, // 0021 GETMBR R4 R0 K6 + 0x8C10090B, // 0022 GETMET R4 R4 K11 + 0x5C180600, // 0023 MOVE R6 R3 + 0x7C100400, // 0024 CALL R4 2 + 0x70020011, // 0025 JMP #0038 + 0x940C0503, // 0026 GETIDX R3 R2 K3 + 0x1C0C070C, // 0027 EQ R3 R3 K12 + 0x780E0007, // 0028 JMPF R3 #0031 + 0x940C050C, // 0029 GETIDX R3 R2 K12 + 0x4C100000, // 002A LDNIL R4 + 0x20100604, // 002B NE R4 R3 R4 + 0x78120002, // 002C JMPF R4 #0030 + 0x5C100600, // 002D MOVE R4 R3 + 0x88140106, // 002E GETMBR R5 R0 K6 + 0x7C100200, // 002F CALL R4 1 + 0x70020006, // 0030 JMP #0038 + 0x940C0503, // 0031 GETIDX R3 R2 K3 + 0x1C0C070D, // 0032 EQ R3 R3 K13 + 0x780E0003, // 0033 JMPF R3 #0038 + 0x940C050E, // 0034 GETIDX R3 R2 K14 + 0x8C100708, // 0035 GETMET R4 R3 K8 + 0x5C180200, // 0036 MOVE R6 R1 + 0x7C100400, // 0037 CALL R4 2 + 0x90021E01, // 0038 SETMBR R0 K15 R1 + 0x80000000, // 0039 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop_all_subsequences +********************************************************************/ +be_local_closure(class_SequenceManager_stop_all_subsequences, /* name */ + be_nested_proto( + 6, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -2145,43 +2226,26 @@ be_local_closure(class_SequenceManager_get_current_step_info, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(get_current_step_info), + be_str_weak(stop_all_subsequences), &be_const_str_solidified, - ( &(const binstruction[34]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060005, // 0001 JMPF R1 #0008 - 0x88040101, // 0002 GETMBR R1 R0 K1 - 0x6008000C, // 0003 GETGBL R2 G12 - 0x880C0102, // 0004 GETMBR R3 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x28040202, // 0006 GE R1 R1 R2 - 0x78060001, // 0007 JMPF R1 #000A - 0x4C040000, // 0008 LDNIL R1 - 0x80040200, // 0009 RET 1 R1 - 0x60040013, // 000A GETGBL R1 G19 - 0x7C040000, // 000B CALL R1 0 - 0x88080101, // 000C GETMBR R2 R0 K1 - 0x98060202, // 000D SETIDX R1 K1 R2 - 0x6008000C, // 000E GETGBL R2 G12 - 0x880C0102, // 000F GETMBR R3 R0 K2 - 0x7C080200, // 0010 CALL R2 1 - 0x98060602, // 0011 SETIDX R1 K3 R2 - 0x88080102, // 0012 GETMBR R2 R0 K2 - 0x880C0101, // 0013 GETMBR R3 R0 K1 - 0x94080403, // 0014 GETIDX R2 R2 R3 - 0x98060802, // 0015 SETIDX R1 K4 R2 - 0x88080106, // 0016 GETMBR R2 R0 K6 - 0x88080507, // 0017 GETMBR R2 R2 K7 - 0x880C0108, // 0018 GETMBR R3 R0 K8 - 0x04080403, // 0019 SUB R2 R2 R3 - 0x98060A02, // 001A SETIDX R1 K5 R2 - 0x88080109, // 001B GETMBR R2 R0 K9 - 0x98061202, // 001C SETIDX R1 K9 R2 - 0x8808010A, // 001D GETMBR R2 R0 K10 - 0x98061402, // 001E SETIDX R1 K10 R2 - 0x8808010B, // 001F GETMBR R2 R0 K11 - 0x98061602, // 0020 SETIDX R1 K11 R2 - 0x80040200, // 0021 RET 1 R1 + ( &(const binstruction[17]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x7C040200, // 0002 CALL R1 1 + 0xA8020008, // 0003 EXBLK 0 #000D + 0x5C080200, // 0004 MOVE R2 R1 + 0x7C080000, // 0005 CALL R2 0 + 0x940C0503, // 0006 GETIDX R3 R2 K3 + 0x1C0C070D, // 0007 EQ R3 R3 K13 + 0x780E0002, // 0008 JMPF R3 #000C + 0x940C050E, // 0009 GETIDX R3 R2 K14 + 0x8C10070A, // 000A GETMET R4 R3 K10 + 0x7C100200, // 000B CALL R4 1 + 0x7001FFF6, // 000C JMP #0004 + 0x58040010, // 000D LDCONST R1 K16 + 0xAC040200, // 000E CATCH R1 1 0 + 0xB0080000, // 000F RAISE 2 R0 R0 + 0x80040000, // 0010 RET 1 R0 }) ) ); @@ -2205,19 +2269,19 @@ be_local_closure(class_SequenceManager_push_play_step, /* name */ be_str_weak(push_play_step), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0x880C0102, // 0000 GETMBR R3 R0 K2 - 0x8C0C070C, // 0001 GETMET R3 R3 K12 + 0x880C0101, // 0000 GETMBR R3 R0 K1 + 0x8C0C0711, // 0001 GETMET R3 R3 K17 0x60140013, // 0002 GETGBL R5 G19 0x7C140000, // 0003 CALL R5 0 - 0x98161B0E, // 0004 SETIDX R5 K13 K14 - 0x98161E01, // 0005 SETIDX R5 K15 R1 + 0x98160704, // 0004 SETIDX R5 K3 K4 + 0x98160A01, // 0005 SETIDX R5 K5 R1 0x4C180000, // 0006 LDNIL R6 0x20180406, // 0007 NE R6 R2 R6 0x781A0001, // 0008 JMPF R6 #000B 0x5C180400, // 0009 MOVE R6 R2 0x70020000, // 000A JMP #000C - 0x58180011, // 000B LDCONST R6 K17 - 0x98162006, // 000C SETIDX R5 K16 R6 + 0x58180013, // 000B LDCONST R6 K19 + 0x98162406, // 000C SETIDX R5 K18 R6 0x7C0C0400, // 000D CALL R3 2 0x80040000, // 000E RET 1 R0 }) @@ -2227,9 +2291,9 @@ be_local_closure(class_SequenceManager_push_play_step, /* name */ /******************************************************************** -** Solidified function: push_wait_step +** Solidified function: push_repeat_subsequence ********************************************************************/ -be_local_closure(class_SequenceManager_push_wait_step, /* name */ +be_local_closure(class_SequenceManager_push_repeat_subsequence, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -2240,15 +2304,15 @@ be_local_closure(class_SequenceManager_push_wait_step, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(push_wait_step), + be_str_weak(push_repeat_subsequence), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x88080102, // 0000 GETMBR R2 R0 K2 - 0x8C08050C, // 0001 GETMET R2 R2 K12 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C080511, // 0001 GETMET R2 R2 K17 0x60100013, // 0002 GETGBL R4 G19 0x7C100000, // 0003 CALL R4 0 - 0x98121B12, // 0004 SETIDX R4 K13 K18 - 0x98122001, // 0005 SETIDX R4 K16 R1 + 0x9812070D, // 0004 SETIDX R4 K3 K13 + 0x98121C01, // 0005 SETIDX R4 K14 R1 0x7C080400, // 0006 CALL R2 2 0x80040000, // 0007 RET 1 R0 }) @@ -2258,11 +2322,11 @@ be_local_closure(class_SequenceManager_push_wait_step, /* name */ /******************************************************************** -** Solidified function: execute_current_step +** Solidified function: push_closure_step ********************************************************************/ -be_local_closure(class_SequenceManager_execute_current_step, /* name */ +be_local_closure(class_SequenceManager_push_closure_step, /* name */ be_nested_proto( - 7, /* nstack */ + 5, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -2271,67 +2335,91 @@ be_local_closure(class_SequenceManager_execute_current_step, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(execute_current_step), + be_str_weak(push_closure_step), &be_const_str_solidified, - ( &(const binstruction[58]) { /* code */ + ( &(const binstruction[ 8]) { /* code */ 0x88080101, // 0000 GETMBR R2 R0 K1 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x28080403, // 0004 GE R2 R2 R3 - 0x780A0003, // 0005 JMPF R2 #000A - 0x8C080113, // 0006 GETMET R2 R0 K19 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80000400, // 0009 RET 0 - 0x88080102, // 000A GETMBR R2 R0 K2 - 0x880C0101, // 000B GETMBR R3 R0 K1 - 0x94080403, // 000C GETIDX R2 R2 R3 - 0x940C050D, // 000D GETIDX R3 R2 K13 - 0x1C0C070E, // 000E EQ R3 R3 K14 - 0x780E0008, // 000F JMPF R3 #0019 - 0x940C050F, // 0010 GETIDX R3 R2 K15 - 0x88100106, // 0011 GETMBR R4 R0 K6 - 0x8C100914, // 0012 GETMET R4 R4 K20 - 0x5C180600, // 0013 MOVE R6 R3 - 0x7C100400, // 0014 CALL R4 2 - 0x8C100715, // 0015 GETMET R4 R3 K21 - 0x5C180200, // 0016 MOVE R6 R1 - 0x7C100400, // 0017 CALL R4 2 - 0x7002001E, // 0018 JMP #0038 - 0x940C050D, // 0019 GETIDX R3 R2 K13 - 0x1C0C0712, // 001A EQ R3 R3 K18 - 0x780E0000, // 001B JMPF R3 #001D - 0x7002001A, // 001C JMP #0038 - 0x940C050D, // 001D GETIDX R3 R2 K13 - 0x1C0C0716, // 001E EQ R3 R3 K22 - 0x780E0005, // 001F JMPF R3 #0026 - 0x940C050F, // 0020 GETIDX R3 R2 K15 - 0x88100106, // 0021 GETMBR R4 R0 K6 - 0x8C100917, // 0022 GETMET R4 R4 K23 - 0x5C180600, // 0023 MOVE R6 R3 - 0x7C100400, // 0024 CALL R4 2 - 0x70020011, // 0025 JMP #0038 - 0x940C050D, // 0026 GETIDX R3 R2 K13 - 0x1C0C0718, // 0027 EQ R3 R3 K24 - 0x780E0007, // 0028 JMPF R3 #0031 - 0x940C0518, // 0029 GETIDX R3 R2 K24 - 0x4C100000, // 002A LDNIL R4 - 0x20100604, // 002B NE R4 R3 R4 - 0x78120002, // 002C JMPF R4 #0030 - 0x5C100600, // 002D MOVE R4 R3 - 0x88140106, // 002E GETMBR R5 R0 K6 - 0x7C100200, // 002F CALL R4 1 - 0x70020006, // 0030 JMP #0038 - 0x940C050D, // 0031 GETIDX R3 R2 K13 - 0x1C0C0719, // 0032 EQ R3 R3 K25 - 0x780E0003, // 0033 JMPF R3 #0038 - 0x940C051A, // 0034 GETIDX R3 R2 K26 - 0x8C100715, // 0035 GETMET R4 R3 K21 - 0x5C180200, // 0036 MOVE R6 R1 - 0x7C100400, // 0037 CALL R4 2 - 0x90021001, // 0038 SETMBR R0 K8 R1 - 0x80000000, // 0039 RET 0 + 0x8C080511, // 0001 GETMET R2 R2 K17 + 0x60100013, // 0002 GETGBL R4 G19 + 0x7C100000, // 0003 CALL R4 0 + 0x9812070C, // 0004 SETIDX R4 K3 K12 + 0x98121801, // 0005 SETIDX R4 K12 R1 + 0x7C080400, // 0006 CALL R2 2 + 0x80040000, // 0007 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: execute_closure_steps_batch_atomic +********************************************************************/ +be_local_closure(class_SequenceManager_execute_closure_steps_batch_atomic, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SequenceManager, /* shared constants */ + be_str_weak(execute_closure_steps_batch_atomic), + &be_const_str_solidified, + ( &(const binstruction[51]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x6010000C, // 0001 GETGBL R4 G12 + 0x88140101, // 0002 GETMBR R5 R0 K1 + 0x7C100200, // 0003 CALL R4 1 + 0x140C0604, // 0004 LT R3 R3 R4 + 0x780E0012, // 0005 JMPF R3 #0019 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x88100100, // 0007 GETMBR R4 R0 K0 + 0x940C0604, // 0008 GETIDX R3 R3 R4 + 0x94100703, // 0009 GETIDX R4 R3 K3 + 0x1C10090C, // 000A EQ R4 R4 K12 + 0x7812000A, // 000B JMPF R4 #0017 + 0x9410070C, // 000C GETIDX R4 R3 K12 + 0x4C140000, // 000D LDNIL R5 + 0x20140805, // 000E NE R5 R4 R5 + 0x78160002, // 000F JMPF R5 #0013 + 0x5C140800, // 0010 MOVE R5 R4 + 0x88180106, // 0011 GETMBR R6 R0 K6 + 0x7C140200, // 0012 CALL R5 1 + 0x88140100, // 0013 GETMBR R5 R0 K0 + 0x00140B14, // 0014 ADD R5 R5 K20 + 0x90020005, // 0015 SETMBR R0 K0 R5 + 0x70020000, // 0016 JMP #0018 + 0x70020000, // 0017 JMP #0019 + 0x7001FFE6, // 0018 JMP #0000 + 0x880C0100, // 0019 GETMBR R3 R0 K0 + 0x6010000C, // 001A GETGBL R4 G12 + 0x88140101, // 001B GETMBR R5 R0 K1 + 0x7C100200, // 001C CALL R4 1 + 0x140C0604, // 001D LT R3 R3 R4 + 0x780E0002, // 001E JMPF R3 #0022 + 0x8C0C0115, // 001F GETMET R3 R0 K21 + 0x5C140200, // 0020 MOVE R5 R1 + 0x7C0C0400, // 0021 CALL R3 2 + 0x4C0C0000, // 0022 LDNIL R3 + 0x200C0403, // 0023 NE R3 R2 R3 + 0x780E0003, // 0024 JMPF R3 #0029 + 0x880C0106, // 0025 GETMBR R3 R0 K6 + 0x8C0C070B, // 0026 GETMET R3 R3 K11 + 0x5C140400, // 0027 MOVE R5 R2 + 0x7C0C0400, // 0028 CALL R3 2 + 0x880C0100, // 0029 GETMBR R3 R0 K0 + 0x6010000C, // 002A GETGBL R4 G12 + 0x88140101, // 002B GETMBR R5 R0 K1 + 0x7C100200, // 002C CALL R4 1 + 0x280C0604, // 002D GE R3 R3 R4 + 0x780E0002, // 002E JMPF R3 #0032 + 0x8C0C0102, // 002F GETMET R3 R0 K2 + 0x5C140200, // 0030 MOVE R5 R1 + 0x7C0C0400, // 0031 CALL R3 2 + 0x80000000, // 0032 RET 0 }) ) ); @@ -2355,57 +2443,57 @@ be_local_closure(class_SequenceManager_update, /* name */ be_str_weak(update), &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x88080116, // 0000 GETMBR R2 R0 K22 0x780A0004, // 0001 JMPF R2 #0007 0x6008000C, // 0002 GETGBL R2 G12 - 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x880C0101, // 0003 GETMBR R3 R0 K1 0x7C080200, // 0004 CALL R2 1 - 0x1C080511, // 0005 EQ R2 R2 K17 + 0x1C080513, // 0005 EQ R2 R2 K19 0x780A0001, // 0006 JMPF R2 #0009 0x50080000, // 0007 LDBOOL R2 0 0 0x80040400, // 0008 RET 1 R2 - 0x88080102, // 0009 GETMBR R2 R0 K2 - 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x88080101, // 0009 GETMBR R2 R0 K1 + 0x880C0100, // 000A GETMBR R3 R0 K0 0x94080403, // 000B GETIDX R2 R2 R3 - 0x940C050D, // 000C GETIDX R3 R2 K13 - 0x1C0C0719, // 000D EQ R3 R3 K25 + 0x940C0503, // 000C GETIDX R3 R2 K3 + 0x1C0C070D, // 000D EQ R3 R3 K13 0x780E0008, // 000E JMPF R3 #0018 - 0x940C051A, // 000F GETIDX R3 R2 K26 - 0x8C10071B, // 0010 GETMET R4 R3 K27 + 0x940C050E, // 000F GETIDX R3 R2 K14 + 0x8C100717, // 0010 GETMET R4 R3 K23 0x5C180200, // 0011 MOVE R6 R1 0x7C100400, // 0012 CALL R4 2 0x74120002, // 0013 JMPT R4 #0017 - 0x8C10011C, // 0014 GETMET R4 R0 K28 + 0x8C100118, // 0014 GETMET R4 R0 K24 0x5C180200, // 0015 MOVE R6 R1 0x7C100400, // 0016 CALL R4 2 0x70020019, // 0017 JMP #0032 - 0x940C050D, // 0018 GETIDX R3 R2 K13 - 0x1C0C0718, // 0019 EQ R3 R3 K24 + 0x940C0503, // 0018 GETIDX R3 R2 K3 + 0x1C0C070C, // 0019 EQ R3 R3 K12 0x780E0003, // 001A JMPF R3 #001F - 0x8C0C011D, // 001B GETMET R3 R0 K29 + 0x8C0C0119, // 001B GETMET R3 R0 K25 0x5C140200, // 001C MOVE R5 R1 0x7C0C0400, // 001D CALL R3 2 0x70020012, // 001E JMP #0032 - 0x8C0C051E, // 001F GETMET R3 R2 K30 - 0x58140010, // 0020 LDCONST R5 K16 + 0x8C0C051A, // 001F GETMET R3 R2 K26 + 0x58140012, // 0020 LDCONST R5 K18 0x7C0C0400, // 0021 CALL R3 2 0x780E000B, // 0022 JMPF R3 #002F - 0x940C0510, // 0023 GETIDX R3 R2 K16 - 0x240C0711, // 0024 GT R3 R3 K17 + 0x940C0512, // 0023 GETIDX R3 R2 K18 + 0x240C0713, // 0024 GT R3 R3 K19 0x780E0008, // 0025 JMPF R3 #002F - 0x880C0108, // 0026 GETMBR R3 R0 K8 + 0x880C010F, // 0026 GETMBR R3 R0 K15 0x040C0203, // 0027 SUB R3 R1 R3 - 0x94100510, // 0028 GETIDX R4 R2 K16 + 0x94100512, // 0028 GETIDX R4 R2 K18 0x28100604, // 0029 GE R4 R3 R4 0x78120002, // 002A JMPF R4 #002E - 0x8C10011C, // 002B GETMET R4 R0 K28 + 0x8C100118, // 002B GETMET R4 R0 K24 0x5C180200, // 002C MOVE R6 R1 0x7C100400, // 002D CALL R4 2 0x70020002, // 002E JMP #0032 - 0x8C0C011C, // 002F GETMET R3 R0 K28 + 0x8C0C0118, // 002F GETMET R3 R0 K24 0x5C140200, // 0030 MOVE R5 R1 0x7C0C0400, // 0031 CALL R3 2 - 0x880C0100, // 0032 GETMBR R3 R0 K0 + 0x880C0116, // 0032 GETMBR R3 R0 K22 0x80040600, // 0033 RET 1 R3 }) ) @@ -2413,6 +2501,93 @@ be_local_closure(class_SequenceManager_update, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: execute_closure_steps_batch +********************************************************************/ +be_local_closure(class_SequenceManager_execute_closure_steps_batch, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SequenceManager, /* shared constants */ + be_str_weak(execute_closure_steps_batch), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x600C000C, // 0001 GETGBL R3 G12 + 0x88100101, // 0002 GETMBR R4 R0 K1 + 0x7C0C0200, // 0003 CALL R3 1 + 0x14080403, // 0004 LT R2 R2 R3 + 0x780A0012, // 0005 JMPF R2 #0019 + 0x88080101, // 0006 GETMBR R2 R0 K1 + 0x880C0100, // 0007 GETMBR R3 R0 K0 + 0x94080403, // 0008 GETIDX R2 R2 R3 + 0x940C0503, // 0009 GETIDX R3 R2 K3 + 0x1C0C070C, // 000A EQ R3 R3 K12 + 0x780E000A, // 000B JMPF R3 #0017 + 0x940C050C, // 000C GETIDX R3 R2 K12 + 0x4C100000, // 000D LDNIL R4 + 0x20100604, // 000E NE R4 R3 R4 + 0x78120002, // 000F JMPF R4 #0013 + 0x5C100600, // 0010 MOVE R4 R3 + 0x88140106, // 0011 GETMBR R5 R0 K6 + 0x7C100200, // 0012 CALL R4 1 + 0x88100100, // 0013 GETMBR R4 R0 K0 + 0x00100914, // 0014 ADD R4 R4 K20 + 0x90020004, // 0015 SETMBR R0 K0 R4 + 0x70020000, // 0016 JMP #0018 + 0x70020000, // 0017 JMP #0019 + 0x7001FFE6, // 0018 JMP #0000 + 0x88080100, // 0019 GETMBR R2 R0 K0 + 0x600C000C, // 001A GETGBL R3 G12 + 0x88100101, // 001B GETMBR R4 R0 K1 + 0x7C0C0200, // 001C CALL R3 1 + 0x14080403, // 001D LT R2 R2 R3 + 0x780A0003, // 001E JMPF R2 #0023 + 0x8C080115, // 001F GETMET R2 R0 K21 + 0x5C100200, // 0020 MOVE R4 R1 + 0x7C080400, // 0021 CALL R2 2 + 0x70020002, // 0022 JMP #0026 + 0x8C080102, // 0023 GETMET R2 R0 K2 + 0x5C100200, // 0024 MOVE R4 R1 + 0x7C080400, // 0025 CALL R2 2 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_sequence_running +********************************************************************/ +be_local_closure(class_SequenceManager_is_sequence_running, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SequenceManager, /* shared constants */ + be_str_weak(is_sequence_running), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040116, // 0000 GETMBR R1 R0 K22 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: push_step ********************************************************************/ @@ -2430,8 +2605,8 @@ be_local_closure(class_SequenceManager_push_step, /* name */ be_str_weak(push_step), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x88080102, // 0000 GETMBR R2 R0 K2 - 0x8C08050C, // 0001 GETMET R2 R2 K12 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C080511, // 0001 GETMET R2 R2 K17 0x5C100200, // 0002 MOVE R4 R1 0x7C080400, // 0003 CALL R2 2 0x80040000, // 0004 RET 1 R0 @@ -2442,66 +2617,11 @@ be_local_closure(class_SequenceManager_push_step, /* name */ /******************************************************************** -** Solidified function: advance_to_next_step +** Solidified function: get_current_step_info ********************************************************************/ -be_local_closure(class_SequenceManager_advance_to_next_step, /* name */ +be_local_closure(class_SequenceManager_get_current_step_info, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(advance_to_next_step), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x88080102, // 0000 GETMBR R2 R0 K2 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x94080403, // 0002 GETIDX R2 R2 R3 - 0x940C050D, // 0003 GETIDX R3 R2 K13 - 0x1C0C070E, // 0004 EQ R3 R3 K14 - 0x780E0008, // 0005 JMPF R3 #000F - 0x8C0C051E, // 0006 GETMET R3 R2 K30 - 0x58140010, // 0007 LDCONST R5 K16 - 0x7C0C0400, // 0008 CALL R3 2 - 0x780E0004, // 0009 JMPF R3 #000F - 0x940C050F, // 000A GETIDX R3 R2 K15 - 0x88100106, // 000B GETMBR R4 R0 K6 - 0x8C100917, // 000C GETMET R4 R4 K23 - 0x5C180600, // 000D MOVE R6 R3 - 0x7C100400, // 000E CALL R4 2 - 0x880C0101, // 000F GETMBR R3 R0 K1 - 0x000C071F, // 0010 ADD R3 R3 K31 - 0x90020203, // 0011 SETMBR R0 K1 R3 - 0x880C0101, // 0012 GETMBR R3 R0 K1 - 0x6010000C, // 0013 GETGBL R4 G12 - 0x88140102, // 0014 GETMBR R5 R0 K2 - 0x7C100200, // 0015 CALL R4 1 - 0x280C0604, // 0016 GE R3 R3 R4 - 0x780E0003, // 0017 JMPF R3 #001C - 0x8C0C0113, // 0018 GETMET R3 R0 K19 - 0x5C140200, // 0019 MOVE R5 R1 - 0x7C0C0400, // 001A CALL R3 2 - 0x70020002, // 001B JMP #001F - 0x8C0C011D, // 001C GETMET R3 R0 K29 - 0x5C140200, // 001D MOVE R5 R1 - 0x7C0C0400, // 001E CALL R3 2 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(class_SequenceManager_stop, /* name */ - be_nested_proto( - 6, /* nstack */ + 4, /* nstack */ 1, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -2510,43 +2630,43 @@ be_local_closure(class_SequenceManager_stop, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(stop), + be_str_weak(get_current_step_info), &be_const_str_solidified, ( &(const binstruction[34]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x7806001E, // 0001 JMPF R1 #0021 - 0x50040000, // 0002 LDBOOL R1 0 0 - 0x90020001, // 0003 SETMBR R0 K0 R1 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x6008000C, // 0005 GETGBL R2 G12 - 0x880C0102, // 0006 GETMBR R3 R0 K2 - 0x7C080200, // 0007 CALL R2 1 - 0x14040202, // 0008 LT R1 R1 R2 - 0x78060011, // 0009 JMPF R1 #001C - 0x88040102, // 000A GETMBR R1 R0 K2 - 0x88080101, // 000B GETMBR R2 R0 K1 - 0x94040202, // 000C GETIDX R1 R1 R2 - 0x9408030D, // 000D GETIDX R2 R1 K13 - 0x1C08050E, // 000E EQ R2 R2 K14 - 0x780A0005, // 000F JMPF R2 #0016 - 0x9408030F, // 0010 GETIDX R2 R1 K15 - 0x880C0106, // 0011 GETMBR R3 R0 K6 - 0x8C0C0717, // 0012 GETMET R3 R3 K23 - 0x5C140400, // 0013 MOVE R5 R2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x70020005, // 0015 JMP #001C - 0x9408030D, // 0016 GETIDX R2 R1 K13 - 0x1C080519, // 0017 EQ R2 R2 K25 - 0x780A0002, // 0018 JMPF R2 #001C - 0x9408031A, // 0019 GETIDX R2 R1 K26 - 0x8C0C0516, // 001A GETMET R3 R2 K22 - 0x7C0C0200, // 001B CALL R3 1 - 0x88040106, // 001C GETMBR R1 R0 K6 - 0x8C040320, // 001D GETMET R1 R1 K32 - 0x7C040200, // 001E CALL R1 1 - 0x8C040121, // 001F GETMET R1 R0 K33 - 0x7C040200, // 0020 CALL R1 1 - 0x80040000, // 0021 RET 1 R0 + 0x88040116, // 0000 GETMBR R1 R0 K22 + 0x78060005, // 0001 JMPF R1 #0008 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x6008000C, // 0003 GETGBL R2 G12 + 0x880C0101, // 0004 GETMBR R3 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x28040202, // 0006 GE R1 R1 R2 + 0x78060001, // 0007 JMPF R1 #000A + 0x4C040000, // 0008 LDNIL R1 + 0x80040200, // 0009 RET 1 R1 + 0x60040013, // 000A GETGBL R1 G19 + 0x7C040000, // 000B CALL R1 0 + 0x88080100, // 000C GETMBR R2 R0 K0 + 0x98060002, // 000D SETIDX R1 K0 R2 + 0x6008000C, // 000E GETGBL R2 G12 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x7C080200, // 0010 CALL R2 1 + 0x98063602, // 0011 SETIDX R1 K27 R2 + 0x88080101, // 0012 GETMBR R2 R0 K1 + 0x880C0100, // 0013 GETMBR R3 R0 K0 + 0x94080403, // 0014 GETIDX R2 R2 R3 + 0x98063802, // 0015 SETIDX R1 K28 R2 + 0x88080106, // 0016 GETMBR R2 R0 K6 + 0x8808051E, // 0017 GETMBR R2 R2 K30 + 0x880C010F, // 0018 GETMBR R3 R0 K15 + 0x04080403, // 0019 SUB R2 R2 R3 + 0x98063A02, // 001A SETIDX R1 K29 R2 + 0x8808011F, // 001B GETMBR R2 R0 K31 + 0x98063E02, // 001C SETIDX R1 K31 R2 + 0x88080120, // 001D GETMBR R2 R0 K32 + 0x98064002, // 001E SETIDX R1 K32 R2 + 0x88080121, // 001F GETMBR R2 R0 K33 + 0x98064202, // 0020 SETIDX R1 K33 R2 + 0x80040200, // 0021 RET 1 R1 }) ) ); @@ -2558,7 +2678,7 @@ be_local_closure(class_SequenceManager_stop, /* name */ ********************************************************************/ be_local_closure(class_SequenceManager_complete_iteration, /* name */ be_nested_proto( - 6, /* nstack */ + 7, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -2569,26 +2689,57 @@ be_local_closure(class_SequenceManager_complete_iteration, /* name */ &be_ktab_class_SequenceManager, /* shared constants */ be_str_weak(complete_iteration), &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x8808010A, // 0000 GETMBR R2 R0 K10 - 0x0008051F, // 0001 ADD R2 R2 K31 - 0x90021402, // 0002 SETMBR R0 K10 R2 + ( &(const binstruction[50]) { /* code */ + 0x88080120, // 0000 GETMBR R2 R0 K32 + 0x00080514, // 0001 ADD R2 R2 K20 + 0x90024002, // 0002 SETMBR R0 K32 R2 0x8C080122, // 0003 GETMET R2 R0 K34 0x7C080200, // 0004 CALL R2 1 0x540DFFFE, // 0005 LDINT R3 -1 0x1C0C0403, // 0006 EQ R3 R2 R3 0x740E0002, // 0007 JMPT R3 #000B - 0x880C010A, // 0008 GETMBR R3 R0 K10 + 0x880C0120, // 0008 GETMBR R3 R0 K32 0x140C0602, // 0009 LT R3 R3 R2 - 0x780E0004, // 000A JMPF R3 #0010 - 0x90020311, // 000B SETMBR R0 K1 K17 - 0x8C0C0123, // 000C GETMET R3 R0 K35 - 0x5C140200, // 000D MOVE R5 R1 - 0x7C0C0400, // 000E CALL R3 2 - 0x70020001, // 000F JMP #0012 - 0x500C0000, // 0010 LDBOOL R3 0 0 - 0x90020003, // 0011 SETMBR R0 K0 R3 - 0x80000000, // 0012 RET 0 + 0x780E0023, // 000A JMPF R3 #002F + 0x90020113, // 000B SETMBR R0 K0 K19 + 0x880C0100, // 000C GETMBR R3 R0 K0 + 0x6010000C, // 000D GETGBL R4 G12 + 0x88140101, // 000E GETMBR R5 R0 K1 + 0x7C100200, // 000F CALL R4 1 + 0x140C0604, // 0010 LT R3 R3 R4 + 0x780E0012, // 0011 JMPF R3 #0025 + 0x880C0101, // 0012 GETMBR R3 R0 K1 + 0x88100100, // 0013 GETMBR R4 R0 K0 + 0x940C0604, // 0014 GETIDX R3 R3 R4 + 0x94100703, // 0015 GETIDX R4 R3 K3 + 0x1C10090C, // 0016 EQ R4 R4 K12 + 0x7812000A, // 0017 JMPF R4 #0023 + 0x9410070C, // 0018 GETIDX R4 R3 K12 + 0x4C140000, // 0019 LDNIL R5 + 0x20140805, // 001A NE R5 R4 R5 + 0x78160002, // 001B JMPF R5 #001F + 0x5C140800, // 001C MOVE R5 R4 + 0x88180106, // 001D GETMBR R6 R0 K6 + 0x7C140200, // 001E CALL R5 1 + 0x88140100, // 001F GETMBR R5 R0 K0 + 0x00140B14, // 0020 ADD R5 R5 K20 + 0x90020005, // 0021 SETMBR R0 K0 R5 + 0x70020000, // 0022 JMP #0024 + 0x70020000, // 0023 JMP #0025 + 0x7001FFE6, // 0024 JMP #000C + 0x880C0100, // 0025 GETMBR R3 R0 K0 + 0x6010000C, // 0026 GETGBL R4 G12 + 0x88140101, // 0027 GETMBR R5 R0 K1 + 0x7C100200, // 0028 CALL R4 1 + 0x140C0604, // 0029 LT R3 R3 R4 + 0x780E0002, // 002A JMPF R3 #002E + 0x8C0C0115, // 002B GETMET R3 R0 K21 + 0x5C140200, // 002C MOVE R5 R1 + 0x7C0C0400, // 002D CALL R3 2 + 0x70020001, // 002E JMP #0031 + 0x500C0000, // 002F LDBOOL R3 0 0 + 0x90022C03, // 0030 SETMBR R0 K22 R3 + 0x80000000, // 0031 RET 0 }) ) ); @@ -2614,33 +2765,33 @@ be_local_closure(class_SequenceManager_init, /* name */ ( &(const binstruction[30]) { /* code */ 0x90020C01, // 0000 SETMBR R0 K6 R1 0x4C0C0000, // 0001 LDNIL R3 - 0x90024803, // 0002 SETMBR R0 K36 R3 + 0x90024603, // 0002 SETMBR R0 K35 R3 0x600C0013, // 0003 GETGBL R3 G19 0x7C0C0000, // 0004 CALL R3 0 - 0x90024A03, // 0005 SETMBR R0 K37 R3 - 0x90020311, // 0006 SETMBR R0 K1 K17 - 0x90021111, // 0007 SETMBR R0 K8 K17 + 0x90024803, // 0005 SETMBR R0 K36 R3 + 0x90020113, // 0006 SETMBR R0 K0 K19 + 0x90021F13, // 0007 SETMBR R0 K15 K19 0x600C0012, // 0008 GETGBL R3 G18 0x7C0C0000, // 0009 CALL R3 0 - 0x90020403, // 000A SETMBR R0 K2 R3 + 0x90020203, // 000A SETMBR R0 K1 R3 0x500C0000, // 000B LDBOOL R3 0 0 - 0x90020003, // 000C SETMBR R0 K0 R3 + 0x90022C03, // 000C SETMBR R0 K22 R3 0x4C0C0000, // 000D LDNIL R3 0x200C0403, // 000E NE R3 R2 R3 0x780E0001, // 000F JMPF R3 #0012 0x5C0C0400, // 0010 MOVE R3 R2 0x70020000, // 0011 JMP #0013 - 0x580C001F, // 0012 LDCONST R3 K31 - 0x90021203, // 0013 SETMBR R0 K9 R3 - 0x90021511, // 0014 SETMBR R0 K10 K17 + 0x580C0014, // 0012 LDCONST R3 K20 + 0x90023E03, // 0013 SETMBR R0 K31 R3 + 0x90024113, // 0014 SETMBR R0 K32 K19 0x4C0C0000, // 0015 LDNIL R3 0x200C0403, // 0016 NE R3 R2 R3 0x780E0001, // 0017 JMPF R3 #001A - 0x200C051F, // 0018 NE R3 R2 K31 + 0x200C0514, // 0018 NE R3 R2 K20 0x740E0000, // 0019 JMPT R3 #001B 0x500C0001, // 001A LDBOOL R3 0 1 0x500C0200, // 001B LDBOOL R3 1 0 - 0x90021603, // 001C SETMBR R0 K11 R3 + 0x90024203, // 001C SETMBR R0 K33 R3 0x80000000, // 001D RET 0 }) ) @@ -2649,9 +2800,63 @@ be_local_closure(class_SequenceManager_init, /* name */ /******************************************************************** -** Solidified function: push_closure_step +** Solidified function: stop ********************************************************************/ -be_local_closure(class_SequenceManager_push_closure_step, /* name */ +be_local_closure(class_SequenceManager_stop, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_SequenceManager, /* shared constants */ + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x88040116, // 0000 GETMBR R1 R0 K22 + 0x7806001B, // 0001 JMPF R1 #001E + 0x50040000, // 0002 LDBOOL R1 0 0 + 0x90022C01, // 0003 SETMBR R0 K22 R1 + 0x88040100, // 0004 GETMBR R1 R0 K0 + 0x6008000C, // 0005 GETGBL R2 G12 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x7C080200, // 0007 CALL R2 1 + 0x14040202, // 0008 LT R1 R1 R2 + 0x78060011, // 0009 JMPF R1 #001C + 0x88040101, // 000A GETMBR R1 R0 K1 + 0x88080100, // 000B GETMBR R2 R0 K0 + 0x94040202, // 000C GETIDX R1 R1 R2 + 0x94080303, // 000D GETIDX R2 R1 K3 + 0x1C080504, // 000E EQ R2 R2 K4 + 0x780A0005, // 000F JMPF R2 #0016 + 0x94080305, // 0010 GETIDX R2 R1 K5 + 0x880C0106, // 0011 GETMBR R3 R0 K6 + 0x8C0C070B, // 0012 GETMET R3 R3 K11 + 0x5C140400, // 0013 MOVE R5 R2 + 0x7C0C0400, // 0014 CALL R3 2 + 0x70020005, // 0015 JMP #001C + 0x94080303, // 0016 GETIDX R2 R1 K3 + 0x1C08050D, // 0017 EQ R2 R2 K13 + 0x780A0002, // 0018 JMPF R2 #001C + 0x9408030E, // 0019 GETIDX R2 R1 K14 + 0x8C0C050A, // 001A GETMET R3 R2 K10 + 0x7C0C0200, // 001B CALL R3 1 + 0x8C040125, // 001C GETMET R1 R0 K37 + 0x7C040200, // 001D CALL R1 1 + 0x80040000, // 001E RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: push_wait_step +********************************************************************/ +be_local_closure(class_SequenceManager_push_wait_step, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -2662,15 +2867,15 @@ be_local_closure(class_SequenceManager_push_closure_step, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(push_closure_step), + be_str_weak(push_wait_step), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x88080102, // 0000 GETMBR R2 R0 K2 - 0x8C08050C, // 0001 GETMET R2 R2 K12 + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x8C080511, // 0001 GETMET R2 R2 K17 0x60100013, // 0002 GETGBL R4 G19 0x7C100000, // 0003 CALL R4 0 - 0x98121B18, // 0004 SETIDX R4 K13 K24 - 0x98123001, // 0005 SETIDX R4 K24 R1 + 0x98120709, // 0004 SETIDX R4 K3 K9 + 0x98122401, // 0005 SETIDX R4 K18 R1 0x7C080400, // 0006 CALL R2 2 0x80040000, // 0007 RET 1 R0 }) @@ -2680,11 +2885,11 @@ be_local_closure(class_SequenceManager_push_closure_step, /* name */ /******************************************************************** -** Solidified function: start +** Solidified function: advance_to_next_step ********************************************************************/ -be_local_closure(class_SequenceManager_start, /* name */ +be_local_closure(class_SequenceManager_advance_to_next_step, /* name */ be_nested_proto( - 5, /* nstack */ + 8, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -2693,32 +2898,46 @@ be_local_closure(class_SequenceManager_start, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(start), + be_str_weak(advance_to_next_step), &be_const_str_solidified, - ( &(const binstruction[23]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0006, // 0001 JMPF R2 #0009 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x88080106, // 0004 GETMBR R2 R0 K6 - 0x8C080520, // 0005 GETMET R2 R2 K32 - 0x7C080200, // 0006 CALL R2 1 - 0x8C080121, // 0007 GETMET R2 R0 K33 - 0x7C080200, // 0008 CALL R2 1 - 0x90020311, // 0009 SETMBR R0 K1 K17 - 0x90021001, // 000A SETMBR R0 K8 R1 - 0x90021511, // 000B SETMBR R0 K10 K17 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x90020002, // 000D SETMBR R0 K0 R2 - 0x6008000C, // 000E GETGBL R2 G12 - 0x880C0102, // 000F GETMBR R3 R0 K2 - 0x7C080200, // 0010 CALL R2 1 - 0x24080511, // 0011 GT R2 R2 K17 - 0x780A0002, // 0012 JMPF R2 #0016 - 0x8C080123, // 0013 GETMET R2 R0 K35 - 0x5C100200, // 0014 MOVE R4 R1 - 0x7C080400, // 0015 CALL R2 2 - 0x80040000, // 0016 RET 1 R0 + ( &(const binstruction[37]) { /* code */ + 0x88080101, // 0000 GETMBR R2 R0 K1 + 0x880C0100, // 0001 GETMBR R3 R0 K0 + 0x94080403, // 0002 GETIDX R2 R2 R3 + 0x4C0C0000, // 0003 LDNIL R3 + 0x94100503, // 0004 GETIDX R4 R2 K3 + 0x1C100904, // 0005 EQ R4 R4 K4 + 0x78120004, // 0006 JMPF R4 #000C + 0x8C10051A, // 0007 GETMET R4 R2 K26 + 0x58180012, // 0008 LDCONST R6 K18 + 0x7C100400, // 0009 CALL R4 2 + 0x78120000, // 000A JMPF R4 #000C + 0x940C0505, // 000B GETIDX R3 R2 K5 + 0x88100100, // 000C GETMBR R4 R0 K0 + 0x00100914, // 000D ADD R4 R4 K20 + 0x90020004, // 000E SETMBR R0 K0 R4 + 0x88100100, // 000F GETMBR R4 R0 K0 + 0x6014000C, // 0010 GETGBL R5 G12 + 0x88180101, // 0011 GETMBR R6 R0 K1 + 0x7C140200, // 0012 CALL R5 1 + 0x28100805, // 0013 GE R4 R4 R5 + 0x7812000A, // 0014 JMPF R4 #0020 + 0x4C100000, // 0015 LDNIL R4 + 0x20100604, // 0016 NE R4 R3 R4 + 0x78120003, // 0017 JMPF R4 #001C + 0x88100106, // 0018 GETMBR R4 R0 K6 + 0x8C10090B, // 0019 GETMET R4 R4 K11 + 0x5C180600, // 001A MOVE R6 R3 + 0x7C100400, // 001B CALL R4 2 + 0x8C100102, // 001C GETMET R4 R0 K2 + 0x5C180200, // 001D MOVE R6 R1 + 0x7C100400, // 001E CALL R4 2 + 0x70020003, // 001F JMP #0024 + 0x8C100126, // 0020 GETMET R4 R0 K38 + 0x5C180200, // 0021 MOVE R6 R1 + 0x5C1C0600, // 0022 MOVE R7 R3 + 0x7C100600, // 0023 CALL R4 3 + 0x80000000, // 0024 RET 0 }) ) ); @@ -2743,16 +2962,16 @@ be_local_closure(class_SequenceManager_get_resolved_repeat_count, /* name */ &be_const_str_solidified, ( &(const binstruction[13]) { /* code */ 0x60040004, // 0000 GETGBL R1 G4 - 0x88080109, // 0001 GETMBR R2 R0 K9 + 0x8808011F, // 0001 GETMBR R2 R0 K31 0x7C040200, // 0002 CALL R1 1 - 0x1C040326, // 0003 EQ R1 R1 K38 + 0x1C040327, // 0003 EQ R1 R1 K39 0x78060004, // 0004 JMPF R1 #000A - 0x8C040109, // 0005 GETMET R1 R0 K9 + 0x8C04011F, // 0005 GETMET R1 R0 K31 0x880C0106, // 0006 GETMBR R3 R0 K6 0x7C040400, // 0007 CALL R1 2 0x80040200, // 0008 RET 1 R1 0x70020001, // 0009 JMP #000C - 0x88040109, // 000A GETMBR R1 R0 K9 + 0x8804011F, // 000A GETMBR R1 R0 K31 0x80040200, // 000B RET 1 R1 0x80000000, // 000C RET 0 }) @@ -2762,105 +2981,9 @@ be_local_closure(class_SequenceManager_get_resolved_repeat_count, /* name */ /******************************************************************** -** Solidified function: stop_all_subsequences +** Solidified function: start ********************************************************************/ -be_local_closure(class_SequenceManager_stop_all_subsequences, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(stop_all_subsequences), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080102, // 0001 GETMBR R2 R0 K2 - 0x7C040200, // 0002 CALL R1 1 - 0xA8020008, // 0003 EXBLK 0 #000D - 0x5C080200, // 0004 MOVE R2 R1 - 0x7C080000, // 0005 CALL R2 0 - 0x940C050D, // 0006 GETIDX R3 R2 K13 - 0x1C0C0719, // 0007 EQ R3 R3 K25 - 0x780E0002, // 0008 JMPF R3 #000C - 0x940C051A, // 0009 GETIDX R3 R2 K26 - 0x8C100716, // 000A GETMET R4 R3 K22 - 0x7C100200, // 000B CALL R4 1 - 0x7001FFF6, // 000C JMP #0004 - 0x58040027, // 000D LDCONST R1 K39 - 0xAC040200, // 000E CATCH R1 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x80040000, // 0010 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: push_repeat_subsequence -********************************************************************/ -be_local_closure(class_SequenceManager_push_repeat_subsequence, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(push_repeat_subsequence), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88080102, // 0000 GETMBR R2 R0 K2 - 0x8C08050C, // 0001 GETMET R2 R2 K12 - 0x60100013, // 0002 GETGBL R4 G19 - 0x7C100000, // 0003 CALL R4 0 - 0x98121B19, // 0004 SETIDX R4 K13 K25 - 0x98123401, // 0005 SETIDX R4 K26 R1 - 0x7C080400, // 0006 CALL R2 2 - 0x80040000, // 0007 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_sequence_running -********************************************************************/ -be_local_closure(class_SequenceManager_is_sequence_running, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(is_sequence_running), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: execute_assign_steps_batch -********************************************************************/ -be_local_closure(class_SequenceManager_execute_assign_steps_batch, /* name */ +be_local_closure(class_SequenceManager_start, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -2871,48 +2994,60 @@ be_local_closure(class_SequenceManager_execute_assign_steps_batch, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_SequenceManager, /* shared constants */ - be_str_weak(execute_assign_steps_batch), + be_str_weak(start), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0x88080101, // 0000 GETMBR R2 R0 K1 - 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x14080403, // 0004 LT R2 R2 R3 - 0x780A0012, // 0005 JMPF R2 #0019 - 0x88080102, // 0006 GETMBR R2 R0 K2 - 0x880C0101, // 0007 GETMBR R3 R0 K1 - 0x94080403, // 0008 GETIDX R2 R2 R3 - 0x940C050D, // 0009 GETIDX R3 R2 K13 - 0x1C0C0718, // 000A EQ R3 R3 K24 - 0x780E000A, // 000B JMPF R3 #0017 - 0x940C0518, // 000C GETIDX R3 R2 K24 - 0x4C100000, // 000D LDNIL R4 - 0x20100604, // 000E NE R4 R3 R4 - 0x78120002, // 000F JMPF R4 #0013 - 0x5C100600, // 0010 MOVE R4 R3 - 0x88140106, // 0011 GETMBR R5 R0 K6 - 0x7C100200, // 0012 CALL R4 1 - 0x88100101, // 0013 GETMBR R4 R0 K1 - 0x0010091F, // 0014 ADD R4 R4 K31 - 0x90020204, // 0015 SETMBR R0 K1 R4 - 0x70020000, // 0016 JMP #0018 - 0x70020000, // 0017 JMP #0019 - 0x7001FFE6, // 0018 JMP #0000 - 0x88080101, // 0019 GETMBR R2 R0 K1 - 0x600C000C, // 001A GETGBL R3 G12 - 0x88100102, // 001B GETMBR R4 R0 K2 - 0x7C0C0200, // 001C CALL R3 1 - 0x14080403, // 001D LT R2 R2 R3 - 0x780A0003, // 001E JMPF R2 #0023 - 0x8C080123, // 001F GETMET R2 R0 K35 - 0x5C100200, // 0020 MOVE R4 R1 - 0x7C080400, // 0021 CALL R2 2 - 0x70020002, // 0022 JMP #0026 - 0x8C080113, // 0023 GETMET R2 R0 K19 - 0x5C100200, // 0024 MOVE R4 R1 - 0x7C080400, // 0025 CALL R2 2 - 0x80000000, // 0026 RET 0 + ( &(const binstruction[51]) { /* code */ + 0x88080116, // 0000 GETMBR R2 R0 K22 + 0x780A0003, // 0001 JMPF R2 #0006 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x90022C02, // 0003 SETMBR R0 K22 R2 + 0x8C080125, // 0004 GETMET R2 R0 K37 + 0x7C080200, // 0005 CALL R2 1 + 0x90020113, // 0006 SETMBR R0 K0 K19 + 0x90021E01, // 0007 SETMBR R0 K15 R1 + 0x90024113, // 0008 SETMBR R0 K32 K19 + 0x50080200, // 0009 LDBOOL R2 1 0 + 0x90022C02, // 000A SETMBR R0 K22 R2 + 0x6008000C, // 000B GETGBL R2 G12 + 0x880C0101, // 000C GETMBR R3 R0 K1 + 0x7C080200, // 000D CALL R2 1 + 0x24080513, // 000E GT R2 R2 K19 + 0x780A0021, // 000F JMPF R2 #0032 + 0x88080100, // 0010 GETMBR R2 R0 K0 + 0x600C000C, // 0011 GETGBL R3 G12 + 0x88100101, // 0012 GETMBR R4 R0 K1 + 0x7C0C0200, // 0013 CALL R3 1 + 0x14080403, // 0014 LT R2 R2 R3 + 0x780A0012, // 0015 JMPF R2 #0029 + 0x88080101, // 0016 GETMBR R2 R0 K1 + 0x880C0100, // 0017 GETMBR R3 R0 K0 + 0x94080403, // 0018 GETIDX R2 R2 R3 + 0x940C0503, // 0019 GETIDX R3 R2 K3 + 0x1C0C070C, // 001A EQ R3 R3 K12 + 0x780E000A, // 001B JMPF R3 #0027 + 0x940C050C, // 001C GETIDX R3 R2 K12 + 0x4C100000, // 001D LDNIL R4 + 0x20100604, // 001E NE R4 R3 R4 + 0x78120002, // 001F JMPF R4 #0023 + 0x5C100600, // 0020 MOVE R4 R3 + 0x88140106, // 0021 GETMBR R5 R0 K6 + 0x7C100200, // 0022 CALL R4 1 + 0x88100100, // 0023 GETMBR R4 R0 K0 + 0x00100914, // 0024 ADD R4 R4 K20 + 0x90020004, // 0025 SETMBR R0 K0 R4 + 0x70020000, // 0026 JMP #0028 + 0x70020000, // 0027 JMP #0029 + 0x7001FFE6, // 0028 JMP #0010 + 0x88080100, // 0029 GETMBR R2 R0 K0 + 0x600C000C, // 002A GETGBL R3 G12 + 0x88100101, // 002B GETMBR R4 R0 K1 + 0x7C0C0200, // 002C CALL R3 1 + 0x14080403, // 002D LT R2 R2 R3 + 0x780A0002, // 002E JMPF R2 #0032 + 0x8C080115, // 002F GETMET R2 R0 K21 + 0x5C100200, // 0030 MOVE R4 R1 + 0x7C080400, // 0031 CALL R2 2 + 0x80040000, // 0032 RET 1 R0 }) ) ); @@ -2925,35 +3060,36 @@ be_local_closure(class_SequenceManager_execute_assign_steps_batch, /* name */ be_local_class(SequenceManager, 10, NULL, - be_nested_map(27, + be_nested_map(28, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(active_sequence, 26), be_const_var(1) }, - { be_const_key_weak(get_current_step_info, 3), be_const_closure(class_SequenceManager_get_current_step_info_closure) }, - { be_const_key_weak(repeat_count, -1), be_const_var(7) }, - { be_const_key_weak(execute_assign_steps_batch, 12), be_const_closure(class_SequenceManager_execute_assign_steps_batch_closure) }, - { be_const_key_weak(push_wait_step, 25), be_const_closure(class_SequenceManager_push_wait_step_closure) }, { be_const_key_weak(steps, -1), be_const_var(5) }, { be_const_key_weak(execute_current_step, -1), be_const_closure(class_SequenceManager_execute_current_step_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_SequenceManager_update_closure) }, - { be_const_key_weak(is_repeat_sequence, -1), be_const_var(9) }, - { be_const_key_weak(is_sequence_running, 14), be_const_closure(class_SequenceManager_is_sequence_running_closure) }, - { be_const_key_weak(advance_to_next_step, -1), be_const_closure(class_SequenceManager_advance_to_next_step_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(class_SequenceManager_stop_closure) }, - { be_const_key_weak(step_start_time, -1), be_const_var(4) }, - { be_const_key_weak(is_running, -1), be_const_var(6) }, - { be_const_key_weak(init, -1), be_const_closure(class_SequenceManager_init_closure) }, - { be_const_key_weak(push_closure_step, -1), be_const_closure(class_SequenceManager_push_closure_step_closure) }, - { be_const_key_weak(sequence_state, 10), be_const_var(2) }, - { be_const_key_weak(engine, 15), be_const_var(0) }, - { be_const_key_weak(step_index, 16), be_const_var(3) }, - { be_const_key_weak(current_iteration, -1), be_const_var(8) }, - { be_const_key_weak(start, -1), be_const_closure(class_SequenceManager_start_closure) }, - { be_const_key_weak(get_resolved_repeat_count, -1), be_const_closure(class_SequenceManager_get_resolved_repeat_count_closure) }, { be_const_key_weak(stop_all_subsequences, -1), be_const_closure(class_SequenceManager_stop_all_subsequences_closure) }, - { be_const_key_weak(push_repeat_subsequence, 8), be_const_closure(class_SequenceManager_push_repeat_subsequence_closure) }, - { be_const_key_weak(complete_iteration, 9), be_const_closure(class_SequenceManager_complete_iteration_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_SequenceManager_start_closure) }, + { be_const_key_weak(push_closure_step, -1), be_const_closure(class_SequenceManager_push_closure_step_closure) }, + { be_const_key_weak(push_repeat_subsequence, -1), be_const_closure(class_SequenceManager_push_repeat_subsequence_closure) }, + { be_const_key_weak(current_iteration, 4), be_const_var(8) }, + { be_const_key_weak(execute_closure_steps_batch_atomic, -1), be_const_closure(class_SequenceManager_execute_closure_steps_batch_atomic_closure) }, + { be_const_key_weak(update, 10), be_const_closure(class_SequenceManager_update_closure) }, + { be_const_key_weak(is_running, -1), be_const_var(6) }, + { be_const_key_weak(step_index, -1), be_const_var(3) }, + { be_const_key_weak(is_sequence_running, -1), be_const_closure(class_SequenceManager_is_sequence_running_closure) }, + { be_const_key_weak(get_current_step_info, -1), be_const_closure(class_SequenceManager_get_current_step_info_closure) }, + { be_const_key_weak(execute_closure_steps_batch, -1), be_const_closure(class_SequenceManager_execute_closure_steps_batch_closure) }, + { be_const_key_weak(push_wait_step, 25), be_const_closure(class_SequenceManager_push_wait_step_closure) }, + { be_const_key_weak(is_repeat_sequence, 11), be_const_var(9) }, { be_const_key_weak(push_step, -1), be_const_closure(class_SequenceManager_push_step_closure) }, - { be_const_key_weak(push_play_step, -1), be_const_closure(class_SequenceManager_push_play_step_closure) }, + { be_const_key_weak(active_sequence, 21), be_const_var(1) }, + { be_const_key_weak(complete_iteration, -1), be_const_closure(class_SequenceManager_complete_iteration_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_SequenceManager_init_closure) }, + { be_const_key_weak(step_start_time, -1), be_const_var(4) }, + { be_const_key_weak(stop, 12), be_const_closure(class_SequenceManager_stop_closure) }, + { be_const_key_weak(repeat_count, 14), be_const_var(7) }, + { be_const_key_weak(engine, -1), be_const_var(0) }, + { be_const_key_weak(advance_to_next_step, -1), be_const_closure(class_SequenceManager_advance_to_next_step_closure) }, + { be_const_key_weak(sequence_state, -1), be_const_var(2) }, + { be_const_key_weak(get_resolved_repeat_count, -1), be_const_closure(class_SequenceManager_get_resolved_repeat_count_closure) }, + { be_const_key_weak(push_play_step, 3), be_const_closure(class_SequenceManager_push_play_step_closure) }, })), be_str_weak(SequenceManager) ); @@ -17996,308 +18132,73 @@ be_local_closure(ease_in, /* name */ ); /*******************************************************************/ -// compact class 'AnimationEngine' ktab size: 57, total: 153 (saved 768 bytes) -static const bvalue be_ktab_class_AnimationEngine[57] = { +// compact class 'AnimationEngine' ktab size: 60, total: 159 (saved 792 bytes) +static const bvalue be_ktab_class_AnimationEngine[60] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(width), - /* K2 */ be_nested_str_weak(frame_buffer), - /* K3 */ be_nested_str_weak(resize), - /* K4 */ be_nested_str_weak(temp_buffer), - /* K5 */ be_nested_str_weak(render_needed), - /* K6 */ be_nested_str_weak(animations), - /* K7 */ be_nested_str_weak(update), - /* K8 */ be_nested_str_weak(is_running), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(remove), - /* K11 */ be_nested_str_weak(_clear_strip), - /* K12 */ be_nested_str_weak(_render_animations), - /* K13 */ be_nested_str_weak(priority), - /* K14 */ be_nested_str_weak(sequence_managers), - /* K15 */ be_nested_str_weak(push), - /* K16 */ be_nested_str_weak(strip), - /* K17 */ be_nested_str_weak(set_pixel_color), - /* K18 */ be_nested_str_weak(get_pixel_color), - /* K19 */ be_nested_str_weak(show), - /* K20 */ be_nested_str_weak(length), - /* K21 */ be_nested_str_weak(_handle_strip_length_change), - /* K22 */ be_nested_str_weak(resume), - /* K23 */ be_nested_str_weak(animation), - /* K24 */ be_nested_str_weak(SequenceManager), - /* K25 */ be_nested_str_weak(add_sequence_manager), - /* K26 */ be_nested_str_weak(add_animation), - /* K27 */ be_nested_str_weak(introspect), - /* K28 */ be_nested_str_weak(name), - /* K29 */ be_nested_str_weak(Cannot_X20add_X20object_X20of_X20type_X20_X27_X25s_X27_X20to_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), - /* K30 */ be_nested_str_weak(type_error), - /* K31 */ be_nested_str_weak(clear), - /* K32 */ be_nested_str_weak(render), - /* K33 */ be_nested_str_weak(post_render), - /* K34 */ be_nested_str_weak(blend_pixels), - /* K35 */ be_nested_str_weak(_output_to_strip), - /* K36 */ be_nested_str_weak(stop), - /* K37 */ be_nested_str_weak(stop_iteration), - /* K38 */ be_nested_str_weak(fast_loop_closure), - /* K39 */ be_nested_str_weak(tasmota), - /* K40 */ be_nested_str_weak(remove_fast_loop), - /* K41 */ be_nested_str_weak(value_error), - /* K42 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), + /* K2 */ be_nested_str_weak(strip), + /* K3 */ be_nested_str_weak(set_pixel_color), + /* K4 */ be_nested_str_weak(frame_buffer), + /* K5 */ be_nested_str_weak(get_pixel_color), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(show), + /* K8 */ be_nested_str_weak(animations), + /* K9 */ be_nested_str_weak(name), + /* K10 */ be_nested_str_weak(stop), + /* K11 */ be_nested_str_weak(remove), + /* K12 */ be_nested_str_weak(sequence_managers), + /* K13 */ be_nested_str_weak(render_needed), + /* K14 */ be_nested_str_weak(animation), + /* K15 */ be_nested_str_weak(event_manager), + /* K16 */ be_nested_str_weak(_process_queued_events), + /* K17 */ be_nested_str_weak(length), + /* K18 */ be_nested_str_weak(_handle_strip_length_change), + /* K19 */ be_nested_str_weak(update), + /* K20 */ be_nested_str_weak(is_running), + /* K21 */ be_nested_str_weak(_clear_strip), + /* K22 */ be_nested_str_weak(_render_animations), + /* K23 */ be_nested_str_weak(find), + /* K24 */ be_nested_str_weak(push), + /* K25 */ be_nested_str_weak(_sort_animations), + /* K26 */ be_nested_str_weak(start), + /* K27 */ be_nested_str_weak(time_ms), + /* K28 */ be_nested_str_weak(resume), + /* K29 */ be_nested_str_weak(clear), + /* K30 */ be_nested_str_weak(temp_buffer), + /* K31 */ be_nested_str_weak(render), + /* K32 */ be_nested_str_weak(post_render), + /* K33 */ be_nested_str_weak(blend_pixels), + /* K34 */ be_nested_str_weak(_output_to_strip), + /* K35 */ be_nested_str_weak(SequenceManager), + /* K36 */ be_nested_str_weak(remove_sequence_manager), + /* K37 */ be_nested_str_weak(remove_animation), + /* K38 */ be_nested_str_weak(Cannot_X20remove_X20object_X20of_X20type_X20_X27_X25s_X27_X20from_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), + /* K39 */ be_nested_str_weak(type_error), + /* K40 */ be_nested_str_weak(tasmota), + /* K41 */ be_nested_str_weak(millis), + /* K42 */ be_nested_str_weak(check_strip_length), /* K43 */ be_nested_str_weak(last_update), - /* K44 */ be_nested_str_weak(time_ms), - /* K45 */ be_nested_str_weak(millis), - /* K46 */ be_nested_str_weak(check_strip_length), - /* K47 */ be_nested_str_weak(can_show), - /* K48 */ be_nested_str_weak(_process_events), - /* K49 */ be_nested_str_weak(_update_and_render), - /* K50 */ be_nested_str_weak(AnimationEngine_X28running_X3D_X25s_X2C_X20animations_X3D_X25s_X2C_X20width_X3D_X25s_X29), - /* K51 */ be_nested_str_weak(event_manager), - /* K52 */ be_nested_str_weak(_process_queued_events), - /* K53 */ be_nested_str_weak(start), - /* K54 */ be_nested_str_weak(find), - /* K55 */ be_nested_str_weak(_sort_animations), - /* K56 */ be_nested_str_weak(add_fast_loop), + /* K44 */ be_nested_str_weak(can_show), + /* K45 */ be_nested_str_weak(_process_events), + /* K46 */ be_nested_str_weak(_update_and_render), + /* K47 */ be_nested_str_weak(fast_loop_closure), + /* K48 */ be_nested_str_weak(remove_fast_loop), + /* K49 */ be_nested_str_weak(priority), + /* K50 */ be_nested_str_weak(stop_iteration), + /* K51 */ be_nested_str_weak(_add_sequence_manager), + /* K52 */ be_nested_str_weak(_add_animation), + /* K53 */ be_nested_str_weak(introspect), + /* K54 */ be_nested_str_weak(Cannot_X20add_X20object_X20of_X20type_X20_X27_X25s_X27_X20to_X20engine_X2E_X20Expected_X20Animation_X20or_X20SequenceManager_X2E), + /* K55 */ be_nested_str_weak(AnimationEngine_X28running_X3D_X25s_X2C_X20animations_X3D_X25s_X2C_X20width_X3D_X25s_X29), + /* K56 */ be_nested_str_weak(value_error), + /* K57 */ be_nested_str_weak(strip_X20cannot_X20be_X20nil), + /* K58 */ be_nested_str_weak(resize), + /* K59 */ be_nested_str_weak(add_fast_loop), }; extern const bclass be_class_AnimationEngine; -/******************************************************************** -** Solidified function: _handle_strip_length_change -********************************************************************/ -be_local_closure(class_AnimationEngine__handle_strip_length_change, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_handle_strip_length_change), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x18080300, // 0000 LE R2 R1 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x90020201, // 0003 SETMBR R0 K1 R1 - 0x88080102, // 0004 GETMBR R2 R0 K2 - 0x8C080503, // 0005 GETMET R2 R2 K3 - 0x5C100200, // 0006 MOVE R4 R1 - 0x7C080400, // 0007 CALL R2 2 - 0x88080104, // 0008 GETMBR R2 R0 K4 - 0x8C080503, // 0009 GETMET R2 R2 K3 - 0x5C100200, // 000A MOVE R4 R1 - 0x7C080400, // 000B CALL R2 2 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x90020A02, // 000D SETMBR R0 K5 R2 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_animations -********************************************************************/ -be_local_closure(class_AnimationEngine_get_animations, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(get_animations), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040106, // 0000 GETMBR R1 R0 K6 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _update_and_render -********************************************************************/ -be_local_closure(class_AnimationEngine__update_and_render, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_update_and_render), - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x88140106, // 0003 GETMBR R5 R0 K6 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120011, // 0006 JMPF R4 #0019 - 0x88100106, // 0007 GETMBR R4 R0 K6 - 0x94100803, // 0008 GETIDX R4 R4 R3 - 0x8C140907, // 0009 GETMET R5 R4 K7 - 0x5C1C0200, // 000A MOVE R7 R1 - 0x7C140400, // 000B CALL R5 2 - 0x78160004, // 000C JMPF R5 #0012 - 0x88180908, // 000D GETMBR R6 R4 K8 - 0x781A0002, // 000E JMPF R6 #0012 - 0x00080509, // 000F ADD R2 R2 K9 - 0x000C0709, // 0010 ADD R3 R3 K9 - 0x70020005, // 0011 JMP #0018 - 0x88180106, // 0012 GETMBR R6 R0 K6 - 0x8C180D0A, // 0013 GETMET R6 R6 K10 - 0x5C200600, // 0014 MOVE R8 R3 - 0x7C180400, // 0015 CALL R6 2 - 0x50180200, // 0016 LDBOOL R6 1 0 - 0x90020A06, // 0017 SETMBR R0 K5 R6 - 0x7001FFE8, // 0018 JMP #0002 - 0x1C100500, // 0019 EQ R4 R2 K0 - 0x78120006, // 001A JMPF R4 #0022 - 0x88100105, // 001B GETMBR R4 R0 K5 - 0x78120003, // 001C JMPF R4 #0021 - 0x8C10010B, // 001D GETMET R4 R0 K11 - 0x7C100200, // 001E CALL R4 1 - 0x50100000, // 001F LDBOOL R4 0 0 - 0x90020A04, // 0020 SETMBR R0 K5 R4 - 0x80000800, // 0021 RET 0 - 0x8C10010C, // 0022 GETMET R4 R0 K12 - 0x88180106, // 0023 GETMBR R6 R0 K6 - 0x5C1C0200, // 0024 MOVE R7 R1 - 0x7C100600, // 0025 CALL R4 3 - 0x50100000, // 0026 LDBOOL R4 0 0 - 0x90020A04, // 0027 SETMBR R0 K5 R4 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: size -********************************************************************/ -be_local_closure(class_AnimationEngine_size, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(size), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080106, // 0001 GETMBR R2 R0 K6 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _sort_animations -********************************************************************/ -be_local_closure(class_AnimationEngine__sort_animations, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_sort_animations), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080106, // 0001 GETMBR R2 R0 K6 - 0x7C040200, // 0002 CALL R1 1 - 0x18080309, // 0003 LE R2 R1 K9 - 0x780A0000, // 0004 JMPF R2 #0006 - 0x80000400, // 0005 RET 0 - 0x58080009, // 0006 LDCONST R2 K9 - 0x140C0401, // 0007 LT R3 R2 R1 - 0x780E0016, // 0008 JMPF R3 #0020 - 0x880C0106, // 0009 GETMBR R3 R0 K6 - 0x940C0602, // 000A GETIDX R3 R3 R2 - 0x5C100400, // 000B MOVE R4 R2 - 0x24140900, // 000C GT R5 R4 K0 - 0x7816000D, // 000D JMPF R5 #001C - 0x04140909, // 000E SUB R5 R4 K9 - 0x88180106, // 000F GETMBR R6 R0 K6 - 0x94140C05, // 0010 GETIDX R5 R6 R5 - 0x88140B0D, // 0011 GETMBR R5 R5 K13 - 0x8818070D, // 0012 GETMBR R6 R3 K13 - 0x14140A06, // 0013 LT R5 R5 R6 - 0x78160006, // 0014 JMPF R5 #001C - 0x88140106, // 0015 GETMBR R5 R0 K6 - 0x04180909, // 0016 SUB R6 R4 K9 - 0x881C0106, // 0017 GETMBR R7 R0 K6 - 0x94180E06, // 0018 GETIDX R6 R7 R6 - 0x98140806, // 0019 SETIDX R5 R4 R6 - 0x04100909, // 001A SUB R4 R4 K9 - 0x7001FFEF, // 001B JMP #000C - 0x88140106, // 001C GETMBR R5 R0 K6 - 0x98140803, // 001D SETIDX R5 R4 R3 - 0x00080509, // 001E ADD R2 R2 K9 - 0x7001FFE6, // 001F JMP #0007 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_sequence_manager -********************************************************************/ -be_local_closure(class_AnimationEngine_add_sequence_manager, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(add_sequence_manager), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8808010E, // 0000 GETMBR R2 R0 K14 - 0x8C08050F, // 0001 GETMET R2 R2 K15 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040000, // 0004 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: _output_to_strip ********************************************************************/ @@ -18319,18 +18220,18 @@ be_local_closure(class_AnimationEngine__output_to_strip, /* name */ 0x88080101, // 0001 GETMBR R2 R0 K1 0x14080202, // 0002 LT R2 R1 R2 0x780A0009, // 0003 JMPF R2 #000E - 0x88080110, // 0004 GETMBR R2 R0 K16 - 0x8C080511, // 0005 GETMET R2 R2 K17 + 0x88080102, // 0004 GETMBR R2 R0 K2 + 0x8C080503, // 0005 GETMET R2 R2 K3 0x5C100200, // 0006 MOVE R4 R1 - 0x88140102, // 0007 GETMBR R5 R0 K2 - 0x8C140B12, // 0008 GETMET R5 R5 K18 + 0x88140104, // 0007 GETMBR R5 R0 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 0x5C1C0200, // 0009 MOVE R7 R1 0x7C140400, // 000A CALL R5 2 0x7C080600, // 000B CALL R2 3 - 0x00040309, // 000C ADD R1 R1 K9 + 0x00040306, // 000C ADD R1 R1 K6 0x7001FFF2, // 000D JMP #0001 - 0x88080110, // 000E GETMBR R2 R0 K16 - 0x8C080513, // 000F GETMET R2 R2 K19 + 0x88080102, // 000E GETMBR R2 R0 K2 + 0x8C080507, // 000F GETMET R2 R2 K7 0x7C080200, // 0010 CALL R2 1 0x80000000, // 0011 RET 0 }) @@ -18339,251 +18240,6 @@ be_local_closure(class_AnimationEngine__output_to_strip, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: check_strip_length -********************************************************************/ -be_local_closure(class_AnimationEngine_check_strip_length, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(check_strip_length), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040110, // 0000 GETMBR R1 R0 K16 - 0x8C040314, // 0001 GETMET R1 R1 K20 - 0x7C040200, // 0002 CALL R1 1 - 0x88080101, // 0003 GETMBR R2 R0 K1 - 0x20080202, // 0004 NE R2 R1 R2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080115, // 0006 GETMET R2 R0 K21 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x50080200, // 0009 LDBOOL R2 1 0 - 0x80040400, // 000A RET 1 R2 - 0x50080000, // 000B LDBOOL R2 0 0 - 0x80040400, // 000C RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resume_after -********************************************************************/ -be_local_closure(class_AnimationEngine_resume_after, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(resume_after), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C080116, // 0000 GETMET R2 R0 K22 - 0x7C080200, // 0001 CALL R2 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add -********************************************************************/ -be_local_closure(class_AnimationEngine_add, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(add), - &be_const_str_solidified, - ( &(const binstruction[32]) { /* code */ - 0x6008000F, // 0000 GETGBL R2 G15 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0xB8122E00, // 0002 GETNGBL R4 K23 - 0x88100918, // 0003 GETMBR R4 R4 K24 - 0x7C080400, // 0004 CALL R2 2 - 0x780A0004, // 0005 JMPF R2 #000B - 0x8C080119, // 0006 GETMET R2 R0 K25 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C080400, // 0008 CALL R2 2 - 0x80040400, // 0009 RET 1 R2 - 0x70020013, // 000A JMP #001F - 0x6008000F, // 000B GETGBL R2 G15 - 0x5C0C0200, // 000C MOVE R3 R1 - 0xB8122E00, // 000D GETNGBL R4 K23 - 0x88100917, // 000E GETMBR R4 R4 K23 - 0x7C080400, // 000F CALL R2 2 - 0x780A0004, // 0010 JMPF R2 #0016 - 0x8C08011A, // 0011 GETMET R2 R0 K26 - 0x5C100200, // 0012 MOVE R4 R1 - 0x7C080400, // 0013 CALL R2 2 - 0x80040000, // 0014 RET 1 R0 - 0x70020008, // 0015 JMP #001F - 0xA40A3600, // 0016 IMPORT R2 K27 - 0x8C0C051C, // 0017 GETMET R3 R2 K28 - 0x5C140200, // 0018 MOVE R5 R1 - 0x7C0C0400, // 0019 CALL R3 2 - 0x60100018, // 001A GETGBL R4 G24 - 0x5814001D, // 001B LDCONST R5 K29 - 0x5C180600, // 001C MOVE R6 R3 - 0x7C100400, // 001D CALL R4 2 - 0xB0063C04, // 001E RAISE 1 K30 R4 - 0x80000000, // 001F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _render_animations -********************************************************************/ -be_local_closure(class_AnimationEngine__render_animations, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_render_animations), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x880C0102, // 0000 GETMBR R3 R0 K2 - 0x8C0C071F, // 0001 GETMET R3 R3 K31 - 0x7C0C0200, // 0002 CALL R3 1 - 0x580C0000, // 0003 LDCONST R3 K0 - 0x6010000C, // 0004 GETGBL R4 G12 - 0x5C140200, // 0005 MOVE R5 R1 - 0x7C100200, // 0006 CALL R4 1 - 0x14100604, // 0007 LT R4 R3 R4 - 0x78120012, // 0008 JMPF R4 #001C - 0x94100203, // 0009 GETIDX R4 R1 R3 - 0x88140104, // 000A GETMBR R5 R0 K4 - 0x8C140B1F, // 000B GETMET R5 R5 K31 - 0x7C140200, // 000C CALL R5 1 - 0x8C140920, // 000D GETMET R5 R4 K32 - 0x881C0104, // 000E GETMBR R7 R0 K4 - 0x5C200400, // 000F MOVE R8 R2 - 0x7C140600, // 0010 CALL R5 3 - 0x78160007, // 0011 JMPF R5 #001A - 0x8C180921, // 0012 GETMET R6 R4 K33 - 0x88200104, // 0013 GETMBR R8 R0 K4 - 0x5C240400, // 0014 MOVE R9 R2 - 0x7C180600, // 0015 CALL R6 3 - 0x88180102, // 0016 GETMBR R6 R0 K2 - 0x8C180D22, // 0017 GETMET R6 R6 K34 - 0x88200104, // 0018 GETMBR R8 R0 K4 - 0x7C180400, // 0019 CALL R6 2 - 0x000C0709, // 001A ADD R3 R3 K9 - 0x7001FFE7, // 001B JMP #0004 - 0x8C100123, // 001C GETMET R4 R0 K35 - 0x7C100200, // 001D CALL R4 1 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _clear_strip -********************************************************************/ -be_local_closure(class_AnimationEngine__clear_strip, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_clear_strip), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040110, // 0000 GETMBR R1 R0 K16 - 0x8C04031F, // 0001 GETMET R1 R1 K31 - 0x7C040200, // 0002 CALL R1 1 - 0x88040110, // 0003 GETMBR R1 R0 K16 - 0x8C040313, // 0004 GETMET R1 R1 K19 - 0x7C040200, // 0005 CALL R1 1 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: clear -********************************************************************/ -be_local_closure(class_AnimationEngine_clear, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(clear), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x90020C01, // 0002 SETMBR R0 K6 R1 - 0x58040000, // 0003 LDCONST R1 K0 - 0x6008000C, // 0004 GETGBL R2 G12 - 0x880C010E, // 0005 GETMBR R3 R0 K14 - 0x7C080200, // 0006 CALL R2 1 - 0x14080202, // 0007 LT R2 R1 R2 - 0x780A0005, // 0008 JMPF R2 #000F - 0x8808010E, // 0009 GETMBR R2 R0 K14 - 0x94080401, // 000A GETIDX R2 R2 R1 - 0x8C080524, // 000B GETMET R2 R2 K36 - 0x7C080200, // 000C CALL R2 1 - 0x00040309, // 000D ADD R1 R1 K9 - 0x7001FFF4, // 000E JMP #0004 - 0x60080012, // 000F GETGBL R2 G18 - 0x7C080000, // 0010 CALL R2 0 - 0x90021C02, // 0011 SETMBR R0 K14 R2 - 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90020A02, // 0013 SETMBR R0 K5 R2 - 0x80040000, // 0014 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: interrupt_animation ********************************************************************/ @@ -18603,28 +18259,28 @@ be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ ( &(const binstruction[26]) { /* code */ 0x58080000, // 0000 LDCONST R2 K0 0x600C000C, // 0001 GETGBL R3 G12 - 0x88100106, // 0002 GETMBR R4 R0 K6 + 0x88100108, // 0002 GETMBR R4 R0 K8 0x7C0C0200, // 0003 CALL R3 1 0x140C0403, // 0004 LT R3 R2 R3 0x780E0012, // 0005 JMPF R3 #0019 - 0x880C0106, // 0006 GETMBR R3 R0 K6 + 0x880C0108, // 0006 GETMBR R3 R0 K8 0x940C0602, // 0007 GETIDX R3 R3 R2 - 0x8810071C, // 0008 GETMBR R4 R3 K28 + 0x88100709, // 0008 GETMBR R4 R3 K9 0x4C140000, // 0009 LDNIL R5 0x20100805, // 000A NE R4 R4 R5 0x7812000A, // 000B JMPF R4 #0017 - 0x8810071C, // 000C GETMBR R4 R3 K28 + 0x88100709, // 000C GETMBR R4 R3 K9 0x1C100801, // 000D EQ R4 R4 R1 0x78120007, // 000E JMPF R4 #0017 - 0x8C100724, // 000F GETMET R4 R3 K36 + 0x8C10070A, // 000F GETMET R4 R3 K10 0x5C180600, // 0010 MOVE R6 R3 0x7C100400, // 0011 CALL R4 2 - 0x88100106, // 0012 GETMBR R4 R0 K6 - 0x8C10090A, // 0013 GETMET R4 R4 K10 + 0x88100108, // 0012 GETMBR R4 R0 K8 + 0x8C10090B, // 0013 GETMET R4 R4 K11 0x5C180400, // 0014 MOVE R6 R2 0x7C100400, // 0015 CALL R4 2 0x80000800, // 0016 RET 0 - 0x00080509, // 0017 ADD R2 R2 K9 + 0x00080506, // 0017 ADD R2 R2 K6 0x7001FFE7, // 0018 JMP #0001 0x80000000, // 0019 RET 0 }) @@ -18634,266 +18290,9 @@ be_local_closure(class_AnimationEngine_interrupt_animation, /* name */ /******************************************************************** -** Solidified function: interrupt_current +** Solidified function: get_animations ********************************************************************/ -be_local_closure(class_AnimationEngine_interrupt_current, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(interrupt_current), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080106, // 0001 GETMBR R2 R0 K6 - 0x7C040200, // 0002 CALL R1 1 - 0xA8020006, // 0003 EXBLK 0 #000B - 0x5C080200, // 0004 MOVE R2 R1 - 0x7C080000, // 0005 CALL R2 0 - 0x880C0508, // 0006 GETMBR R3 R2 K8 - 0x780E0001, // 0007 JMPF R3 #000A - 0x8C0C0524, // 0008 GETMET R3 R2 K36 - 0x7C0C0200, // 0009 CALL R3 1 - 0x7001FFF8, // 000A JMP #0004 - 0x58040025, // 000B LDCONST R1 K37 - 0xAC040200, // 000C CATCH R1 1 0 - 0xB0080000, // 000D RAISE 2 R0 R0 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(class_AnimationEngine_stop, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(stop), - &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 0x78060009, // 0001 JMPF R1 #000C - 0x50040000, // 0002 LDBOOL R1 0 0 - 0x90021001, // 0003 SETMBR R0 K8 R1 - 0x88040126, // 0004 GETMBR R1 R0 K38 - 0x4C080000, // 0005 LDNIL R2 - 0x20040202, // 0006 NE R1 R1 R2 - 0x78060003, // 0007 JMPF R1 #000C - 0xB8064E00, // 0008 GETNGBL R1 K39 - 0x8C040328, // 0009 GETMET R1 R1 K40 - 0x880C0126, // 000A GETMBR R3 R0 K38 - 0x7C040400, // 000B CALL R1 2 - 0x80040000, // 000C RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_animation -********************************************************************/ -be_local_closure(class_AnimationEngine_remove_animation, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(remove_animation), - &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x5409FFFE, // 0000 LDINT R2 -1 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x88140106, // 0003 GETMBR R5 R0 K6 - 0x7C100200, // 0004 CALL R4 1 - 0x14100604, // 0005 LT R4 R3 R4 - 0x78120007, // 0006 JMPF R4 #000F - 0x88100106, // 0007 GETMBR R4 R0 K6 - 0x94100803, // 0008 GETIDX R4 R4 R3 - 0x1C100801, // 0009 EQ R4 R4 R1 - 0x78120001, // 000A JMPF R4 #000D - 0x5C080600, // 000B MOVE R2 R3 - 0x70020001, // 000C JMP #000F - 0x000C0709, // 000D ADD R3 R3 K9 - 0x7001FFF2, // 000E JMP #0002 - 0x28100500, // 000F GE R4 R2 K0 - 0x78120007, // 0010 JMPF R4 #0019 - 0x88100106, // 0011 GETMBR R4 R0 K6 - 0x8C10090A, // 0012 GETMET R4 R4 K10 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x50100200, // 0015 LDBOOL R4 1 0 - 0x90020A04, // 0016 SETMBR R0 K5 R4 - 0x50100200, // 0017 LDBOOL R4 1 0 - 0x80040800, // 0018 RET 1 R4 - 0x50100000, // 0019 LDBOOL R4 0 0 - 0x80040800, // 001A RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_AnimationEngine_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[33]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0000, // 0002 JMPF R2 #0004 - 0xB006532A, // 0003 RAISE 1 K41 K42 - 0x90022001, // 0004 SETMBR R0 K16 R1 - 0x8C080314, // 0005 GETMET R2 R1 K20 - 0x7C080200, // 0006 CALL R2 1 - 0x90020202, // 0007 SETMBR R0 K1 R2 - 0x60080012, // 0008 GETGBL R2 G18 - 0x7C080000, // 0009 CALL R2 0 - 0x90020C02, // 000A SETMBR R0 K6 R2 - 0x60080012, // 000B GETGBL R2 G18 - 0x7C080000, // 000C CALL R2 0 - 0x90021C02, // 000D SETMBR R0 K14 R2 - 0xB80A2E00, // 000E GETNGBL R2 K23 - 0x8C080502, // 000F GETMET R2 R2 K2 - 0x88100101, // 0010 GETMBR R4 R0 K1 - 0x7C080400, // 0011 CALL R2 2 - 0x90020402, // 0012 SETMBR R0 K2 R2 - 0xB80A2E00, // 0013 GETNGBL R2 K23 - 0x8C080502, // 0014 GETMET R2 R2 K2 - 0x88100101, // 0015 GETMBR R4 R0 K1 - 0x7C080400, // 0016 CALL R2 2 - 0x90020802, // 0017 SETMBR R0 K4 R2 - 0x50080000, // 0018 LDBOOL R2 0 0 - 0x90021002, // 0019 SETMBR R0 K8 R2 - 0x90025700, // 001A SETMBR R0 K43 K0 - 0x90025900, // 001B SETMBR R0 K44 K0 - 0x4C080000, // 001C LDNIL R2 - 0x90024C02, // 001D SETMBR R0 K38 R2 - 0x50080000, // 001E LDBOOL R2 0 0 - 0x90020A02, // 001F SETMBR R0 K5 R2 - 0x80000000, // 0020 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: on_tick -********************************************************************/ -be_local_closure(class_AnimationEngine_on_tick, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(on_tick), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0x88080108, // 0000 GETMBR R2 R0 K8 - 0x740A0001, // 0001 JMPT R2 #0004 - 0x50080000, // 0002 LDBOOL R2 0 0 - 0x80040400, // 0003 RET 1 R2 - 0x4C080000, // 0004 LDNIL R2 - 0x1C080202, // 0005 EQ R2 R1 R2 - 0x780A0003, // 0006 JMPF R2 #000B - 0xB80A4E00, // 0007 GETNGBL R2 K39 - 0x8C08052D, // 0008 GETMET R2 R2 K45 - 0x7C080200, // 0009 CALL R2 1 - 0x5C040400, // 000A MOVE R1 R2 - 0x8C08012E, // 000B GETMET R2 R0 K46 - 0x7C080200, // 000C CALL R2 1 - 0x90025801, // 000D SETMBR R0 K44 R1 - 0x8808012B, // 000E GETMBR R2 R0 K43 - 0x04080202, // 000F SUB R2 R1 R2 - 0x540E0004, // 0010 LDINT R3 5 - 0x140C0403, // 0011 LT R3 R2 R3 - 0x780E0001, // 0012 JMPF R3 #0015 - 0x500C0200, // 0013 LDBOOL R3 1 0 - 0x80040600, // 0014 RET 1 R3 - 0x90025601, // 0015 SETMBR R0 K43 R1 - 0x880C0110, // 0016 GETMBR R3 R0 K16 - 0x880C072F, // 0017 GETMBR R3 R3 K47 - 0x4C100000, // 0018 LDNIL R4 - 0x200C0604, // 0019 NE R3 R3 R4 - 0x780E0005, // 001A JMPF R3 #0021 - 0x880C0110, // 001B GETMBR R3 R0 K16 - 0x8C0C072F, // 001C GETMET R3 R3 K47 - 0x7C0C0200, // 001D CALL R3 1 - 0x740E0001, // 001E JMPT R3 #0021 - 0x500C0200, // 001F LDBOOL R3 1 0 - 0x80040600, // 0020 RET 1 R3 - 0x580C0000, // 0021 LDCONST R3 K0 - 0x6010000C, // 0022 GETGBL R4 G12 - 0x8814010E, // 0023 GETMBR R5 R0 K14 - 0x7C100200, // 0024 CALL R4 1 - 0x14100604, // 0025 LT R4 R3 R4 - 0x78120006, // 0026 JMPF R4 #002E - 0x8810010E, // 0027 GETMBR R4 R0 K14 - 0x94100803, // 0028 GETIDX R4 R4 R3 - 0x8C100907, // 0029 GETMET R4 R4 K7 - 0x5C180200, // 002A MOVE R6 R1 - 0x7C100400, // 002B CALL R4 2 - 0x000C0709, // 002C ADD R3 R3 K9 - 0x7001FFF3, // 002D JMP #0022 - 0x8C100130, // 002E GETMET R4 R0 K48 - 0x5C180200, // 002F MOVE R6 R1 - 0x7C100400, // 0030 CALL R4 2 - 0x8C100131, // 0031 GETMET R4 R0 K49 - 0x5C180200, // 0032 MOVE R6 R1 - 0x7C100400, // 0033 CALL R4 2 - 0x50100200, // 0034 LDBOOL R4 1 0 - 0x80040800, // 0035 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_active -********************************************************************/ -be_local_closure(class_AnimationEngine_is_active, /* name */ +be_local_closure(class_AnimationEngine_get_animations, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -18904,7 +18303,7 @@ be_local_closure(class_AnimationEngine_is_active, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(is_active), + be_str_weak(get_animations), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040108, // 0000 GETMBR R1 R0 K8 @@ -18915,40 +18314,6 @@ be_local_closure(class_AnimationEngine_is_active, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: cleanup -********************************************************************/ -be_local_closure(class_AnimationEngine_cleanup, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(cleanup), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x8C040124, // 0000 GETMET R1 R0 K36 - 0x7C040200, // 0001 CALL R1 1 - 0x8C04011F, // 0002 GETMET R1 R0 K31 - 0x7C040200, // 0003 CALL R1 1 - 0x4C040000, // 0004 LDNIL R1 - 0x90020401, // 0005 SETMBR R0 K2 R1 - 0x4C040000, // 0006 LDNIL R1 - 0x90020801, // 0007 SETMBR R0 K4 R1 - 0x4C040000, // 0008 LDNIL R1 - 0x90022001, // 0009 SETMBR R0 K16 R1 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: remove_sequence_manager ********************************************************************/ @@ -18969,22 +18334,22 @@ be_local_closure(class_AnimationEngine_remove_sequence_manager, /* name */ 0x5409FFFE, // 0000 LDINT R2 -1 0x580C0000, // 0001 LDCONST R3 K0 0x6010000C, // 0002 GETGBL R4 G12 - 0x8814010E, // 0003 GETMBR R5 R0 K14 + 0x8814010C, // 0003 GETMBR R5 R0 K12 0x7C100200, // 0004 CALL R4 1 0x14100604, // 0005 LT R4 R3 R4 0x78120007, // 0006 JMPF R4 #000F - 0x8810010E, // 0007 GETMBR R4 R0 K14 + 0x8810010C, // 0007 GETMBR R4 R0 K12 0x94100803, // 0008 GETIDX R4 R4 R3 0x1C100801, // 0009 EQ R4 R4 R1 0x78120001, // 000A JMPF R4 #000D 0x5C080600, // 000B MOVE R2 R3 0x70020001, // 000C JMP #000F - 0x000C0709, // 000D ADD R3 R3 K9 + 0x000C0706, // 000D ADD R3 R3 K6 0x7001FFF2, // 000E JMP #0002 0x28100500, // 000F GE R4 R2 K0 0x78120005, // 0010 JMPF R4 #0017 - 0x8810010E, // 0011 GETMBR R4 R0 K14 - 0x8C10090A, // 0012 GETMET R4 R4 K10 + 0x8810010C, // 0011 GETMBR R4 R0 K12 + 0x8C10090B, // 0012 GETMET R4 R4 K11 0x5C180400, // 0013 MOVE R6 R2 0x7C100400, // 0014 CALL R4 2 0x50100200, // 0015 LDBOOL R4 1 0 @@ -18998,9 +18363,92 @@ be_local_closure(class_AnimationEngine_remove_sequence_manager, /* name */ /******************************************************************** -** Solidified function: get_strip_length +** Solidified function: remove_animation ********************************************************************/ -be_local_closure(class_AnimationEngine_get_strip_length, /* name */ +be_local_closure(class_AnimationEngine_remove_animation, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(remove_animation), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x5409FFFE, // 0000 LDINT R2 -1 + 0x580C0000, // 0001 LDCONST R3 K0 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x88140108, // 0003 GETMBR R5 R0 K8 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120007, // 0006 JMPF R4 #000F + 0x88100108, // 0007 GETMBR R4 R0 K8 + 0x94100803, // 0008 GETIDX R4 R4 R3 + 0x1C100801, // 0009 EQ R4 R4 R1 + 0x78120001, // 000A JMPF R4 #000D + 0x5C080600, // 000B MOVE R2 R3 + 0x70020001, // 000C JMP #000F + 0x000C0706, // 000D ADD R3 R3 K6 + 0x7001FFF2, // 000E JMP #0002 + 0x28100500, // 000F GE R4 R2 K0 + 0x78120007, // 0010 JMPF R4 #0019 + 0x88100108, // 0011 GETMBR R4 R0 K8 + 0x8C10090B, // 0012 GETMET R4 R4 K11 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x50100200, // 0015 LDBOOL R4 1 0 + 0x90021A04, // 0016 SETMBR R0 K13 R4 + 0x50100200, // 0017 LDBOOL R4 1 0 + 0x80040800, // 0018 RET 1 R4 + 0x50100000, // 0019 LDBOOL R4 0 0 + 0x80040800, // 001A RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_events +********************************************************************/ +be_local_closure(class_AnimationEngine__process_events, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_process_events), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0xB80A1C00, // 0000 GETNGBL R2 K14 + 0x8808050F, // 0001 GETMBR R2 R2 K15 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0003, // 0004 JMPF R2 #0009 + 0xB80A1C00, // 0005 GETNGBL R2 K14 + 0x8808050F, // 0006 GETMBR R2 R2 K15 + 0x8C080510, // 0007 GETMET R2 R2 K16 + 0x7C080200, // 0008 CALL R2 1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: size +********************************************************************/ +be_local_closure(class_AnimationEngine_size, /* name */ be_nested_proto( 3, /* nstack */ 1, /* argc */ @@ -19011,12 +18459,12 @@ be_local_closure(class_AnimationEngine_get_strip_length, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(get_strip_length), + be_str_weak(size), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0x8C04012E, // 0000 GETMET R1 R0 K46 - 0x7C040200, // 0001 CALL R1 1 - 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 0x80040200, // 0003 RET 1 R1 }) ) @@ -19024,6 +18472,714 @@ be_local_closure(class_AnimationEngine_get_strip_length, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: check_strip_length +********************************************************************/ +be_local_closure(class_AnimationEngine_check_strip_length, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(check_strip_length), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C040311, // 0001 GETMET R1 R1 K17 + 0x7C040200, // 0002 CALL R1 1 + 0x88080101, // 0003 GETMBR R2 R0 K1 + 0x20080202, // 0004 NE R2 R1 R2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C080112, // 0006 GETMET R2 R0 K18 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x50080200, // 0009 LDBOOL R2 1 0 + 0x80040400, // 000A RET 1 R2 + 0x50080000, // 000B LDBOOL R2 0 0 + 0x80040400, // 000C RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _update_and_render +********************************************************************/ +be_local_closure(class_AnimationEngine__update_and_render, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_update_and_render), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x580C0000, // 0001 LDCONST R3 K0 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x88140108, // 0003 GETMBR R5 R0 K8 + 0x7C100200, // 0004 CALL R4 1 + 0x14100604, // 0005 LT R4 R3 R4 + 0x78120011, // 0006 JMPF R4 #0019 + 0x88100108, // 0007 GETMBR R4 R0 K8 + 0x94100803, // 0008 GETIDX R4 R4 R3 + 0x8C140913, // 0009 GETMET R5 R4 K19 + 0x5C1C0200, // 000A MOVE R7 R1 + 0x7C140400, // 000B CALL R5 2 + 0x78160004, // 000C JMPF R5 #0012 + 0x88180914, // 000D GETMBR R6 R4 K20 + 0x781A0002, // 000E JMPF R6 #0012 + 0x00080506, // 000F ADD R2 R2 K6 + 0x000C0706, // 0010 ADD R3 R3 K6 + 0x70020005, // 0011 JMP #0018 + 0x88180108, // 0012 GETMBR R6 R0 K8 + 0x8C180D0B, // 0013 GETMET R6 R6 K11 + 0x5C200600, // 0014 MOVE R8 R3 + 0x7C180400, // 0015 CALL R6 2 + 0x50180200, // 0016 LDBOOL R6 1 0 + 0x90021A06, // 0017 SETMBR R0 K13 R6 + 0x7001FFE8, // 0018 JMP #0002 + 0x1C100500, // 0019 EQ R4 R2 K0 + 0x78120006, // 001A JMPF R4 #0022 + 0x8810010D, // 001B GETMBR R4 R0 K13 + 0x78120003, // 001C JMPF R4 #0021 + 0x8C100115, // 001D GETMET R4 R0 K21 + 0x7C100200, // 001E CALL R4 1 + 0x50100000, // 001F LDBOOL R4 0 0 + 0x90021A04, // 0020 SETMBR R0 K13 R4 + 0x80000800, // 0021 RET 0 + 0x8C100116, // 0022 GETMET R4 R0 K22 + 0x88180108, // 0023 GETMBR R6 R0 K8 + 0x5C1C0200, // 0024 MOVE R7 R1 + 0x7C100600, // 0025 CALL R4 3 + 0x50100000, // 0026 LDBOOL R4 0 0 + 0x90021A04, // 0027 SETMBR R0 K13 R4 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_animation +********************************************************************/ +be_local_closure(class_AnimationEngine__add_animation, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_add_animation), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x88080108, // 0000 GETMBR R2 R0 K8 + 0x8C080517, // 0001 GETMET R2 R2 K23 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C080403, // 0005 EQ R2 R2 R3 + 0x780A000F, // 0006 JMPF R2 #0017 + 0x88080108, // 0007 GETMBR R2 R0 K8 + 0x8C080518, // 0008 GETMET R2 R2 K24 + 0x5C100200, // 0009 MOVE R4 R1 + 0x7C080400, // 000A CALL R2 2 + 0x8C080119, // 000B GETMET R2 R0 K25 + 0x7C080200, // 000C CALL R2 1 + 0x88080114, // 000D GETMBR R2 R0 K20 + 0x780A0002, // 000E JMPF R2 #0012 + 0x8C08031A, // 000F GETMET R2 R1 K26 + 0x8810011B, // 0010 GETMBR R4 R0 K27 + 0x7C080400, // 0011 CALL R2 2 + 0x50080200, // 0012 LDBOOL R2 1 0 + 0x90021A02, // 0013 SETMBR R0 K13 R2 + 0x50080200, // 0014 LDBOOL R2 1 0 + 0x80040400, // 0015 RET 1 R2 + 0x70020001, // 0016 JMP #0019 + 0x50080000, // 0017 LDBOOL R2 0 0 + 0x80040400, // 0018 RET 1 R2 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resume_after +********************************************************************/ +be_local_closure(class_AnimationEngine_resume_after, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(resume_after), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C08011C, // 0000 GETMET R2 R0 K28 + 0x7C080200, // 0001 CALL R2 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _render_animations +********************************************************************/ +be_local_closure(class_AnimationEngine__render_animations, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_render_animations), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 + 0x8C0C071D, // 0001 GETMET R3 R3 K29 + 0x7C0C0200, // 0002 CALL R3 1 + 0x580C0000, // 0003 LDCONST R3 K0 + 0x6010000C, // 0004 GETGBL R4 G12 + 0x5C140200, // 0005 MOVE R5 R1 + 0x7C100200, // 0006 CALL R4 1 + 0x14100604, // 0007 LT R4 R3 R4 + 0x78120012, // 0008 JMPF R4 #001C + 0x94100203, // 0009 GETIDX R4 R1 R3 + 0x8814011E, // 000A GETMBR R5 R0 K30 + 0x8C140B1D, // 000B GETMET R5 R5 K29 + 0x7C140200, // 000C CALL R5 1 + 0x8C14091F, // 000D GETMET R5 R4 K31 + 0x881C011E, // 000E GETMBR R7 R0 K30 + 0x5C200400, // 000F MOVE R8 R2 + 0x7C140600, // 0010 CALL R5 3 + 0x78160007, // 0011 JMPF R5 #001A + 0x8C180920, // 0012 GETMET R6 R4 K32 + 0x8820011E, // 0013 GETMBR R8 R0 K30 + 0x5C240400, // 0014 MOVE R9 R2 + 0x7C180600, // 0015 CALL R6 3 + 0x88180104, // 0016 GETMBR R6 R0 K4 + 0x8C180D21, // 0017 GETMET R6 R6 K33 + 0x8820011E, // 0018 GETMBR R8 R0 K30 + 0x7C180400, // 0019 CALL R6 2 + 0x000C0706, // 001A ADD R3 R3 K6 + 0x7001FFE7, // 001B JMP #0004 + 0x8C100122, // 001C GETMET R4 R0 K34 + 0x7C100200, // 001D CALL R4 1 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: cleanup +********************************************************************/ +be_local_closure(class_AnimationEngine_cleanup, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(cleanup), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C04010A, // 0000 GETMET R1 R0 K10 + 0x7C040200, // 0001 CALL R1 1 + 0x8C04011D, // 0002 GETMET R1 R0 K29 + 0x7C040200, // 0003 CALL R1 1 + 0x4C040000, // 0004 LDNIL R1 + 0x90020801, // 0005 SETMBR R0 K4 R1 + 0x4C040000, // 0006 LDNIL R1 + 0x90023C01, // 0007 SETMBR R0 K30 R1 + 0x4C040000, // 0008 LDNIL R1 + 0x90020401, // 0009 SETMBR R0 K2 R1 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resume +********************************************************************/ +be_local_closure(class_AnimationEngine_resume, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(resume), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88040114, // 0000 GETMBR R1 R0 K20 + 0x74060001, // 0001 JMPT R1 #0004 + 0x8C04011A, // 0002 GETMET R1 R0 K26 + 0x7C040200, // 0003 CALL R1 1 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove +********************************************************************/ +be_local_closure(class_AnimationEngine_remove, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(remove), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x6008000F, // 0000 GETGBL R2 G15 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0xB8121C00, // 0002 GETNGBL R4 K14 + 0x88100923, // 0003 GETMBR R4 R4 K35 + 0x7C080400, // 0004 CALL R2 2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C080124, // 0006 GETMET R2 R0 K36 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80040400, // 0009 RET 1 R2 + 0x70020011, // 000A JMP #001D + 0x6008000F, // 000B GETGBL R2 G15 + 0x5C0C0200, // 000C MOVE R3 R1 + 0xB8121C00, // 000D GETNGBL R4 K14 + 0x8810090E, // 000E GETMBR R4 R4 K14 + 0x7C080400, // 000F CALL R2 2 + 0x780A0004, // 0010 JMPF R2 #0016 + 0x8C080125, // 0011 GETMET R2 R0 K37 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x70020006, // 0015 JMP #001D + 0x60080018, // 0016 GETGBL R2 G24 + 0x580C0026, // 0017 LDCONST R3 K38 + 0x60100005, // 0018 GETGBL R4 G5 + 0x5C140200, // 0019 MOVE R5 R1 + 0x7C100200, // 001A CALL R4 1 + 0x7C080400, // 001B CALL R2 2 + 0xB0064E02, // 001C RAISE 1 K39 R2 + 0x80000000, // 001D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: on_tick +********************************************************************/ +be_local_closure(class_AnimationEngine_on_tick, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(on_tick), + &be_const_str_solidified, + ( &(const binstruction[54]) { /* code */ + 0x88080114, // 0000 GETMBR R2 R0 K20 + 0x740A0001, // 0001 JMPT R2 #0004 + 0x50080000, // 0002 LDBOOL R2 0 0 + 0x80040400, // 0003 RET 1 R2 + 0x4C080000, // 0004 LDNIL R2 + 0x1C080202, // 0005 EQ R2 R1 R2 + 0x780A0003, // 0006 JMPF R2 #000B + 0xB80A5000, // 0007 GETNGBL R2 K40 + 0x8C080529, // 0008 GETMET R2 R2 K41 + 0x7C080200, // 0009 CALL R2 1 + 0x5C040400, // 000A MOVE R1 R2 + 0x8C08012A, // 000B GETMET R2 R0 K42 + 0x7C080200, // 000C CALL R2 1 + 0x90023601, // 000D SETMBR R0 K27 R1 + 0x8808012B, // 000E GETMBR R2 R0 K43 + 0x04080202, // 000F SUB R2 R1 R2 + 0x540E0004, // 0010 LDINT R3 5 + 0x140C0403, // 0011 LT R3 R2 R3 + 0x780E0001, // 0012 JMPF R3 #0015 + 0x500C0200, // 0013 LDBOOL R3 1 0 + 0x80040600, // 0014 RET 1 R3 + 0x90025601, // 0015 SETMBR R0 K43 R1 + 0x880C0102, // 0016 GETMBR R3 R0 K2 + 0x880C072C, // 0017 GETMBR R3 R3 K44 + 0x4C100000, // 0018 LDNIL R4 + 0x200C0604, // 0019 NE R3 R3 R4 + 0x780E0005, // 001A JMPF R3 #0021 + 0x880C0102, // 001B GETMBR R3 R0 K2 + 0x8C0C072C, // 001C GETMET R3 R3 K44 + 0x7C0C0200, // 001D CALL R3 1 + 0x740E0001, // 001E JMPT R3 #0021 + 0x500C0200, // 001F LDBOOL R3 1 0 + 0x80040600, // 0020 RET 1 R3 + 0x580C0000, // 0021 LDCONST R3 K0 + 0x6010000C, // 0022 GETGBL R4 G12 + 0x8814010C, // 0023 GETMBR R5 R0 K12 + 0x7C100200, // 0024 CALL R4 1 + 0x14100604, // 0025 LT R4 R3 R4 + 0x78120006, // 0026 JMPF R4 #002E + 0x8810010C, // 0027 GETMBR R4 R0 K12 + 0x94100803, // 0028 GETIDX R4 R4 R3 + 0x8C100913, // 0029 GETMET R4 R4 K19 + 0x5C180200, // 002A MOVE R6 R1 + 0x7C100400, // 002B CALL R4 2 + 0x000C0706, // 002C ADD R3 R3 K6 + 0x7001FFF3, // 002D JMP #0022 + 0x8C10012D, // 002E GETMET R4 R0 K45 + 0x5C180200, // 002F MOVE R6 R1 + 0x7C100400, // 0030 CALL R4 2 + 0x8C10012E, // 0031 GETMET R4 R0 K46 + 0x5C180200, // 0032 MOVE R6 R1 + 0x7C100400, // 0033 CALL R4 2 + 0x50100200, // 0034 LDBOOL R4 1 0 + 0x80040800, // 0035 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: stop +********************************************************************/ +be_local_closure(class_AnimationEngine_stop, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(stop), + &be_const_str_solidified, + ( &(const binstruction[13]) { /* code */ + 0x88040114, // 0000 GETMBR R1 R0 K20 + 0x78060009, // 0001 JMPF R1 #000C + 0x50040000, // 0002 LDBOOL R1 0 0 + 0x90022801, // 0003 SETMBR R0 K20 R1 + 0x8804012F, // 0004 GETMBR R1 R0 K47 + 0x4C080000, // 0005 LDNIL R2 + 0x20040202, // 0006 NE R1 R1 R2 + 0x78060003, // 0007 JMPF R1 #000C + 0xB8065000, // 0008 GETNGBL R1 K40 + 0x8C040330, // 0009 GETMET R1 R1 K48 + 0x880C012F, // 000A GETMBR R3 R0 K47 + 0x7C040400, // 000B CALL R1 2 + 0x80040000, // 000C RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _sort_animations +********************************************************************/ +be_local_closure(class_AnimationEngine__sort_animations, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_sort_animations), + &be_const_str_solidified, + ( &(const binstruction[33]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 + 0x18080306, // 0003 LE R2 R1 K6 + 0x780A0000, // 0004 JMPF R2 #0006 + 0x80000400, // 0005 RET 0 + 0x58080006, // 0006 LDCONST R2 K6 + 0x140C0401, // 0007 LT R3 R2 R1 + 0x780E0016, // 0008 JMPF R3 #0020 + 0x880C0108, // 0009 GETMBR R3 R0 K8 + 0x940C0602, // 000A GETIDX R3 R3 R2 + 0x5C100400, // 000B MOVE R4 R2 + 0x24140900, // 000C GT R5 R4 K0 + 0x7816000D, // 000D JMPF R5 #001C + 0x04140906, // 000E SUB R5 R4 K6 + 0x88180108, // 000F GETMBR R6 R0 K8 + 0x94140C05, // 0010 GETIDX R5 R6 R5 + 0x88140B31, // 0011 GETMBR R5 R5 K49 + 0x88180731, // 0012 GETMBR R6 R3 K49 + 0x14140A06, // 0013 LT R5 R5 R6 + 0x78160006, // 0014 JMPF R5 #001C + 0x88140108, // 0015 GETMBR R5 R0 K8 + 0x04180906, // 0016 SUB R6 R4 K6 + 0x881C0108, // 0017 GETMBR R7 R0 K8 + 0x94180E06, // 0018 GETIDX R6 R7 R6 + 0x98140806, // 0019 SETIDX R5 R4 R6 + 0x04100906, // 001A SUB R4 R4 K6 + 0x7001FFEF, // 001B JMP #000C + 0x88140108, // 001C GETMBR R5 R0 K8 + 0x98140803, // 001D SETIDX R5 R4 R3 + 0x00080506, // 001E ADD R2 R2 K6 + 0x7001FFE6, // 001F JMP #0007 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _add_sequence_manager +********************************************************************/ +be_local_closure(class_AnimationEngine__add_sequence_manager, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_add_sequence_manager), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8808010C, // 0000 GETMBR R2 R0 K12 + 0x8C080518, // 0001 GETMET R2 R2 K24 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040000, // 0004 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _clear_strip +********************************************************************/ +be_local_closure(class_AnimationEngine__clear_strip, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_clear_strip), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040102, // 0000 GETMBR R1 R0 K2 + 0x8C04031D, // 0001 GETMET R1 R1 K29 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040307, // 0004 GETMET R1 R1 K7 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: interrupt_current +********************************************************************/ +be_local_closure(class_AnimationEngine_interrupt_current, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(interrupt_current), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080108, // 0001 GETMBR R2 R0 K8 + 0x7C040200, // 0002 CALL R1 1 + 0xA8020006, // 0003 EXBLK 0 #000B + 0x5C080200, // 0004 MOVE R2 R1 + 0x7C080000, // 0005 CALL R2 0 + 0x880C0514, // 0006 GETMBR R3 R2 K20 + 0x780E0001, // 0007 JMPF R3 #000A + 0x8C0C050A, // 0008 GETMET R3 R2 K10 + 0x7C0C0200, // 0009 CALL R3 1 + 0x7001FFF8, // 000A JMP #0004 + 0x58040032, // 000B LDCONST R1 K50 + 0xAC040200, // 000C CATCH R1 1 0 + 0xB0080000, // 000D RAISE 2 R0 R0 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add +********************************************************************/ +be_local_closure(class_AnimationEngine_add, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(add), + &be_const_str_solidified, + ( &(const binstruction[32]) { /* code */ + 0x6008000F, // 0000 GETGBL R2 G15 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0xB8121C00, // 0002 GETNGBL R4 K14 + 0x88100923, // 0003 GETMBR R4 R4 K35 + 0x7C080400, // 0004 CALL R2 2 + 0x780A0004, // 0005 JMPF R2 #000B + 0x8C080133, // 0006 GETMET R2 R0 K51 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C080400, // 0008 CALL R2 2 + 0x80040400, // 0009 RET 1 R2 + 0x70020013, // 000A JMP #001F + 0x6008000F, // 000B GETGBL R2 G15 + 0x5C0C0200, // 000C MOVE R3 R1 + 0xB8121C00, // 000D GETNGBL R4 K14 + 0x8810090E, // 000E GETMBR R4 R4 K14 + 0x7C080400, // 000F CALL R2 2 + 0x780A0004, // 0010 JMPF R2 #0016 + 0x8C080134, // 0011 GETMET R2 R0 K52 + 0x5C100200, // 0012 MOVE R4 R1 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x70020008, // 0015 JMP #001F + 0xA40A6A00, // 0016 IMPORT R2 K53 + 0x8C0C0509, // 0017 GETMET R3 R2 K9 + 0x5C140200, // 0018 MOVE R5 R1 + 0x7C0C0400, // 0019 CALL R3 2 + 0x60100018, // 001A GETGBL R4 G24 + 0x58140036, // 001B LDCONST R5 K54 + 0x5C180600, // 001C MOVE R6 R3 + 0x7C100400, // 001D CALL R4 2 + 0xB0064E04, // 001E RAISE 1 K39 R4 + 0x80000000, // 001F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: clear +********************************************************************/ +be_local_closure(class_AnimationEngine_clear, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(clear), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x90021001, // 0002 SETMBR R0 K8 R1 + 0x58040000, // 0003 LDCONST R1 K0 + 0x6008000C, // 0004 GETGBL R2 G12 + 0x880C010C, // 0005 GETMBR R3 R0 K12 + 0x7C080200, // 0006 CALL R2 1 + 0x14080202, // 0007 LT R2 R1 R2 + 0x780A0005, // 0008 JMPF R2 #000F + 0x8808010C, // 0009 GETMBR R2 R0 K12 + 0x94080401, // 000A GETIDX R2 R2 R1 + 0x8C08050A, // 000B GETMET R2 R2 K10 + 0x7C080200, // 000C CALL R2 1 + 0x00040306, // 000D ADD R1 R1 K6 + 0x7001FFF4, // 000E JMP #0004 + 0x60080012, // 000F GETGBL R2 G18 + 0x7C080000, // 0010 CALL R2 0 + 0x90021802, // 0011 SETMBR R0 K12 R2 + 0x50080200, // 0012 LDBOOL R2 1 0 + 0x90021A02, // 0013 SETMBR R0 K13 R2 + 0x80040000, // 0014 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_strip ********************************************************************/ @@ -19041,7 +19197,7 @@ be_local_closure(class_AnimationEngine_get_strip, /* name */ be_str_weak(get_strip), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x88040110, // 0000 GETMBR R1 R0 K16 + 0x88040102, // 0000 GETMBR R1 R0 K2 0x80040200, // 0001 RET 1 R1 }) ) @@ -19049,6 +19205,32 @@ be_local_closure(class_AnimationEngine_get_strip, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: interrupt_all +********************************************************************/ +be_local_closure(class_AnimationEngine_interrupt_all, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(interrupt_all), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x8C04011D, // 0000 GETMET R1 R0 K29 + 0x7C040200, // 0001 CALL R1 1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: tostring ********************************************************************/ @@ -19067,10 +19249,10 @@ be_local_closure(class_AnimationEngine_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080032, // 0001 LDCONST R2 K50 - 0x880C0108, // 0002 GETMBR R3 R0 K8 + 0x58080037, // 0001 LDCONST R2 K55 + 0x880C0114, // 0002 GETMBR R3 R0 K20 0x6010000C, // 0003 GETGBL R4 G12 - 0x88140106, // 0004 GETMBR R5 R0 K6 + 0x88140108, // 0004 GETMBR R5 R0 K8 0x7C100200, // 0005 CALL R4 1 0x88140101, // 0006 GETMBR R5 R0 K1 0x7C040800, // 0007 CALL R1 4 @@ -19082,96 +19264,9 @@ be_local_closure(class_AnimationEngine_tostring, /* name */ /******************************************************************** -** Solidified function: _process_events +** Solidified function: init ********************************************************************/ -be_local_closure(class_AnimationEngine__process_events, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(_process_events), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0xB80A2E00, // 0000 GETNGBL R2 K23 - 0x88080533, // 0001 GETMBR R2 R2 K51 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0003, // 0004 JMPF R2 #0009 - 0xB80A2E00, // 0005 GETNGBL R2 K23 - 0x88080533, // 0006 GETMBR R2 R2 K51 - 0x8C080534, // 0007 GETMET R2 R2 K52 - 0x7C080200, // 0008 CALL R2 1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: interrupt_all -********************************************************************/ -be_local_closure(class_AnimationEngine_interrupt_all, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(interrupt_all), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C04011F, // 0000 GETMET R1 R0 K31 - 0x7C040200, // 0001 CALL R1 1 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: resume -********************************************************************/ -be_local_closure(class_AnimationEngine_resume, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 10, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(resume), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 - 0x74060001, // 0001 JMPT R1 #0004 - 0x8C040135, // 0002 GETMET R1 R0 K53 - 0x7C040200, // 0003 CALL R1 1 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_animation -********************************************************************/ -be_local_closure(class_AnimationEngine_add_animation, /* name */ +be_local_closure(class_AnimationEngine_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -19182,35 +19277,132 @@ be_local_closure(class_AnimationEngine_add_animation, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_AnimationEngine, /* shared constants */ - be_str_weak(add_animation), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x88080106, // 0000 GETMBR R2 R0 K6 - 0x8C080536, // 0001 GETMET R2 R2 K54 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C080403, // 0005 EQ R2 R2 R3 - 0x780A000F, // 0006 JMPF R2 #0017 - 0x88080106, // 0007 GETMBR R2 R0 K6 - 0x8C08050F, // 0008 GETMET R2 R2 K15 - 0x5C100200, // 0009 MOVE R4 R1 - 0x7C080400, // 000A CALL R2 2 - 0x8C080137, // 000B GETMET R2 R0 K55 - 0x7C080200, // 000C CALL R2 1 - 0x88080108, // 000D GETMBR R2 R0 K8 - 0x780A0002, // 000E JMPF R2 #0012 - 0x8C080335, // 000F GETMET R2 R1 K53 - 0x8810012C, // 0010 GETMBR R4 R0 K44 + ( &(const binstruction[33]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 + 0xB0067139, // 0003 RAISE 1 K56 K57 + 0x90020401, // 0004 SETMBR R0 K2 R1 + 0x8C080311, // 0005 GETMET R2 R1 K17 + 0x7C080200, // 0006 CALL R2 1 + 0x90020202, // 0007 SETMBR R0 K1 R2 + 0x60080012, // 0008 GETGBL R2 G18 + 0x7C080000, // 0009 CALL R2 0 + 0x90021002, // 000A SETMBR R0 K8 R2 + 0x60080012, // 000B GETGBL R2 G18 + 0x7C080000, // 000C CALL R2 0 + 0x90021802, // 000D SETMBR R0 K12 R2 + 0xB80A1C00, // 000E GETNGBL R2 K14 + 0x8C080504, // 000F GETMET R2 R2 K4 + 0x88100101, // 0010 GETMBR R4 R0 K1 0x7C080400, // 0011 CALL R2 2 - 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90020A02, // 0013 SETMBR R0 K5 R2 - 0x50080200, // 0014 LDBOOL R2 1 0 - 0x80040400, // 0015 RET 1 R2 - 0x70020001, // 0016 JMP #0019 - 0x50080000, // 0017 LDBOOL R2 0 0 - 0x80040400, // 0018 RET 1 R2 - 0x80000000, // 0019 RET 0 + 0x90020802, // 0012 SETMBR R0 K4 R2 + 0xB80A1C00, // 0013 GETNGBL R2 K14 + 0x8C080504, // 0014 GETMET R2 R2 K4 + 0x88100101, // 0015 GETMBR R4 R0 K1 + 0x7C080400, // 0016 CALL R2 2 + 0x90023C02, // 0017 SETMBR R0 K30 R2 + 0x50080000, // 0018 LDBOOL R2 0 0 + 0x90022802, // 0019 SETMBR R0 K20 R2 + 0x90025700, // 001A SETMBR R0 K43 K0 + 0x90023700, // 001B SETMBR R0 K27 K0 + 0x4C080000, // 001C LDNIL R2 + 0x90025E02, // 001D SETMBR R0 K47 R2 + 0x50080000, // 001E LDBOOL R2 0 0 + 0x90021A02, // 001F SETMBR R0 K13 R2 + 0x80000000, // 0020 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_strip_length +********************************************************************/ +be_local_closure(class_AnimationEngine_get_strip_length, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(get_strip_length), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C04012A, // 0000 GETMET R1 R0 K42 + 0x7C040200, // 0001 CALL R1 1 + 0x88040101, // 0002 GETMBR R1 R0 K1 + 0x80040200, // 0003 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _handle_strip_length_change +********************************************************************/ +be_local_closure(class_AnimationEngine__handle_strip_length_change, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(_handle_strip_length_change), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x18080300, // 0000 LE R2 R1 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x90020201, // 0003 SETMBR R0 K1 R1 + 0x88080104, // 0004 GETMBR R2 R0 K4 + 0x8C08053A, // 0005 GETMET R2 R2 K58 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x8808011E, // 0008 GETMBR R2 R0 K30 + 0x8C08053A, // 0009 GETMET R2 R2 K58 + 0x5C100200, // 000A MOVE R4 R1 + 0x7C080400, // 000B CALL R2 2 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x90021A02, // 000D SETMBR R0 K13 R2 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_active +********************************************************************/ +be_local_closure(class_AnimationEngine_is_active, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 10, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + &be_ktab_class_AnimationEngine, /* shared constants */ + be_str_weak(is_active), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040114, // 0000 GETMBR R1 R0 K20 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -19258,51 +19450,51 @@ be_local_closure(class_AnimationEngine_start, /* name */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[48]) { /* code */ - 0x88040108, // 0000 GETMBR R1 R0 K8 + 0x88040114, // 0000 GETMBR R1 R0 K20 0x7406002B, // 0001 JMPT R1 #002E - 0xB8064E00, // 0002 GETNGBL R1 K39 - 0x8C04032D, // 0003 GETMET R1 R1 K45 + 0xB8065000, // 0002 GETNGBL R1 K40 + 0x8C040329, // 0003 GETMET R1 R1 K41 0x7C040200, // 0004 CALL R1 1 0x50080200, // 0005 LDBOOL R2 1 0 - 0x90021002, // 0006 SETMBR R0 K8 R2 + 0x90022802, // 0006 SETMBR R0 K20 R2 0x540A0009, // 0007 LDINT R2 10 0x04080202, // 0008 SUB R2 R1 R2 0x90025602, // 0009 SETMBR R0 K43 R2 - 0x88080126, // 000A GETMBR R2 R0 K38 + 0x8808012F, // 000A GETMBR R2 R0 K47 0x4C0C0000, // 000B LDNIL R3 0x1C080403, // 000C EQ R2 R2 R3 0x780A0001, // 000D JMPF R2 #0010 0x84080000, // 000E CLOSURE R2 P0 - 0x90024C02, // 000F SETMBR R0 K38 R2 + 0x90025E02, // 000F SETMBR R0 K47 R2 0x58080000, // 0010 LDCONST R2 K0 0x600C000C, // 0011 GETGBL R3 G12 - 0x88100106, // 0012 GETMBR R4 R0 K6 + 0x88100108, // 0012 GETMBR R4 R0 K8 0x7C0C0200, // 0013 CALL R3 1 0x140C0403, // 0014 LT R3 R2 R3 0x780E0006, // 0015 JMPF R3 #001D - 0x880C0106, // 0016 GETMBR R3 R0 K6 + 0x880C0108, // 0016 GETMBR R3 R0 K8 0x940C0602, // 0017 GETIDX R3 R3 R2 - 0x8C0C0735, // 0018 GETMET R3 R3 K53 + 0x8C0C071A, // 0018 GETMET R3 R3 K26 0x5C140200, // 0019 MOVE R5 R1 0x7C0C0400, // 001A CALL R3 2 - 0x00080509, // 001B ADD R2 R2 K9 + 0x00080506, // 001B ADD R2 R2 K6 0x7001FFF3, // 001C JMP #0011 0x58080000, // 001D LDCONST R2 K0 0x600C000C, // 001E GETGBL R3 G12 - 0x8810010E, // 001F GETMBR R4 R0 K14 + 0x8810010C, // 001F GETMBR R4 R0 K12 0x7C0C0200, // 0020 CALL R3 1 0x140C0403, // 0021 LT R3 R2 R3 0x780E0006, // 0022 JMPF R3 #002A - 0x880C010E, // 0023 GETMBR R3 R0 K14 + 0x880C010C, // 0023 GETMBR R3 R0 K12 0x940C0602, // 0024 GETIDX R3 R3 R2 - 0x8C0C0735, // 0025 GETMET R3 R3 K53 + 0x8C0C071A, // 0025 GETMET R3 R3 K26 0x5C140200, // 0026 MOVE R5 R1 0x7C0C0400, // 0027 CALL R3 2 - 0x00080509, // 0028 ADD R2 R2 K9 + 0x00080506, // 0028 ADD R2 R2 K6 0x7001FFF3, // 0029 JMP #001E - 0xB80E4E00, // 002A GETNGBL R3 K39 - 0x8C0C0738, // 002B GETMET R3 R3 K56 - 0x88140126, // 002C GETMBR R5 R0 K38 + 0xB80E5000, // 002A GETNGBL R3 K40 + 0x8C0C073B, // 002B GETMET R3 R3 K59 + 0x8814012F, // 002C GETMBR R5 R0 K47 0x7C0C0400, // 002D CALL R3 2 0xA0000000, // 002E CLOSE R0 0x80040000, // 002F RET 1 R0 @@ -19318,49 +19510,50 @@ be_local_closure(class_AnimationEngine_start, /* name */ be_local_class(AnimationEngine, 11, NULL, - be_nested_map(41, + be_nested_map(42, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(_handle_strip_length_change, 38), be_const_closure(class_AnimationEngine__handle_strip_length_change_closure) }, - { be_const_key_weak(temp_buffer, 18), be_const_var(5) }, - { be_const_key_weak(time_ms, 9), be_const_var(8) }, - { be_const_key_weak(_update_and_render, 40), be_const_closure(class_AnimationEngine__update_and_render_closure) }, - { be_const_key_weak(_sort_animations, -1), be_const_closure(class_AnimationEngine__sort_animations_closure) }, + { be_const_key_weak(_output_to_strip, 8), be_const_closure(class_AnimationEngine__output_to_strip_closure) }, + { be_const_key_weak(interrupt_animation, -1), be_const_closure(class_AnimationEngine_interrupt_animation_closure) }, { be_const_key_weak(start, -1), be_const_closure(class_AnimationEngine_start_closure) }, - { be_const_key_weak(sequence_managers, -1), be_const_var(3) }, - { be_const_key_weak(_output_to_strip, -1), be_const_closure(class_AnimationEngine__output_to_strip_closure) }, - { be_const_key_weak(check_strip_length, -1), be_const_closure(class_AnimationEngine_check_strip_length_closure) }, - { be_const_key_weak(add_animation, -1), be_const_closure(class_AnimationEngine_add_animation_closure) }, - { be_const_key_weak(interrupt_animation, 39), be_const_closure(class_AnimationEngine_interrupt_animation_closure) }, - { be_const_key_weak(add, -1), be_const_closure(class_AnimationEngine_add_closure) }, - { be_const_key_weak(get_animations, 10), be_const_closure(class_AnimationEngine_get_animations_closure) }, - { be_const_key_weak(_render_animations, -1), be_const_closure(class_AnimationEngine__render_animations_closure) }, - { be_const_key_weak(interrupt_all, -1), be_const_closure(class_AnimationEngine_interrupt_all_closure) }, - { be_const_key_weak(is_running, -1), be_const_var(6) }, + { be_const_key_weak(remove_sequence_manager, 24), be_const_closure(class_AnimationEngine_remove_sequence_manager_closure) }, + { be_const_key_weak(remove_animation, 32), be_const_closure(class_AnimationEngine_remove_animation_closure) }, { be_const_key_weak(_process_events, -1), be_const_closure(class_AnimationEngine__process_events_closure) }, - { be_const_key_weak(clear, -1), be_const_closure(class_AnimationEngine_clear_closure) }, - { be_const_key_weak(frame_buffer, -1), be_const_var(4) }, - { be_const_key_weak(render_needed, -1), be_const_var(10) }, - { be_const_key_weak(add_sequence_manager, 35), be_const_closure(class_AnimationEngine_add_sequence_manager_closure) }, - { be_const_key_weak(remove_animation, -1), be_const_closure(class_AnimationEngine_remove_animation_closure) }, - { be_const_key_weak(strip, 21), be_const_var(0) }, - { be_const_key_weak(interrupt_current, 33), be_const_closure(class_AnimationEngine_interrupt_current_closure) }, - { be_const_key_weak(on_tick, -1), be_const_closure(class_AnimationEngine_on_tick_closure) }, - { be_const_key_weak(animations, 19), be_const_var(2) }, - { be_const_key_weak(is_active, 16), be_const_closure(class_AnimationEngine_is_active_closure) }, - { be_const_key_weak(cleanup, 14), be_const_closure(class_AnimationEngine_cleanup_closure) }, - { be_const_key_weak(resume_after, 30), be_const_closure(class_AnimationEngine_resume_after_closure) }, - { be_const_key_weak(get_strip_length, 5), be_const_closure(class_AnimationEngine_get_strip_length_closure) }, - { be_const_key_weak(remove_sequence_manager, -1), be_const_closure(class_AnimationEngine_remove_sequence_manager_closure) }, - { be_const_key_weak(tostring, 2), be_const_closure(class_AnimationEngine_tostring_closure) }, - { be_const_key_weak(_clear_strip, 1), be_const_closure(class_AnimationEngine__clear_strip_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_AnimationEngine_init_closure) }, - { be_const_key_weak(get_strip, 15), be_const_closure(class_AnimationEngine_get_strip_closure) }, - { be_const_key_weak(stop, 37), be_const_closure(class_AnimationEngine_stop_closure) }, - { be_const_key_weak(resume, -1), be_const_closure(class_AnimationEngine_resume_closure) }, - { be_const_key_weak(last_update, -1), be_const_var(7) }, - { be_const_key_weak(width, -1), be_const_var(1) }, - { be_const_key_weak(fast_loop_closure, -1), be_const_var(9) }, { be_const_key_weak(size, -1), be_const_closure(class_AnimationEngine_size_closure) }, + { be_const_key_weak(check_strip_length, 30), be_const_closure(class_AnimationEngine_check_strip_length_closure) }, + { be_const_key_weak(animations, -1), be_const_var(2) }, + { be_const_key_weak(_add_animation, -1), be_const_closure(class_AnimationEngine__add_animation_closure) }, + { be_const_key_weak(_update_and_render, 34), be_const_closure(class_AnimationEngine__update_and_render_closure) }, + { be_const_key_weak(is_active, -1), be_const_closure(class_AnimationEngine_is_active_closure) }, + { be_const_key_weak(_render_animations, -1), be_const_closure(class_AnimationEngine__render_animations_closure) }, + { be_const_key_weak(cleanup, -1), be_const_closure(class_AnimationEngine_cleanup_closure) }, + { be_const_key_weak(resume, -1), be_const_closure(class_AnimationEngine_resume_closure) }, + { be_const_key_weak(remove, -1), be_const_closure(class_AnimationEngine_remove_closure) }, + { be_const_key_weak(on_tick, -1), be_const_closure(class_AnimationEngine_on_tick_closure) }, + { be_const_key_weak(stop, -1), be_const_closure(class_AnimationEngine_stop_closure) }, + { be_const_key_weak(_handle_strip_length_change, -1), be_const_closure(class_AnimationEngine__handle_strip_length_change_closure) }, + { be_const_key_weak(fast_loop_closure, -1), be_const_var(9) }, + { be_const_key_weak(get_strip_length, 21), be_const_closure(class_AnimationEngine_get_strip_length_closure) }, + { be_const_key_weak(sequence_managers, 25), be_const_var(3) }, + { be_const_key_weak(init, -1), be_const_closure(class_AnimationEngine_init_closure) }, + { be_const_key_weak(_add_sequence_manager, -1), be_const_closure(class_AnimationEngine__add_sequence_manager_closure) }, + { be_const_key_weak(strip, 23), be_const_var(0) }, + { be_const_key_weak(last_update, -1), be_const_var(7) }, + { be_const_key_weak(clear, -1), be_const_closure(class_AnimationEngine_clear_closure) }, + { be_const_key_weak(interrupt_all, -1), be_const_closure(class_AnimationEngine_interrupt_all_closure) }, + { be_const_key_weak(_sort_animations, 27), be_const_closure(class_AnimationEngine__sort_animations_closure) }, + { be_const_key_weak(width, -1), be_const_var(1) }, + { be_const_key_weak(resume_after, -1), be_const_closure(class_AnimationEngine_resume_after_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_AnimationEngine_tostring_closure) }, + { be_const_key_weak(add, -1), be_const_closure(class_AnimationEngine_add_closure) }, + { be_const_key_weak(time_ms, 22), be_const_var(8) }, + { be_const_key_weak(interrupt_current, 9), be_const_closure(class_AnimationEngine_interrupt_current_closure) }, + { be_const_key_weak(frame_buffer, 20), be_const_var(4) }, + { be_const_key_weak(get_strip, 19), be_const_closure(class_AnimationEngine_get_strip_closure) }, + { be_const_key_weak(is_running, 18), be_const_var(6) }, + { be_const_key_weak(_clear_strip, 11), be_const_closure(class_AnimationEngine__clear_strip_closure) }, + { be_const_key_weak(render_needed, -1), be_const_var(10) }, + { be_const_key_weak(temp_buffer, -1), be_const_var(5) }, + { be_const_key_weak(get_animations, 2), be_const_closure(class_AnimationEngine_get_animations_closure) }, })), be_str_weak(AnimationEngine) ); diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h index 28233af2f..3fc78220b 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h @@ -2362,133 +2362,85 @@ be_local_closure(create_eof_token, /* name */ extern const bclass be_class_SimpleDSLTranspiler; /******************************************************************** -** Solidified function: create_computation_closure +** Solidified function: convert_to_vrgb ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_create_computation_closure, /* name */ +be_local_closure(class_SimpleDSLTranspiler_convert_to_vrgb, /* name */ be_nested_proto( 12, /* nstack */ - 4, /* argc */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(transform_operand_for_closure), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(_X20_X20), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(replace), - /* K6 */ be_nested_str_weak(_X20), - /* K7 */ be_nested_str_weak(def_X20_X28self_X29_X20return_X20_X25s_X20_X25s_X20_X25s_X20end), - /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(format), + /* K3 */ be_nested_str_weak(_X2502X), + /* K4 */ be_nested_str_weak(FFFFFF), + /* K5 */ be_nested_str_weak(startswith), + /* K6 */ be_nested_str_weak(0x), + /* K7 */ be_const_int(2), }), - be_str_weak(create_computation_closure), + be_str_weak(convert_to_vrgb), &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140101, // 0001 GETMET R5 R0 K1 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x7C140400, // 0003 CALL R5 2 - 0x8C180101, // 0004 GETMET R6 R0 K1 - 0x5C200600, // 0005 MOVE R8 R3 - 0x7C180400, // 0006 CALL R6 2 - 0x8C1C0902, // 0007 GETMET R7 R4 K2 - 0x5C240A00, // 0008 MOVE R9 R5 - 0x58280003, // 0009 LDCONST R10 K3 - 0x7C1C0600, // 000A CALL R7 3 - 0x281C0F04, // 000B GE R7 R7 K4 - 0x781E0006, // 000C JMPF R7 #0014 - 0x8C1C0905, // 000D GETMET R7 R4 K5 - 0x5C240A00, // 000E MOVE R9 R5 - 0x58280003, // 000F LDCONST R10 K3 - 0x582C0006, // 0010 LDCONST R11 K6 - 0x7C1C0800, // 0011 CALL R7 4 - 0x5C140E00, // 0012 MOVE R5 R7 - 0x7001FFF2, // 0013 JMP #0007 - 0x8C1C0902, // 0014 GETMET R7 R4 K2 - 0x5C240C00, // 0015 MOVE R9 R6 - 0x58280003, // 0016 LDCONST R10 K3 - 0x7C1C0600, // 0017 CALL R7 3 - 0x281C0F04, // 0018 GE R7 R7 K4 - 0x781E0006, // 0019 JMPF R7 #0021 - 0x8C1C0905, // 001A GETMET R7 R4 K5 - 0x5C240C00, // 001B MOVE R9 R6 - 0x58280003, // 001C LDCONST R10 K3 - 0x582C0006, // 001D LDCONST R11 K6 - 0x7C1C0800, // 001E CALL R7 4 - 0x5C180E00, // 001F MOVE R6 R7 - 0x7001FFF2, // 0020 JMP #0014 - 0x601C0018, // 0021 GETGBL R7 G24 - 0x58200007, // 0022 LDCONST R8 K7 - 0x5C240A00, // 0023 MOVE R9 R5 - 0x5C280400, // 0024 MOVE R10 R2 - 0x5C2C0C00, // 0025 MOVE R11 R6 - 0x7C1C0800, // 0026 CALL R7 4 - 0x60200018, // 0027 GETGBL R8 G24 - 0x58240008, // 0028 LDCONST R9 K8 - 0x5C280E00, // 0029 MOVE R10 R7 - 0x7C200400, // 002A CALL R8 2 - 0x80041000, // 002B RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_keyword -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(KEYWORD), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20_X27_X25s_X27), - }), - be_str_weak(expect_keyword), - &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x200C0403, // 0003 NE R3 R2 R3 - 0x780E000B, // 0004 JMPF R3 #0011 - 0x880C0501, // 0005 GETMBR R3 R2 K1 - 0xB8120400, // 0006 GETNGBL R4 K2 - 0x88100903, // 0007 GETMBR R4 R4 K3 - 0x88100904, // 0008 GETMBR R4 R4 K4 - 0x1C0C0604, // 0009 EQ R3 R3 R4 - 0x780E0005, // 000A JMPF R3 #0011 - 0x880C0505, // 000B GETMBR R3 R2 K5 - 0x1C0C0601, // 000C EQ R3 R3 R1 - 0x780E0002, // 000D JMPF R3 #0011 - 0x8C0C0106, // 000E GETMET R3 R0 K6 - 0x7C0C0200, // 000F CALL R3 1 - 0x70020005, // 0010 JMP #0017 - 0x8C0C0107, // 0011 GETMET R3 R0 K7 - 0x60140018, // 0012 GETGBL R5 G24 - 0x58180008, // 0013 LDCONST R6 K8 - 0x5C1C0200, // 0014 MOVE R7 R1 - 0x7C140400, // 0015 CALL R5 2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x80000000, // 0017 RET 0 + ( &(const binstruction[54]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x60100009, // 0001 GETGBL R4 G9 + 0x6014000A, // 0002 GETGBL R5 G10 + 0x5C180200, // 0003 MOVE R6 R1 + 0x7C140200, // 0004 CALL R5 1 + 0x7C100200, // 0005 CALL R4 1 + 0x14140901, // 0006 LT R5 R4 K1 + 0x78160001, // 0007 JMPF R5 #000A + 0x58100001, // 0008 LDCONST R4 K1 + 0x70020003, // 0009 JMP #000E + 0x541600FE, // 000A LDINT R5 255 + 0x24140805, // 000B GT R5 R4 R5 + 0x78160000, // 000C JMPF R5 #000E + 0x541200FE, // 000D LDINT R4 255 + 0x8C140702, // 000E GETMET R5 R3 K2 + 0x581C0003, // 000F LDCONST R7 K3 + 0x5C200800, // 0010 MOVE R8 R4 + 0x7C140600, // 0011 CALL R5 3 + 0x60180008, // 0012 GETGBL R6 G8 + 0x5C1C0400, // 0013 MOVE R7 R2 + 0x7C180200, // 0014 CALL R6 1 + 0x581C0004, // 0015 LDCONST R7 K4 + 0x8C200705, // 0016 GETMET R8 R3 K5 + 0x5C280C00, // 0017 MOVE R10 R6 + 0x582C0006, // 0018 LDCONST R11 K6 + 0x7C200600, // 0019 CALL R8 3 + 0x7822000A, // 001A JMPF R8 #0026 + 0x6020000C, // 001B GETGBL R8 G12 + 0x5C240C00, // 001C MOVE R9 R6 + 0x7C200200, // 001D CALL R8 1 + 0x54260009, // 001E LDINT R9 10 + 0x28201009, // 001F GE R8 R8 R9 + 0x78220004, // 0020 JMPF R8 #0026 + 0x54220003, // 0021 LDINT R8 4 + 0x54260008, // 0022 LDINT R9 9 + 0x40201009, // 0023 CONNECT R8 R8 R9 + 0x941C0C08, // 0024 GETIDX R7 R6 R8 + 0x7002000D, // 0025 JMP #0034 + 0x8C200705, // 0026 GETMET R8 R3 K5 + 0x5C280C00, // 0027 MOVE R10 R6 + 0x582C0006, // 0028 LDCONST R11 K6 + 0x7C200600, // 0029 CALL R8 3 + 0x78220008, // 002A JMPF R8 #0034 + 0x6020000C, // 002B GETGBL R8 G12 + 0x5C240C00, // 002C MOVE R9 R6 + 0x7C200200, // 002D CALL R8 1 + 0x54260007, // 002E LDINT R9 8 + 0x1C201009, // 002F EQ R8 R8 R9 + 0x78220002, // 0030 JMPF R8 #0034 + 0x54220006, // 0031 LDINT R8 7 + 0x40220E08, // 0032 CONNECT R8 K7 R8 + 0x941C0C08, // 0033 GETIDX R7 R6 R8 + 0x00200A07, // 0034 ADD R8 R5 R7 + 0x80041000, // 0035 RET 1 R8 }) ) ); @@ -2570,11 +2522,247 @@ be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ /******************************************************************** -** Solidified function: process_array_literal +** Solidified function: symbol_exists ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ +be_local_closure(class_SimpleDSLTranspiler_symbol_exists, /* name */ be_nested_proto( - 6, /* nstack */ + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(animation_dsl), + /* K2 */ be_nested_str_weak(is_color_name), + /* K3 */ be_nested_str_weak(symbol_table), + /* K4 */ be_nested_str_weak(contains), + /* K5 */ be_nested_str_weak(sequence_names), + /* K6 */ be_nested_str_weak(animation), + }), + be_str_weak(symbol_exists), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x740E000F, // 0005 JMPT R3 #0016 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x8C0C0704, // 0007 GETMET R3 R3 K4 + 0x5C140200, // 0008 MOVE R5 R1 + 0x7C0C0400, // 0009 CALL R3 2 + 0x740E000A, // 000A JMPT R3 #0016 + 0x880C0105, // 000B GETMBR R3 R0 K5 + 0x8C0C0704, // 000C GETMET R3 R3 K4 + 0x5C140200, // 000D MOVE R5 R1 + 0x7C0C0400, // 000E CALL R3 2 + 0x740E0005, // 000F JMPT R3 #0016 + 0x8C0C0504, // 0010 GETMET R3 R2 K4 + 0xB8160C00, // 0011 GETNGBL R5 K6 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C0C0600, // 0013 CALL R3 3 + 0x740E0000, // 0014 JMPT R3 #0016 + 0x500C0001, // 0015 LDBOOL R3 0 1 + 0x500C0200, // 0016 LDBOOL R3 1 0 + 0x80040600, // 0017 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_parameters_core +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_parameters_core, /* name */ + be_nested_proto( + 13, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(variable), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(temp_), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(split), + /* K6 */ be_nested_str_weak(_), + /* K7 */ be_const_int(2), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(), + /* K10 */ be_nested_str_weak(_create_instance_for_validation), + /* K11 */ be_nested_str_weak(at_end), + /* K12 */ be_nested_str_weak(check_right_paren), + /* K13 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K14 */ be_nested_str_weak(expect_identifier), + /* K15 */ be_nested_str_weak(_validate_single_parameter), + /* K16 */ be_nested_str_weak(expect_assign), + /* K17 */ be_nested_str_weak(process_value), + /* K18 */ be_nested_str_weak(argument), + /* K19 */ be_nested_str_weak(collect_inline_comment), + /* K20 */ be_nested_str_weak(current), + /* K21 */ be_nested_str_weak(type), + /* K22 */ be_nested_str_weak(animation_dsl), + /* K23 */ be_nested_str_weak(Token), + /* K24 */ be_nested_str_weak(COMMENT), + /* K25 */ be_nested_str_weak(next), + /* K26 */ be_nested_str_weak(COMMA), + /* K27 */ be_nested_str_weak(NEWLINE), + /* K28 */ be_nested_str_weak(error), + /* K29 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + }), + be_str_weak(_process_parameters_core), + &be_const_str_solidified, + ( &(const binstruction[127]) { /* code */ + 0x4C100000, // 0000 LDNIL R4 + 0x5C140200, // 0001 MOVE R5 R1 + 0x1C180500, // 0002 EQ R6 R2 K0 + 0x781A0010, // 0003 JMPF R6 #0015 + 0xA41A0200, // 0004 IMPORT R6 K1 + 0x8C1C0D02, // 0005 GETMET R7 R6 K2 + 0x5C240200, // 0006 MOVE R9 R1 + 0x58280003, // 0007 LDCONST R10 K3 + 0x7C1C0600, // 0008 CALL R7 3 + 0x1C1C0F04, // 0009 EQ R7 R7 K4 + 0x781E0009, // 000A JMPF R7 #0015 + 0x8C1C0D05, // 000B GETMET R7 R6 K5 + 0x5C240200, // 000C MOVE R9 R1 + 0x58280006, // 000D LDCONST R10 K6 + 0x7C1C0600, // 000E CALL R7 3 + 0x6020000C, // 000F GETGBL R8 G12 + 0x5C240E00, // 0010 MOVE R9 R7 + 0x7C200200, // 0011 CALL R8 1 + 0x28201107, // 0012 GE R8 R8 K7 + 0x78220000, // 0013 JMPF R8 #0015 + 0x94140F08, // 0014 GETIDX R5 R7 K8 + 0x20180B09, // 0015 NE R6 R5 K9 + 0x781A0003, // 0016 JMPF R6 #001B + 0x8C18010A, // 0017 GETMET R6 R0 K10 + 0x5C200A00, // 0018 MOVE R8 R5 + 0x7C180400, // 0019 CALL R6 2 + 0x5C100C00, // 001A MOVE R4 R6 + 0x8C18010B, // 001B GETMET R6 R0 K11 + 0x7C180200, // 001C CALL R6 1 + 0x741A005F, // 001D JMPT R6 #007E + 0x8C18010C, // 001E GETMET R6 R0 K12 + 0x7C180200, // 001F CALL R6 1 + 0x741A005C, // 0020 JMPT R6 #007E + 0x8C18010D, // 0021 GETMET R6 R0 K13 + 0x7C180200, // 0022 CALL R6 1 + 0x8C18010C, // 0023 GETMET R6 R0 K12 + 0x7C180200, // 0024 CALL R6 1 + 0x781A0000, // 0025 JMPF R6 #0027 + 0x70020056, // 0026 JMP #007E + 0x8C18010E, // 0027 GETMET R6 R0 K14 + 0x7C180200, // 0028 CALL R6 1 + 0x4C1C0000, // 0029 LDNIL R7 + 0x201C0807, // 002A NE R7 R4 R7 + 0x781E0006, // 002B JMPF R7 #0033 + 0x201C0B09, // 002C NE R7 R5 K9 + 0x781E0004, // 002D JMPF R7 #0033 + 0x8C1C010F, // 002E GETMET R7 R0 K15 + 0x5C240A00, // 002F MOVE R9 R5 + 0x5C280C00, // 0030 MOVE R10 R6 + 0x5C2C0800, // 0031 MOVE R11 R4 + 0x7C1C0800, // 0032 CALL R7 4 + 0x8C1C0110, // 0033 GETMET R7 R0 K16 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C1C0111, // 0035 GETMET R7 R0 K17 + 0x58240012, // 0036 LDCONST R9 K18 + 0x7C1C0400, // 0037 CALL R7 2 + 0x8C200113, // 0038 GETMET R8 R0 K19 + 0x7C200200, // 0039 CALL R8 1 + 0x5C240600, // 003A MOVE R9 R3 + 0x5C280C00, // 003B MOVE R10 R6 + 0x5C2C0E00, // 003C MOVE R11 R7 + 0x5C301000, // 003D MOVE R12 R8 + 0x7C240600, // 003E CALL R9 3 + 0x8C24010B, // 003F GETMET R9 R0 K11 + 0x7C240200, // 0040 CALL R9 1 + 0x7426000F, // 0041 JMPT R9 #0052 + 0x8C240114, // 0042 GETMET R9 R0 K20 + 0x7C240200, // 0043 CALL R9 1 + 0x4C280000, // 0044 LDNIL R10 + 0x2028120A, // 0045 NE R10 R9 R10 + 0x782A0008, // 0046 JMPF R10 #0050 + 0x88281315, // 0047 GETMBR R10 R9 K21 + 0xB82E2C00, // 0048 GETNGBL R11 K22 + 0x882C1717, // 0049 GETMBR R11 R11 K23 + 0x882C1718, // 004A GETMBR R11 R11 K24 + 0x1C28140B, // 004B EQ R10 R10 R11 + 0x782A0002, // 004C JMPF R10 #0050 + 0x8C280119, // 004D GETMET R10 R0 K25 + 0x7C280200, // 004E CALL R10 1 + 0x70020000, // 004F JMP #0051 + 0x70020000, // 0050 JMP #0052 + 0x7001FFEC, // 0051 JMP #003F + 0x8C240114, // 0052 GETMET R9 R0 K20 + 0x7C240200, // 0053 CALL R9 1 + 0x4C280000, // 0054 LDNIL R10 + 0x2024120A, // 0055 NE R9 R9 R10 + 0x7826000C, // 0056 JMPF R9 #0064 + 0x8C240114, // 0057 GETMET R9 R0 K20 + 0x7C240200, // 0058 CALL R9 1 + 0x88241315, // 0059 GETMBR R9 R9 K21 + 0xB82A2C00, // 005A GETNGBL R10 K22 + 0x88281517, // 005B GETMBR R10 R10 K23 + 0x8828151A, // 005C GETMBR R10 R10 K26 + 0x1C24120A, // 005D EQ R9 R9 R10 + 0x78260004, // 005E JMPF R9 #0064 + 0x8C240119, // 005F GETMET R9 R0 K25 + 0x7C240200, // 0060 CALL R9 1 + 0x8C24010D, // 0061 GETMET R9 R0 K13 + 0x7C240200, // 0062 CALL R9 1 + 0x70020018, // 0063 JMP #007D + 0x8C240114, // 0064 GETMET R9 R0 K20 + 0x7C240200, // 0065 CALL R9 1 + 0x4C280000, // 0066 LDNIL R10 + 0x2024120A, // 0067 NE R9 R9 R10 + 0x7826000C, // 0068 JMPF R9 #0076 + 0x8C240114, // 0069 GETMET R9 R0 K20 + 0x7C240200, // 006A CALL R9 1 + 0x88241315, // 006B GETMBR R9 R9 K21 + 0xB82A2C00, // 006C GETNGBL R10 K22 + 0x88281517, // 006D GETMBR R10 R10 K23 + 0x8828151B, // 006E GETMBR R10 R10 K27 + 0x1C24120A, // 006F EQ R9 R9 R10 + 0x78260004, // 0070 JMPF R9 #0076 + 0x8C240119, // 0071 GETMET R9 R0 K25 + 0x7C240200, // 0072 CALL R9 1 + 0x8C24010D, // 0073 GETMET R9 R0 K13 + 0x7C240200, // 0074 CALL R9 1 + 0x70020006, // 0075 JMP #007D + 0x8C24010C, // 0076 GETMET R9 R0 K12 + 0x7C240200, // 0077 CALL R9 1 + 0x74260003, // 0078 JMPT R9 #007D + 0x8C24011C, // 0079 GETMET R9 R0 K28 + 0x582C001D, // 007A LDCONST R11 K29 + 0x7C240400, // 007B CALL R9 2 + 0x70020000, // 007C JMP #007E + 0x7001FF9C, // 007D JMP #001B + 0x80000000, // 007E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: at_end +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ + be_nested_proto( + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2582,96 +2770,156 @@ be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_bracket), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_bracket), - /* K3 */ be_nested_str_weak(process_value), - /* K4 */ be_nested_str_weak(array_element), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(COMMA), - /* K11 */ be_nested_str_weak(next), - /* K12 */ be_nested_str_weak(error), - /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20array_X20literal), - /* K14 */ be_nested_str_weak(expect_right_bracket), - /* K15 */ be_nested_str_weak(_X5B), - /* K16 */ be_const_int(0), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(_X2C_X20), - /* K19 */ be_nested_str_weak(stop_iteration), - /* K20 */ be_nested_str_weak(_X5D), + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(tokens), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(EOF), }), - be_str_weak(process_array_literal), + be_str_weak(at_end), &be_const_str_solidified, - ( &(const binstruction[64]) { /* code */ + ( &(const binstruction[22]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x28040202, // 0004 GE R1 R1 R2 + 0x7406000D, // 0005 JMPT R1 #0014 + 0x8C040102, // 0006 GETMET R1 R0 K2 + 0x7C040200, // 0007 CALL R1 1 + 0x4C080000, // 0008 LDNIL R2 + 0x20040202, // 0009 NE R1 R1 R2 + 0x78060007, // 000A JMPF R1 #0013 + 0x8C040102, // 000B GETMET R1 R0 K2 + 0x7C040200, // 000C CALL R1 1 + 0x88040303, // 000D GETMBR R1 R1 K3 + 0xB80A0800, // 000E GETNGBL R2 K4 + 0x88080505, // 000F GETMBR R2 R2 K5 + 0x88080506, // 0010 GETMBR R2 R2 K6 + 0x1C040202, // 0011 EQ R1 R1 R2 + 0x74060000, // 0012 JMPT R1 #0014 + 0x50040001, // 0013 LDBOOL R1 0 1 + 0x50040200, // 0014 LDBOOL R1 1 0 + 0x80040200, // 0015 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_wait_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(process_time_value), + /* K2 */ be_nested_str_weak(collect_inline_comment), + /* K3 */ be_nested_str_weak(add), + /* K4 */ be_nested_str_weak(_X25s_X2Epush_wait_step_X28_X25s_X29_X25s), + /* K5 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_wait_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 0x7C080200, // 0005 CALL R2 1 - 0x740A0020, // 0006 JMPT R2 #0028 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x740A001D, // 0009 JMPT R2 #0028 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x58100004, // 000B LDCONST R4 K4 - 0x7C080400, // 000C CALL R2 2 - 0x8C0C0305, // 000D GETMET R3 R1 K5 - 0x5C140400, // 000E MOVE R5 R2 - 0x7C0C0400, // 000F CALL R3 2 - 0x8C0C0106, // 0010 GETMET R3 R0 K6 - 0x7C0C0200, // 0011 CALL R3 1 - 0x4C100000, // 0012 LDNIL R4 - 0x200C0604, // 0013 NE R3 R3 R4 - 0x780E000A, // 0014 JMPF R3 #0020 - 0x8C0C0106, // 0015 GETMET R3 R0 K6 - 0x7C0C0200, // 0016 CALL R3 1 - 0x880C0707, // 0017 GETMBR R3 R3 K7 - 0xB8121000, // 0018 GETNGBL R4 K8 - 0x88100909, // 0019 GETMBR R4 R4 K9 - 0x8810090A, // 001A GETMBR R4 R4 K10 - 0x1C0C0604, // 001B EQ R3 R3 R4 - 0x780E0002, // 001C JMPF R3 #0020 - 0x8C0C010B, // 001D GETMET R3 R0 K11 - 0x7C0C0200, // 001E CALL R3 1 - 0x70020006, // 001F JMP #0027 - 0x8C0C0102, // 0020 GETMET R3 R0 K2 - 0x7C0C0200, // 0021 CALL R3 1 - 0x740E0003, // 0022 JMPT R3 #0027 - 0x8C0C010C, // 0023 GETMET R3 R0 K12 - 0x5814000D, // 0024 LDCONST R5 K13 - 0x7C0C0400, // 0025 CALL R3 2 - 0x70020000, // 0026 JMP #0028 - 0x7001FFDB, // 0027 JMP #0004 - 0x8C08010E, // 0028 GETMET R2 R0 K14 - 0x7C080200, // 0029 CALL R2 1 - 0x5808000F, // 002A LDCONST R2 K15 - 0x600C0010, // 002B GETGBL R3 G16 - 0x6010000C, // 002C GETGBL R4 G12 - 0x5C140200, // 002D MOVE R5 R1 - 0x7C100200, // 002E CALL R4 1 - 0x04100911, // 002F SUB R4 R4 K17 - 0x40122004, // 0030 CONNECT R4 K16 R4 - 0x7C0C0200, // 0031 CALL R3 1 - 0xA8020007, // 0032 EXBLK 0 #003B - 0x5C100600, // 0033 MOVE R4 R3 - 0x7C100000, // 0034 CALL R4 0 - 0x24140910, // 0035 GT R5 R4 K16 - 0x78160000, // 0036 JMPF R5 #0038 - 0x00080512, // 0037 ADD R2 R2 K18 - 0x94140204, // 0038 GETIDX R5 R1 R4 - 0x00080405, // 0039 ADD R2 R2 R5 - 0x7001FFF7, // 003A JMP #0033 - 0x580C0013, // 003B LDCONST R3 K19 - 0xAC0C0200, // 003C CATCH R3 1 0 - 0xB0080000, // 003D RAISE 2 R0 R0 - 0x00080514, // 003E ADD R2 R2 K20 - 0x80040400, // 003F RET 1 R2 + 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x8C1C0105, // 0009 GETMET R7 R0 K5 + 0x7C1C0200, // 000A CALL R7 1 + 0x5C200200, // 000B MOVE R8 R1 + 0x5C240400, // 000C MOVE R9 R2 + 0x7C140800, // 000D CALL R5 4 + 0x7C0C0400, // 000E CALL R3 2 + 0x80000000, // 000F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_computed_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_computed_expression, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_X28), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(animation_X2E), + /* K5 */ be_nested_str_weak(_), + }), + be_str_weak(is_computed_expression), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140901, // 0001 GETMET R5 R4 K1 + 0x5C1C0200, // 0002 MOVE R7 R1 + 0x58200002, // 0003 LDCONST R8 K2 + 0x7C140600, // 0004 CALL R5 3 + 0x28140B03, // 0005 GE R5 R5 K3 + 0x7416001E, // 0006 JMPT R5 #0026 + 0x8C140901, // 0007 GETMET R5 R4 K1 + 0x5C1C0600, // 0008 MOVE R7 R3 + 0x58200002, // 0009 LDCONST R8 K2 + 0x7C140600, // 000A CALL R5 3 + 0x28140B03, // 000B GE R5 R5 K3 + 0x74160018, // 000C JMPT R5 #0026 + 0x8C140901, // 000D GETMET R5 R4 K1 + 0x5C1C0200, // 000E MOVE R7 R1 + 0x58200004, // 000F LDCONST R8 K4 + 0x7C140600, // 0010 CALL R5 3 + 0x28140B03, // 0011 GE R5 R5 K3 + 0x74160012, // 0012 JMPT R5 #0026 + 0x8C140901, // 0013 GETMET R5 R4 K1 + 0x5C1C0600, // 0014 MOVE R7 R3 + 0x58200004, // 0015 LDCONST R8 K4 + 0x7C140600, // 0016 CALL R5 3 + 0x28140B03, // 0017 GE R5 R5 K3 + 0x7416000C, // 0018 JMPT R5 #0026 + 0x8C140901, // 0019 GETMET R5 R4 K1 + 0x5C1C0200, // 001A MOVE R7 R1 + 0x58200005, // 001B LDCONST R8 K5 + 0x7C140600, // 001C CALL R5 3 + 0x28140B03, // 001D GE R5 R5 K3 + 0x74160006, // 001E JMPT R5 #0026 + 0x8C140901, // 001F GETMET R5 R4 K1 + 0x5C1C0600, // 0020 MOVE R7 R3 + 0x58200005, // 0021 LDCONST R8 K5 + 0x7C140600, // 0022 CALL R5 3 + 0x28140B03, // 0023 GE R5 R5 K3 + 0x74160000, // 0024 JMPT R5 #0026 + 0x50140001, // 0025 LDBOOL R5 0 1 + 0x50140200, // 0026 LDBOOL R5 1 0 + 0x80040A00, // 0027 RET 1 R5 }) ) ); @@ -2729,85 +2977,78 @@ be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* name */ /******************************************************************** -** Solidified function: process_import +** Solidified function: process_multiplicative_expression ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ be_nested_proto( - 9, /* nstack */ - 1, /* argc */ + 13, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(collect_inline_comment), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(import_X20_X25s_X20_X25s), + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(process_unary_expression), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(MULTIPLY), + /* K7 */ be_nested_str_weak(DIVIDE), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), }), - be_str_weak(process_import), + be_str_weak(process_multiplicative_expression), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x8C0C0103, // 0006 GETMET R3 R0 K3 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200400, // 000A MOVE R8 R2 - 0x7C140600, // 000B CALL R5 3 - 0x7C0C0400, // 000C CALL R3 2 - 0x80000000, // 000D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_brace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACE), - }), - be_str_weak(check_right_brace), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0005, // 0004 JMPF R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0000, // 000A JMPT R2 #000C - 0x50080001, // 000B LDBOOL R2 0 1 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x80040400, // 000D RET 1 R2 + ( &(const binstruction[44]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x5C180200, // 0001 MOVE R6 R1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x5C200600, // 0003 MOVE R8 R3 + 0x7C100800, // 0004 CALL R4 4 + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x74160022, // 0007 JMPT R5 #002B + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0x4C180000, // 000A LDNIL R6 + 0x20180A06, // 000B NE R6 R5 R6 + 0x781A001B, // 000C JMPF R6 #0029 + 0x88180B03, // 000D GETMBR R6 R5 K3 + 0xB81E0800, // 000E GETNGBL R7 K4 + 0x881C0F05, // 000F GETMBR R7 R7 K5 + 0x881C0F06, // 0010 GETMBR R7 R7 K6 + 0x1C180C07, // 0011 EQ R6 R6 R7 + 0x741A0005, // 0012 JMPT R6 #0019 + 0x88180B03, // 0013 GETMBR R6 R5 K3 + 0xB81E0800, // 0014 GETNGBL R7 K4 + 0x881C0F05, // 0015 GETMBR R7 R7 K5 + 0x881C0F07, // 0016 GETMBR R7 R7 K7 + 0x1C180C07, // 0017 EQ R6 R6 R7 + 0x781A000F, // 0018 JMPF R6 #0029 + 0x88180B08, // 0019 GETMBR R6 R5 K8 + 0x8C1C0109, // 001A GETMET R7 R0 K9 + 0x7C1C0200, // 001B CALL R7 1 + 0x8C1C0100, // 001C GETMET R7 R0 K0 + 0x5C240200, // 001D MOVE R9 R1 + 0x50280000, // 001E LDBOOL R10 0 0 + 0x5C2C0600, // 001F MOVE R11 R3 + 0x7C1C0800, // 0020 CALL R7 4 + 0x60200018, // 0021 GETGBL R8 G24 + 0x5824000A, // 0022 LDCONST R9 K10 + 0x5C280800, // 0023 MOVE R10 R4 + 0x5C2C0C00, // 0024 MOVE R11 R6 + 0x5C300E00, // 0025 MOVE R12 R7 + 0x7C200800, // 0026 CALL R8 4 + 0x5C101000, // 0027 MOVE R4 R8 + 0x70020000, // 0028 JMP #002A + 0x70020000, // 0029 JMP #002B + 0x7001FFD9, // 002A JMP #0005 + 0x80040800, // 002B RET 1 R4 }) ) ); @@ -2851,6 +3092,413 @@ be_local_closure(class_SimpleDSLTranspiler_get_named_color_value, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: process_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_color, /* name */ + be_nested_proto( + 15, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[37]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(color), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(KEYWORD), + /* K11 */ be_nested_str_weak(IDENTIFIER), + /* K12 */ be_nested_str_weak(peek), + /* K13 */ be_nested_str_weak(LEFT_PAREN), + /* K14 */ be_nested_str_weak(value), + /* K15 */ be_nested_str_weak(), + /* K16 */ be_nested_str_weak(COMMENT), + /* K17 */ be_nested_str_weak(_X20_X20), + /* K18 */ be_nested_str_weak(template_definitions), + /* K19 */ be_nested_str_weak(contains), + /* K20 */ be_nested_str_weak(process_function_arguments), + /* K21 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K22 */ be_nested_str_weak(engine), + /* K23 */ be_nested_str_weak(add), + /* K24 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), + /* K25 */ be_nested_str_weak(_validate_color_provider_factory_exists), + /* K26 */ be_nested_str_weak(error), + /* K27 */ be_nested_str_weak(Color_X20provider_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), + /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), + /* K29 */ be_nested_str_weak(_create_instance_for_validation), + /* K30 */ be_nested_str_weak(symbol_table), + /* K31 */ be_nested_str_weak(_process_named_arguments_for_color_provider), + /* K32 */ be_nested_str_weak(_X25s_), + /* K33 */ be_nested_str_weak(process_value), + /* K34 */ be_nested_str_weak(collect_inline_comment), + /* K35 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), + /* K36 */ be_nested_str_weak(string), + }), + be_str_weak(process_color), + &be_const_str_solidified, + ( &(const binstruction[192]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x880C0507, // 0010 GETMBR R3 R2 K7 + 0xB8121000, // 0011 GETNGBL R4 K8 + 0x88100909, // 0012 GETMBR R4 R4 K9 + 0x8810090A, // 0013 GETMBR R4 R4 K10 + 0x1C0C0604, // 0014 EQ R3 R3 R4 + 0x740E0005, // 0015 JMPT R3 #001C + 0x880C0507, // 0016 GETMBR R3 R2 K7 + 0xB8121000, // 0017 GETNGBL R4 K8 + 0x88100909, // 0018 GETMBR R4 R4 K9 + 0x8810090B, // 0019 GETMBR R4 R4 K11 + 0x1C0C0604, // 001A EQ R3 R3 R4 + 0x780E0062, // 001B JMPF R3 #007F + 0x8C0C010C, // 001C GETMET R3 R0 K12 + 0x7C0C0200, // 001D CALL R3 1 + 0x4C100000, // 001E LDNIL R4 + 0x200C0604, // 001F NE R3 R3 R4 + 0x780E005D, // 0020 JMPF R3 #007F + 0x8C0C010C, // 0021 GETMET R3 R0 K12 + 0x7C0C0200, // 0022 CALL R3 1 + 0x880C0707, // 0023 GETMBR R3 R3 K7 + 0xB8121000, // 0024 GETNGBL R4 K8 + 0x88100909, // 0025 GETMBR R4 R4 K9 + 0x8810090D, // 0026 GETMBR R4 R4 K13 + 0x1C0C0604, // 0027 EQ R3 R3 R4 + 0x780E0055, // 0028 JMPF R3 #007F + 0x880C050E, // 0029 GETMBR R3 R2 K14 + 0x8C100100, // 002A GETMET R4 R0 K0 + 0x7C100200, // 002B CALL R4 1 + 0x5810000F, // 002C LDCONST R4 K15 + 0x8C140106, // 002D GETMET R5 R0 K6 + 0x7C140200, // 002E CALL R5 1 + 0x4C180000, // 002F LDNIL R6 + 0x20140A06, // 0030 NE R5 R5 R6 + 0x7816000E, // 0031 JMPF R5 #0041 + 0x8C140106, // 0032 GETMET R5 R0 K6 + 0x7C140200, // 0033 CALL R5 1 + 0x88140B07, // 0034 GETMBR R5 R5 K7 + 0xB81A1000, // 0035 GETNGBL R6 K8 + 0x88180D09, // 0036 GETMBR R6 R6 K9 + 0x88180D10, // 0037 GETMBR R6 R6 K16 + 0x1C140A06, // 0038 EQ R5 R5 R6 + 0x78160006, // 0039 JMPF R5 #0041 + 0x8C140106, // 003A GETMET R5 R0 K6 + 0x7C140200, // 003B CALL R5 1 + 0x88140B0E, // 003C GETMBR R5 R5 K14 + 0x00162205, // 003D ADD R5 K17 R5 + 0x5C100A00, // 003E MOVE R4 R5 + 0x8C140100, // 003F GETMET R5 R0 K0 + 0x7C140200, // 0040 CALL R5 1 + 0x88140112, // 0041 GETMBR R5 R0 K18 + 0x8C140B13, // 0042 GETMET R5 R5 K19 + 0x5C1C0600, // 0043 MOVE R7 R3 + 0x7C140400, // 0044 CALL R5 2 + 0x78160013, // 0045 JMPF R5 #005A + 0x8C140114, // 0046 GETMET R5 R0 K20 + 0x501C0000, // 0047 LDBOOL R7 0 0 + 0x7C140400, // 0048 CALL R5 2 + 0x20180B0F, // 0049 NE R6 R5 K15 + 0x781A0004, // 004A JMPF R6 #0050 + 0x60180018, // 004B GETGBL R6 G24 + 0x581C0015, // 004C LDCONST R7 K21 + 0x5C200A00, // 004D MOVE R8 R5 + 0x7C180400, // 004E CALL R6 2 + 0x70020000, // 004F JMP #0051 + 0x58180016, // 0050 LDCONST R6 K22 + 0x8C1C0117, // 0051 GETMET R7 R0 K23 + 0x60240018, // 0052 GETGBL R9 G24 + 0x58280018, // 0053 LDCONST R10 K24 + 0x5C2C0600, // 0054 MOVE R11 R3 + 0x5C300C00, // 0055 MOVE R12 R6 + 0x5C340800, // 0056 MOVE R13 R4 + 0x7C240800, // 0057 CALL R9 4 + 0x7C1C0400, // 0058 CALL R7 2 + 0x70020023, // 0059 JMP #007E + 0x8C140119, // 005A GETMET R5 R0 K25 + 0x5C1C0600, // 005B MOVE R7 R3 + 0x7C140400, // 005C CALL R5 2 + 0x74160008, // 005D JMPT R5 #0067 + 0x8C14011A, // 005E GETMET R5 R0 K26 + 0x601C0018, // 005F GETGBL R7 G24 + 0x5820001B, // 0060 LDCONST R8 K27 + 0x5C240600, // 0061 MOVE R9 R3 + 0x7C1C0400, // 0062 CALL R7 2 + 0x7C140400, // 0063 CALL R5 2 + 0x8C140104, // 0064 GETMET R5 R0 K4 + 0x7C140200, // 0065 CALL R5 1 + 0x80000A00, // 0066 RET 0 + 0x8C140117, // 0067 GETMET R5 R0 K23 + 0x601C0018, // 0068 GETGBL R7 G24 + 0x5820001C, // 0069 LDCONST R8 K28 + 0x5C240200, // 006A MOVE R9 R1 + 0x5C280600, // 006B MOVE R10 R3 + 0x5C2C0800, // 006C MOVE R11 R4 + 0x7C1C0800, // 006D CALL R7 4 + 0x7C140400, // 006E CALL R5 2 + 0x8C14011D, // 006F GETMET R5 R0 K29 + 0x5C1C0600, // 0070 MOVE R7 R3 + 0x7C140400, // 0071 CALL R5 2 + 0x4C180000, // 0072 LDNIL R6 + 0x20180A06, // 0073 NE R6 R5 R6 + 0x781A0001, // 0074 JMPF R6 #0077 + 0x8818011E, // 0075 GETMBR R6 R0 K30 + 0x98180205, // 0076 SETIDX R6 R1 R5 + 0x8C18011F, // 0077 GETMET R6 R0 K31 + 0x60200018, // 0078 GETGBL R8 G24 + 0x58240020, // 0079 LDCONST R9 K32 + 0x5C280200, // 007A MOVE R10 R1 + 0x7C200400, // 007B CALL R8 2 + 0x5C240600, // 007C MOVE R9 R3 + 0x7C180600, // 007D CALL R6 3 + 0x7002003F, // 007E JMP #00BF + 0x8C0C0106, // 007F GETMET R3 R0 K6 + 0x7C0C0200, // 0080 CALL R3 1 + 0x4C100000, // 0081 LDNIL R4 + 0x20100604, // 0082 NE R4 R3 R4 + 0x78120012, // 0083 JMPF R4 #0097 + 0x88100707, // 0084 GETMBR R4 R3 K7 + 0xB8161000, // 0085 GETNGBL R5 K8 + 0x88140B09, // 0086 GETMBR R5 R5 K9 + 0x88140B0B, // 0087 GETMBR R5 R5 K11 + 0x1C100805, // 0088 EQ R4 R4 R5 + 0x7812000C, // 0089 JMPF R4 #0097 + 0x8C10010C, // 008A GETMET R4 R0 K12 + 0x7C100200, // 008B CALL R4 1 + 0x4C140000, // 008C LDNIL R5 + 0x1C100805, // 008D EQ R4 R4 R5 + 0x74120008, // 008E JMPT R4 #0098 + 0x8C10010C, // 008F GETMET R4 R0 K12 + 0x7C100200, // 0090 CALL R4 1 + 0x88100907, // 0091 GETMBR R4 R4 K7 + 0xB8161000, // 0092 GETNGBL R5 K8 + 0x88140B09, // 0093 GETMBR R5 R5 K9 + 0x88140B0D, // 0094 GETMBR R5 R5 K13 + 0x20100805, // 0095 NE R4 R4 R5 + 0x74120000, // 0096 JMPT R4 #0098 + 0x50100001, // 0097 LDBOOL R4 0 1 + 0x50100200, // 0098 LDBOOL R4 1 0 + 0x78120001, // 0099 JMPF R4 #009C + 0x8814070E, // 009A GETMBR R5 R3 K14 + 0x70020000, // 009B JMP #009D + 0x4C140000, // 009C LDNIL R5 + 0x8C180121, // 009D GETMET R6 R0 K33 + 0x58200003, // 009E LDCONST R8 K3 + 0x7C180400, // 009F CALL R6 2 + 0x8C1C0122, // 00A0 GETMET R7 R0 K34 + 0x7C1C0200, // 00A1 CALL R7 1 + 0x8C200117, // 00A2 GETMET R8 R0 K23 + 0x60280018, // 00A3 GETGBL R10 G24 + 0x582C0023, // 00A4 LDCONST R11 K35 + 0x5C300200, // 00A5 MOVE R12 R1 + 0x5C340C00, // 00A6 MOVE R13 R6 + 0x5C380E00, // 00A7 MOVE R14 R7 + 0x7C280800, // 00A8 CALL R10 4 + 0x7C200400, // 00A9 CALL R8 2 + 0x78120011, // 00AA JMPF R4 #00BD + 0x4C200000, // 00AB LDNIL R8 + 0x20200A08, // 00AC NE R8 R5 R8 + 0x7822000E, // 00AD JMPF R8 #00BD + 0x8820011E, // 00AE GETMBR R8 R0 K30 + 0x8C201113, // 00AF GETMET R8 R8 K19 + 0x5C280A00, // 00B0 MOVE R10 R5 + 0x7C200400, // 00B1 CALL R8 2 + 0x78220009, // 00B2 JMPF R8 #00BD + 0x8820011E, // 00B3 GETMBR R8 R0 K30 + 0x94201005, // 00B4 GETIDX R8 R8 R5 + 0x60240004, // 00B5 GETGBL R9 G4 + 0x5C281000, // 00B6 MOVE R10 R8 + 0x7C240200, // 00B7 CALL R9 1 + 0x20241324, // 00B8 NE R9 R9 K36 + 0x78260001, // 00B9 JMPF R9 #00BC + 0x8824011E, // 00BA GETMBR R9 R0 K30 + 0x98240208, // 00BB SETIDX R9 R1 R8 + 0x70020001, // 00BC JMP #00BF + 0x8820011E, // 00BD GETMBR R8 R0 K30 + 0x98200303, // 00BE SETIDX R8 R1 K3 + 0x80000000, // 00BF RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_standalone_log +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_standalone_log, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_left_paren), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(STRING), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), + /* K9 */ be_nested_str_weak(skip_statement), + /* K10 */ be_nested_str_weak(value), + /* K11 */ be_nested_str_weak(expect_right_paren), + /* K12 */ be_nested_str_weak(collect_inline_comment), + /* K13 */ be_nested_str_weak(process_log_call), + /* K14 */ be_nested_str_weak(standalone), + /* K15 */ be_nested_str_weak(add), + }), + be_str_weak(process_standalone_log), + &be_const_str_solidified, + ( &(const binstruction[37]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C040102, // 0004 GETMET R1 R0 K2 + 0x7C040200, // 0005 CALL R1 1 + 0x4C080000, // 0006 LDNIL R2 + 0x1C080202, // 0007 EQ R2 R1 R2 + 0x740A0005, // 0008 JMPT R2 #000F + 0x88080303, // 0009 GETMBR R2 R1 K3 + 0xB80E0800, // 000A GETNGBL R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x880C0706, // 000C GETMBR R3 R3 K6 + 0x20080403, // 000D NE R2 R2 R3 + 0x780A0005, // 000E JMPF R2 #0015 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x58100008, // 0010 LDCONST R4 K8 + 0x7C080400, // 0011 CALL R2 2 + 0x8C080109, // 0012 GETMET R2 R0 K9 + 0x7C080200, // 0013 CALL R2 1 + 0x80000400, // 0014 RET 0 + 0x8808030A, // 0015 GETMBR R2 R1 K10 + 0x8C0C0100, // 0016 GETMET R3 R0 K0 + 0x7C0C0200, // 0017 CALL R3 1 + 0x8C0C010B, // 0018 GETMET R3 R0 K11 + 0x7C0C0200, // 0019 CALL R3 1 + 0x8C0C010C, // 001A GETMET R3 R0 K12 + 0x7C0C0200, // 001B CALL R3 1 + 0x8C10010D, // 001C GETMET R4 R0 K13 + 0x5C180400, // 001D MOVE R6 R2 + 0x581C000E, // 001E LDCONST R7 K14 + 0x5C200600, // 001F MOVE R8 R3 + 0x7C100800, // 0020 CALL R4 4 + 0x8C14010F, // 0021 GETMET R5 R0 K15 + 0x5C1C0800, // 0022 MOVE R7 R4 + 0x7C140400, // 0023 CALL R5 2 + 0x80000000, // 0024 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: resolve_symbol_reference +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_resolve_symbol_reference, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(animation_dsl), + /* K2 */ be_nested_str_weak(is_color_name), + /* K3 */ be_nested_str_weak(get_named_color_value), + /* K4 */ be_nested_str_weak(symbol_table), + /* K5 */ be_nested_str_weak(contains), + /* K6 */ be_nested_str_weak(sequence_names), + /* K7 */ be_nested_str_weak(_X25s_), + /* K8 */ be_nested_str_weak(animation), + /* K9 */ be_nested_str_weak(animation_X2E_X25s), + }), + be_str_weak(resolve_symbol_reference), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xB80E0200, // 0001 GETNGBL R3 K1 + 0x8C0C0702, // 0002 GETMET R3 R3 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x780E0003, // 0005 JMPF R3 #000A + 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x5C140200, // 0007 MOVE R5 R1 + 0x7C0C0400, // 0008 CALL R3 2 + 0x80040600, // 0009 RET 1 R3 + 0x880C0104, // 000A GETMBR R3 R0 K4 + 0x8C0C0705, // 000B GETMET R3 R3 K5 + 0x5C140200, // 000C MOVE R5 R1 + 0x7C0C0400, // 000D CALL R3 2 + 0x740E0004, // 000E JMPT R3 #0014 + 0x880C0106, // 000F GETMBR R3 R0 K6 + 0x8C0C0705, // 0010 GETMET R3 R3 K5 + 0x5C140200, // 0011 MOVE R5 R1 + 0x7C0C0400, // 0012 CALL R3 2 + 0x780E0005, // 0013 JMPF R3 #001A + 0x600C0018, // 0014 GETGBL R3 G24 + 0x58100007, // 0015 LDCONST R4 K7 + 0x5C140200, // 0016 MOVE R5 R1 + 0x7C0C0400, // 0017 CALL R3 2 + 0x80040600, // 0018 RET 1 R3 + 0x7002000F, // 0019 JMP #002A + 0x8C0C0505, // 001A GETMET R3 R2 K5 + 0xB8161000, // 001B GETNGBL R5 K8 + 0x5C180200, // 001C MOVE R6 R1 + 0x7C0C0600, // 001D CALL R3 3 + 0x780E0005, // 001E JMPF R3 #0025 + 0x600C0018, // 001F GETGBL R3 G24 + 0x58100009, // 0020 LDCONST R4 K9 + 0x5C140200, // 0021 MOVE R5 R1 + 0x7C0C0400, // 0022 CALL R3 2 + 0x80040600, // 0023 RET 1 R3 + 0x70020004, // 0024 JMP #002A + 0x600C0018, // 0025 GETGBL R3 G24 + 0x58100007, // 0026 LDCONST R4 K7 + 0x5C140200, // 0027 MOVE R5 R1 + 0x7C0C0400, // 0028 CALL R3 2 + 0x80040600, // 0029 RET 1 R3 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: skip_whitespace_including_newlines ********************************************************************/ @@ -2997,75 +3645,128 @@ be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* name * /******************************************************************** -** Solidified function: skip_function_arguments +** Solidified function: process_function_arguments ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ be_nested_proto( - 5, /* nstack */ - 1, /* argc */ + 9, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_PAREN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_const_int(1), - /* K7 */ be_nested_str_weak(at_end), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(RIGHT_PAREN), + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_paren), + /* K3 */ be_nested_str_weak(skip_whitespace), + /* K4 */ be_nested_str_weak(process_additive_expression), + /* K5 */ be_nested_str_weak(argument), + /* K6 */ be_nested_str_weak(process_value), + /* K7 */ be_nested_str_weak(push), + /* K8 */ be_nested_str_weak(current), + /* K9 */ be_nested_str_weak(type), + /* K10 */ be_nested_str_weak(animation_dsl), + /* K11 */ be_nested_str_weak(Token), + /* K12 */ be_nested_str_weak(COMMA), + /* K13 */ be_nested_str_weak(next), + /* K14 */ be_nested_str_weak(error), + /* K15 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), + /* K16 */ be_nested_str_weak(expect_right_paren), + /* K17 */ be_nested_str_weak(), + /* K18 */ be_const_int(0), + /* K19 */ be_const_int(1), + /* K20 */ be_nested_str_weak(_X2C_X20), + /* K21 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(skip_function_arguments), + be_str_weak(process_function_arguments), &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20040202, // 0003 NE R1 R1 R2 - 0x78060023, // 0004 JMPF R1 #0029 - 0x8C040100, // 0005 GETMET R1 R0 K0 - 0x7C040200, // 0006 CALL R1 1 - 0x88040301, // 0007 GETMBR R1 R1 K1 - 0xB80A0400, // 0008 GETNGBL R2 K2 - 0x88080503, // 0009 GETMBR R2 R2 K3 - 0x88080504, // 000A GETMBR R2 R2 K4 - 0x1C040202, // 000B EQ R1 R1 R2 - 0x7806001B, // 000C JMPF R1 #0029 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0x58040006, // 000F LDCONST R1 K6 - 0x8C080107, // 0010 GETMET R2 R0 K7 - 0x7C080200, // 0011 CALL R2 1 - 0x740A0015, // 0012 JMPT R2 #0029 - 0x24080308, // 0013 GT R2 R1 K8 - 0x780A0013, // 0014 JMPF R2 #0029 - 0x8C080100, // 0015 GETMET R2 R0 K0 - 0x7C080200, // 0016 CALL R2 1 - 0x880C0501, // 0017 GETMBR R3 R2 K1 - 0xB8120400, // 0018 GETNGBL R4 K2 - 0x88100903, // 0019 GETMBR R4 R4 K3 - 0x88100904, // 001A GETMBR R4 R4 K4 - 0x1C0C0604, // 001B EQ R3 R3 R4 - 0x780E0001, // 001C JMPF R3 #001F - 0x00040306, // 001D ADD R1 R1 K6 - 0x70020006, // 001E JMP #0026 - 0x880C0501, // 001F GETMBR R3 R2 K1 - 0xB8120400, // 0020 GETNGBL R4 K2 - 0x88100903, // 0021 GETMBR R4 R4 K3 - 0x88100909, // 0022 GETMBR R4 R4 K9 - 0x1C0C0604, // 0023 EQ R3 R3 R4 - 0x780E0000, // 0024 JMPF R3 #0026 - 0x04040306, // 0025 SUB R1 R1 K6 - 0x8C0C0105, // 0026 GETMET R3 R0 K5 - 0x7C0C0200, // 0027 CALL R3 1 - 0x7001FFE6, // 0028 JMP #0010 - 0x80000000, // 0029 RET 0 + ( &(const binstruction[83]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x60080012, // 0002 GETGBL R2 G18 + 0x7C080000, // 0003 CALL R2 0 + 0x8C0C0101, // 0004 GETMET R3 R0 K1 + 0x7C0C0200, // 0005 CALL R3 1 + 0x740E0034, // 0006 JMPT R3 #003C + 0x8C0C0102, // 0007 GETMET R3 R0 K2 + 0x7C0C0200, // 0008 CALL R3 1 + 0x740E0031, // 0009 JMPT R3 #003C + 0x8C0C0103, // 000A GETMET R3 R0 K3 + 0x7C0C0200, // 000B CALL R3 1 + 0x8C0C0102, // 000C GETMET R3 R0 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x780E0000, // 000E JMPF R3 #0010 + 0x7002002B, // 000F JMP #003C + 0x4C0C0000, // 0010 LDNIL R3 + 0x78060006, // 0011 JMPF R1 #0019 + 0x8C100104, // 0012 GETMET R4 R0 K4 + 0x58180005, // 0013 LDCONST R6 K5 + 0x501C0200, // 0014 LDBOOL R7 1 0 + 0x50200200, // 0015 LDBOOL R8 1 0 + 0x7C100800, // 0016 CALL R4 4 + 0x5C0C0800, // 0017 MOVE R3 R4 + 0x70020003, // 0018 JMP #001D + 0x8C100106, // 0019 GETMET R4 R0 K6 + 0x58180005, // 001A LDCONST R6 K5 + 0x7C100400, // 001B CALL R4 2 + 0x5C0C0800, // 001C MOVE R3 R4 + 0x8C100507, // 001D GETMET R4 R2 K7 + 0x5C180600, // 001E MOVE R6 R3 + 0x7C100400, // 001F CALL R4 2 + 0x8C100103, // 0020 GETMET R4 R0 K3 + 0x7C100200, // 0021 CALL R4 1 + 0x8C100108, // 0022 GETMET R4 R0 K8 + 0x7C100200, // 0023 CALL R4 1 + 0x4C140000, // 0024 LDNIL R5 + 0x20100805, // 0025 NE R4 R4 R5 + 0x7812000C, // 0026 JMPF R4 #0034 + 0x8C100108, // 0027 GETMET R4 R0 K8 + 0x7C100200, // 0028 CALL R4 1 + 0x88100909, // 0029 GETMBR R4 R4 K9 + 0xB8161400, // 002A GETNGBL R5 K10 + 0x88140B0B, // 002B GETMBR R5 R5 K11 + 0x88140B0C, // 002C GETMBR R5 R5 K12 + 0x1C100805, // 002D EQ R4 R4 R5 + 0x78120004, // 002E JMPF R4 #0034 + 0x8C10010D, // 002F GETMET R4 R0 K13 + 0x7C100200, // 0030 CALL R4 1 + 0x8C100103, // 0031 GETMET R4 R0 K3 + 0x7C100200, // 0032 CALL R4 1 + 0x70020006, // 0033 JMP #003B + 0x8C100102, // 0034 GETMET R4 R0 K2 + 0x7C100200, // 0035 CALL R4 1 + 0x74120003, // 0036 JMPT R4 #003B + 0x8C10010E, // 0037 GETMET R4 R0 K14 + 0x5818000F, // 0038 LDCONST R6 K15 + 0x7C100400, // 0039 CALL R4 2 + 0x70020000, // 003A JMP #003C + 0x7001FFC7, // 003B JMP #0004 + 0x8C0C0110, // 003C GETMET R3 R0 K16 + 0x7C0C0200, // 003D CALL R3 1 + 0x580C0011, // 003E LDCONST R3 K17 + 0x60100010, // 003F GETGBL R4 G16 + 0x6014000C, // 0040 GETGBL R5 G12 + 0x5C180400, // 0041 MOVE R6 R2 + 0x7C140200, // 0042 CALL R5 1 + 0x04140B13, // 0043 SUB R5 R5 K19 + 0x40162405, // 0044 CONNECT R5 K18 R5 + 0x7C100200, // 0045 CALL R4 1 + 0xA8020007, // 0046 EXBLK 0 #004F + 0x5C140800, // 0047 MOVE R5 R4 + 0x7C140000, // 0048 CALL R5 0 + 0x24180B12, // 0049 GT R6 R5 K18 + 0x781A0000, // 004A JMPF R6 #004C + 0x000C0714, // 004B ADD R3 R3 K20 + 0x94180405, // 004C GETIDX R6 R2 R5 + 0x000C0606, // 004D ADD R3 R3 R6 + 0x7001FFF7, // 004E JMP #0047 + 0x58100015, // 004F LDCONST R4 K21 + 0xAC100200, // 0050 CATCH R4 1 0 + 0xB0080000, // 0051 RAISE 2 R0 R0 + 0x80040600, // 0052 RET 1 R3 }) ) ); @@ -3073,390 +3774,339 @@ be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ /******************************************************************** -** Solidified function: process_palette +** Solidified function: process_reset_restart_statement_fluent ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_palette, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_reset_restart_statement_fluent, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(value), + /* K2 */ be_nested_str_weak(next), + /* K3 */ be_nested_str_weak(expect_identifier), + /* K4 */ be_nested_str_weak(_validate_value_provider_reference), + /* K5 */ be_nested_str_weak(skip_statement), + /* K6 */ be_nested_str_weak(collect_inline_comment), + /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2Estart_X28engine_X2Etime_ms_X29_X20end), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), + /* K10 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_reset_restart_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x88040301, // 0002 GETMBR R1 R1 K1 + 0x8C080102, // 0003 GETMET R2 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x8C080103, // 0005 GETMET R2 R0 K3 + 0x7C080200, // 0006 CALL R2 1 + 0x8C0C0104, // 0007 GETMET R3 R0 K4 + 0x5C140400, // 0008 MOVE R5 R2 + 0x5C180200, // 0009 MOVE R6 R1 + 0x7C0C0600, // 000A CALL R3 3 + 0x740E0002, // 000B JMPT R3 #000F + 0x8C0C0105, // 000C GETMET R3 R0 K5 + 0x7C0C0200, // 000D CALL R3 1 + 0x80000600, // 000E RET 0 + 0x8C0C0106, // 000F GETMET R3 R0 K6 + 0x7C0C0200, // 0010 CALL R3 1 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140007, // 0012 LDCONST R5 K7 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x8C140108, // 0015 GETMET R5 R0 K8 + 0x601C0018, // 0016 GETGBL R7 G24 + 0x58200009, // 0017 LDCONST R8 K9 + 0x8C24010A, // 0018 GETMET R9 R0 K10 + 0x7C240200, // 0019 CALL R9 1 + 0x5C280800, // 001A MOVE R10 R4 + 0x5C2C0600, // 001B MOVE R11 R3 + 0x7C1C0800, // 001C CALL R7 4 + 0x7C140400, // 001D CALL R5 2 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transform_expression_for_closure +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transform_expression_for_closure, /* name */ + be_nested_proto( + 16, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(_X28), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(is_identifier_char), + /* K6 */ be_nested_str_weak(is_math_method), + /* K7 */ be_nested_str_weak(self_X2E), + /* K8 */ be_nested_str_weak(), + /* K9 */ be_const_int(2147483647), + /* K10 */ be_nested_str_weak(_), + /* K11 */ be_nested_str_weak(self_X2Eresolve_X28), + /* K12 */ be_nested_str_weak(animation_X2E), + /* K13 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X29), + }), + be_str_weak(transform_expression_for_closure), + &be_const_str_solidified, + ( &(const binstruction[223]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x58100001, // 0002 LDCONST R4 K1 + 0x58140001, // 0003 LDCONST R5 K1 + 0x50180200, // 0004 LDBOOL R6 1 0 + 0x781A0047, // 0005 JMPF R6 #004E + 0x8C180502, // 0006 GETMET R6 R2 K2 + 0x5C200600, // 0007 MOVE R8 R3 + 0x58240003, // 0008 LDCONST R9 K3 + 0x5C280A00, // 0009 MOVE R10 R5 + 0x7C180800, // 000A CALL R6 4 + 0x141C0D01, // 000B LT R7 R6 K1 + 0x781E0000, // 000C JMPF R7 #000E + 0x7002003F, // 000D JMP #004E + 0x041C0D04, // 000E SUB R7 R6 K4 + 0x28200F01, // 000F GE R8 R7 K1 + 0x78220005, // 0010 JMPF R8 #0017 + 0x8C200105, // 0011 GETMET R8 R0 K5 + 0x94280607, // 0012 GETIDX R10 R3 R7 + 0x7C200400, // 0013 CALL R8 2 + 0x78220001, // 0014 JMPF R8 #0017 + 0x041C0F04, // 0015 SUB R7 R7 K4 + 0x7001FFF7, // 0016 JMP #000F + 0x001C0F04, // 0017 ADD R7 R7 K4 + 0x14200E06, // 0018 LT R8 R7 R6 + 0x78220030, // 0019 JMPF R8 #004B + 0x04200D04, // 001A SUB R8 R6 K4 + 0x40200E08, // 001B CONNECT R8 R7 R8 + 0x94200608, // 001C GETIDX R8 R3 R8 + 0x8C240106, // 001D GETMET R9 R0 K6 + 0x5C2C1000, // 001E MOVE R11 R8 + 0x7C240400, // 001F CALL R9 2 + 0x78260026, // 0020 JMPF R9 #0048 + 0x54260004, // 0021 LDINT R9 5 + 0x28240E09, // 0022 GE R9 R7 R9 + 0x78260002, // 0023 JMPF R9 #0027 + 0x54260004, // 0024 LDINT R9 5 + 0x04240E09, // 0025 SUB R9 R7 R9 + 0x70020000, // 0026 JMP #0028 + 0x58240001, // 0027 LDCONST R9 K1 + 0x04280F04, // 0028 SUB R10 R7 K4 + 0x4028120A, // 0029 CONNECT R10 R9 R10 + 0x9428060A, // 002A GETIDX R10 R3 R10 + 0x8C2C0502, // 002B GETMET R11 R2 K2 + 0x5C341400, // 002C MOVE R13 R10 + 0x58380007, // 002D LDCONST R14 K7 + 0x7C2C0600, // 002E CALL R11 3 + 0x142C1701, // 002F LT R11 R11 K1 + 0x782E0013, // 0030 JMPF R11 #0045 + 0x242C0F01, // 0031 GT R11 R7 K1 + 0x782E0003, // 0032 JMPF R11 #0037 + 0x042C0F04, // 0033 SUB R11 R7 K4 + 0x402E020B, // 0034 CONNECT R11 K1 R11 + 0x942C060B, // 0035 GETIDX R11 R3 R11 + 0x70020000, // 0036 JMP #0038 + 0x582C0008, // 0037 LDCONST R11 K8 + 0x40300F09, // 0038 CONNECT R12 R7 K9 + 0x9430060C, // 0039 GETIDX R12 R3 R12 + 0x00341707, // 003A ADD R13 R11 K7 + 0x00341A0C, // 003B ADD R13 R13 R12 + 0x5C0C1A00, // 003C MOVE R3 R13 + 0x54360004, // 003D LDINT R13 5 + 0x00340E0D, // 003E ADD R13 R7 R13 + 0x6038000C, // 003F GETGBL R14 G12 + 0x5C3C1000, // 0040 MOVE R15 R8 + 0x7C380200, // 0041 CALL R14 1 + 0x00341A0E, // 0042 ADD R13 R13 R14 + 0x5C141A00, // 0043 MOVE R5 R13 + 0x70020001, // 0044 JMP #0047 + 0x002C0D04, // 0045 ADD R11 R6 K4 + 0x5C141600, // 0046 MOVE R5 R11 + 0x70020001, // 0047 JMP #004A + 0x00240D04, // 0048 ADD R9 R6 K4 + 0x5C141200, // 0049 MOVE R5 R9 + 0x70020001, // 004A JMP #004D + 0x00200D04, // 004B ADD R8 R6 K4 + 0x5C141000, // 004C MOVE R5 R8 + 0x7001FFB5, // 004D JMP #0004 + 0x58100001, // 004E LDCONST R4 K1 + 0x6018000C, // 004F GETGBL R6 G12 + 0x5C1C0600, // 0050 MOVE R7 R3 + 0x7C180200, // 0051 CALL R6 1 + 0x14180806, // 0052 LT R6 R4 R6 + 0x781A0089, // 0053 JMPF R6 #00DE + 0x8C180502, // 0054 GETMET R6 R2 K2 + 0x5C200600, // 0055 MOVE R8 R3 + 0x5824000A, // 0056 LDCONST R9 K10 + 0x5C280800, // 0057 MOVE R10 R4 + 0x7C180800, // 0058 CALL R6 4 + 0x141C0D01, // 0059 LT R7 R6 K1 + 0x781E0000, // 005A JMPF R7 #005C + 0x70020081, // 005B JMP #00DE + 0x5C1C0C00, // 005C MOVE R7 R6 + 0x24200F01, // 005D GT R8 R7 K1 + 0x78220006, // 005E JMPF R8 #0066 + 0x8C200105, // 005F GETMET R8 R0 K5 + 0x04280F04, // 0060 SUB R10 R7 K4 + 0x9428060A, // 0061 GETIDX R10 R3 R10 + 0x7C200400, // 0062 CALL R8 2 + 0x78220001, // 0063 JMPF R8 #0066 + 0x041C0F04, // 0064 SUB R7 R7 K4 + 0x7001FFF6, // 0065 JMP #005D + 0x50200200, // 0066 LDBOOL R8 1 0 + 0x5426000C, // 0067 LDINT R9 13 + 0x28240E09, // 0068 GE R9 R7 R9 + 0x78260010, // 0069 JMPF R9 #007B + 0x5426000C, // 006A LDINT R9 13 + 0x28240E09, // 006B GE R9 R7 R9 + 0x78260002, // 006C JMPF R9 #0070 + 0x5426000C, // 006D LDINT R9 13 + 0x04240E09, // 006E SUB R9 R7 R9 + 0x70020000, // 006F JMP #0071 + 0x58240001, // 0070 LDCONST R9 K1 + 0x04280F04, // 0071 SUB R10 R7 K4 + 0x4028120A, // 0072 CONNECT R10 R9 R10 + 0x9428060A, // 0073 GETIDX R10 R3 R10 + 0x8C2C0502, // 0074 GETMET R11 R2 K2 + 0x5C341400, // 0075 MOVE R13 R10 + 0x5838000B, // 0076 LDCONST R14 K11 + 0x7C2C0600, // 0077 CALL R11 3 + 0x282C1701, // 0078 GE R11 R11 K1 + 0x782E0000, // 0079 JMPF R11 #007B + 0x50200000, // 007A LDBOOL R8 0 0 + 0x7822001A, // 007B JMPF R8 #0097 + 0x54260009, // 007C LDINT R9 10 + 0x28240E09, // 007D GE R9 R7 R9 + 0x78260017, // 007E JMPF R9 #0097 + 0x54260009, // 007F LDINT R9 10 + 0x28240E09, // 0080 GE R9 R7 R9 + 0x78260002, // 0081 JMPF R9 #0085 + 0x54260009, // 0082 LDINT R9 10 + 0x04240E09, // 0083 SUB R9 R7 R9 + 0x70020000, // 0084 JMP #0086 + 0x58240001, // 0085 LDCONST R9 K1 + 0x04280F04, // 0086 SUB R10 R7 K4 + 0x4028120A, // 0087 CONNECT R10 R9 R10 + 0x9428060A, // 0088 GETIDX R10 R3 R10 + 0x8C2C0502, // 0089 GETMET R11 R2 K2 + 0x5C341400, // 008A MOVE R13 R10 + 0x5838000C, // 008B LDCONST R14 K12 + 0x7C2C0600, // 008C CALL R11 3 + 0x282C1701, // 008D GE R11 R11 K1 + 0x742E0005, // 008E JMPT R11 #0095 + 0x8C2C0502, // 008F GETMET R11 R2 K2 + 0x5C341400, // 0090 MOVE R13 R10 + 0x58380007, // 0091 LDCONST R14 K7 + 0x7C2C0600, // 0092 CALL R11 3 + 0x282C1701, // 0093 GE R11 R11 K1 + 0x782E0000, // 0094 JMPF R11 #0096 + 0x50200000, // 0095 LDBOOL R8 0 0 + 0x70020014, // 0096 JMP #00AC + 0x78220013, // 0097 JMPF R8 #00AC + 0x54260004, // 0098 LDINT R9 5 + 0x28240E09, // 0099 GE R9 R7 R9 + 0x78260010, // 009A JMPF R9 #00AC + 0x54260004, // 009B LDINT R9 5 + 0x28240E09, // 009C GE R9 R7 R9 + 0x78260002, // 009D JMPF R9 #00A1 + 0x54260004, // 009E LDINT R9 5 + 0x04240E09, // 009F SUB R9 R7 R9 + 0x70020000, // 00A0 JMP #00A2 + 0x58240001, // 00A1 LDCONST R9 K1 + 0x04280F04, // 00A2 SUB R10 R7 K4 + 0x4028120A, // 00A3 CONNECT R10 R9 R10 + 0x9428060A, // 00A4 GETIDX R10 R3 R10 + 0x8C2C0502, // 00A5 GETMET R11 R2 K2 + 0x5C341400, // 00A6 MOVE R13 R10 + 0x58380007, // 00A7 LDCONST R14 K7 + 0x7C2C0600, // 00A8 CALL R11 3 + 0x282C1701, // 00A9 GE R11 R11 K1 + 0x782E0000, // 00AA JMPF R11 #00AC + 0x50200000, // 00AB LDBOOL R8 0 0 + 0x7822002D, // 00AC JMPF R8 #00DB + 0x14240E06, // 00AD LT R9 R7 R6 + 0x7826002B, // 00AE JMPF R9 #00DB + 0x40240E06, // 00AF CONNECT R9 R7 R6 + 0x94240609, // 00B0 GETIDX R9 R3 R9 + 0x00280D04, // 00B1 ADD R10 R6 K4 + 0x602C000C, // 00B2 GETGBL R11 G12 + 0x5C300600, // 00B3 MOVE R12 R3 + 0x7C2C0200, // 00B4 CALL R11 1 + 0x282C140B, // 00B5 GE R11 R10 R11 + 0x742E0003, // 00B6 JMPT R11 #00BB + 0x8C2C0105, // 00B7 GETMET R11 R0 K5 + 0x9434060A, // 00B8 GETIDX R13 R3 R10 + 0x7C2C0400, // 00B9 CALL R11 2 + 0x742E001C, // 00BA JMPT R11 #00D8 + 0x602C0018, // 00BB GETGBL R11 G24 + 0x5830000D, // 00BC LDCONST R12 K13 + 0x5C341200, // 00BD MOVE R13 R9 + 0x7C2C0400, // 00BE CALL R11 2 + 0x24300F01, // 00BF GT R12 R7 K1 + 0x78320003, // 00C0 JMPF R12 #00C5 + 0x04300F04, // 00C1 SUB R12 R7 K4 + 0x4032020C, // 00C2 CONNECT R12 K1 R12 + 0x9430060C, // 00C3 GETIDX R12 R3 R12 + 0x70020000, // 00C4 JMP #00C6 + 0x58300008, // 00C5 LDCONST R12 K8 + 0x6034000C, // 00C6 GETGBL R13 G12 + 0x5C380600, // 00C7 MOVE R14 R3 + 0x7C340200, // 00C8 CALL R13 1 + 0x1434140D, // 00C9 LT R13 R10 R13 + 0x78360002, // 00CA JMPF R13 #00CE + 0x40341509, // 00CB CONNECT R13 R10 K9 + 0x9434060D, // 00CC GETIDX R13 R3 R13 + 0x70020000, // 00CD JMP #00CF + 0x58340008, // 00CE LDCONST R13 K8 + 0x0038180B, // 00CF ADD R14 R12 R11 + 0x00381C0D, // 00D0 ADD R14 R14 R13 + 0x5C0C1C00, // 00D1 MOVE R3 R14 + 0x6038000C, // 00D2 GETGBL R14 G12 + 0x5C3C1600, // 00D3 MOVE R15 R11 + 0x7C380200, // 00D4 CALL R14 1 + 0x00380E0E, // 00D5 ADD R14 R7 R14 + 0x5C101C00, // 00D6 MOVE R4 R14 + 0x70020001, // 00D7 JMP #00DA + 0x002C0D04, // 00D8 ADD R11 R6 K4 + 0x5C101600, // 00D9 MOVE R4 R11 + 0x70020001, // 00DA JMP #00DD + 0x00240D04, // 00DB ADD R9 R6 K4 + 0x5C101200, // 00DC MOVE R4 R9 + 0x7001FF70, // 00DD JMP #004F + 0x80040600, // 00DE RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_additive_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ be_nested_proto( 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[42]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(palette), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(expect_left_bracket), - /* K7 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K8 */ be_nested_str_weak(check_right_bracket), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Empty_X20palettes_X20are_X20not_X20allowed_X2E_X20A_X20palette_X20must_X20contain_X20at_X20least_X20one_X20color_X20entry_X2E), - /* K11 */ be_nested_str_weak(current), - /* K12 */ be_nested_str_weak(type), - /* K13 */ be_nested_str_weak(animation_dsl), - /* K14 */ be_nested_str_weak(Token), - /* K15 */ be_nested_str_weak(LEFT_PAREN), - /* K16 */ be_nested_str_weak(at_end), - /* K17 */ be_nested_str_weak(Cannot_X20mix_X20alternative_X20syntax_X20_X5Bcolor1_X2C_X20color2_X2C_X20_X2E_X2E_X2E_X5D_X20with_X20tuple_X20syntax_X20_X28value_X2C_X20color_X29_X2E_X20Use_X20only_X20one_X20syntax_X20per_X20palette_X2E), - /* K18 */ be_nested_str_weak(expect_left_paren), - /* K19 */ be_nested_str_weak(expect_number), - /* K20 */ be_nested_str_weak(expect_comma), - /* K21 */ be_nested_str_weak(process_palette_color), - /* K22 */ be_nested_str_weak(expect_right_paren), - /* K23 */ be_nested_str_weak(convert_to_vrgb), - /* K24 */ be_nested_str_weak(0x_X25s), - /* K25 */ be_nested_str_weak(push), - /* K26 */ be_nested_str_weak(Cannot_X20mix_X20tuple_X20syntax_X20_X28value_X2C_X20color_X29_X20with_X20alternative_X20syntax_X20_X5Bcolor1_X2C_X20color2_X2C_X20_X2E_X2E_X2E_X5D_X2E_X20Use_X20only_X20one_X20syntax_X20per_X20palette_X2E), - /* K27 */ be_nested_str_weak(COMMENT), - /* K28 */ be_nested_str_weak(COMMA), - /* K29 */ be_nested_str_weak(NEWLINE), - /* K30 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20palette_X20definition), - /* K31 */ be_nested_str_weak(expect_right_bracket), - /* K32 */ be_nested_str_weak(collect_inline_comment), - /* K33 */ be_nested_str_weak(), - /* K34 */ be_const_int(0), - /* K35 */ be_const_int(1), - /* K36 */ be_nested_str_weak(_X20), - /* K37 */ be_nested_str_weak(_X2508X), - /* K38 */ be_nested_str_weak(_X22_X25s_X22), - /* K39 */ be_nested_str_weak(stop_iteration), - /* K40 */ be_nested_str_weak(add), - /* K41 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20bytes_X28_X25s_X29_X25s), - }), - be_str_weak(process_palette), - &be_const_str_solidified, - ( &(const binstruction[237]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x60080012, // 0010 GETGBL R2 G18 - 0x7C080000, // 0011 CALL R2 0 - 0x8C0C0107, // 0012 GETMET R3 R0 K7 - 0x7C0C0200, // 0013 CALL R3 1 - 0x8C0C0108, // 0014 GETMET R3 R0 K8 - 0x7C0C0200, // 0015 CALL R3 1 - 0x780E0005, // 0016 JMPF R3 #001D - 0x8C0C0109, // 0017 GETMET R3 R0 K9 - 0x5814000A, // 0018 LDCONST R5 K10 - 0x7C0C0400, // 0019 CALL R3 2 - 0x8C0C0104, // 001A GETMET R3 R0 K4 - 0x7C0C0200, // 001B CALL R3 1 - 0x80000600, // 001C RET 0 - 0x8C0C010B, // 001D GETMET R3 R0 K11 - 0x7C0C0200, // 001E CALL R3 1 - 0x4C100000, // 001F LDNIL R4 - 0x200C0604, // 0020 NE R3 R3 R4 - 0x780E0007, // 0021 JMPF R3 #002A - 0x8C0C010B, // 0022 GETMET R3 R0 K11 - 0x7C0C0200, // 0023 CALL R3 1 - 0x880C070C, // 0024 GETMBR R3 R3 K12 - 0xB8121A00, // 0025 GETNGBL R4 K13 - 0x8810090E, // 0026 GETMBR R4 R4 K14 - 0x8810090F, // 0027 GETMBR R4 R4 K15 - 0x1C0C0604, // 0028 EQ R3 R3 R4 - 0x740E0000, // 0029 JMPT R3 #002B - 0x500C0001, // 002A LDBOOL R3 0 1 - 0x500C0200, // 002B LDBOOL R3 1 0 - 0x8C100110, // 002C GETMET R4 R0 K16 - 0x7C100200, // 002D CALL R4 1 - 0x74120095, // 002E JMPT R4 #00C5 - 0x8C100108, // 002F GETMET R4 R0 K8 - 0x7C100200, // 0030 CALL R4 1 - 0x74120092, // 0031 JMPT R4 #00C5 - 0x8C100107, // 0032 GETMET R4 R0 K7 - 0x7C100200, // 0033 CALL R4 1 - 0x8C100108, // 0034 GETMET R4 R0 K8 - 0x7C100200, // 0035 CALL R4 1 - 0x78120000, // 0036 JMPF R4 #0038 - 0x7002008C, // 0037 JMP #00C5 - 0x780E002A, // 0038 JMPF R3 #0064 - 0x8C10010B, // 0039 GETMET R4 R0 K11 - 0x7C100200, // 003A CALL R4 1 - 0x4C140000, // 003B LDNIL R5 - 0x20100805, // 003C NE R4 R4 R5 - 0x7812000D, // 003D JMPF R4 #004C - 0x8C10010B, // 003E GETMET R4 R0 K11 - 0x7C100200, // 003F CALL R4 1 - 0x8810090C, // 0040 GETMBR R4 R4 K12 - 0xB8161A00, // 0041 GETNGBL R5 K13 - 0x88140B0E, // 0042 GETMBR R5 R5 K14 - 0x88140B0F, // 0043 GETMBR R5 R5 K15 - 0x20100805, // 0044 NE R4 R4 R5 - 0x78120005, // 0045 JMPF R4 #004C - 0x8C100109, // 0046 GETMET R4 R0 K9 - 0x58180011, // 0047 LDCONST R6 K17 - 0x7C100400, // 0048 CALL R4 2 - 0x8C100104, // 0049 GETMET R4 R0 K4 - 0x7C100200, // 004A CALL R4 1 - 0x80000800, // 004B RET 0 - 0x8C100112, // 004C GETMET R4 R0 K18 - 0x7C100200, // 004D CALL R4 1 - 0x8C100113, // 004E GETMET R4 R0 K19 - 0x7C100200, // 004F CALL R4 1 - 0x8C140114, // 0050 GETMET R5 R0 K20 - 0x7C140200, // 0051 CALL R5 1 - 0x8C140115, // 0052 GETMET R5 R0 K21 - 0x7C140200, // 0053 CALL R5 1 - 0x8C180116, // 0054 GETMET R6 R0 K22 - 0x7C180200, // 0055 CALL R6 1 - 0x8C180117, // 0056 GETMET R6 R0 K23 - 0x5C200800, // 0057 MOVE R8 R4 - 0x5C240A00, // 0058 MOVE R9 R5 - 0x7C180600, // 0059 CALL R6 3 - 0x601C0009, // 005A GETGBL R7 G9 - 0x60200018, // 005B GETGBL R8 G24 - 0x58240018, // 005C LDCONST R9 K24 - 0x5C280C00, // 005D MOVE R10 R6 - 0x7C200400, // 005E CALL R8 2 - 0x7C1C0200, // 005F CALL R7 1 - 0x8C200519, // 0060 GETMET R8 R2 K25 - 0x5C280E00, // 0061 MOVE R10 R7 - 0x7C200400, // 0062 CALL R8 2 - 0x70020021, // 0063 JMP #0086 - 0x8C10010B, // 0064 GETMET R4 R0 K11 - 0x7C100200, // 0065 CALL R4 1 - 0x4C140000, // 0066 LDNIL R5 - 0x20100805, // 0067 NE R4 R4 R5 - 0x7812000D, // 0068 JMPF R4 #0077 - 0x8C10010B, // 0069 GETMET R4 R0 K11 - 0x7C100200, // 006A CALL R4 1 - 0x8810090C, // 006B GETMBR R4 R4 K12 - 0xB8161A00, // 006C GETNGBL R5 K13 - 0x88140B0E, // 006D GETMBR R5 R5 K14 - 0x88140B0F, // 006E GETMBR R5 R5 K15 - 0x1C100805, // 006F EQ R4 R4 R5 - 0x78120005, // 0070 JMPF R4 #0077 - 0x8C100109, // 0071 GETMET R4 R0 K9 - 0x5818001A, // 0072 LDCONST R6 K26 - 0x7C100400, // 0073 CALL R4 2 - 0x8C100104, // 0074 GETMET R4 R0 K4 - 0x7C100200, // 0075 CALL R4 1 - 0x80000800, // 0076 RET 0 - 0x8C100115, // 0077 GETMET R4 R0 K21 - 0x7C100200, // 0078 CALL R4 1 - 0x8C140117, // 0079 GETMET R5 R0 K23 - 0x541E00FE, // 007A LDINT R7 255 - 0x5C200800, // 007B MOVE R8 R4 - 0x7C140600, // 007C CALL R5 3 - 0x60180009, // 007D GETGBL R6 G9 - 0x601C0018, // 007E GETGBL R7 G24 - 0x58200018, // 007F LDCONST R8 K24 - 0x5C240A00, // 0080 MOVE R9 R5 - 0x7C1C0400, // 0081 CALL R7 2 - 0x7C180200, // 0082 CALL R6 1 - 0x8C1C0519, // 0083 GETMET R7 R2 K25 - 0x5C240C00, // 0084 MOVE R9 R6 - 0x7C1C0400, // 0085 CALL R7 2 - 0x8C100110, // 0086 GETMET R4 R0 K16 - 0x7C100200, // 0087 CALL R4 1 - 0x7412000F, // 0088 JMPT R4 #0099 - 0x8C10010B, // 0089 GETMET R4 R0 K11 - 0x7C100200, // 008A CALL R4 1 - 0x4C140000, // 008B LDNIL R5 - 0x20140805, // 008C NE R5 R4 R5 - 0x78160008, // 008D JMPF R5 #0097 - 0x8814090C, // 008E GETMBR R5 R4 K12 - 0xB81A1A00, // 008F GETNGBL R6 K13 - 0x88180D0E, // 0090 GETMBR R6 R6 K14 - 0x88180D1B, // 0091 GETMBR R6 R6 K27 - 0x1C140A06, // 0092 EQ R5 R5 R6 - 0x78160002, // 0093 JMPF R5 #0097 - 0x8C140100, // 0094 GETMET R5 R0 K0 - 0x7C140200, // 0095 CALL R5 1 - 0x70020000, // 0096 JMP #0098 - 0x70020000, // 0097 JMP #0099 - 0x7001FFEC, // 0098 JMP #0086 - 0x8C10010B, // 0099 GETMET R4 R0 K11 - 0x7C100200, // 009A CALL R4 1 - 0x4C140000, // 009B LDNIL R5 - 0x20100805, // 009C NE R4 R4 R5 - 0x7812000C, // 009D JMPF R4 #00AB - 0x8C10010B, // 009E GETMET R4 R0 K11 - 0x7C100200, // 009F CALL R4 1 - 0x8810090C, // 00A0 GETMBR R4 R4 K12 - 0xB8161A00, // 00A1 GETNGBL R5 K13 - 0x88140B0E, // 00A2 GETMBR R5 R5 K14 - 0x88140B1C, // 00A3 GETMBR R5 R5 K28 - 0x1C100805, // 00A4 EQ R4 R4 R5 - 0x78120004, // 00A5 JMPF R4 #00AB - 0x8C100100, // 00A6 GETMET R4 R0 K0 - 0x7C100200, // 00A7 CALL R4 1 - 0x8C100107, // 00A8 GETMET R4 R0 K7 - 0x7C100200, // 00A9 CALL R4 1 - 0x70020018, // 00AA JMP #00C4 - 0x8C10010B, // 00AB GETMET R4 R0 K11 - 0x7C100200, // 00AC CALL R4 1 - 0x4C140000, // 00AD LDNIL R5 - 0x20100805, // 00AE NE R4 R4 R5 - 0x7812000C, // 00AF JMPF R4 #00BD - 0x8C10010B, // 00B0 GETMET R4 R0 K11 - 0x7C100200, // 00B1 CALL R4 1 - 0x8810090C, // 00B2 GETMBR R4 R4 K12 - 0xB8161A00, // 00B3 GETNGBL R5 K13 - 0x88140B0E, // 00B4 GETMBR R5 R5 K14 - 0x88140B1D, // 00B5 GETMBR R5 R5 K29 - 0x1C100805, // 00B6 EQ R4 R4 R5 - 0x78120004, // 00B7 JMPF R4 #00BD - 0x8C100100, // 00B8 GETMET R4 R0 K0 - 0x7C100200, // 00B9 CALL R4 1 - 0x8C100107, // 00BA GETMET R4 R0 K7 - 0x7C100200, // 00BB CALL R4 1 - 0x70020006, // 00BC JMP #00C4 - 0x8C100108, // 00BD GETMET R4 R0 K8 - 0x7C100200, // 00BE CALL R4 1 - 0x74120003, // 00BF JMPT R4 #00C4 - 0x8C100109, // 00C0 GETMET R4 R0 K9 - 0x5818001E, // 00C1 LDCONST R6 K30 - 0x7C100400, // 00C2 CALL R4 2 - 0x70020000, // 00C3 JMP #00C5 - 0x7001FF66, // 00C4 JMP #002C - 0x8C10011F, // 00C5 GETMET R4 R0 K31 - 0x7C100200, // 00C6 CALL R4 1 - 0x8C100120, // 00C7 GETMET R4 R0 K32 - 0x7C100200, // 00C8 CALL R4 1 - 0x58140021, // 00C9 LDCONST R5 K33 - 0x60180010, // 00CA GETGBL R6 G16 - 0x601C000C, // 00CB GETGBL R7 G12 - 0x5C200400, // 00CC MOVE R8 R2 - 0x7C1C0200, // 00CD CALL R7 1 - 0x041C0F23, // 00CE SUB R7 R7 K35 - 0x401E4407, // 00CF CONNECT R7 K34 R7 - 0x7C180200, // 00D0 CALL R6 1 - 0xA802000E, // 00D1 EXBLK 0 #00E1 - 0x5C1C0C00, // 00D2 MOVE R7 R6 - 0x7C1C0000, // 00D3 CALL R7 0 - 0x24200F22, // 00D4 GT R8 R7 K34 - 0x78220000, // 00D5 JMPF R8 #00D7 - 0x00140B24, // 00D6 ADD R5 R5 K36 - 0x60200018, // 00D7 GETGBL R8 G24 - 0x58240025, // 00D8 LDCONST R9 K37 - 0x94280407, // 00D9 GETIDX R10 R2 R7 - 0x7C200400, // 00DA CALL R8 2 - 0x60240018, // 00DB GETGBL R9 G24 - 0x58280026, // 00DC LDCONST R10 K38 - 0x5C2C1000, // 00DD MOVE R11 R8 - 0x7C240400, // 00DE CALL R9 2 - 0x00140A09, // 00DF ADD R5 R5 R9 - 0x7001FFF0, // 00E0 JMP #00D2 - 0x58180027, // 00E1 LDCONST R6 K39 - 0xAC180200, // 00E2 CATCH R6 1 0 - 0xB0080000, // 00E3 RAISE 2 R0 R0 - 0x8C180128, // 00E4 GETMET R6 R0 K40 - 0x60200018, // 00E5 GETGBL R8 G24 - 0x58240029, // 00E6 LDCONST R9 K41 - 0x5C280200, // 00E7 MOVE R10 R1 - 0x5C2C0A00, // 00E8 MOVE R11 R5 - 0x5C300800, // 00E9 MOVE R12 R4 - 0x7C200800, // 00EA CALL R8 4 - 0x7C180400, // 00EB CALL R6 2 - 0x80000000, // 00EC RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_unary_expression_raw -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_unary_expression_raw, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20value), - /* K3 */ be_nested_str_weak(nil), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(process_unary_expression_raw), - /* K10 */ be_nested_str_weak(_X28_X2D_X25s_X29), - /* K11 */ be_nested_str_weak(PLUS), - /* K12 */ be_nested_str_weak(process_primary_expression_raw), - }), - be_str_weak(process_unary_expression_raw), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080101, // 0005 GETMET R2 R0 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x7C080400, // 0007 CALL R2 2 - 0x80060600, // 0008 RET 1 K3 - 0x88080304, // 0009 GETMBR R2 R1 K4 - 0xB80E0A00, // 000A GETNGBL R3 K5 - 0x880C0706, // 000B GETMBR R3 R3 K6 - 0x880C0707, // 000C GETMBR R3 R3 K7 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x780A0008, // 000E JMPF R2 #0018 - 0x8C080108, // 000F GETMET R2 R0 K8 - 0x7C080200, // 0010 CALL R2 1 - 0x8C080109, // 0011 GETMET R2 R0 K9 - 0x7C080200, // 0012 CALL R2 1 - 0x600C0018, // 0013 GETGBL R3 G24 - 0x5810000A, // 0014 LDCONST R4 K10 - 0x5C140400, // 0015 MOVE R5 R2 - 0x7C0C0400, // 0016 CALL R3 2 - 0x80040600, // 0017 RET 1 R3 - 0x88080304, // 0018 GETMBR R2 R1 K4 - 0xB80E0A00, // 0019 GETNGBL R3 K5 - 0x880C0706, // 001A GETMBR R3 R3 K6 - 0x880C070B, // 001B GETMBR R3 R3 K11 - 0x1C080403, // 001C EQ R2 R2 R3 - 0x780A0004, // 001D JMPF R2 #0023 - 0x8C080108, // 001E GETMET R2 R0 K8 - 0x7C080200, // 001F CALL R2 1 - 0x8C080109, // 0020 GETMET R2 R0 K9 - 0x7C080200, // 0021 CALL R2 1 - 0x80040400, // 0022 RET 1 R2 - 0x8C08010C, // 0023 GETMET R2 R0 K12 - 0x7C080200, // 0024 CALL R2 1 - 0x80040400, // 0025 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_arguments_for_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expression, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -3464,367 +4114,113 @@ be_local_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expres NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), + /* K0 */ be_nested_str_weak(process_multiplicative_expression), /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_paren), - /* K3 */ be_nested_str_weak(skip_whitespace), - /* K4 */ be_nested_str_weak(process_expression_argument), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(COMMA), - /* K11 */ be_nested_str_weak(next), - /* K12 */ be_nested_str_weak(error), - /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K14 */ be_nested_str_weak(expect_right_paren), - /* K15 */ be_nested_str_weak(), - /* K16 */ be_const_int(0), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_str_weak(_X2C_X20), - /* K19 */ be_nested_str_weak(stop_iteration), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(PLUS), + /* K7 */ be_nested_str_weak(MINUS), + /* K8 */ be_nested_str_weak(value), + /* K9 */ be_nested_str_weak(next), + /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), + /* K11 */ be_nested_str_weak(is_anonymous_function), + /* K12 */ be_nested_str_weak(repeat_count), + /* K13 */ be_nested_str_weak(string), + /* K14 */ be_nested_str_weak(is_computed_expression_string), + /* K15 */ be_nested_str_weak(find), + /* K16 */ be_nested_str_weak(_X2E), + /* K17 */ be_const_int(0), + /* K18 */ be_nested_str_weak(create_simple_function_from_string), + /* K19 */ be_nested_str_weak(create_computation_closure_from_string), }), - be_str_weak(process_function_arguments_for_expression), + be_str_weak(process_additive_expression), &be_const_str_solidified, - ( &(const binstruction[72]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x740A0029, // 0006 JMPT R2 #0031 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x740A0026, // 0009 JMPT R2 #0031 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x7C080200, // 000B CALL R2 1 - 0x8C080102, // 000C GETMET R2 R0 K2 - 0x7C080200, // 000D CALL R2 1 - 0x780A0000, // 000E JMPF R2 #0010 - 0x70020020, // 000F JMP #0031 - 0x8C080104, // 0010 GETMET R2 R0 K4 - 0x7C080200, // 0011 CALL R2 1 - 0x8C0C0305, // 0012 GETMET R3 R1 K5 - 0x5C140400, // 0013 MOVE R5 R2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x8C0C0103, // 0015 GETMET R3 R0 K3 - 0x7C0C0200, // 0016 CALL R3 1 - 0x8C0C0106, // 0017 GETMET R3 R0 K6 - 0x7C0C0200, // 0018 CALL R3 1 - 0x4C100000, // 0019 LDNIL R4 - 0x200C0604, // 001A NE R3 R3 R4 - 0x780E000C, // 001B JMPF R3 #0029 - 0x8C0C0106, // 001C GETMET R3 R0 K6 - 0x7C0C0200, // 001D CALL R3 1 - 0x880C0707, // 001E GETMBR R3 R3 K7 - 0xB8121000, // 001F GETNGBL R4 K8 - 0x88100909, // 0020 GETMBR R4 R4 K9 - 0x8810090A, // 0021 GETMBR R4 R4 K10 - 0x1C0C0604, // 0022 EQ R3 R3 R4 - 0x780E0004, // 0023 JMPF R3 #0029 - 0x8C0C010B, // 0024 GETMET R3 R0 K11 - 0x7C0C0200, // 0025 CALL R3 1 - 0x8C0C0103, // 0026 GETMET R3 R0 K3 - 0x7C0C0200, // 0027 CALL R3 1 - 0x70020006, // 0028 JMP #0030 - 0x8C0C0102, // 0029 GETMET R3 R0 K2 - 0x7C0C0200, // 002A CALL R3 1 - 0x740E0003, // 002B JMPT R3 #0030 - 0x8C0C010C, // 002C GETMET R3 R0 K12 - 0x5814000D, // 002D LDCONST R5 K13 - 0x7C0C0400, // 002E CALL R3 2 - 0x70020000, // 002F JMP #0031 - 0x7001FFD2, // 0030 JMP #0004 - 0x8C08010E, // 0031 GETMET R2 R0 K14 - 0x7C080200, // 0032 CALL R2 1 - 0x5808000F, // 0033 LDCONST R2 K15 - 0x600C0010, // 0034 GETGBL R3 G16 - 0x6010000C, // 0035 GETGBL R4 G12 - 0x5C140200, // 0036 MOVE R5 R1 - 0x7C100200, // 0037 CALL R4 1 - 0x04100911, // 0038 SUB R4 R4 K17 - 0x40122004, // 0039 CONNECT R4 K16 R4 - 0x7C0C0200, // 003A CALL R3 1 - 0xA8020007, // 003B EXBLK 0 #0044 - 0x5C100600, // 003C MOVE R4 R3 - 0x7C100000, // 003D CALL R4 0 - 0x24140910, // 003E GT R5 R4 K16 - 0x78160000, // 003F JMPF R5 #0041 - 0x00080512, // 0040 ADD R2 R2 K18 - 0x94140204, // 0041 GETIDX R5 R1 R4 - 0x00080405, // 0042 ADD R2 R2 R5 - 0x7001FFF7, // 0043 JMP #003C - 0x580C0013, // 0044 LDCONST R3 K19 - 0xAC0C0200, // 0045 CATCH R3 1 0 - 0xB0080000, // 0046 RAISE 2 R0 R0 - 0x80040400, // 0047 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_value_provider_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(value_provider), - }), - be_str_weak(_validate_value_provider_factory_exists), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0xB8160200, // 0002 GETNGBL R5 K1 - 0x88140B02, // 0003 GETMBR R5 R5 K2 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _generate_anonymous_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call, /* name */ - be_nested_proto( - 14, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[33]) { /* constants */ - /* K0 */ be_nested_str_weak(push), - /* K1 */ be_nested_str_weak(_X28def_X20_X28engine_X29), - /* K2 */ be_nested_str_weak(_X20_X20var_X20provider_X20_X3D_X20animation_X2E_X25s_X28engine_X29), - /* K3 */ be_nested_str_weak(expect_left_paren), - /* K4 */ be_nested_str_weak(_create_instance_for_validation), - /* K5 */ be_nested_str_weak(at_end), - /* K6 */ be_nested_str_weak(check_right_paren), - /* K7 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K8 */ be_nested_str_weak(expect_identifier), - /* K9 */ be_nested_str_weak(_validate_single_parameter), - /* K10 */ be_nested_str_weak(expect_assign), - /* K11 */ be_nested_str_weak(process_value), - /* K12 */ be_nested_str_weak(argument), - /* K13 */ be_nested_str_weak(collect_inline_comment), - /* K14 */ be_nested_str_weak(_X20_X20provider_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K15 */ be_nested_str_weak(current), - /* K16 */ be_nested_str_weak(type), - /* K17 */ be_nested_str_weak(animation_dsl), - /* K18 */ be_nested_str_weak(Token), - /* K19 */ be_nested_str_weak(COMMENT), - /* K20 */ be_nested_str_weak(next), - /* K21 */ be_nested_str_weak(COMMA), - /* K22 */ be_nested_str_weak(NEWLINE), - /* K23 */ be_nested_str_weak(error), - /* K24 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K25 */ be_nested_str_weak(expect_right_paren), - /* K26 */ be_nested_str_weak(_X20_X20return_X20provider), - /* K27 */ be_nested_str_weak(end_X29_X28engine_X29), - /* K28 */ be_nested_str_weak(), - /* K29 */ be_const_int(0), - /* K30 */ be_const_int(1), - /* K31 */ be_nested_str_weak(_X0A), - /* K32 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(_generate_anonymous_function_call), - &be_const_str_solidified, - ( &(const binstruction[145]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x8C0C0500, // 0002 GETMET R3 R2 K0 - 0x58140001, // 0003 LDCONST R5 K1 - 0x7C0C0400, // 0004 CALL R3 2 - 0x8C0C0500, // 0005 GETMET R3 R2 K0 - 0x60140018, // 0006 GETGBL R5 G24 - 0x58180002, // 0007 LDCONST R6 K2 - 0x5C1C0200, // 0008 MOVE R7 R1 - 0x7C140400, // 0009 CALL R5 2 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x7C0C0200, // 000C CALL R3 1 - 0x8C0C0104, // 000D GETMET R3 R0 K4 - 0x5C140200, // 000E MOVE R5 R1 - 0x7C0C0400, // 000F CALL R3 2 - 0x8C100105, // 0010 GETMET R4 R0 K5 - 0x7C100200, // 0011 CALL R4 1 - 0x74120060, // 0012 JMPT R4 #0074 - 0x8C100106, // 0013 GETMET R4 R0 K6 - 0x7C100200, // 0014 CALL R4 1 - 0x7412005D, // 0015 JMPT R4 #0074 - 0x8C100107, // 0016 GETMET R4 R0 K7 - 0x7C100200, // 0017 CALL R4 1 - 0x8C100106, // 0018 GETMET R4 R0 K6 - 0x7C100200, // 0019 CALL R4 1 - 0x78120000, // 001A JMPF R4 #001C - 0x70020057, // 001B JMP #0074 - 0x8C100108, // 001C GETMET R4 R0 K8 - 0x7C100200, // 001D CALL R4 1 - 0x4C140000, // 001E LDNIL R5 - 0x20140605, // 001F NE R5 R3 R5 - 0x78160004, // 0020 JMPF R5 #0026 - 0x8C140109, // 0021 GETMET R5 R0 K9 - 0x5C1C0200, // 0022 MOVE R7 R1 - 0x5C200800, // 0023 MOVE R8 R4 - 0x5C240600, // 0024 MOVE R9 R3 - 0x7C140800, // 0025 CALL R5 4 - 0x8C14010A, // 0026 GETMET R5 R0 K10 - 0x7C140200, // 0027 CALL R5 1 - 0x8C14010B, // 0028 GETMET R5 R0 K11 - 0x581C000C, // 0029 LDCONST R7 K12 - 0x7C140400, // 002A CALL R5 2 - 0x8C18010D, // 002B GETMET R6 R0 K13 - 0x7C180200, // 002C CALL R6 1 - 0x8C1C0500, // 002D GETMET R7 R2 K0 - 0x60240018, // 002E GETGBL R9 G24 - 0x5828000E, // 002F LDCONST R10 K14 - 0x5C2C0800, // 0030 MOVE R11 R4 - 0x5C300A00, // 0031 MOVE R12 R5 - 0x5C340C00, // 0032 MOVE R13 R6 - 0x7C240800, // 0033 CALL R9 4 - 0x7C1C0400, // 0034 CALL R7 2 - 0x8C1C0105, // 0035 GETMET R7 R0 K5 - 0x7C1C0200, // 0036 CALL R7 1 - 0x741E000F, // 0037 JMPT R7 #0048 - 0x8C1C010F, // 0038 GETMET R7 R0 K15 - 0x7C1C0200, // 0039 CALL R7 1 - 0x4C200000, // 003A LDNIL R8 - 0x20200E08, // 003B NE R8 R7 R8 - 0x78220008, // 003C JMPF R8 #0046 - 0x88200F10, // 003D GETMBR R8 R7 K16 - 0xB8262200, // 003E GETNGBL R9 K17 - 0x88241312, // 003F GETMBR R9 R9 K18 - 0x88241313, // 0040 GETMBR R9 R9 K19 - 0x1C201009, // 0041 EQ R8 R8 R9 - 0x78220002, // 0042 JMPF R8 #0046 - 0x8C200114, // 0043 GETMET R8 R0 K20 - 0x7C200200, // 0044 CALL R8 1 - 0x70020000, // 0045 JMP #0047 - 0x70020000, // 0046 JMP #0048 - 0x7001FFEC, // 0047 JMP #0035 - 0x8C1C010F, // 0048 GETMET R7 R0 K15 - 0x7C1C0200, // 0049 CALL R7 1 - 0x4C200000, // 004A LDNIL R8 - 0x201C0E08, // 004B NE R7 R7 R8 - 0x781E000C, // 004C JMPF R7 #005A - 0x8C1C010F, // 004D GETMET R7 R0 K15 - 0x7C1C0200, // 004E CALL R7 1 - 0x881C0F10, // 004F GETMBR R7 R7 K16 - 0xB8222200, // 0050 GETNGBL R8 K17 - 0x88201112, // 0051 GETMBR R8 R8 K18 - 0x88201115, // 0052 GETMBR R8 R8 K21 - 0x1C1C0E08, // 0053 EQ R7 R7 R8 - 0x781E0004, // 0054 JMPF R7 #005A - 0x8C1C0114, // 0055 GETMET R7 R0 K20 - 0x7C1C0200, // 0056 CALL R7 1 - 0x8C1C0107, // 0057 GETMET R7 R0 K7 - 0x7C1C0200, // 0058 CALL R7 1 - 0x70020018, // 0059 JMP #0073 - 0x8C1C010F, // 005A GETMET R7 R0 K15 - 0x7C1C0200, // 005B CALL R7 1 - 0x4C200000, // 005C LDNIL R8 - 0x201C0E08, // 005D NE R7 R7 R8 - 0x781E000C, // 005E JMPF R7 #006C - 0x8C1C010F, // 005F GETMET R7 R0 K15 - 0x7C1C0200, // 0060 CALL R7 1 - 0x881C0F10, // 0061 GETMBR R7 R7 K16 - 0xB8222200, // 0062 GETNGBL R8 K17 - 0x88201112, // 0063 GETMBR R8 R8 K18 - 0x88201116, // 0064 GETMBR R8 R8 K22 - 0x1C1C0E08, // 0065 EQ R7 R7 R8 - 0x781E0004, // 0066 JMPF R7 #006C - 0x8C1C0114, // 0067 GETMET R7 R0 K20 - 0x7C1C0200, // 0068 CALL R7 1 - 0x8C1C0107, // 0069 GETMET R7 R0 K7 - 0x7C1C0200, // 006A CALL R7 1 - 0x70020006, // 006B JMP #0073 - 0x8C1C0106, // 006C GETMET R7 R0 K6 - 0x7C1C0200, // 006D CALL R7 1 - 0x741E0003, // 006E JMPT R7 #0073 - 0x8C1C0117, // 006F GETMET R7 R0 K23 - 0x58240018, // 0070 LDCONST R9 K24 - 0x7C1C0400, // 0071 CALL R7 2 - 0x70020000, // 0072 JMP #0074 - 0x7001FF9B, // 0073 JMP #0010 - 0x8C100119, // 0074 GETMET R4 R0 K25 - 0x7C100200, // 0075 CALL R4 1 - 0x8C100500, // 0076 GETMET R4 R2 K0 - 0x5818001A, // 0077 LDCONST R6 K26 - 0x7C100400, // 0078 CALL R4 2 - 0x8C100500, // 0079 GETMET R4 R2 K0 - 0x5818001B, // 007A LDCONST R6 K27 - 0x7C100400, // 007B CALL R4 2 - 0x5810001C, // 007C LDCONST R4 K28 - 0x60140010, // 007D GETGBL R5 G16 - 0x6018000C, // 007E GETGBL R6 G12 - 0x5C1C0400, // 007F MOVE R7 R2 - 0x7C180200, // 0080 CALL R6 1 - 0x04180D1E, // 0081 SUB R6 R6 K30 - 0x401A3A06, // 0082 CONNECT R6 K29 R6 - 0x7C140200, // 0083 CALL R5 1 - 0xA8020007, // 0084 EXBLK 0 #008D - 0x5C180A00, // 0085 MOVE R6 R5 - 0x7C180000, // 0086 CALL R6 0 - 0x241C0D1D, // 0087 GT R7 R6 K29 - 0x781E0000, // 0088 JMPF R7 #008A - 0x0010091F, // 0089 ADD R4 R4 K31 - 0x941C0406, // 008A GETIDX R7 R2 R6 - 0x00100807, // 008B ADD R4 R4 R7 - 0x7001FFF7, // 008C JMP #0085 - 0x58140020, // 008D LDCONST R5 K32 - 0xAC140200, // 008E CATCH R5 1 0 - 0xB0080000, // 008F RAISE 2 R0 R0 - 0x80040800, // 0090 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_for_color_provider -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_process_named_arguments_generic), - }), - be_str_weak(_process_named_arguments_for_color_provider), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[83]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x5C180200, // 0001 MOVE R6 R1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x5C200600, // 0003 MOVE R8 R3 + 0x7C100800, // 0004 CALL R4 4 + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x7C140200, // 0006 CALL R5 1 + 0x74160022, // 0007 JMPT R5 #002B + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0x4C180000, // 000A LDNIL R6 + 0x20180A06, // 000B NE R6 R5 R6 + 0x781A001B, // 000C JMPF R6 #0029 + 0x88180B03, // 000D GETMBR R6 R5 K3 + 0xB81E0800, // 000E GETNGBL R7 K4 + 0x881C0F05, // 000F GETMBR R7 R7 K5 + 0x881C0F06, // 0010 GETMBR R7 R7 K6 + 0x1C180C07, // 0011 EQ R6 R6 R7 + 0x741A0005, // 0012 JMPT R6 #0019 + 0x88180B03, // 0013 GETMBR R6 R5 K3 + 0xB81E0800, // 0014 GETNGBL R7 K4 + 0x881C0F05, // 0015 GETMBR R7 R7 K5 + 0x881C0F07, // 0016 GETMBR R7 R7 K7 + 0x1C180C07, // 0017 EQ R6 R6 R7 + 0x781A000F, // 0018 JMPF R6 #0029 + 0x88180B08, // 0019 GETMBR R6 R5 K8 + 0x8C1C0109, // 001A GETMET R7 R0 K9 + 0x7C1C0200, // 001B CALL R7 1 + 0x8C1C0100, // 001C GETMET R7 R0 K0 + 0x5C240200, // 001D MOVE R9 R1 + 0x50280000, // 001E LDBOOL R10 0 0 + 0x5C2C0600, // 001F MOVE R11 R3 + 0x7C1C0800, // 0020 CALL R7 4 + 0x60200018, // 0021 GETGBL R8 G24 + 0x5824000A, // 0022 LDCONST R9 K10 + 0x5C280800, // 0023 MOVE R10 R4 + 0x5C2C0C00, // 0024 MOVE R11 R6 + 0x5C300E00, // 0025 MOVE R12 R7 + 0x7C200800, // 0026 CALL R8 4 + 0x5C101000, // 0027 MOVE R4 R8 + 0x70020000, // 0028 JMP #002A + 0x70020000, // 0029 JMP #002B + 0x7001FFD9, // 002A JMP #0005 + 0x780E0000, // 002B JMPF R3 #002D + 0x80040800, // 002C RET 1 R4 + 0x780A0022, // 002D JMPF R2 #0051 + 0x8C14010B, // 002E GETMET R5 R0 K11 + 0x5C1C0800, // 002F MOVE R7 R4 + 0x7C140400, // 0030 CALL R5 2 + 0x7416001E, // 0031 JMPT R5 #0051 + 0x1C14030C, // 0032 EQ R5 R1 K12 + 0x78160011, // 0033 JMPF R5 #0046 + 0xA4161A00, // 0034 IMPORT R5 K13 + 0x8C18010E, // 0035 GETMET R6 R0 K14 + 0x5C200800, // 0036 MOVE R8 R4 + 0x7C180400, // 0037 CALL R6 2 + 0x741A0005, // 0038 JMPT R6 #003F + 0x8C180B0F, // 0039 GETMET R6 R5 K15 + 0x5C200800, // 003A MOVE R8 R4 + 0x58240010, // 003B LDCONST R9 K16 + 0x7C180600, // 003C CALL R6 3 + 0x28180D11, // 003D GE R6 R6 K17 + 0x781A0004, // 003E JMPF R6 #0044 + 0x8C180112, // 003F GETMET R6 R0 K18 + 0x5C200800, // 0040 MOVE R8 R4 + 0x7C180400, // 0041 CALL R6 2 + 0x80040C00, // 0042 RET 1 R6 + 0x70020000, // 0043 JMP #0045 + 0x80040800, // 0044 RET 1 R4 + 0x70020009, // 0045 JMP #0050 + 0x8C14010E, // 0046 GETMET R5 R0 K14 + 0x5C1C0800, // 0047 MOVE R7 R4 + 0x7C140400, // 0048 CALL R5 2 + 0x78160004, // 0049 JMPF R5 #004F + 0x8C140113, // 004A GETMET R5 R0 K19 + 0x5C1C0800, // 004B MOVE R7 R4 + 0x7C140400, // 004C CALL R5 2 + 0x80040A00, // 004D RET 1 R5 + 0x70020000, // 004E JMP #0050 + 0x80040800, // 004F RET 1 R4 + 0x70020000, // 0050 JMP #0052 + 0x80040800, // 0051 RET 1 R4 + 0x80000000, // 0052 RET 0 }) ) ); @@ -3887,137 +4283,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ /******************************************************************** -** Solidified function: process_multiplicative_expression_raw +** Solidified function: process_named_arguments_for_variable ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable, /* name */ be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(process_unary_expression_raw), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(MULTIPLY), - /* K7 */ be_nested_str_weak(DIVIDE), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - }), - be_str_weak(process_multiplicative_expression_raw), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x740A001F, // 0004 JMPT R2 #0025 - 0x8C080102, // 0005 GETMET R2 R0 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0018, // 0009 JMPF R3 #0023 - 0x880C0503, // 000A GETMBR R3 R2 K3 - 0xB8120800, // 000B GETNGBL R4 K4 - 0x88100905, // 000C GETMBR R4 R4 K5 - 0x88100906, // 000D GETMBR R4 R4 K6 - 0x1C0C0604, // 000E EQ R3 R3 R4 - 0x740E0005, // 000F JMPT R3 #0016 - 0x880C0503, // 0010 GETMBR R3 R2 K3 - 0xB8120800, // 0011 GETNGBL R4 K4 - 0x88100905, // 0012 GETMBR R4 R4 K5 - 0x88100907, // 0013 GETMBR R4 R4 K7 - 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x780E000C, // 0015 JMPF R3 #0023 - 0x880C0508, // 0016 GETMBR R3 R2 K8 - 0x8C100109, // 0017 GETMET R4 R0 K9 - 0x7C100200, // 0018 CALL R4 1 - 0x8C100100, // 0019 GETMET R4 R0 K0 - 0x7C100200, // 001A CALL R4 1 - 0x60140018, // 001B GETGBL R5 G24 - 0x5818000A, // 001C LDCONST R6 K10 - 0x5C1C0200, // 001D MOVE R7 R1 - 0x5C200600, // 001E MOVE R8 R3 - 0x5C240800, // 001F MOVE R9 R4 - 0x7C140800, // 0020 CALL R5 4 - 0x5C040A00, // 0021 MOVE R1 R5 - 0x70020000, // 0022 JMP #0024 - 0x70020000, // 0023 JMP #0025 - 0x7001FFDC, // 0024 JMP #0002 - 0x80040200, // 0025 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: at_end -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_nested_str_weak(tokens), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(EOF), - }), - be_str_weak(at_end), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x28040202, // 0004 GE R1 R1 R2 - 0x7406000D, // 0005 JMPT R1 #0014 - 0x8C040102, // 0006 GETMET R1 R0 K2 - 0x7C040200, // 0007 CALL R1 1 - 0x4C080000, // 0008 LDNIL R2 - 0x20040202, // 0009 NE R1 R1 R2 - 0x78060007, // 000A JMPF R1 #0013 - 0x8C040102, // 000B GETMET R1 R0 K2 - 0x7C040200, // 000C CALL R1 1 - 0x88040303, // 000D GETMBR R1 R1 K3 - 0xB80A0800, // 000E GETNGBL R2 K4 - 0x88080505, // 000F GETMBR R2 R2 K5 - 0x88080506, // 0010 GETMBR R2 R2 K6 - 0x1C040202, // 0011 EQ R1 R1 R2 - 0x74060000, // 0012 JMPT R1 #0014 - 0x50040001, // 0013 LDBOOL R1 0 1 - 0x50040200, // 0014 LDBOOL R1 1 0 - 0x80040200, // 0015 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_computation_closure_from_string -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string, /* name */ - be_nested_proto( - 9, /* nstack */ + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4025,46 +4295,245 @@ be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_strin 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(transform_expression_for_closure), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(_X20_X20), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(replace), - /* K6 */ be_nested_str_weak(_X20), - /* K7 */ be_nested_str_weak(def_X20_X28self_X29_X20return_X20_X25s_X20end), - /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(variable), }), - be_str_weak(create_computation_closure_from_string), + be_str_weak(process_named_arguments_for_variable), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0101, // 0001 GETMET R3 R0 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C100502, // 0004 GETMET R4 R2 K2 - 0x5C180600, // 0005 MOVE R6 R3 - 0x581C0003, // 0006 LDCONST R7 K3 - 0x7C100600, // 0007 CALL R4 3 - 0x28100904, // 0008 GE R4 R4 K4 - 0x78120006, // 0009 JMPF R4 #0011 - 0x8C100505, // 000A GETMET R4 R2 K5 - 0x5C180600, // 000B MOVE R6 R3 - 0x581C0003, // 000C LDCONST R7 K3 - 0x58200006, // 000D LDCONST R8 K6 - 0x7C100800, // 000E CALL R4 4 - 0x5C0C0800, // 000F MOVE R3 R4 - 0x7001FFF2, // 0010 JMP #0004 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140007, // 0012 LDCONST R5 K7 - 0x5C180600, // 0013 MOVE R6 R3 - 0x7C100400, // 0014 CALL R4 2 - 0x60140018, // 0015 GETGBL R5 G24 - 0x58180008, // 0016 LDCONST R6 K8 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x7C140400, // 0018 CALL R5 2 - 0x80040A00, // 0019 RET 1 R5 + ( &(const binstruction[ 6]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x58140001, // 0002 LDCONST R5 K1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C080800, // 0004 CALL R2 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(process_additive_expression), + }), + be_str_weak(process_value), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x50140200, // 0002 LDBOOL R5 1 0 + 0x50180000, // 0003 LDBOOL R6 0 0 + 0x7C080800, // 0004 CALL R2 4 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_errors +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(errors), + }), + be_str_weak(get_errors), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_nested_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(IDENTIFIER), + /* K6 */ be_nested_str_weak(KEYWORD), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20function_X20name), + /* K11 */ be_nested_str_weak(nil), + /* K12 */ be_nested_str_weak(is_math_method), + /* K13 */ be_nested_str_weak(process_function_arguments), + /* K14 */ be_nested_str_weak(self_X2E_X25s_X28_X25s_X29), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(process_log_call), + /* K17 */ be_nested_str_weak(expression), + /* K18 */ be_nested_str_weak(template_definitions), + /* K19 */ be_nested_str_weak(contains), + /* K20 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), + /* K21 */ be_nested_str_weak(self_X2Eengine), + /* K22 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K23 */ be_nested_str_weak(_is_simple_function_call), + /* K24 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), + /* K25 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + /* K26 */ be_nested_str_weak(_validate_animation_factory_exists), + /* K27 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), + /* K28 */ be_nested_str_weak(skip_function_arguments), + /* K29 */ be_nested_str_weak(_generate_anonymous_function_call), + }), + be_str_weak(process_nested_function_call), + &be_const_str_solidified, + ( &(const binstruction[113]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58080001, // 0002 LDCONST R2 K1 + 0x4C0C0000, // 0003 LDNIL R3 + 0x200C0203, // 0004 NE R3 R1 R3 + 0x780E000F, // 0005 JMPF R3 #0016 + 0x880C0302, // 0006 GETMBR R3 R1 K2 + 0xB8120600, // 0007 GETNGBL R4 K3 + 0x88100904, // 0008 GETMBR R4 R4 K4 + 0x88100905, // 0009 GETMBR R4 R4 K5 + 0x1C0C0604, // 000A EQ R3 R3 R4 + 0x740E0005, // 000B JMPT R3 #0012 + 0x880C0302, // 000C GETMBR R3 R1 K2 + 0xB8120600, // 000D GETNGBL R4 K3 + 0x88100904, // 000E GETMBR R4 R4 K4 + 0x88100906, // 000F GETMBR R4 R4 K6 + 0x1C0C0604, // 0010 EQ R3 R3 R4 + 0x780E0003, // 0011 JMPF R3 #0016 + 0x88080307, // 0012 GETMBR R2 R1 K7 + 0x8C0C0108, // 0013 GETMET R3 R0 K8 + 0x7C0C0200, // 0014 CALL R3 1 + 0x70020003, // 0015 JMP #001A + 0x8C0C0109, // 0016 GETMET R3 R0 K9 + 0x5814000A, // 0017 LDCONST R5 K10 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80061600, // 0019 RET 1 K11 + 0x8C0C010C, // 001A GETMET R3 R0 K12 + 0x5C140400, // 001B MOVE R5 R2 + 0x7C0C0400, // 001C CALL R3 2 + 0x780E0008, // 001D JMPF R3 #0027 + 0x8C0C010D, // 001E GETMET R3 R0 K13 + 0x50140200, // 001F LDBOOL R5 1 0 + 0x7C0C0400, // 0020 CALL R3 2 + 0x60100018, // 0021 GETGBL R4 G24 + 0x5814000E, // 0022 LDCONST R5 K14 + 0x5C180400, // 0023 MOVE R6 R2 + 0x5C1C0600, // 0024 MOVE R7 R3 + 0x7C100600, // 0025 CALL R4 3 + 0x80040800, // 0026 RET 1 R4 + 0x1C0C050F, // 0027 EQ R3 R2 K15 + 0x780E0008, // 0028 JMPF R3 #0032 + 0x8C0C010D, // 0029 GETMET R3 R0 K13 + 0x50140200, // 002A LDBOOL R5 1 0 + 0x7C0C0400, // 002B CALL R3 2 + 0x8C100110, // 002C GETMET R4 R0 K16 + 0x5C180600, // 002D MOVE R6 R3 + 0x581C0011, // 002E LDCONST R7 K17 + 0x58200001, // 002F LDCONST R8 K1 + 0x7C100800, // 0030 CALL R4 4 + 0x80040800, // 0031 RET 1 R4 + 0x880C0112, // 0032 GETMBR R3 R0 K18 + 0x8C0C0713, // 0033 GETMET R3 R3 K19 + 0x5C140400, // 0034 MOVE R5 R2 + 0x7C0C0400, // 0035 CALL R3 2 + 0x780E0011, // 0036 JMPF R3 #0049 + 0x8C0C010D, // 0037 GETMET R3 R0 K13 + 0x50140200, // 0038 LDBOOL R5 1 0 + 0x7C0C0400, // 0039 CALL R3 2 + 0x20100701, // 003A NE R4 R3 K1 + 0x78120004, // 003B JMPF R4 #0041 + 0x60100018, // 003C GETGBL R4 G24 + 0x58140014, // 003D LDCONST R5 K20 + 0x5C180600, // 003E MOVE R6 R3 + 0x7C100400, // 003F CALL R4 2 + 0x70020000, // 0040 JMP #0042 + 0x58100015, // 0041 LDCONST R4 K21 + 0x60140018, // 0042 GETGBL R5 G24 + 0x58180016, // 0043 LDCONST R6 K22 + 0x5C1C0400, // 0044 MOVE R7 R2 + 0x5C200800, // 0045 MOVE R8 R4 + 0x7C140600, // 0046 CALL R5 3 + 0x80040A00, // 0047 RET 1 R5 + 0x70020026, // 0048 JMP #0070 + 0x8C0C0117, // 0049 GETMET R3 R0 K23 + 0x5C140400, // 004A MOVE R5 R2 + 0x7C0C0400, // 004B CALL R3 2 + 0x780E0011, // 004C JMPF R3 #005F + 0x8C0C010D, // 004D GETMET R3 R0 K13 + 0x50140000, // 004E LDBOOL R5 0 0 + 0x7C0C0400, // 004F CALL R3 2 + 0x20100701, // 0050 NE R4 R3 K1 + 0x78120006, // 0051 JMPF R4 #0059 + 0x60100018, // 0052 GETGBL R4 G24 + 0x58140018, // 0053 LDCONST R5 K24 + 0x5C180400, // 0054 MOVE R6 R2 + 0x5C1C0600, // 0055 MOVE R7 R3 + 0x7C100600, // 0056 CALL R4 3 + 0x80040800, // 0057 RET 1 R4 + 0x70020004, // 0058 JMP #005E + 0x60100018, // 0059 GETGBL R4 G24 + 0x58140019, // 005A LDCONST R5 K25 + 0x5C180400, // 005B MOVE R6 R2 + 0x7C100400, // 005C CALL R4 2 + 0x80040800, // 005D RET 1 R4 + 0x70020010, // 005E JMP #0070 + 0x8C0C011A, // 005F GETMET R3 R0 K26 + 0x5C140400, // 0060 MOVE R5 R2 + 0x7C0C0400, // 0061 CALL R3 2 + 0x740E0008, // 0062 JMPT R3 #006C + 0x8C0C0109, // 0063 GETMET R3 R0 K9 + 0x60140018, // 0064 GETGBL R5 G24 + 0x5818001B, // 0065 LDCONST R6 K27 + 0x5C1C0400, // 0066 MOVE R7 R2 + 0x7C140400, // 0067 CALL R5 2 + 0x7C0C0400, // 0068 CALL R3 2 + 0x8C0C011C, // 0069 GETMET R3 R0 K28 + 0x7C0C0200, // 006A CALL R3 1 + 0x80061600, // 006B RET 1 K11 + 0x8C0C011D, // 006C GETMET R3 R0 K29 + 0x5C140400, // 006D MOVE R5 R2 + 0x7C0C0400, // 006E CALL R3 2 + 0x80040600, // 006F RET 1 R3 + 0x80000000, // 0070 RET 0 }) ) ); @@ -4144,49 +4613,130 @@ be_local_closure(class_SimpleDSLTranspiler_init, /* name */ /******************************************************************** -** Solidified function: expect_left_brace +** Solidified function: _validate_value_provider_reference ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ +be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_reference, /* name */ be_nested_proto( - 5, /* nstack */ - 1, /* argc */ + 12, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_BRACE), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_exists), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X2E_X20Make_X20sure_X20the_X20value_X20provider_X20or_X20animation_X20is_X20defined_X20before_X20use_X2E), + /* K3 */ be_nested_str_weak(symbol_table), + /* K4 */ be_nested_str_weak(contains), + /* K5 */ be_nested_str_weak(string), + /* K6 */ be_nested_str_weak(value_provider), + /* K7 */ be_nested_str_weak(animation), + /* K8 */ be_nested_str_weak(_X27_X25s_X27_X20in_X20_X25s_X20statement_X20is_X20not_X20a_X20value_X20provider_X20or_X20animation_X2E_X20Only_X20value_X20providers_X20_X28like_X20oscillators_X29_X20and_X20animations_X20can_X20be_X20reset_X2Frestarted_X2E), + /* K9 */ be_nested_str_weak(Could_X20not_X20validate_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X3A_X20_X25s), }), - be_str_weak(expect_left_brace), + be_str_weak(_validate_value_provider_reference), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[97]) { /* code */ + 0xA8020050, // 0000 EXBLK 0 #0052 + 0x8C0C0100, // 0001 GETMET R3 R0 K0 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x740E0009, // 0004 JMPT R3 #000F + 0x8C0C0101, // 0005 GETMET R3 R0 K1 + 0x60140018, // 0006 GETGBL R5 G24 + 0x58180002, // 0007 LDCONST R6 K2 + 0x5C1C0200, // 0008 MOVE R7 R1 + 0x5C200400, // 0009 MOVE R8 R2 + 0x7C140600, // 000A CALL R5 3 + 0x7C0C0400, // 000B CALL R3 2 + 0x500C0000, // 000C LDBOOL R3 0 0 + 0xA8040001, // 000D EXBLK 1 1 + 0x80040600, // 000E RET 1 R3 + 0x880C0103, // 000F GETMBR R3 R0 K3 + 0x8C0C0704, // 0010 GETMET R3 R3 K4 + 0x5C140200, // 0011 MOVE R5 R1 + 0x7C0C0400, // 0012 CALL R3 2 + 0x780E0038, // 0013 JMPF R3 #004D + 0x880C0103, // 0014 GETMBR R3 R0 K3 + 0x940C0601, // 0015 GETIDX R3 R3 R1 + 0x60100004, // 0016 GETGBL R4 G4 + 0x5C140600, // 0017 MOVE R5 R3 + 0x7C100200, // 0018 CALL R4 1 + 0x1C100905, // 0019 EQ R4 R4 K5 + 0x78120007, // 001A JMPF R4 #0023 + 0x1C100706, // 001B EQ R4 R3 K6 + 0x74120001, // 001C JMPT R4 #001F + 0x1C100707, // 001D EQ R4 R3 K7 + 0x78120003, // 001E JMPF R4 #0023 + 0x50100200, // 001F LDBOOL R4 1 0 + 0xA8040001, // 0020 EXBLK 1 1 + 0x80040800, // 0021 RET 1 R4 + 0x70020029, // 0022 JMP #004D + 0x60100004, // 0023 GETGBL R4 G4 + 0x5C140600, // 0024 MOVE R5 R3 + 0x7C100200, // 0025 CALL R4 1 + 0x1C100905, // 0026 EQ R4 R4 K5 + 0x7812000A, // 0027 JMPF R4 #0033 + 0x8C100101, // 0028 GETMET R4 R0 K1 + 0x60180018, // 0029 GETGBL R6 G24 + 0x581C0008, // 002A LDCONST R7 K8 + 0x5C200200, // 002B MOVE R8 R1 + 0x5C240400, // 002C MOVE R9 R2 + 0x7C180600, // 002D CALL R6 3 + 0x7C100400, // 002E CALL R4 2 + 0x50100000, // 002F LDBOOL R4 0 0 + 0xA8040001, // 0030 EXBLK 1 1 + 0x80040800, // 0031 RET 1 R4 + 0x70020019, // 0032 JMP #004D + 0x6010000F, // 0033 GETGBL R4 G15 + 0x5C140600, // 0034 MOVE R5 R3 + 0xB81A0E00, // 0035 GETNGBL R6 K7 + 0x88180D06, // 0036 GETMBR R6 R6 K6 + 0x7C100400, // 0037 CALL R4 2 + 0x74120005, // 0038 JMPT R4 #003F + 0x6010000F, // 0039 GETGBL R4 G15 + 0x5C140600, // 003A MOVE R5 R3 + 0xB81A0E00, // 003B GETNGBL R6 K7 + 0x88180D07, // 003C GETMBR R6 R6 K7 + 0x7C100400, // 003D CALL R4 2 + 0x78120003, // 003E JMPF R4 #0043 + 0x50100200, // 003F LDBOOL R4 1 0 + 0xA8040001, // 0040 EXBLK 1 1 + 0x80040800, // 0041 RET 1 R4 + 0x70020009, // 0042 JMP #004D + 0x8C100101, // 0043 GETMET R4 R0 K1 + 0x60180018, // 0044 GETGBL R6 G24 + 0x581C0008, // 0045 LDCONST R7 K8 + 0x5C200200, // 0046 MOVE R8 R1 + 0x5C240400, // 0047 MOVE R9 R2 + 0x7C180600, // 0048 CALL R6 3 + 0x7C100400, // 0049 CALL R4 2 + 0x50100000, // 004A LDBOOL R4 0 0 + 0xA8040001, // 004B EXBLK 1 1 + 0x80040800, // 004C RET 1 R4 + 0x500C0200, // 004D LDBOOL R3 1 0 + 0xA8040001, // 004E EXBLK 1 1 + 0x80040600, // 004F RET 1 R3 + 0xA8040001, // 0050 EXBLK 1 1 + 0x7002000D, // 0051 JMP #0060 + 0xAC0C0002, // 0052 CATCH R3 0 2 + 0x7002000A, // 0053 JMP #005F + 0x8C140101, // 0054 GETMET R5 R0 K1 + 0x601C0018, // 0055 GETGBL R7 G24 + 0x58200009, // 0056 LDCONST R8 K9 + 0x5C240200, // 0057 MOVE R9 R1 + 0x5C280400, // 0058 MOVE R10 R2 + 0x5C2C0800, // 0059 MOVE R11 R4 + 0x7C1C0800, // 005A CALL R7 4 + 0x7C140400, // 005B CALL R5 2 + 0x50140000, // 005C LDBOOL R5 0 0 + 0x80040A00, // 005D RET 1 R5 + 0x70020000, // 005E JMP #0060 + 0xB0080000, // 005F RAISE 2 R0 R0 + 0x80000000, // 0060 RET 0 }) ) ); @@ -4244,11 +4794,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ /******************************************************************** -** Solidified function: transform_operand_for_closure +** Solidified function: is_computed_expression_string ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transform_operand_for_closure, /* name */ +be_local_closure(class_SimpleDSLTranspiler_is_computed_expression_string, /* name */ be_nested_proto( - 11, /* nstack */ + 12, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4256,92 +4806,166 @@ be_local_closure(class_SimpleDSLTranspiler_transform_operand_for_closure, /* n 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ + ( &(const bvalue[11]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(animation_X2Ecreate_closure_value), + /* K2 */ be_nested_str_weak(_X20_X2B_X20), /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(return_X20_X28), - /* K5 */ be_nested_str_weak(_X20_X20), - /* K6 */ be_nested_str_weak(replace), - /* K7 */ be_nested_str_weak(_X20), - /* K8 */ be_nested_str_weak(_), - /* K9 */ be_nested_str_weak(_X28), - /* K10 */ be_nested_str_weak(animation_X2E), - /* K11 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X29), + /* K4 */ be_nested_str_weak(_X20_X2D_X20), + /* K5 */ be_nested_str_weak(_X20_X2A_X20), + /* K6 */ be_nested_str_weak(_X20_X2F_X20), + /* K7 */ be_nested_str_weak(_X28), + /* K8 */ be_const_int(1), + /* K9 */ be_nested_str_weak(is_identifier_char), + /* K10 */ be_nested_str_weak(_is_simple_function_call), }), - be_str_weak(transform_operand_for_closure), + be_str_weak(is_computed_expression_string), &be_const_str_solidified, - ( &(const binstruction[69]) { /* code */ + ( &(const binstruction[63]) { /* code */ 0xA40A0000, // 0000 IMPORT R2 K0 0x8C0C0501, // 0001 GETMET R3 R2 K1 0x5C140200, // 0002 MOVE R5 R1 0x58180002, // 0003 LDCONST R6 K2 0x7C0C0600, // 0004 CALL R3 3 0x280C0703, // 0005 GE R3 R3 K3 - 0x780E001A, // 0006 JMPF R3 #0022 + 0x740E0012, // 0006 JMPT R3 #001A 0x8C0C0501, // 0007 GETMET R3 R2 K1 0x5C140200, // 0008 MOVE R5 R1 0x58180004, // 0009 LDCONST R6 K4 0x7C0C0600, // 000A CALL R3 3 - 0x54120007, // 000B LDINT R4 8 - 0x000C0604, // 000C ADD R3 R3 R4 - 0x6010000C, // 000D GETGBL R4 G12 + 0x280C0703, // 000B GE R3 R3 K3 + 0x740E000C, // 000C JMPT R3 #001A + 0x8C0C0501, // 000D GETMET R3 R2 K1 0x5C140200, // 000E MOVE R5 R1 - 0x7C100200, // 000F CALL R4 1 - 0x54160004, // 0010 LDINT R5 5 - 0x04100805, // 0011 SUB R4 R4 R5 - 0x40140604, // 0012 CONNECT R5 R3 R4 - 0x94140205, // 0013 GETIDX R5 R1 R5 - 0x8C180501, // 0014 GETMET R6 R2 K1 - 0x5C200A00, // 0015 MOVE R8 R5 - 0x58240005, // 0016 LDCONST R9 K5 - 0x7C180600, // 0017 CALL R6 3 - 0x28180D03, // 0018 GE R6 R6 K3 - 0x781A0006, // 0019 JMPF R6 #0021 - 0x8C180506, // 001A GETMET R6 R2 K6 - 0x5C200A00, // 001B MOVE R8 R5 - 0x58240005, // 001C LDCONST R9 K5 - 0x58280007, // 001D LDCONST R10 K7 - 0x7C180800, // 001E CALL R6 4 - 0x5C140C00, // 001F MOVE R5 R6 - 0x7001FFF2, // 0020 JMP #0014 - 0x80040A00, // 0021 RET 1 R5 - 0x8C0C0501, // 0022 GETMET R3 R2 K1 - 0x5C140200, // 0023 MOVE R5 R1 - 0x58180008, // 0024 LDCONST R6 K8 - 0x7C0C0600, // 0025 CALL R3 3 - 0x280C0703, // 0026 GE R3 R3 K3 - 0x8C100501, // 0027 GETMET R4 R2 K1 - 0x5C180200, // 0028 MOVE R6 R1 - 0x581C0007, // 0029 LDCONST R7 K7 - 0x7C100600, // 002A CALL R4 3 - 0x28100903, // 002B GE R4 R4 K3 - 0x8C140501, // 002C GETMET R5 R2 K1 - 0x5C1C0200, // 002D MOVE R7 R1 - 0x58200009, // 002E LDCONST R8 K9 - 0x7C140600, // 002F CALL R5 3 - 0x28140B03, // 0030 GE R5 R5 K3 - 0x8C180501, // 0031 GETMET R6 R2 K1 - 0x5C200200, // 0032 MOVE R8 R1 - 0x5824000A, // 0033 LDCONST R9 K10 - 0x7C180600, // 0034 CALL R6 3 - 0x28180D03, // 0035 GE R6 R6 K3 - 0x780E000B, // 0036 JMPF R3 #0043 - 0x5C1C0800, // 0037 MOVE R7 R4 - 0x741E0009, // 0038 JMPT R7 #0043 - 0x5C1C0A00, // 0039 MOVE R7 R5 - 0x741E0007, // 003A JMPT R7 #0043 - 0x5C1C0C00, // 003B MOVE R7 R6 - 0x741E0005, // 003C JMPT R7 #0043 - 0x601C0018, // 003D GETGBL R7 G24 - 0x5820000B, // 003E LDCONST R8 K11 - 0x5C240200, // 003F MOVE R9 R1 - 0x7C1C0400, // 0040 CALL R7 2 - 0x80040E00, // 0041 RET 1 R7 - 0x70020000, // 0042 JMP #0044 - 0x80040200, // 0043 RET 1 R1 - 0x80000000, // 0044 RET 0 + 0x58180005, // 000F LDCONST R6 K5 + 0x7C0C0600, // 0010 CALL R3 3 + 0x280C0703, // 0011 GE R3 R3 K3 + 0x740E0006, // 0012 JMPT R3 #001A + 0x8C0C0501, // 0013 GETMET R3 R2 K1 + 0x5C140200, // 0014 MOVE R5 R1 + 0x58180006, // 0015 LDCONST R6 K6 + 0x7C0C0600, // 0016 CALL R3 3 + 0x280C0703, // 0017 GE R3 R3 K3 + 0x740E0000, // 0018 JMPT R3 #001A + 0x500C0001, // 0019 LDBOOL R3 0 1 + 0x500C0200, // 001A LDBOOL R3 1 0 + 0x50100000, // 001B LDBOOL R4 0 0 + 0x8C140501, // 001C GETMET R5 R2 K1 + 0x5C1C0200, // 001D MOVE R7 R1 + 0x58200007, // 001E LDCONST R8 K7 + 0x7C140600, // 001F CALL R5 3 + 0x24180B03, // 0020 GT R6 R5 K3 + 0x781A0017, // 0021 JMPF R6 #003A + 0x04180B08, // 0022 SUB R6 R5 K8 + 0x94180206, // 0023 GETIDX R6 R1 R6 + 0x8C1C0109, // 0024 GETMET R7 R0 K9 + 0x5C240C00, // 0025 MOVE R9 R6 + 0x7C1C0400, // 0026 CALL R7 2 + 0x781E0011, // 0027 JMPF R7 #003A + 0x041C0B08, // 0028 SUB R7 R5 K8 + 0x28200F03, // 0029 GE R8 R7 K3 + 0x78220005, // 002A JMPF R8 #0031 + 0x8C200109, // 002B GETMET R8 R0 K9 + 0x94280207, // 002C GETIDX R10 R1 R7 + 0x7C200400, // 002D CALL R8 2 + 0x78220001, // 002E JMPF R8 #0031 + 0x041C0F08, // 002F SUB R7 R7 K8 + 0x7001FFF7, // 0030 JMP #0029 + 0x001C0F08, // 0031 ADD R7 R7 K8 + 0x04200B08, // 0032 SUB R8 R5 K8 + 0x40200E08, // 0033 CONNECT R8 R7 R8 + 0x94200208, // 0034 GETIDX R8 R1 R8 + 0x8C24010A, // 0035 GETMET R9 R0 K10 + 0x5C2C1000, // 0036 MOVE R11 R8 + 0x7C240400, // 0037 CALL R9 2 + 0x74260000, // 0038 JMPT R9 #003A + 0x50100200, // 0039 LDBOOL R4 1 0 + 0x740E0001, // 003A JMPT R3 #003D + 0x74120000, // 003B JMPT R4 #003D + 0x50180001, // 003C LDBOOL R6 0 1 + 0x50180200, // 003D LDBOOL R6 1 0 + 0x80040C00, // 003E RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: collect_inline_comment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(COMMENT), + /* K5 */ be_nested_str_weak(_X20_X20), + /* K6 */ be_nested_str_weak(value), + /* K7 */ be_nested_str_weak(next), + /* K8 */ be_nested_str_weak(), + }), + be_str_weak(collect_inline_comment), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A000A, // 0004 JMPF R2 #0010 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0004, // 000A JMPF R2 #0010 + 0x88080306, // 000B GETMBR R2 R1 K6 + 0x000A0A02, // 000C ADD R2 K5 R2 + 0x8C0C0107, // 000D GETMET R3 R0 K7 + 0x7C0C0200, // 000E CALL R3 1 + 0x80040400, // 000F RET 1 R2 + 0x80061000, // 0010 RET 1 K8 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: add +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_add, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(output), + /* K1 */ be_nested_str_weak(push), + }), + be_str_weak(add), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 }) ) ); @@ -4578,11 +5202,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ /******************************************************************** -** Solidified function: process_standalone_log +** Solidified function: process_time_value ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_standalone_log, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ be_nested_proto( - 9, /* nstack */ + 8, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4591,63 +5215,93 @@ be_local_closure(class_SimpleDSLTranspiler_process_standalone_log, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_left_paren), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(STRING), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), - /* K9 */ be_nested_str_weak(skip_statement), - /* K10 */ be_nested_str_weak(value), - /* K11 */ be_nested_str_weak(expect_right_paren), - /* K12 */ be_nested_str_weak(collect_inline_comment), - /* K13 */ be_nested_str_weak(process_log_call), - /* K14 */ be_nested_str_weak(standalone), - /* K15 */ be_nested_str_weak(add), + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(TIME), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(convert_time_to_ms), + /* K8 */ be_nested_str_weak(NUMBER), + /* K9 */ be_nested_str_weak(IDENTIFIER), + /* K10 */ be_nested_str_weak(_validate_object_reference), + /* K11 */ be_nested_str_weak(duration), + /* K12 */ be_nested_str_weak(process_primary_expression), + /* K13 */ be_nested_str_weak(time), + /* K14 */ be_nested_str_weak(error), + /* K15 */ be_nested_str_weak(Expected_X20time_X20value), }), - be_str_weak(process_standalone_log), + be_str_weak(process_time_value), &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ + ( &(const binstruction[67]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C040102, // 0004 GETMET R1 R0 K2 - 0x7C040200, // 0005 CALL R1 1 - 0x4C080000, // 0006 LDNIL R2 - 0x1C080202, // 0007 EQ R2 R1 R2 - 0x740A0005, // 0008 JMPT R2 #000F - 0x88080303, // 0009 GETMBR R2 R1 K3 - 0xB80E0800, // 000A GETNGBL R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x880C0706, // 000C GETMBR R3 R3 K6 - 0x20080403, // 000D NE R2 R2 R3 - 0x780A0005, // 000E JMPF R2 #0015 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x58100008, // 0010 LDCONST R4 K8 - 0x7C080400, // 0011 CALL R2 2 - 0x8C080109, // 0012 GETMET R2 R0 K9 - 0x7C080200, // 0013 CALL R2 1 - 0x80000400, // 0014 RET 0 - 0x8808030A, // 0015 GETMBR R2 R1 K10 - 0x8C0C0100, // 0016 GETMET R3 R0 K0 - 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C010B, // 0018 GETMET R3 R0 K11 - 0x7C0C0200, // 0019 CALL R3 1 - 0x8C0C010C, // 001A GETMET R3 R0 K12 - 0x7C0C0200, // 001B CALL R3 1 - 0x8C10010D, // 001C GETMET R4 R0 K13 - 0x5C180400, // 001D MOVE R6 R2 - 0x581C000E, // 001E LDCONST R7 K14 - 0x5C200600, // 001F MOVE R8 R3 - 0x7C100800, // 0020 CALL R4 4 - 0x8C14010F, // 0021 GETMET R5 R0 K15 - 0x5C1C0800, // 0022 MOVE R7 R4 - 0x7C140400, // 0023 CALL R5 2 - 0x80000000, // 0024 RET 0 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A000D, // 0004 JMPF R2 #0013 + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0007, // 000A JMPF R2 #0013 + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x7C0C0200, // 000D CALL R3 1 + 0x8C0C0107, // 000E GETMET R3 R0 K7 + 0x5C140400, // 000F MOVE R5 R2 + 0x7C0C0400, // 0010 CALL R3 2 + 0x80040600, // 0011 RET 1 R3 + 0x7002002E, // 0012 JMP #0042 + 0x4C080000, // 0013 LDNIL R2 + 0x20080202, // 0014 NE R2 R1 R2 + 0x780A0011, // 0015 JMPF R2 #0028 + 0x88080301, // 0016 GETMBR R2 R1 K1 + 0xB80E0400, // 0017 GETNGBL R3 K2 + 0x880C0703, // 0018 GETMBR R3 R3 K3 + 0x880C0708, // 0019 GETMBR R3 R3 K8 + 0x1C080403, // 001A EQ R2 R2 R3 + 0x780A000B, // 001B JMPF R2 #0028 + 0x88080305, // 001C GETMBR R2 R1 K5 + 0x8C0C0106, // 001D GETMET R3 R0 K6 + 0x7C0C0200, // 001E CALL R3 1 + 0x600C0009, // 001F GETGBL R3 G9 + 0x6010000A, // 0020 GETGBL R4 G10 + 0x5C140400, // 0021 MOVE R5 R2 + 0x7C100200, // 0022 CALL R4 1 + 0x7C0C0200, // 0023 CALL R3 1 + 0x541203E7, // 0024 LDINT R4 1000 + 0x080C0604, // 0025 MUL R3 R3 R4 + 0x80040600, // 0026 RET 1 R3 + 0x70020019, // 0027 JMP #0042 + 0x4C080000, // 0028 LDNIL R2 + 0x20080202, // 0029 NE R2 R1 R2 + 0x780A0011, // 002A JMPF R2 #003D + 0x88080301, // 002B GETMBR R2 R1 K1 + 0xB80E0400, // 002C GETNGBL R3 K2 + 0x880C0703, // 002D GETMBR R3 R3 K3 + 0x880C0709, // 002E GETMBR R3 R3 K9 + 0x1C080403, // 002F EQ R2 R2 R3 + 0x780A000B, // 0030 JMPF R2 #003D + 0x88080305, // 0031 GETMBR R2 R1 K5 + 0x8C0C010A, // 0032 GETMET R3 R0 K10 + 0x5C140400, // 0033 MOVE R5 R2 + 0x5818000B, // 0034 LDCONST R6 K11 + 0x7C0C0600, // 0035 CALL R3 3 + 0x8C0C010C, // 0036 GETMET R3 R0 K12 + 0x5814000D, // 0037 LDCONST R5 K13 + 0x50180200, // 0038 LDBOOL R6 1 0 + 0x501C0000, // 0039 LDBOOL R7 0 0 + 0x7C0C0800, // 003A CALL R3 4 + 0x80040600, // 003B RET 1 R3 + 0x70020004, // 003C JMP #0042 + 0x8C08010E, // 003D GETMET R2 R0 K14 + 0x5810000F, // 003E LDCONST R4 K15 + 0x7C080400, // 003F CALL R2 2 + 0x540A03E7, // 0040 LDINT R2 1000 + 0x80040400, // 0041 RET 1 R2 + 0x80000000, // 0042 RET 0 }) ) ); @@ -4655,12 +5309,12 @@ be_local_closure(class_SimpleDSLTranspiler_process_standalone_log, /* name */ /******************************************************************** -** Solidified function: process_unary_expression +** Solidified function: _process_user_function_call ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ +be_local_closure(class_SimpleDSLTranspiler__process_user_function_call, /* name */ be_nested_proto( 8, /* nstack */ - 3, /* argc */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -4669,66 +5323,58 @@ be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name * 1, /* has constants */ ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20value), - /* K3 */ be_nested_str_weak(nil), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(process_unary_expression), - /* K10 */ be_nested_str_weak(_X28_X2D_X25s_X29), - /* K11 */ be_nested_str_weak(PLUS), - /* K12 */ be_nested_str_weak(process_primary_expression), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_PAREN), + /* K5 */ be_nested_str_weak(process_function_arguments), + /* K6 */ be_nested_str_weak(), + /* K7 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), + /* K8 */ be_nested_str_weak(self_X2Eengine), + /* K9 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), + /* K10 */ be_nested_str_weak(error), + /* K11 */ be_nested_str_weak(User_X20functions_X20must_X20be_X20called_X20with_X20parentheses_X3A_X20user_X2Efunction_name_X28_X29), + /* K12 */ be_nested_str_weak(nil), }), - be_str_weak(process_unary_expression), + be_str_weak(_process_user_function_call), &be_const_str_solidified, - ( &(const binstruction[44]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x4C100000, // 0002 LDNIL R4 - 0x1C100604, // 0003 EQ R4 R3 R4 - 0x78120003, // 0004 JMPF R4 #0009 - 0x8C100101, // 0005 GETMET R4 R0 K1 - 0x58180002, // 0006 LDCONST R6 K2 - 0x7C100400, // 0007 CALL R4 2 - 0x80060600, // 0008 RET 1 K3 - 0x88100704, // 0009 GETMBR R4 R3 K4 - 0xB8160A00, // 000A GETNGBL R5 K5 - 0x88140B06, // 000B GETMBR R5 R5 K6 - 0x88140B07, // 000C GETMBR R5 R5 K7 - 0x1C100805, // 000D EQ R4 R4 R5 - 0x7812000A, // 000E JMPF R4 #001A - 0x8C100108, // 000F GETMET R4 R0 K8 - 0x7C100200, // 0010 CALL R4 1 - 0x8C100109, // 0011 GETMET R4 R0 K9 - 0x5C180200, // 0012 MOVE R6 R1 - 0x501C0000, // 0013 LDBOOL R7 0 0 - 0x7C100600, // 0014 CALL R4 3 - 0x60140018, // 0015 GETGBL R5 G24 - 0x5818000A, // 0016 LDCONST R6 K10 - 0x5C1C0800, // 0017 MOVE R7 R4 - 0x7C140400, // 0018 CALL R5 2 - 0x80040A00, // 0019 RET 1 R5 - 0x88100704, // 001A GETMBR R4 R3 K4 - 0xB8160A00, // 001B GETNGBL R5 K5 - 0x88140B06, // 001C GETMBR R5 R5 K6 - 0x88140B0B, // 001D GETMBR R5 R5 K11 - 0x1C100805, // 001E EQ R4 R4 R5 - 0x78120006, // 001F JMPF R4 #0027 - 0x8C100108, // 0020 GETMET R4 R0 K8 - 0x7C100200, // 0021 CALL R4 1 - 0x8C100109, // 0022 GETMET R4 R0 K9 - 0x5C180200, // 0023 MOVE R6 R1 - 0x501C0000, // 0024 LDBOOL R7 0 0 - 0x7C100600, // 0025 CALL R4 3 - 0x80040800, // 0026 RET 1 R4 - 0x8C10010C, // 0027 GETMET R4 R0 K12 - 0x5C180200, // 0028 MOVE R6 R1 - 0x5C1C0400, // 0029 MOVE R7 R2 - 0x7C100600, // 002A CALL R4 3 - 0x80040800, // 002B RET 1 R4 + ( &(const binstruction[36]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0019, // 0004 JMPF R2 #001F + 0x8C080100, // 0005 GETMET R2 R0 K0 + 0x7C080200, // 0006 CALL R2 1 + 0x88080501, // 0007 GETMBR R2 R2 K1 + 0xB80E0400, // 0008 GETNGBL R3 K2 + 0x880C0703, // 0009 GETMBR R3 R3 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x1C080403, // 000B EQ R2 R2 R3 + 0x780A0011, // 000C JMPF R2 #001F + 0x8C080105, // 000D GETMET R2 R0 K5 + 0x50100200, // 000E LDBOOL R4 1 0 + 0x7C080400, // 000F CALL R2 2 + 0x200C0506, // 0010 NE R3 R2 K6 + 0x780E0004, // 0011 JMPF R3 #0017 + 0x600C0018, // 0012 GETGBL R3 G24 + 0x58100007, // 0013 LDCONST R4 K7 + 0x5C140400, // 0014 MOVE R5 R2 + 0x7C0C0400, // 0015 CALL R3 2 + 0x70020000, // 0016 JMP #0018 + 0x580C0008, // 0017 LDCONST R3 K8 + 0x60100018, // 0018 GETGBL R4 G24 + 0x58140009, // 0019 LDCONST R5 K9 + 0x5C180200, // 001A MOVE R6 R1 + 0x5C1C0600, // 001B MOVE R7 R3 + 0x7C100600, // 001C CALL R4 3 + 0x80040800, // 001D RET 1 R4 + 0x70020003, // 001E JMP #0023 + 0x8C08010A, // 001F GETMET R2 R0 K10 + 0x5810000B, // 0020 LDCONST R4 K11 + 0x7C080400, // 0021 CALL R2 2 + 0x80061800, // 0022 RET 1 K12 + 0x80000000, // 0023 RET 0 }) ) ); @@ -4736,11 +5382,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name * /******************************************************************** -** Solidified function: is_math_method +** Solidified function: _validate_animation_factory_creates_animation ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_math_method, /* name */ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* name */ be_nested_proto( - 11, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -4748,73 +5394,56 @@ be_local_closure(class_SimpleDSLTranspiler_is_math_method, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_validate_factory_function), /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(closure_value), - /* K3 */ be_nested_str_weak(members), - /* K4 */ be_nested_str_weak(get), - /* K5 */ be_nested_str_weak(ismethod), - /* K6 */ be_nested_str_weak(function), - /* K7 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(is_math_method), + be_str_weak(_validate_animation_factory_creates_animation), &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA802002C, // 0001 EXBLK 0 #002F - 0xB80E0200, // 0002 GETNGBL R3 K1 - 0x880C0702, // 0003 GETMBR R3 R3 K2 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100604, // 0005 EQ R4 R3 R4 - 0x78120002, // 0006 JMPF R4 #000A - 0x50100000, // 0007 LDBOOL R4 0 0 - 0xA8040001, // 0008 EXBLK 1 1 - 0x80040800, // 0009 RET 1 R4 - 0x8C100503, // 000A GETMET R4 R2 K3 - 0x5C180600, // 000B MOVE R6 R3 - 0x7C100400, // 000C CALL R4 2 - 0x60140010, // 000D GETGBL R5 G16 - 0x5C180800, // 000E MOVE R6 R4 - 0x7C140200, // 000F CALL R5 1 - 0xA8020015, // 0010 EXBLK 0 #0027 - 0x5C180A00, // 0011 MOVE R6 R5 - 0x7C180000, // 0012 CALL R6 0 - 0x1C1C0C01, // 0013 EQ R7 R6 R1 - 0x781E0010, // 0014 JMPF R7 #0026 - 0x8C1C0504, // 0015 GETMET R7 R2 K4 - 0x5C240600, // 0016 MOVE R9 R3 - 0x5C280200, // 0017 MOVE R10 R1 - 0x7C1C0600, // 0018 CALL R7 3 - 0x8C200505, // 0019 GETMET R8 R2 K5 - 0x5C280E00, // 001A MOVE R10 R7 - 0x7C200400, // 001B CALL R8 2 - 0x74220005, // 001C JMPT R8 #0023 - 0x60200004, // 001D GETGBL R8 G4 - 0x5C240E00, // 001E MOVE R9 R7 - 0x7C200200, // 001F CALL R8 1 - 0x1C201106, // 0020 EQ R8 R8 K6 - 0x74220000, // 0021 JMPT R8 #0023 - 0x50200001, // 0022 LDBOOL R8 0 1 - 0x50200200, // 0023 LDBOOL R8 1 0 - 0xA8040002, // 0024 EXBLK 1 2 - 0x80041000, // 0025 RET 1 R8 - 0x7001FFE9, // 0026 JMP #0011 - 0x58140007, // 0027 LDCONST R5 K7 - 0xAC140200, // 0028 CATCH R5 1 0 - 0xB0080000, // 0029 RAISE 2 R0 R0 - 0x50140000, // 002A LDBOOL R5 0 0 - 0xA8040001, // 002B EXBLK 1 1 - 0x80040A00, // 002C RET 1 R5 - 0xA8040001, // 002D EXBLK 1 1 - 0x70020005, // 002E JMP #0035 - 0xAC0C0002, // 002F CATCH R3 0 2 - 0x70020002, // 0030 JMP #0034 - 0x50140000, // 0031 LDBOOL R5 0 0 - 0x80040A00, // 0032 RET 1 R5 - 0x70020000, // 0033 JMP #0035 - 0xB0080000, // 0034 RAISE 2 R0 R0 - 0x80000000, // 0035 RET 0 + ( &(const binstruction[ 6]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0xB8160200, // 0002 GETNGBL R5 K1 + 0x88140B01, // 0003 GETMBR R5 R5 K1 + 0x7C080600, // 0004 CALL R2 3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_animation_factory_exists +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(is_math_method), + /* K1 */ be_nested_str_weak(_validate_factory_function), + }), + be_str_weak(_validate_animation_factory_exists), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x780A0001, // 0003 JMPF R2 #0006 + 0x50080200, // 0004 LDBOOL R2 1 0 + 0x80040400, // 0005 RET 1 R2 + 0x8C080101, // 0006 GETMET R2 R0 K1 + 0x5C100200, // 0007 MOVE R4 R1 + 0x4C140000, // 0008 LDNIL R5 + 0x7C080600, // 0009 CALL R2 3 + 0x80040400, // 000A RET 1 R2 }) ) ); @@ -4973,368 +5602,9 @@ be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ /******************************************************************** -** Solidified function: process_wait_statement_fluent +** Solidified function: expect_right_bracket ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(process_time_value), - /* K2 */ be_nested_str_weak(collect_inline_comment), - /* K3 */ be_nested_str_weak(add), - /* K4 */ be_nested_str_weak(_X25s_X2Epush_wait_step_X28_X25s_X29_X25s), - /* K5 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_wait_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x7C080200, // 0005 CALL R2 1 - 0x8C0C0103, // 0006 GETMET R3 R0 K3 - 0x60140018, // 0007 GETGBL R5 G24 - 0x58180004, // 0008 LDCONST R6 K4 - 0x8C1C0105, // 0009 GETMET R7 R0 K5 - 0x7C1C0200, // 000A CALL R7 1 - 0x5C200200, // 000B MOVE R8 R1 - 0x5C240400, // 000C MOVE R9 R2 - 0x7C140800, // 000D CALL R5 4 - 0x7C0C0400, // 000E CALL R3 2 - 0x80000000, // 000F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_color_provider_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), - /* K2 */ be_nested_str_weak(color_provider), - }), - be_str_weak(_validate_color_provider_factory_exists), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0xB8160200, // 0002 GETNGBL R5 K1 - 0x88140B02, // 0003 GETMBR R5 R5 K2 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _is_simple_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__is_simple_function_call, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(strip_length), - /* K1 */ be_nested_str_weak(static_value), - /* K2 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(_is_simple_function_call), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60080012, // 0000 GETGBL R2 G18 - 0x7C080000, // 0001 CALL R2 0 - 0x400C0500, // 0002 CONNECT R3 R2 K0 - 0x400C0501, // 0003 CONNECT R3 R2 K1 - 0x600C0010, // 0004 GETGBL R3 G16 - 0x5C100400, // 0005 MOVE R4 R2 - 0x7C0C0200, // 0006 CALL R3 1 - 0xA8020007, // 0007 EXBLK 0 #0010 - 0x5C100600, // 0008 MOVE R4 R3 - 0x7C100000, // 0009 CALL R4 0 - 0x1C140204, // 000A EQ R5 R1 R4 - 0x78160002, // 000B JMPF R5 #000F - 0x50140200, // 000C LDBOOL R5 1 0 - 0xA8040001, // 000D EXBLK 1 1 - 0x80040A00, // 000E RET 1 R5 - 0x7001FFF7, // 000F JMP #0008 - 0x580C0002, // 0010 LDCONST R3 K2 - 0xAC0C0200, // 0011 CATCH R3 1 0 - 0xB0080000, // 0012 RAISE 2 R0 R0 - 0x500C0000, // 0013 LDBOOL R3 0 0 - 0x80040600, // 0014 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_indent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_indent, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(_X20_X20), - /* K1 */ be_nested_str_weak(indent_level), - /* K2 */ be_const_int(1), - }), - be_str_weak(get_indent), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040101, // 0000 GETMBR R1 R0 K1 - 0x00040302, // 0001 ADD R1 R1 K2 - 0x08060001, // 0002 MUL R1 K0 R1 - 0x80040200, // 0003 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: current -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_current, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_nested_str_weak(tokens), - }), - be_str_weak(current), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14040202, // 0004 LT R1 R1 R2 - 0x78060003, // 0005 JMPF R1 #000A - 0x88040101, // 0006 GETMBR R1 R0 K1 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x94040202, // 0008 GETIDX R1 R1 R2 - 0x70020000, // 0009 JMP #000B - 0x4C040000, // 000A LDNIL R1 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_template_function -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_template_function, /* name */ - be_nested_proto( - 17, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[23]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(_X2C_X20_X25s_), - /* K3 */ be_nested_str_weak(stop_iteration), - /* K4 */ be_nested_str_weak(add), - /* K5 */ be_nested_str_weak(_X23_X20Template_X20function_X3A_X20_X25s), - /* K6 */ be_nested_str_weak(def_X20_X25s_template_X28_X25s_X29), - /* K7 */ be_nested_str_weak(animation_dsl), - /* K8 */ be_nested_str_weak(SimpleDSLTranspiler), - /* K9 */ be_nested_str_weak(symbol_table), - /* K10 */ be_nested_str_weak(strip_initialized), - /* K11 */ be_nested_str_weak(parameter), - /* K12 */ be_nested_str_weak(transpile_template_body), - /* K13 */ be_nested_str_weak(split), - /* K14 */ be_nested_str_weak(_X0A), - /* K15 */ be_const_int(0), - /* K16 */ be_nested_str_weak(_X20_X20_X25s), - /* K17 */ be_nested_str_weak(errors), - /* K18 */ be_nested_str_weak(error), - /* K19 */ be_nested_str_weak(Template_X20_X27_X25s_X27_X20body_X20error_X3A_X20_X25s), - /* K20 */ be_nested_str_weak(end), - /* K21 */ be_nested_str_weak(), - /* K22 */ be_nested_str_weak(animation_X2Eregister_user_function_X28_X27_X25s_X27_X2C_X20_X25s_template_X29), - }), - be_str_weak(generate_template_function), - &be_const_str_solidified, - ( &(const binstruction[116]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x58180001, // 0001 LDCONST R6 K1 - 0x601C0010, // 0002 GETGBL R7 G16 - 0x5C200400, // 0003 MOVE R8 R2 - 0x7C1C0200, // 0004 CALL R7 1 - 0xA8020007, // 0005 EXBLK 0 #000E - 0x5C200E00, // 0006 MOVE R8 R7 - 0x7C200000, // 0007 CALL R8 0 - 0x60240018, // 0008 GETGBL R9 G24 - 0x58280002, // 0009 LDCONST R10 K2 - 0x5C2C1000, // 000A MOVE R11 R8 - 0x7C240400, // 000B CALL R9 2 - 0x00180C09, // 000C ADD R6 R6 R9 - 0x7001FFF7, // 000D JMP #0006 - 0x581C0003, // 000E LDCONST R7 K3 - 0xAC1C0200, // 000F CATCH R7 1 0 - 0xB0080000, // 0010 RAISE 2 R0 R0 - 0x8C1C0104, // 0011 GETMET R7 R0 K4 - 0x60240018, // 0012 GETGBL R9 G24 - 0x58280005, // 0013 LDCONST R10 K5 - 0x5C2C0200, // 0014 MOVE R11 R1 - 0x7C240400, // 0015 CALL R9 2 - 0x7C1C0400, // 0016 CALL R7 2 - 0x8C1C0104, // 0017 GETMET R7 R0 K4 - 0x60240018, // 0018 GETGBL R9 G24 - 0x58280006, // 0019 LDCONST R10 K6 - 0x5C2C0200, // 001A MOVE R11 R1 - 0x5C300C00, // 001B MOVE R12 R6 - 0x7C240600, // 001C CALL R9 3 - 0x7C1C0400, // 001D CALL R7 2 - 0xB81E0E00, // 001E GETNGBL R7 K7 - 0x8C1C0F08, // 001F GETMET R7 R7 K8 - 0x5C240800, // 0020 MOVE R9 R4 - 0x7C1C0400, // 0021 CALL R7 2 - 0x60200013, // 0022 GETGBL R8 G19 - 0x7C200000, // 0023 CALL R8 0 - 0x901E1208, // 0024 SETMBR R7 K9 R8 - 0x50200200, // 0025 LDBOOL R8 1 0 - 0x901E1408, // 0026 SETMBR R7 K10 R8 - 0x60200010, // 0027 GETGBL R8 G16 - 0x5C240400, // 0028 MOVE R9 R2 - 0x7C200200, // 0029 CALL R8 1 - 0xA8020004, // 002A EXBLK 0 #0030 - 0x5C241000, // 002B MOVE R9 R8 - 0x7C240000, // 002C CALL R9 0 - 0x88280F09, // 002D GETMBR R10 R7 K9 - 0x9828130B, // 002E SETIDX R10 R9 K11 - 0x7001FFFA, // 002F JMP #002B - 0x58200003, // 0030 LDCONST R8 K3 - 0xAC200200, // 0031 CATCH R8 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x8C200F0C, // 0033 GETMET R8 R7 K12 - 0x7C200200, // 0034 CALL R8 1 - 0x4C240000, // 0035 LDNIL R9 - 0x20241009, // 0036 NE R9 R8 R9 - 0x78260019, // 0037 JMPF R9 #0052 - 0x8C240B0D, // 0038 GETMET R9 R5 K13 - 0x5C2C1000, // 0039 MOVE R11 R8 - 0x5830000E, // 003A LDCONST R12 K14 - 0x7C240600, // 003B CALL R9 3 - 0x60280010, // 003C GETGBL R10 G16 - 0x5C2C1200, // 003D MOVE R11 R9 - 0x7C280200, // 003E CALL R10 1 - 0xA802000D, // 003F EXBLK 0 #004E - 0x5C2C1400, // 0040 MOVE R11 R10 - 0x7C2C0000, // 0041 CALL R11 0 - 0x6030000C, // 0042 GETGBL R12 G12 - 0x5C341600, // 0043 MOVE R13 R11 - 0x7C300200, // 0044 CALL R12 1 - 0x2430190F, // 0045 GT R12 R12 K15 - 0x78320005, // 0046 JMPF R12 #004D - 0x8C300104, // 0047 GETMET R12 R0 K4 - 0x60380018, // 0048 GETGBL R14 G24 - 0x583C0010, // 0049 LDCONST R15 K16 - 0x5C401600, // 004A MOVE R16 R11 - 0x7C380400, // 004B CALL R14 2 - 0x7C300400, // 004C CALL R12 2 - 0x7001FFF1, // 004D JMP #0040 - 0x58280003, // 004E LDCONST R10 K3 - 0xAC280200, // 004F CATCH R10 1 0 - 0xB0080000, // 0050 RAISE 2 R0 R0 - 0x70020010, // 0051 JMP #0063 - 0x60240010, // 0052 GETGBL R9 G16 - 0x88280F11, // 0053 GETMBR R10 R7 K17 - 0x7C240200, // 0054 CALL R9 1 - 0xA8020009, // 0055 EXBLK 0 #0060 - 0x5C281200, // 0056 MOVE R10 R9 - 0x7C280000, // 0057 CALL R10 0 - 0x8C2C0112, // 0058 GETMET R11 R0 K18 - 0x60340018, // 0059 GETGBL R13 G24 - 0x58380013, // 005A LDCONST R14 K19 - 0x5C3C0200, // 005B MOVE R15 R1 - 0x5C401400, // 005C MOVE R16 R10 - 0x7C340600, // 005D CALL R13 3 - 0x7C2C0400, // 005E CALL R11 2 - 0x7001FFF5, // 005F JMP #0056 - 0x58240003, // 0060 LDCONST R9 K3 - 0xAC240200, // 0061 CATCH R9 1 0 - 0xB0080000, // 0062 RAISE 2 R0 R0 - 0x8C240104, // 0063 GETMET R9 R0 K4 - 0x582C0014, // 0064 LDCONST R11 K20 - 0x7C240400, // 0065 CALL R9 2 - 0x8C240104, // 0066 GETMET R9 R0 K4 - 0x582C0015, // 0067 LDCONST R11 K21 - 0x7C240400, // 0068 CALL R9 2 - 0x8C240104, // 0069 GETMET R9 R0 K4 - 0x602C0018, // 006A GETGBL R11 G24 - 0x58300016, // 006B LDCONST R12 K22 - 0x5C340200, // 006C MOVE R13 R1 - 0x5C380200, // 006D MOVE R14 R1 - 0x7C2C0600, // 006E CALL R11 3 - 0x7C240400, // 006F CALL R9 2 - 0x8C240104, // 0070 GETMET R9 R0 K4 - 0x582C0015, // 0071 LDCONST R11 K21 - 0x7C240400, // 0072 CALL R9 2 - 0x80000000, // 0073 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -5349,12 +5619,12 @@ be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ /* K1 */ be_nested_str_weak(type), /* K2 */ be_nested_str_weak(animation_dsl), /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_BRACKET), + /* K4 */ be_nested_str_weak(RIGHT_BRACKET), /* K5 */ be_nested_str_weak(next), /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X5B_X27), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), }), - be_str_weak(expect_left_bracket), + be_str_weak(expect_right_bracket), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 @@ -5381,6 +5651,522 @@ be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: validate_symbol_reference +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_validate_symbol_reference, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(symbol_exists), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X2E_X20Make_X20sure_X20the_X20object_X20is_X20defined_X20before_X20use_X2E), + }), + be_str_weak(validate_symbol_reference), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x740E0008, // 0003 JMPT R3 #000D + 0x8C0C0101, // 0004 GETMET R3 R0 K1 + 0x60140018, // 0005 GETGBL R5 G24 + 0x58180002, // 0006 LDCONST R6 K2 + 0x5C1C0200, // 0007 MOVE R7 R1 + 0x5C200400, // 0008 MOVE R8 R2 + 0x7C140600, // 0009 CALL R5 3 + 0x7C0C0400, // 000A CALL R3 2 + 0x500C0000, // 000B LDBOOL R3 0 0 + 0x80040600, // 000C RET 1 R3 + 0x500C0200, // 000D LDBOOL R3 1 0 + 0x80040600, // 000E RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_keyword +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_keyword, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(KEYWORD), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20_X27_X25s_X27), + }), + be_str_weak(expect_keyword), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x200C0403, // 0003 NE R3 R2 R3 + 0x780E000B, // 0004 JMPF R3 #0011 + 0x880C0501, // 0005 GETMBR R3 R2 K1 + 0xB8120400, // 0006 GETNGBL R4 K2 + 0x88100903, // 0007 GETMBR R4 R4 K3 + 0x88100904, // 0008 GETMBR R4 R4 K4 + 0x1C0C0604, // 0009 EQ R3 R3 R4 + 0x780E0005, // 000A JMPF R3 #0011 + 0x880C0505, // 000B GETMBR R3 R2 K5 + 0x1C0C0601, // 000C EQ R3 R3 R1 + 0x780E0002, // 000D JMPF R3 #0011 + 0x8C0C0106, // 000E GETMET R3 R0 K6 + 0x7C0C0200, // 000F CALL R3 1 + 0x70020005, // 0010 JMP #0017 + 0x8C0C0107, // 0011 GETMET R3 R0 K7 + 0x60140018, // 0012 GETGBL R5 G24 + 0x58180008, // 0013 LDCONST R6 K8 + 0x5C1C0200, // 0014 MOVE R7 R1 + 0x7C140400, // 0015 CALL R5 2 + 0x7C0C0400, // 0016 CALL R3 2 + 0x80000000, // 0017 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_whitespace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(NEWLINE), + /* K6 */ be_nested_str_weak(COMMENT), + /* K7 */ be_nested_str_weak(next), + }), + be_str_weak(skip_whitespace), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060015, // 0002 JMPT R1 #0019 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x4C080000, // 0005 LDNIL R2 + 0x20080202, // 0006 NE R2 R1 R2 + 0x780A000E, // 0007 JMPF R2 #0017 + 0x88080302, // 0008 GETMBR R2 R1 K2 + 0xB80E0600, // 0009 GETNGBL R3 K3 + 0x880C0704, // 000A GETMBR R3 R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x1C080403, // 000C EQ R2 R2 R3 + 0x740A0005, // 000D JMPT R2 #0014 + 0x88080302, // 000E GETMBR R2 R1 K2 + 0xB80E0600, // 000F GETNGBL R3 K3 + 0x880C0704, // 0010 GETMBR R3 R3 K4 + 0x880C0706, // 0011 GETMBR R3 R3 K6 + 0x1C080403, // 0012 EQ R2 R2 R3 + 0x780A0002, // 0013 JMPF R2 #0017 + 0x8C080107, // 0014 GETMET R2 R0 K7 + 0x7C080200, // 0015 CALL R2 1 + 0x70020000, // 0016 JMP #0018 + 0x70020000, // 0017 JMP #0019 + 0x7001FFE6, // 0018 JMP #0000 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_BRACKET), + }), + be_str_weak(check_right_bracket), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0005, // 0004 JMPF R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0000, // 000A JMPT R2 #000C + 0x50080001, // 000B LDBOOL R2 0 1 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x80040400, // 000D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_template +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_template, /* name */ + be_nested_proto( + 12, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(template), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_left_brace), + /* K6 */ be_nested_str_weak(at_end), + /* K7 */ be_nested_str_weak(check_right_brace), + /* K8 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K9 */ be_nested_str_weak(current), + /* K10 */ be_nested_str_weak(type), + /* K11 */ be_nested_str_weak(animation_dsl), + /* K12 */ be_nested_str_weak(Token), + /* K13 */ be_nested_str_weak(KEYWORD), + /* K14 */ be_nested_str_weak(value), + /* K15 */ be_nested_str_weak(param), + /* K16 */ be_nested_str_weak(push), + /* K17 */ be_nested_str_weak(NEWLINE), + /* K18 */ be_const_int(0), + /* K19 */ be_nested_str_weak(EOF), + /* K20 */ be_nested_str_weak(LEFT_BRACE), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_str_weak(RIGHT_BRACE), + /* K23 */ be_nested_str_weak(expect_right_brace), + /* K24 */ be_nested_str_weak(template_definitions), + /* K25 */ be_nested_str_weak(params), + /* K26 */ be_nested_str_weak(param_types), + /* K27 */ be_nested_str_weak(body_tokens), + /* K28 */ be_nested_str_weak(generate_template_function), + /* K29 */ be_nested_str_weak(symbol_table), + }), + be_str_weak(process_template), + &be_const_str_solidified, + ( &(const binstruction[165]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x60080012, // 000E GETGBL R2 G18 + 0x7C080000, // 000F CALL R2 0 + 0x600C0013, // 0010 GETGBL R3 G19 + 0x7C0C0000, // 0011 CALL R3 0 + 0x8C100106, // 0012 GETMET R4 R0 K6 + 0x7C100200, // 0013 CALL R4 1 + 0x7412004B, // 0014 JMPT R4 #0061 + 0x8C100107, // 0015 GETMET R4 R0 K7 + 0x7C100200, // 0016 CALL R4 1 + 0x74120048, // 0017 JMPT R4 #0061 + 0x8C100108, // 0018 GETMET R4 R0 K8 + 0x7C100200, // 0019 CALL R4 1 + 0x8C100107, // 001A GETMET R4 R0 K7 + 0x7C100200, // 001B CALL R4 1 + 0x78120000, // 001C JMPF R4 #001E + 0x70020042, // 001D JMP #0061 + 0x8C100109, // 001E GETMET R4 R0 K9 + 0x7C100200, // 001F CALL R4 1 + 0x4C140000, // 0020 LDNIL R5 + 0x20140805, // 0021 NE R5 R4 R5 + 0x7816003B, // 0022 JMPF R5 #005F + 0x8814090A, // 0023 GETMBR R5 R4 K10 + 0xB81A1600, // 0024 GETNGBL R6 K11 + 0x88180D0C, // 0025 GETMBR R6 R6 K12 + 0x88180D0D, // 0026 GETMBR R6 R6 K13 + 0x1C140A06, // 0027 EQ R5 R5 R6 + 0x78160035, // 0028 JMPF R5 #005F + 0x8814090E, // 0029 GETMBR R5 R4 K14 + 0x1C140B0F, // 002A EQ R5 R5 K15 + 0x78160032, // 002B JMPF R5 #005F + 0x8C140100, // 002C GETMET R5 R0 K0 + 0x7C140200, // 002D CALL R5 1 + 0x8C140101, // 002E GETMET R5 R0 K1 + 0x7C140200, // 002F CALL R5 1 + 0x4C180000, // 0030 LDNIL R6 + 0x8C1C0109, // 0031 GETMET R7 R0 K9 + 0x7C1C0200, // 0032 CALL R7 1 + 0x4C200000, // 0033 LDNIL R8 + 0x201C0E08, // 0034 NE R7 R7 R8 + 0x781E0011, // 0035 JMPF R7 #0048 + 0x8C1C0109, // 0036 GETMET R7 R0 K9 + 0x7C1C0200, // 0037 CALL R7 1 + 0x881C0F0A, // 0038 GETMBR R7 R7 K10 + 0xB8221600, // 0039 GETNGBL R8 K11 + 0x8820110C, // 003A GETMBR R8 R8 K12 + 0x8820110D, // 003B GETMBR R8 R8 K13 + 0x1C1C0E08, // 003C EQ R7 R7 R8 + 0x781E0009, // 003D JMPF R7 #0048 + 0x8C1C0109, // 003E GETMET R7 R0 K9 + 0x7C1C0200, // 003F CALL R7 1 + 0x881C0F0E, // 0040 GETMBR R7 R7 K14 + 0x1C1C0F0A, // 0041 EQ R7 R7 K10 + 0x781E0004, // 0042 JMPF R7 #0048 + 0x8C1C0100, // 0043 GETMET R7 R0 K0 + 0x7C1C0200, // 0044 CALL R7 1 + 0x8C1C0101, // 0045 GETMET R7 R0 K1 + 0x7C1C0200, // 0046 CALL R7 1 + 0x5C180E00, // 0047 MOVE R6 R7 + 0x8C1C0510, // 0048 GETMET R7 R2 K16 + 0x5C240A00, // 0049 MOVE R9 R5 + 0x7C1C0400, // 004A CALL R7 2 + 0x4C1C0000, // 004B LDNIL R7 + 0x201C0C07, // 004C NE R7 R6 R7 + 0x781E0000, // 004D JMPF R7 #004F + 0x980C0A06, // 004E SETIDX R3 R5 R6 + 0x8C1C0109, // 004F GETMET R7 R0 K9 + 0x7C1C0200, // 0050 CALL R7 1 + 0x4C200000, // 0051 LDNIL R8 + 0x201C0E08, // 0052 NE R7 R7 R8 + 0x781E0009, // 0053 JMPF R7 #005E + 0x8C1C0109, // 0054 GETMET R7 R0 K9 + 0x7C1C0200, // 0055 CALL R7 1 + 0x881C0F0A, // 0056 GETMBR R7 R7 K10 + 0xB8221600, // 0057 GETNGBL R8 K11 + 0x8820110C, // 0058 GETMBR R8 R8 K12 + 0x88201111, // 0059 GETMBR R8 R8 K17 + 0x1C1C0E08, // 005A EQ R7 R7 R8 + 0x781E0001, // 005B JMPF R7 #005E + 0x8C1C0100, // 005C GETMET R7 R0 K0 + 0x7C1C0200, // 005D CALL R7 1 + 0x70020000, // 005E JMP #0060 + 0x70020000, // 005F JMP #0061 + 0x7001FFB0, // 0060 JMP #0012 + 0x60100012, // 0061 GETGBL R4 G18 + 0x7C100000, // 0062 CALL R4 0 + 0x58140012, // 0063 LDCONST R5 K18 + 0x8C180106, // 0064 GETMET R6 R0 K6 + 0x7C180200, // 0065 CALL R6 1 + 0x741A002B, // 0066 JMPT R6 #0093 + 0x8C180109, // 0067 GETMET R6 R0 K9 + 0x7C180200, // 0068 CALL R6 1 + 0x4C1C0000, // 0069 LDNIL R7 + 0x1C1C0C07, // 006A EQ R7 R6 R7 + 0x741E0005, // 006B JMPT R7 #0072 + 0x881C0D0A, // 006C GETMBR R7 R6 K10 + 0xB8221600, // 006D GETNGBL R8 K11 + 0x8820110C, // 006E GETMBR R8 R8 K12 + 0x88201113, // 006F GETMBR R8 R8 K19 + 0x1C1C0E08, // 0070 EQ R7 R7 R8 + 0x781E0000, // 0071 JMPF R7 #0073 + 0x7002001F, // 0072 JMP #0093 + 0x881C0D0A, // 0073 GETMBR R7 R6 K10 + 0xB8221600, // 0074 GETNGBL R8 K11 + 0x8820110C, // 0075 GETMBR R8 R8 K12 + 0x88201114, // 0076 GETMBR R8 R8 K20 + 0x1C1C0E08, // 0077 EQ R7 R7 R8 + 0x781E0004, // 0078 JMPF R7 #007E + 0x00140B15, // 0079 ADD R5 R5 K21 + 0x8C1C0910, // 007A GETMET R7 R4 K16 + 0x5C240C00, // 007B MOVE R9 R6 + 0x7C1C0400, // 007C CALL R7 2 + 0x70020011, // 007D JMP #0090 + 0x881C0D0A, // 007E GETMBR R7 R6 K10 + 0xB8221600, // 007F GETNGBL R8 K11 + 0x8820110C, // 0080 GETMBR R8 R8 K12 + 0x88201116, // 0081 GETMBR R8 R8 K22 + 0x1C1C0E08, // 0082 EQ R7 R7 R8 + 0x781E0008, // 0083 JMPF R7 #008D + 0x1C1C0B12, // 0084 EQ R7 R5 K18 + 0x781E0001, // 0085 JMPF R7 #0088 + 0x7002000B, // 0086 JMP #0093 + 0x70020003, // 0087 JMP #008C + 0x04140B15, // 0088 SUB R5 R5 K21 + 0x8C1C0910, // 0089 GETMET R7 R4 K16 + 0x5C240C00, // 008A MOVE R9 R6 + 0x7C1C0400, // 008B CALL R7 2 + 0x70020002, // 008C JMP #0090 + 0x8C1C0910, // 008D GETMET R7 R4 K16 + 0x5C240C00, // 008E MOVE R9 R6 + 0x7C1C0400, // 008F CALL R7 2 + 0x8C1C0100, // 0090 GETMET R7 R0 K0 + 0x7C1C0200, // 0091 CALL R7 1 + 0x7001FFD0, // 0092 JMP #0064 + 0x8C180117, // 0093 GETMET R6 R0 K23 + 0x7C180200, // 0094 CALL R6 1 + 0x88180118, // 0095 GETMBR R6 R0 K24 + 0x601C0013, // 0096 GETGBL R7 G19 + 0x7C1C0000, // 0097 CALL R7 0 + 0x981E3202, // 0098 SETIDX R7 K25 R2 + 0x981E3403, // 0099 SETIDX R7 K26 R3 + 0x981E3604, // 009A SETIDX R7 K27 R4 + 0x98180207, // 009B SETIDX R6 R1 R7 + 0x8C18011C, // 009C GETMET R6 R0 K28 + 0x5C200200, // 009D MOVE R8 R1 + 0x5C240400, // 009E MOVE R9 R2 + 0x5C280600, // 009F MOVE R10 R3 + 0x5C2C0800, // 00A0 MOVE R11 R4 + 0x7C180A00, // 00A1 CALL R6 5 + 0x8818011D, // 00A2 GETMBR R6 R0 K29 + 0x98180303, // 00A3 SETIDX R6 R1 K3 + 0x80000000, // 00A4 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(NEWLINE), + /* K6 */ be_nested_str_weak(EOF), + /* K7 */ be_nested_str_weak(next), + }), + be_str_weak(skip_statement), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060011, // 0002 JMPT R1 #0015 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x88080302, // 0005 GETMBR R2 R1 K2 + 0xB80E0600, // 0006 GETNGBL R3 K3 + 0x880C0704, // 0007 GETMBR R3 R3 K4 + 0x880C0705, // 0008 GETMBR R3 R3 K5 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0005, // 000A JMPT R2 #0011 + 0x88080302, // 000B GETMBR R2 R1 K2 + 0xB80E0600, // 000C GETNGBL R3 K3 + 0x880C0704, // 000D GETMBR R3 R3 K4 + 0x880C0706, // 000E GETMBR R3 R3 K6 + 0x1C080403, // 000F EQ R2 R2 R3 + 0x780A0000, // 0010 JMPF R2 #0012 + 0x70020002, // 0011 JMP #0015 + 0x8C080107, // 0012 GETMET R2 R0 K7 + 0x7C080200, // 0013 CALL R2 1 + 0x7001FFEA, // 0014 JMP #0000 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_BRACE), + }), + be_str_weak(check_right_brace), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0005, // 0004 JMPF R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x740A0000, // 000A JMPT R2 #000C + 0x50080001, // 000B LDBOOL R2 0 1 + 0x50080200, // 000C LDBOOL R2 1 0 + 0x80040400, // 000D RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: _validate_factory_function ********************************************************************/ @@ -5472,69 +6258,49 @@ be_local_closure(class_SimpleDSLTranspiler__validate_factory_function, /* name /******************************************************************** -** Solidified function: _create_instance_for_validation +** Solidified function: expect_left_brace ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__create_instance_for_validation, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ be_nested_proto( - 8, /* nstack */ - 2, /* argc */ + 5, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(MockEngine), - /* K2 */ be_nested_str_weak(introspect), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(animation), - /* K5 */ be_nested_str_weak(class), - /* K6 */ be_nested_str_weak(function), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_BRACE), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), }), - be_str_weak(_create_instance_for_validation), + be_str_weak(expect_left_brace), &be_const_str_solidified, - ( &(const binstruction[39]) { /* code */ - 0xA802001E, // 0000 EXBLK 0 #0020 - 0xB80A0000, // 0001 GETNGBL R2 K0 - 0x8C080501, // 0002 GETMET R2 R2 K1 - 0x7C080200, // 0003 CALL R2 1 - 0xA40E0400, // 0004 IMPORT R3 K2 - 0x8C100703, // 0005 GETMET R4 R3 K3 - 0xB81A0800, // 0006 GETNGBL R6 K4 - 0x5C1C0200, // 0007 MOVE R7 R1 - 0x7C100600, // 0008 CALL R4 3 - 0x78120010, // 0009 JMPF R4 #001B - 0xB8120800, // 000A GETNGBL R4 K4 - 0x88100801, // 000B GETMBR R4 R4 R1 - 0x60140004, // 000C GETGBL R5 G4 - 0x5C180800, // 000D MOVE R6 R4 - 0x7C140200, // 000E CALL R5 1 - 0x1C140B05, // 000F EQ R5 R5 K5 - 0x74160004, // 0010 JMPT R5 #0016 - 0x60140004, // 0011 GETGBL R5 G4 - 0x5C180800, // 0012 MOVE R6 R4 - 0x7C140200, // 0013 CALL R5 1 - 0x1C140B06, // 0014 EQ R5 R5 K6 - 0x78160004, // 0015 JMPF R5 #001B - 0x5C140800, // 0016 MOVE R5 R4 - 0x5C180400, // 0017 MOVE R6 R2 - 0x7C140200, // 0018 CALL R5 1 - 0xA8040001, // 0019 EXBLK 1 1 - 0x80040A00, // 001A RET 1 R5 - 0x4C100000, // 001B LDNIL R4 - 0xA8040001, // 001C EXBLK 1 1 - 0x80040800, // 001D RET 1 R4 - 0xA8040001, // 001E EXBLK 1 1 - 0x70020005, // 001F JMP #0026 - 0xAC080002, // 0020 CATCH R2 0 2 - 0x70020002, // 0021 JMP #0025 - 0x4C100000, // 0022 LDNIL R4 - 0x80040800, // 0023 RET 1 R4 - 0x70020000, // 0024 JMP #0026 - 0xB0080000, // 0025 RAISE 2 R0 R0 - 0x80000000, // 0026 RET 0 + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 }) ) ); @@ -5542,9 +6308,748 @@ be_local_closure(class_SimpleDSLTranspiler__create_instance_for_validation, /* /******************************************************************** -** Solidified function: _validate_animation_factory_creates_animation +** Solidified function: next ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* name */ +be_local_closure(class_SimpleDSLTranspiler_next, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(tokens), + /* K2 */ be_const_int(1), + }), + be_str_weak(next), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14040202, // 0004 LT R1 R1 R2 + 0x78060002, // 0005 JMPF R1 #0009 + 0x88040100, // 0006 GETMBR R1 R0 K0 + 0x00040302, // 0007 ADD R1 R1 K2 + 0x90020001, // 0008 SETMBR R0 K0 R1 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_animation, /* name */ + be_nested_proto( + 15, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[37]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(animation), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(KEYWORD), + /* K11 */ be_nested_str_weak(IDENTIFIER), + /* K12 */ be_nested_str_weak(peek), + /* K13 */ be_nested_str_weak(LEFT_PAREN), + /* K14 */ be_nested_str_weak(value), + /* K15 */ be_nested_str_weak(), + /* K16 */ be_nested_str_weak(COMMENT), + /* K17 */ be_nested_str_weak(_X20_X20), + /* K18 */ be_nested_str_weak(template_definitions), + /* K19 */ be_nested_str_weak(contains), + /* K20 */ be_nested_str_weak(process_function_arguments), + /* K21 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K22 */ be_nested_str_weak(engine), + /* K23 */ be_nested_str_weak(add), + /* K24 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), + /* K25 */ be_nested_str_weak(_validate_animation_factory_creates_animation), + /* K26 */ be_nested_str_weak(error), + /* K27 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X20or_X20does_X20not_X20create_X20an_X20instance_X20of_X20animation_X2Eanimation_X20class_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X20returns_X20an_X20animation_X20object_X2E), + /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), + /* K29 */ be_nested_str_weak(_create_instance_for_validation), + /* K30 */ be_nested_str_weak(symbol_table), + /* K31 */ be_nested_str_weak(_process_named_arguments_for_animation), + /* K32 */ be_nested_str_weak(_X25s_), + /* K33 */ be_nested_str_weak(process_value), + /* K34 */ be_nested_str_weak(collect_inline_comment), + /* K35 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), + /* K36 */ be_nested_str_weak(string), + }), + be_str_weak(process_animation), + &be_const_str_solidified, + ( &(const binstruction[192]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x880C0507, // 0010 GETMBR R3 R2 K7 + 0xB8121000, // 0011 GETNGBL R4 K8 + 0x88100909, // 0012 GETMBR R4 R4 K9 + 0x8810090A, // 0013 GETMBR R4 R4 K10 + 0x1C0C0604, // 0014 EQ R3 R3 R4 + 0x740E0005, // 0015 JMPT R3 #001C + 0x880C0507, // 0016 GETMBR R3 R2 K7 + 0xB8121000, // 0017 GETNGBL R4 K8 + 0x88100909, // 0018 GETMBR R4 R4 K9 + 0x8810090B, // 0019 GETMBR R4 R4 K11 + 0x1C0C0604, // 001A EQ R3 R3 R4 + 0x780E0062, // 001B JMPF R3 #007F + 0x8C0C010C, // 001C GETMET R3 R0 K12 + 0x7C0C0200, // 001D CALL R3 1 + 0x4C100000, // 001E LDNIL R4 + 0x200C0604, // 001F NE R3 R3 R4 + 0x780E005D, // 0020 JMPF R3 #007F + 0x8C0C010C, // 0021 GETMET R3 R0 K12 + 0x7C0C0200, // 0022 CALL R3 1 + 0x880C0707, // 0023 GETMBR R3 R3 K7 + 0xB8121000, // 0024 GETNGBL R4 K8 + 0x88100909, // 0025 GETMBR R4 R4 K9 + 0x8810090D, // 0026 GETMBR R4 R4 K13 + 0x1C0C0604, // 0027 EQ R3 R3 R4 + 0x780E0055, // 0028 JMPF R3 #007F + 0x880C050E, // 0029 GETMBR R3 R2 K14 + 0x8C100100, // 002A GETMET R4 R0 K0 + 0x7C100200, // 002B CALL R4 1 + 0x5810000F, // 002C LDCONST R4 K15 + 0x8C140106, // 002D GETMET R5 R0 K6 + 0x7C140200, // 002E CALL R5 1 + 0x4C180000, // 002F LDNIL R6 + 0x20140A06, // 0030 NE R5 R5 R6 + 0x7816000E, // 0031 JMPF R5 #0041 + 0x8C140106, // 0032 GETMET R5 R0 K6 + 0x7C140200, // 0033 CALL R5 1 + 0x88140B07, // 0034 GETMBR R5 R5 K7 + 0xB81A1000, // 0035 GETNGBL R6 K8 + 0x88180D09, // 0036 GETMBR R6 R6 K9 + 0x88180D10, // 0037 GETMBR R6 R6 K16 + 0x1C140A06, // 0038 EQ R5 R5 R6 + 0x78160006, // 0039 JMPF R5 #0041 + 0x8C140106, // 003A GETMET R5 R0 K6 + 0x7C140200, // 003B CALL R5 1 + 0x88140B0E, // 003C GETMBR R5 R5 K14 + 0x00162205, // 003D ADD R5 K17 R5 + 0x5C100A00, // 003E MOVE R4 R5 + 0x8C140100, // 003F GETMET R5 R0 K0 + 0x7C140200, // 0040 CALL R5 1 + 0x88140112, // 0041 GETMBR R5 R0 K18 + 0x8C140B13, // 0042 GETMET R5 R5 K19 + 0x5C1C0600, // 0043 MOVE R7 R3 + 0x7C140400, // 0044 CALL R5 2 + 0x78160013, // 0045 JMPF R5 #005A + 0x8C140114, // 0046 GETMET R5 R0 K20 + 0x501C0000, // 0047 LDBOOL R7 0 0 + 0x7C140400, // 0048 CALL R5 2 + 0x20180B0F, // 0049 NE R6 R5 K15 + 0x781A0004, // 004A JMPF R6 #0050 + 0x60180018, // 004B GETGBL R6 G24 + 0x581C0015, // 004C LDCONST R7 K21 + 0x5C200A00, // 004D MOVE R8 R5 + 0x7C180400, // 004E CALL R6 2 + 0x70020000, // 004F JMP #0051 + 0x58180016, // 0050 LDCONST R6 K22 + 0x8C1C0117, // 0051 GETMET R7 R0 K23 + 0x60240018, // 0052 GETGBL R9 G24 + 0x58280018, // 0053 LDCONST R10 K24 + 0x5C2C0600, // 0054 MOVE R11 R3 + 0x5C300C00, // 0055 MOVE R12 R6 + 0x5C340800, // 0056 MOVE R13 R4 + 0x7C240800, // 0057 CALL R9 4 + 0x7C1C0400, // 0058 CALL R7 2 + 0x70020023, // 0059 JMP #007E + 0x8C140119, // 005A GETMET R5 R0 K25 + 0x5C1C0600, // 005B MOVE R7 R3 + 0x7C140400, // 005C CALL R5 2 + 0x74160008, // 005D JMPT R5 #0067 + 0x8C14011A, // 005E GETMET R5 R0 K26 + 0x601C0018, // 005F GETGBL R7 G24 + 0x5820001B, // 0060 LDCONST R8 K27 + 0x5C240600, // 0061 MOVE R9 R3 + 0x7C1C0400, // 0062 CALL R7 2 + 0x7C140400, // 0063 CALL R5 2 + 0x8C140104, // 0064 GETMET R5 R0 K4 + 0x7C140200, // 0065 CALL R5 1 + 0x80000A00, // 0066 RET 0 + 0x8C140117, // 0067 GETMET R5 R0 K23 + 0x601C0018, // 0068 GETGBL R7 G24 + 0x5820001C, // 0069 LDCONST R8 K28 + 0x5C240200, // 006A MOVE R9 R1 + 0x5C280600, // 006B MOVE R10 R3 + 0x5C2C0800, // 006C MOVE R11 R4 + 0x7C1C0800, // 006D CALL R7 4 + 0x7C140400, // 006E CALL R5 2 + 0x8C14011D, // 006F GETMET R5 R0 K29 + 0x5C1C0600, // 0070 MOVE R7 R3 + 0x7C140400, // 0071 CALL R5 2 + 0x4C180000, // 0072 LDNIL R6 + 0x20180A06, // 0073 NE R6 R5 R6 + 0x781A0001, // 0074 JMPF R6 #0077 + 0x8818011E, // 0075 GETMBR R6 R0 K30 + 0x98180205, // 0076 SETIDX R6 R1 R5 + 0x8C18011F, // 0077 GETMET R6 R0 K31 + 0x60200018, // 0078 GETGBL R8 G24 + 0x58240020, // 0079 LDCONST R9 K32 + 0x5C280200, // 007A MOVE R10 R1 + 0x7C200400, // 007B CALL R8 2 + 0x5C240600, // 007C MOVE R9 R3 + 0x7C180600, // 007D CALL R6 3 + 0x7002003F, // 007E JMP #00BF + 0x8C0C0106, // 007F GETMET R3 R0 K6 + 0x7C0C0200, // 0080 CALL R3 1 + 0x4C100000, // 0081 LDNIL R4 + 0x20100604, // 0082 NE R4 R3 R4 + 0x78120012, // 0083 JMPF R4 #0097 + 0x88100707, // 0084 GETMBR R4 R3 K7 + 0xB8161000, // 0085 GETNGBL R5 K8 + 0x88140B09, // 0086 GETMBR R5 R5 K9 + 0x88140B0B, // 0087 GETMBR R5 R5 K11 + 0x1C100805, // 0088 EQ R4 R4 R5 + 0x7812000C, // 0089 JMPF R4 #0097 + 0x8C10010C, // 008A GETMET R4 R0 K12 + 0x7C100200, // 008B CALL R4 1 + 0x4C140000, // 008C LDNIL R5 + 0x1C100805, // 008D EQ R4 R4 R5 + 0x74120008, // 008E JMPT R4 #0098 + 0x8C10010C, // 008F GETMET R4 R0 K12 + 0x7C100200, // 0090 CALL R4 1 + 0x88100907, // 0091 GETMBR R4 R4 K7 + 0xB8161000, // 0092 GETNGBL R5 K8 + 0x88140B09, // 0093 GETMBR R5 R5 K9 + 0x88140B0D, // 0094 GETMBR R5 R5 K13 + 0x20100805, // 0095 NE R4 R4 R5 + 0x74120000, // 0096 JMPT R4 #0098 + 0x50100001, // 0097 LDBOOL R4 0 1 + 0x50100200, // 0098 LDBOOL R4 1 0 + 0x78120001, // 0099 JMPF R4 #009C + 0x8814070E, // 009A GETMBR R5 R3 K14 + 0x70020000, // 009B JMP #009D + 0x4C140000, // 009C LDNIL R5 + 0x8C180121, // 009D GETMET R6 R0 K33 + 0x58200003, // 009E LDCONST R8 K3 + 0x7C180400, // 009F CALL R6 2 + 0x8C1C0122, // 00A0 GETMET R7 R0 K34 + 0x7C1C0200, // 00A1 CALL R7 1 + 0x8C200117, // 00A2 GETMET R8 R0 K23 + 0x60280018, // 00A3 GETGBL R10 G24 + 0x582C0023, // 00A4 LDCONST R11 K35 + 0x5C300200, // 00A5 MOVE R12 R1 + 0x5C340C00, // 00A6 MOVE R13 R6 + 0x5C380E00, // 00A7 MOVE R14 R7 + 0x7C280800, // 00A8 CALL R10 4 + 0x7C200400, // 00A9 CALL R8 2 + 0x78120011, // 00AA JMPF R4 #00BD + 0x4C200000, // 00AB LDNIL R8 + 0x20200A08, // 00AC NE R8 R5 R8 + 0x7822000E, // 00AD JMPF R8 #00BD + 0x8820011E, // 00AE GETMBR R8 R0 K30 + 0x8C201113, // 00AF GETMET R8 R8 K19 + 0x5C280A00, // 00B0 MOVE R10 R5 + 0x7C200400, // 00B1 CALL R8 2 + 0x78220009, // 00B2 JMPF R8 #00BD + 0x8820011E, // 00B3 GETMBR R8 R0 K30 + 0x94201005, // 00B4 GETIDX R8 R8 R5 + 0x60240004, // 00B5 GETGBL R9 G4 + 0x5C281000, // 00B6 MOVE R10 R8 + 0x7C240200, // 00B7 CALL R9 1 + 0x20241324, // 00B8 NE R9 R9 K36 + 0x78260001, // 00B9 JMPF R9 #00BC + 0x8824011E, // 00BA GETMBR R9 R0 K30 + 0x98240208, // 00BB SETIDX R9 R1 R8 + 0x70020001, // 00BC JMP #00BF + 0x8820011E, // 00BD GETMBR R8 R0 K30 + 0x98200303, // 00BE SETIDX R8 R1 K3 + 0x80000000, // 00BF RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_property_assignment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_property_assignment, /* name */ + be_nested_proto( + 14, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[34]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_identifier), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(LEFT_PAREN), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(process_function_arguments), + /* K8 */ be_nested_str_weak(collect_inline_comment), + /* K9 */ be_nested_str_weak(process_log_call), + /* K10 */ be_nested_str_weak(standalone), + /* K11 */ be_nested_str_weak(add), + /* K12 */ be_nested_str_weak(template_definitions), + /* K13 */ be_nested_str_weak(contains), + /* K14 */ be_nested_str_weak(), + /* K15 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K16 */ be_nested_str_weak(engine), + /* K17 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), + /* K18 */ be_nested_str_weak(has_template_calls), + /* K19 */ be_nested_str_weak(error), + /* K20 */ be_nested_str_weak(Standalone_X20function_X20calls_X20are_X20only_X20supported_X20for_X20templates_X2E_X20_X27_X25s_X27_X20is_X20not_X20a_X20template_X2E), + /* K21 */ be_nested_str_weak(skip_statement), + /* K22 */ be_nested_str_weak(DOT), + /* K23 */ be_nested_str_weak(next), + /* K24 */ be_nested_str_weak(symbol_table), + /* K25 */ be_nested_str_weak(string), + /* K26 */ be_nested_str_weak(_validate_single_parameter), + /* K27 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20assignments_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), + /* K28 */ be_nested_str_weak(expect_assign), + /* K29 */ be_nested_str_weak(process_value), + /* K30 */ be_nested_str_weak(property), + /* K31 */ be_nested_str_weak(resolve_symbol_reference), + /* K32 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + /* K33 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), + }), + be_str_weak(process_property_assignment), + &be_const_str_solidified, + ( &(const binstruction[142]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x4C0C0000, // 0004 LDNIL R3 + 0x20080403, // 0005 NE R2 R2 R3 + 0x780A003D, // 0006 JMPF R2 #0045 + 0x8C080101, // 0007 GETMET R2 R0 K1 + 0x7C080200, // 0008 CALL R2 1 + 0x88080502, // 0009 GETMBR R2 R2 K2 + 0xB80E0600, // 000A GETNGBL R3 K3 + 0x880C0704, // 000B GETMBR R3 R3 K4 + 0x880C0705, // 000C GETMBR R3 R3 K5 + 0x1C080403, // 000D EQ R2 R2 R3 + 0x780A0035, // 000E JMPF R2 #0045 + 0x1C080306, // 000F EQ R2 R1 K6 + 0x780A000D, // 0010 JMPF R2 #001F + 0x8C080107, // 0011 GETMET R2 R0 K7 + 0x50100000, // 0012 LDBOOL R4 0 0 + 0x7C080400, // 0013 CALL R2 2 + 0x8C0C0108, // 0014 GETMET R3 R0 K8 + 0x7C0C0200, // 0015 CALL R3 1 + 0x8C100109, // 0016 GETMET R4 R0 K9 + 0x5C180400, // 0017 MOVE R6 R2 + 0x581C000A, // 0018 LDCONST R7 K10 + 0x5C200600, // 0019 MOVE R8 R3 + 0x7C100800, // 001A CALL R4 4 + 0x8C14010B, // 001B GETMET R5 R0 K11 + 0x5C1C0800, // 001C MOVE R7 R4 + 0x7C140400, // 001D CALL R5 2 + 0x80000A00, // 001E RET 0 + 0x8808010C, // 001F GETMBR R2 R0 K12 + 0x8C08050D, // 0020 GETMET R2 R2 K13 + 0x5C100200, // 0021 MOVE R4 R1 + 0x7C080400, // 0022 CALL R2 2 + 0x780A0017, // 0023 JMPF R2 #003C + 0x8C080107, // 0024 GETMET R2 R0 K7 + 0x50100000, // 0025 LDBOOL R4 0 0 + 0x7C080400, // 0026 CALL R2 2 + 0x200C050E, // 0027 NE R3 R2 K14 + 0x780E0004, // 0028 JMPF R3 #002E + 0x600C0018, // 0029 GETGBL R3 G24 + 0x5810000F, // 002A LDCONST R4 K15 + 0x5C140400, // 002B MOVE R5 R2 + 0x7C0C0400, // 002C CALL R3 2 + 0x70020000, // 002D JMP #002F + 0x580C0010, // 002E LDCONST R3 K16 + 0x8C100108, // 002F GETMET R4 R0 K8 + 0x7C100200, // 0030 CALL R4 1 + 0x8C14010B, // 0031 GETMET R5 R0 K11 + 0x601C0018, // 0032 GETGBL R7 G24 + 0x58200011, // 0033 LDCONST R8 K17 + 0x5C240200, // 0034 MOVE R9 R1 + 0x5C280600, // 0035 MOVE R10 R3 + 0x5C2C0800, // 0036 MOVE R11 R4 + 0x7C1C0800, // 0037 CALL R7 4 + 0x7C140400, // 0038 CALL R5 2 + 0x50140200, // 0039 LDBOOL R5 1 0 + 0x90022405, // 003A SETMBR R0 K18 R5 + 0x70020007, // 003B JMP #0044 + 0x8C080113, // 003C GETMET R2 R0 K19 + 0x60100018, // 003D GETGBL R4 G24 + 0x58140014, // 003E LDCONST R5 K20 + 0x5C180200, // 003F MOVE R6 R1 + 0x7C100400, // 0040 CALL R4 2 + 0x7C080400, // 0041 CALL R2 2 + 0x8C080115, // 0042 GETMET R2 R0 K21 + 0x7C080200, // 0043 CALL R2 1 + 0x80000400, // 0044 RET 0 + 0x8C080101, // 0045 GETMET R2 R0 K1 + 0x7C080200, // 0046 CALL R2 1 + 0x4C0C0000, // 0047 LDNIL R3 + 0x20080403, // 0048 NE R2 R2 R3 + 0x780A003A, // 0049 JMPF R2 #0085 + 0x8C080101, // 004A GETMET R2 R0 K1 + 0x7C080200, // 004B CALL R2 1 + 0x88080502, // 004C GETMBR R2 R2 K2 + 0xB80E0600, // 004D GETNGBL R3 K3 + 0x880C0704, // 004E GETMBR R3 R3 K4 + 0x880C0716, // 004F GETMBR R3 R3 K22 + 0x1C080403, // 0050 EQ R2 R2 R3 + 0x780A0032, // 0051 JMPF R2 #0085 + 0x8C080117, // 0052 GETMET R2 R0 K23 + 0x7C080200, // 0053 CALL R2 1 + 0x8C080100, // 0054 GETMET R2 R0 K0 + 0x7C080200, // 0055 CALL R2 1 + 0x880C0118, // 0056 GETMBR R3 R0 K24 + 0x8C0C070D, // 0057 GETMET R3 R3 K13 + 0x5C140200, // 0058 MOVE R5 R1 + 0x7C0C0400, // 0059 CALL R3 2 + 0x780E0015, // 005A JMPF R3 #0071 + 0x880C0118, // 005B GETMBR R3 R0 K24 + 0x940C0601, // 005C GETIDX R3 R3 R1 + 0x60100004, // 005D GETGBL R4 G4 + 0x5C140600, // 005E MOVE R5 R3 + 0x7C100200, // 005F CALL R4 1 + 0x20100919, // 0060 NE R4 R4 K25 + 0x78120008, // 0061 JMPF R4 #006B + 0x60100005, // 0062 GETGBL R4 G5 + 0x5C140600, // 0063 MOVE R5 R3 + 0x7C100200, // 0064 CALL R4 1 + 0x8C14011A, // 0065 GETMET R5 R0 K26 + 0x5C1C0800, // 0066 MOVE R7 R4 + 0x5C200400, // 0067 MOVE R8 R2 + 0x5C240600, // 0068 MOVE R9 R3 + 0x7C140800, // 0069 CALL R5 4 + 0x70020005, // 006A JMP #0071 + 0x8C100113, // 006B GETMET R4 R0 K19 + 0x60180018, // 006C GETGBL R6 G24 + 0x581C001B, // 006D LDCONST R7 K27 + 0x5C200200, // 006E MOVE R8 R1 + 0x7C180400, // 006F CALL R6 2 + 0x7C100400, // 0070 CALL R4 2 + 0x8C0C011C, // 0071 GETMET R3 R0 K28 + 0x7C0C0200, // 0072 CALL R3 1 + 0x8C0C011D, // 0073 GETMET R3 R0 K29 + 0x5814001E, // 0074 LDCONST R5 K30 + 0x7C0C0400, // 0075 CALL R3 2 + 0x8C100108, // 0076 GETMET R4 R0 K8 + 0x7C100200, // 0077 CALL R4 1 + 0x8C14011F, // 0078 GETMET R5 R0 K31 + 0x5C1C0200, // 0079 MOVE R7 R1 + 0x7C140400, // 007A CALL R5 2 + 0x8C18010B, // 007B GETMET R6 R0 K11 + 0x60200018, // 007C GETGBL R8 G24 + 0x58240020, // 007D LDCONST R9 K32 + 0x5C280A00, // 007E MOVE R10 R5 + 0x5C2C0400, // 007F MOVE R11 R2 + 0x5C300600, // 0080 MOVE R12 R3 + 0x5C340800, // 0081 MOVE R13 R4 + 0x7C200A00, // 0082 CALL R8 5 + 0x7C180400, // 0083 CALL R6 2 + 0x70020007, // 0084 JMP #008D + 0x8C080113, // 0085 GETMET R2 R0 K19 + 0x60100018, // 0086 GETGBL R4 G24 + 0x58140021, // 0087 LDCONST R5 K33 + 0x5C180200, // 0088 MOVE R6 R1 + 0x7C100400, // 0089 CALL R4 2 + 0x7C080400, // 008A CALL R2 2 + 0x8C080115, // 008B GETMET R2 R0 K21 + 0x7C080200, // 008C CALL R2 1 + 0x80000000, // 008D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: validate_user_name +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ + be_nested_proto( + 13, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(Token), + /* K2 */ be_nested_str_weak(color_names), + /* K3 */ be_nested_str_weak(error), + /* K4 */ be_nested_str_weak(Cannot_X20redefine_X20predefined_X20color_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + /* K5 */ be_nested_str_weak(stop_iteration), + /* K6 */ be_nested_str_weak(statement_keywords), + /* K7 */ be_nested_str_weak(Cannot_X20use_X20DSL_X20keyword_X20_X27_X25s_X27_X20as_X20_X25s_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), + }), + be_str_weak(validate_user_name), + &be_const_str_solidified, + ( &(const binstruction[53]) { /* code */ + 0x600C0010, // 0000 GETGBL R3 G16 + 0xB8120000, // 0001 GETNGBL R4 K0 + 0x88100901, // 0002 GETMBR R4 R4 K1 + 0x88100902, // 0003 GETMBR R4 R4 K2 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA802000F, // 0005 EXBLK 0 #0016 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x1C140204, // 0008 EQ R5 R1 R4 + 0x7816000A, // 0009 JMPF R5 #0015 + 0x8C140103, // 000A GETMET R5 R0 K3 + 0x601C0018, // 000B GETGBL R7 G24 + 0x58200004, // 000C LDCONST R8 K4 + 0x5C240200, // 000D MOVE R9 R1 + 0x5C280200, // 000E MOVE R10 R1 + 0x5C2C0200, // 000F MOVE R11 R1 + 0x7C1C0800, // 0010 CALL R7 4 + 0x7C140400, // 0011 CALL R5 2 + 0x50140000, // 0012 LDBOOL R5 0 0 + 0xA8040001, // 0013 EXBLK 1 1 + 0x80040A00, // 0014 RET 1 R5 + 0x7001FFEF, // 0015 JMP #0006 + 0x580C0005, // 0016 LDCONST R3 K5 + 0xAC0C0200, // 0017 CATCH R3 1 0 + 0xB0080000, // 0018 RAISE 2 R0 R0 + 0x600C0010, // 0019 GETGBL R3 G16 + 0xB8120000, // 001A GETNGBL R4 K0 + 0x88100901, // 001B GETMBR R4 R4 K1 + 0x88100906, // 001C GETMBR R4 R4 K6 + 0x7C0C0200, // 001D CALL R3 1 + 0xA8020010, // 001E EXBLK 0 #0030 + 0x5C100600, // 001F MOVE R4 R3 + 0x7C100000, // 0020 CALL R4 0 + 0x1C140204, // 0021 EQ R5 R1 R4 + 0x7816000B, // 0022 JMPF R5 #002F + 0x8C140103, // 0023 GETMET R5 R0 K3 + 0x601C0018, // 0024 GETGBL R7 G24 + 0x58200007, // 0025 LDCONST R8 K7 + 0x5C240200, // 0026 MOVE R9 R1 + 0x5C280400, // 0027 MOVE R10 R2 + 0x5C2C0200, // 0028 MOVE R11 R1 + 0x5C300200, // 0029 MOVE R12 R1 + 0x7C1C0A00, // 002A CALL R7 5 + 0x7C140400, // 002B CALL R5 2 + 0x50140000, // 002C LDBOOL R5 0 0 + 0xA8040001, // 002D EXBLK 1 1 + 0x80040A00, // 002E RET 1 R5 + 0x7001FFEE, // 002F JMP #001F + 0x580C0005, // 0030 LDCONST R3 K5 + 0xAC0C0200, // 0031 CATCH R3 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x500C0200, // 0033 LDBOOL R3 1 0 + 0x80040600, // 0034 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_right_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(RIGHT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X29_X27), + }), + be_str_weak(expect_right_paren), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_set +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[22]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(validate_user_name), + /* K3 */ be_nested_str_weak(variable), + /* K4 */ be_nested_str_weak(skip_statement), + /* K5 */ be_nested_str_weak(expect_assign), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(KEYWORD), + /* K11 */ be_nested_str_weak(IDENTIFIER), + /* K12 */ be_nested_str_weak(peek), + /* K13 */ be_nested_str_weak(LEFT_PAREN), + /* K14 */ be_nested_str_weak(value), + /* K15 */ be_nested_str_weak(_validate_value_provider_factory_exists), + /* K16 */ be_nested_str_weak(process_value), + /* K17 */ be_nested_str_weak(collect_inline_comment), + /* K18 */ be_nested_str_weak(add), + /* K19 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), + /* K20 */ be_nested_str_weak(symbol_table), + /* K21 */ be_nested_str_weak(value_provider), + }), + be_str_weak(process_set), + &be_const_str_solidified, + ( &(const binstruction[68]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x740A0002, // 0008 JMPT R2 #000C + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x80000400, // 000B RET 0 + 0x8C080105, // 000C GETMET R2 R0 K5 + 0x7C080200, // 000D CALL R2 1 + 0x50080000, // 000E LDBOOL R2 0 0 + 0x8C0C0106, // 000F GETMET R3 R0 K6 + 0x7C0C0200, // 0010 CALL R3 1 + 0x88100707, // 0011 GETMBR R4 R3 K7 + 0xB8161000, // 0012 GETNGBL R5 K8 + 0x88140B09, // 0013 GETMBR R5 R5 K9 + 0x88140B0A, // 0014 GETMBR R5 R5 K10 + 0x1C100805, // 0015 EQ R4 R4 R5 + 0x74120005, // 0016 JMPT R4 #001D + 0x88100707, // 0017 GETMBR R4 R3 K7 + 0xB8161000, // 0018 GETNGBL R5 K8 + 0x88140B09, // 0019 GETMBR R5 R5 K9 + 0x88140B0B, // 001A GETMBR R5 R5 K11 + 0x1C100805, // 001B EQ R4 R4 R5 + 0x78120012, // 001C JMPF R4 #0030 + 0x8C10010C, // 001D GETMET R4 R0 K12 + 0x7C100200, // 001E CALL R4 1 + 0x4C140000, // 001F LDNIL R5 + 0x20100805, // 0020 NE R4 R4 R5 + 0x7812000D, // 0021 JMPF R4 #0030 + 0x8C10010C, // 0022 GETMET R4 R0 K12 + 0x7C100200, // 0023 CALL R4 1 + 0x88100907, // 0024 GETMBR R4 R4 K7 + 0xB8161000, // 0025 GETNGBL R5 K8 + 0x88140B09, // 0026 GETMBR R5 R5 K9 + 0x88140B0D, // 0027 GETMBR R5 R5 K13 + 0x1C100805, // 0028 EQ R4 R4 R5 + 0x78120005, // 0029 JMPF R4 #0030 + 0x8810070E, // 002A GETMBR R4 R3 K14 + 0x8C14010F, // 002B GETMET R5 R0 K15 + 0x5C1C0800, // 002C MOVE R7 R4 + 0x7C140400, // 002D CALL R5 2 + 0x78160000, // 002E JMPF R5 #0030 + 0x50080200, // 002F LDBOOL R2 1 0 + 0x8C100110, // 0030 GETMET R4 R0 K16 + 0x58180003, // 0031 LDCONST R6 K3 + 0x7C100400, // 0032 CALL R4 2 + 0x8C140111, // 0033 GETMET R5 R0 K17 + 0x7C140200, // 0034 CALL R5 1 + 0x8C180112, // 0035 GETMET R6 R0 K18 + 0x60200018, // 0036 GETGBL R8 G24 + 0x58240013, // 0037 LDCONST R9 K19 + 0x5C280200, // 0038 MOVE R10 R1 + 0x5C2C0800, // 0039 MOVE R11 R4 + 0x5C300A00, // 003A MOVE R12 R5 + 0x7C200800, // 003B CALL R8 4 + 0x7C180400, // 003C CALL R6 2 + 0x780A0002, // 003D JMPF R2 #0041 + 0x88180114, // 003E GETMBR R6 R0 K20 + 0x98180315, // 003F SETIDX R6 R1 K21 + 0x70020001, // 0040 JMP #0043 + 0x88180114, // 0041 GETMBR R6 R0 K20 + 0x98180303, // 0042 SETIDX R6 R1 K3 + 0x80000000, // 0043 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_assignment +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -5555,18 +7060,17 @@ be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_a NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), + /* K0 */ be_nested_str_weak(process_sequence_assignment_generic), + /* K1 */ be_nested_str_weak(steps), }), - be_str_weak(_validate_animation_factory_creates_animation), + be_str_weak(process_sequence_assignment), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ + ( &(const binstruction[ 5]) { /* code */ 0x8C080100, // 0000 GETMET R2 R0 K0 0x5C100200, // 0001 MOVE R4 R1 - 0xB8160200, // 0002 GETNGBL R5 K1 - 0x88140B01, // 0003 GETMBR R5 R5 K1 - 0x7C080600, // 0004 CALL R2 3 - 0x80040400, // 0005 RET 1 R2 + 0x58140001, // 0002 LDCONST R5 K1 + 0x7C080600, // 0003 CALL R2 3 + 0x80000000, // 0004 RET 0 }) ) ); @@ -5574,9 +7078,810 @@ be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_a /******************************************************************** -** Solidified function: process_log_call +** Solidified function: _is_simple_function_call ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_log_call, /* name */ +be_local_closure(class_SimpleDSLTranspiler__is_simple_function_call, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(strip_length), + /* K1 */ be_nested_str_weak(static_value), + /* K2 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(_is_simple_function_call), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x400C0500, // 0002 CONNECT R3 R2 K0 + 0x400C0501, // 0003 CONNECT R3 R2 K1 + 0x600C0010, // 0004 GETGBL R3 G16 + 0x5C100400, // 0005 MOVE R4 R2 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA8020007, // 0007 EXBLK 0 #0010 + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x1C140204, // 000A EQ R5 R1 R4 + 0x78160002, // 000B JMPF R5 #000F + 0x50140200, // 000C LDBOOL R5 1 0 + 0xA8040001, // 000D EXBLK 1 1 + 0x80040A00, // 000E RET 1 R5 + 0x7001FFF7, // 000F JMP #0008 + 0x580C0002, // 0010 LDCONST R3 K2 + 0xAC0C0200, // 0011 CATCH R3 1 0 + 0xB0080000, // 0012 RAISE 2 R0 R0 + 0x500C0000, // 0013 LDBOOL R3 0 0 + 0x80040600, // 0014 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_statement, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[42]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(EOF), + /* K5 */ be_nested_str_weak(COMMENT), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(NEWLINE), + /* K10 */ be_nested_str_weak(first_statement), + /* K11 */ be_nested_str_weak(KEYWORD), + /* K12 */ be_nested_str_weak(IDENTIFIER), + /* K13 */ be_nested_str_weak(strip), + /* K14 */ be_nested_str_weak(error), + /* K15 */ be_nested_str_weak(_X27strip_X27_X20directive_X20is_X20temporarily_X20disabled_X2E_X20Strip_X20configuration_X20is_X20handled_X20automatically_X2E), + /* K16 */ be_nested_str_weak(skip_statement), + /* K17 */ be_nested_str_weak(strip_initialized), + /* K18 */ be_nested_str_weak(generate_default_strip_initialization), + /* K19 */ be_nested_str_weak(color), + /* K20 */ be_nested_str_weak(process_color), + /* K21 */ be_nested_str_weak(palette), + /* K22 */ be_nested_str_weak(process_palette), + /* K23 */ be_nested_str_weak(animation), + /* K24 */ be_nested_str_weak(process_animation), + /* K25 */ be_nested_str_weak(set), + /* K26 */ be_nested_str_weak(process_set), + /* K27 */ be_nested_str_weak(sequence), + /* K28 */ be_nested_str_weak(process_sequence), + /* K29 */ be_nested_str_weak(template), + /* K30 */ be_nested_str_weak(process_template), + /* K31 */ be_nested_str_weak(run), + /* K32 */ be_nested_str_weak(process_run), + /* K33 */ be_nested_str_weak(import), + /* K34 */ be_nested_str_weak(process_import), + /* K35 */ be_nested_str_weak(on), + /* K36 */ be_nested_str_weak(process_event_handler), + /* K37 */ be_nested_str_weak(log), + /* K38 */ be_nested_str_weak(peek), + /* K39 */ be_nested_str_weak(LEFT_PAREN), + /* K40 */ be_nested_str_weak(process_standalone_log), + /* K41 */ be_nested_str_weak(process_property_assignment), + }), + be_str_weak(process_statement), + &be_const_str_solidified, + ( &(const binstruction[160]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C080202, // 0003 EQ R2 R1 R2 + 0x740A0005, // 0004 JMPT R2 #000B + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0000, // 000A JMPF R2 #000C + 0x80000400, // 000B RET 0 + 0x88080301, // 000C GETMBR R2 R1 K1 + 0xB80E0400, // 000D GETNGBL R3 K2 + 0x880C0703, // 000E GETMBR R3 R3 K3 + 0x880C0705, // 000F GETMBR R3 R3 K5 + 0x1C080403, // 0010 EQ R2 R2 R3 + 0x780A0005, // 0011 JMPF R2 #0018 + 0x8C080106, // 0012 GETMET R2 R0 K6 + 0x88100307, // 0013 GETMBR R4 R1 K7 + 0x7C080400, // 0014 CALL R2 2 + 0x8C080108, // 0015 GETMET R2 R0 K8 + 0x7C080200, // 0016 CALL R2 1 + 0x80000400, // 0017 RET 0 + 0x88080301, // 0018 GETMBR R2 R1 K1 + 0xB80E0400, // 0019 GETNGBL R3 K2 + 0x880C0703, // 001A GETMBR R3 R3 K3 + 0x880C0709, // 001B GETMBR R3 R3 K9 + 0x1C080403, // 001C EQ R2 R2 R3 + 0x780A0002, // 001D JMPF R2 #0021 + 0x8C080108, // 001E GETMET R2 R0 K8 + 0x7C080200, // 001F CALL R2 1 + 0x80000400, // 0020 RET 0 + 0x8808010A, // 0021 GETMBR R2 R0 K10 + 0x880C0301, // 0022 GETMBR R3 R1 K1 + 0xB8120400, // 0023 GETNGBL R4 K2 + 0x88100903, // 0024 GETMBR R4 R4 K3 + 0x8810090B, // 0025 GETMBR R4 R4 K11 + 0x1C0C0604, // 0026 EQ R3 R3 R4 + 0x740E0005, // 0027 JMPT R3 #002E + 0x880C0301, // 0028 GETMBR R3 R1 K1 + 0xB8120400, // 0029 GETNGBL R4 K2 + 0x88100903, // 002A GETMBR R4 R4 K3 + 0x8810090C, // 002B GETMBR R4 R4 K12 + 0x1C0C0604, // 002C EQ R3 R3 R4 + 0x780E0001, // 002D JMPF R3 #0030 + 0x500C0000, // 002E LDBOOL R3 0 0 + 0x90021403, // 002F SETMBR R0 K10 R3 + 0x880C0301, // 0030 GETMBR R3 R1 K1 + 0xB8120400, // 0031 GETNGBL R4 K2 + 0x88100903, // 0032 GETMBR R4 R4 K3 + 0x8810090B, // 0033 GETMBR R4 R4 K11 + 0x1C0C0604, // 0034 EQ R3 R3 R4 + 0x780E0046, // 0035 JMPF R3 #007D + 0x880C0307, // 0036 GETMBR R3 R1 K7 + 0x1C0C070D, // 0037 EQ R3 R3 K13 + 0x780E0006, // 0038 JMPF R3 #0040 + 0x8C0C010E, // 0039 GETMET R3 R0 K14 + 0x5814000F, // 003A LDCONST R5 K15 + 0x7C0C0400, // 003B CALL R3 2 + 0x8C0C0110, // 003C GETMET R3 R0 K16 + 0x7C0C0200, // 003D CALL R3 1 + 0x80000600, // 003E RET 0 + 0x7002003B, // 003F JMP #007C + 0x880C0111, // 0040 GETMBR R3 R0 K17 + 0x740E0001, // 0041 JMPT R3 #0044 + 0x8C0C0112, // 0042 GETMET R3 R0 K18 + 0x7C0C0200, // 0043 CALL R3 1 + 0x880C0307, // 0044 GETMBR R3 R1 K7 + 0x1C0C0713, // 0045 EQ R3 R3 K19 + 0x780E0002, // 0046 JMPF R3 #004A + 0x8C0C0114, // 0047 GETMET R3 R0 K20 + 0x7C0C0200, // 0048 CALL R3 1 + 0x70020031, // 0049 JMP #007C + 0x880C0307, // 004A GETMBR R3 R1 K7 + 0x1C0C0715, // 004B EQ R3 R3 K21 + 0x780E0002, // 004C JMPF R3 #0050 + 0x8C0C0116, // 004D GETMET R3 R0 K22 + 0x7C0C0200, // 004E CALL R3 1 + 0x7002002B, // 004F JMP #007C + 0x880C0307, // 0050 GETMBR R3 R1 K7 + 0x1C0C0717, // 0051 EQ R3 R3 K23 + 0x780E0002, // 0052 JMPF R3 #0056 + 0x8C0C0118, // 0053 GETMET R3 R0 K24 + 0x7C0C0200, // 0054 CALL R3 1 + 0x70020025, // 0055 JMP #007C + 0x880C0307, // 0056 GETMBR R3 R1 K7 + 0x1C0C0719, // 0057 EQ R3 R3 K25 + 0x780E0002, // 0058 JMPF R3 #005C + 0x8C0C011A, // 0059 GETMET R3 R0 K26 + 0x7C0C0200, // 005A CALL R3 1 + 0x7002001F, // 005B JMP #007C + 0x880C0307, // 005C GETMBR R3 R1 K7 + 0x1C0C071B, // 005D EQ R3 R3 K27 + 0x780E0002, // 005E JMPF R3 #0062 + 0x8C0C011C, // 005F GETMET R3 R0 K28 + 0x7C0C0200, // 0060 CALL R3 1 + 0x70020019, // 0061 JMP #007C + 0x880C0307, // 0062 GETMBR R3 R1 K7 + 0x1C0C071D, // 0063 EQ R3 R3 K29 + 0x780E0002, // 0064 JMPF R3 #0068 + 0x8C0C011E, // 0065 GETMET R3 R0 K30 + 0x7C0C0200, // 0066 CALL R3 1 + 0x70020013, // 0067 JMP #007C + 0x880C0307, // 0068 GETMBR R3 R1 K7 + 0x1C0C071F, // 0069 EQ R3 R3 K31 + 0x780E0002, // 006A JMPF R3 #006E + 0x8C0C0120, // 006B GETMET R3 R0 K32 + 0x7C0C0200, // 006C CALL R3 1 + 0x7002000D, // 006D JMP #007C + 0x880C0307, // 006E GETMBR R3 R1 K7 + 0x1C0C0721, // 006F EQ R3 R3 K33 + 0x780E0002, // 0070 JMPF R3 #0074 + 0x8C0C0122, // 0071 GETMET R3 R0 K34 + 0x7C0C0200, // 0072 CALL R3 1 + 0x70020007, // 0073 JMP #007C + 0x880C0307, // 0074 GETMBR R3 R1 K7 + 0x1C0C0723, // 0075 EQ R3 R3 K35 + 0x780E0002, // 0076 JMPF R3 #007A + 0x8C0C0124, // 0077 GETMET R3 R0 K36 + 0x7C0C0200, // 0078 CALL R3 1 + 0x70020001, // 0079 JMP #007C + 0x8C0C0110, // 007A GETMET R3 R0 K16 + 0x7C0C0200, // 007B CALL R3 1 + 0x70020021, // 007C JMP #009F + 0x880C0301, // 007D GETMBR R3 R1 K1 + 0xB8120400, // 007E GETNGBL R4 K2 + 0x88100903, // 007F GETMBR R4 R4 K3 + 0x8810090C, // 0080 GETMBR R4 R4 K12 + 0x1C0C0604, // 0081 EQ R3 R3 R4 + 0x780E0019, // 0082 JMPF R3 #009D + 0x880C0111, // 0083 GETMBR R3 R0 K17 + 0x740E0001, // 0084 JMPT R3 #0087 + 0x8C0C0112, // 0085 GETMET R3 R0 K18 + 0x7C0C0200, // 0086 CALL R3 1 + 0x880C0307, // 0087 GETMBR R3 R1 K7 + 0x1C0C0725, // 0088 EQ R3 R3 K37 + 0x780E000F, // 0089 JMPF R3 #009A + 0x8C0C0126, // 008A GETMET R3 R0 K38 + 0x7C0C0200, // 008B CALL R3 1 + 0x4C100000, // 008C LDNIL R4 + 0x200C0604, // 008D NE R3 R3 R4 + 0x780E000A, // 008E JMPF R3 #009A + 0x8C0C0126, // 008F GETMET R3 R0 K38 + 0x7C0C0200, // 0090 CALL R3 1 + 0x880C0701, // 0091 GETMBR R3 R3 K1 + 0xB8120400, // 0092 GETNGBL R4 K2 + 0x88100903, // 0093 GETMBR R4 R4 K3 + 0x88100927, // 0094 GETMBR R4 R4 K39 + 0x1C0C0604, // 0095 EQ R3 R3 R4 + 0x780E0002, // 0096 JMPF R3 #009A + 0x8C0C0128, // 0097 GETMET R3 R0 K40 + 0x7C0C0200, // 0098 CALL R3 1 + 0x70020001, // 0099 JMP #009C + 0x8C0C0129, // 009A GETMET R3 R0 K41 + 0x7C0C0200, // 009B CALL R3 1 + 0x70020001, // 009C JMP #009F + 0x8C0C0110, // 009D GETMET R3 R0 K16 + 0x7C0C0200, // 009E CALL R3 1 + 0x80000000, // 009F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_error_report +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(has_errors), + /* K1 */ be_nested_str_weak(No_X20compilation_X20errors), + /* K2 */ be_nested_str_weak(Compilation_X20errors_X3A_X0A), + /* K3 */ be_nested_str_weak(errors), + /* K4 */ be_nested_str_weak(_X20_X20), + /* K5 */ be_nested_str_weak(_X0A), + /* K6 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(get_error_report), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x74060000, // 0002 JMPT R1 #0004 + 0x80060200, // 0003 RET 1 K1 + 0x58040002, // 0004 LDCONST R1 K2 + 0x60080010, // 0005 GETGBL R2 G16 + 0x880C0103, // 0006 GETMBR R3 R0 K3 + 0x7C080200, // 0007 CALL R2 1 + 0xA8020005, // 0008 EXBLK 0 #000F + 0x5C0C0400, // 0009 MOVE R3 R2 + 0x7C0C0000, // 000A CALL R3 0 + 0x00120803, // 000B ADD R4 K4 R3 + 0x00100905, // 000C ADD R4 R4 K5 + 0x00040204, // 000D ADD R1 R1 R4 + 0x7001FFF9, // 000E JMP #0009 + 0x58080006, // 000F LDCONST R2 K6 + 0xAC080200, // 0010 CATCH R2 1 0 + 0xB0080000, // 0011 RAISE 2 R0 R0 + 0x80040200, // 0012 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_event_parameters +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_event_parameters, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(_X7B), + /* K2 */ be_nested_str_weak(at_end), + /* K3 */ be_nested_str_weak(check_right_paren), + /* K4 */ be_nested_str_weak(current), + /* K5 */ be_nested_str_weak(type), + /* K6 */ be_nested_str_weak(animation_dsl), + /* K7 */ be_nested_str_weak(Token), + /* K8 */ be_nested_str_weak(TIME), + /* K9 */ be_nested_str_weak(process_time_value), + /* K10 */ be_nested_str_weak(_X22interval_X22_X3A_X20_X25s), + /* K11 */ be_nested_str_weak(process_value), + /* K12 */ be_nested_str_weak(event_param), + /* K13 */ be_nested_str_weak(_X22value_X22_X3A_X20_X25s), + /* K14 */ be_nested_str_weak(expect_right_paren), + /* K15 */ be_nested_str_weak(_X7D), + }), + be_str_weak(process_event_parameters), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x58040001, // 0002 LDCONST R1 K1 + 0x8C080102, // 0003 GETMET R2 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x740A001D, // 0005 JMPT R2 #0024 + 0x8C080103, // 0006 GETMET R2 R0 K3 + 0x7C080200, // 0007 CALL R2 1 + 0x740A001A, // 0008 JMPT R2 #0024 + 0x8C080104, // 0009 GETMET R2 R0 K4 + 0x7C080200, // 000A CALL R2 1 + 0x4C0C0000, // 000B LDNIL R3 + 0x200C0403, // 000C NE R3 R2 R3 + 0x780E000D, // 000D JMPF R3 #001C + 0x880C0505, // 000E GETMBR R3 R2 K5 + 0xB8120C00, // 000F GETNGBL R4 K6 + 0x88100907, // 0010 GETMBR R4 R4 K7 + 0x88100908, // 0011 GETMBR R4 R4 K8 + 0x1C0C0604, // 0012 EQ R3 R3 R4 + 0x780E0007, // 0013 JMPF R3 #001C + 0x8C0C0109, // 0014 GETMET R3 R0 K9 + 0x7C0C0200, // 0015 CALL R3 1 + 0x60100018, // 0016 GETGBL R4 G24 + 0x5814000A, // 0017 LDCONST R5 K10 + 0x5C180600, // 0018 MOVE R6 R3 + 0x7C100400, // 0019 CALL R4 2 + 0x00040204, // 001A ADD R1 R1 R4 + 0x70020007, // 001B JMP #0024 + 0x8C0C010B, // 001C GETMET R3 R0 K11 + 0x5814000C, // 001D LDCONST R5 K12 + 0x7C0C0400, // 001E CALL R3 2 + 0x60100018, // 001F GETGBL R4 G24 + 0x5814000D, // 0020 LDCONST R5 K13 + 0x5C180600, // 0021 MOVE R6 R3 + 0x7C100400, // 0022 CALL R4 2 + 0x00040204, // 0023 ADD R1 R1 R4 + 0x8C08010E, // 0024 GETMET R2 R0 K14 + 0x7C080200, // 0025 CALL R2 1 + 0x0004030F, // 0026 ADD R1 R1 K15 + 0x80040200, // 0027 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: join_output +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_join_output, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(), + /* K1 */ be_nested_str_weak(output), + /* K2 */ be_nested_str_weak(_X0A), + /* K3 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(join_output), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x60080010, // 0001 GETGBL R2 G16 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0xA8020004, // 0004 EXBLK 0 #000A + 0x5C0C0400, // 0005 MOVE R3 R2 + 0x7C0C0000, // 0006 CALL R3 0 + 0x00100702, // 0007 ADD R4 R3 K2 + 0x00040204, // 0008 ADD R1 R1 R4 + 0x7001FFFA, // 0009 JMP #0005 + 0x58080003, // 000A LDCONST R2 K3 + 0xAC080200, // 000B CATCH R2 1 0 + 0xB0080000, // 000C RAISE 2 R0 R0 + 0x80040200, // 000D RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: error +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_error, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(line), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(errors), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), + }), + be_str_weak(error), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x4C0C0000, // 0002 LDNIL R3 + 0x20080403, // 0003 NE R2 R2 R3 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x8C080100, // 0005 GETMET R2 R0 K0 + 0x7C080200, // 0006 CALL R2 1 + 0x88080501, // 0007 GETMBR R2 R2 K1 + 0x70020000, // 0008 JMP #000A + 0x58080002, // 0009 LDCONST R2 K2 + 0x880C0103, // 000A GETMBR R3 R0 K3 + 0x8C0C0704, // 000B GETMET R3 R3 K4 + 0x60140018, // 000C GETGBL R5 G24 + 0x58180005, // 000D LDCONST R6 K5 + 0x5C1C0400, // 000E MOVE R7 R2 + 0x5C200200, // 000F MOVE R8 R1 + 0x7C140600, // 0010 CALL R5 3 + 0x7C0C0400, // 0011 CALL R3 2 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_assignment_generic +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic, /* name */ + be_nested_proto( + 17, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_identifier), + /* K1 */ be_nested_str_weak(current), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(DOT), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(symbol_table), + /* K8 */ be_nested_str_weak(contains), + /* K9 */ be_nested_str_weak(string), + /* K10 */ be_nested_str_weak(_validate_single_parameter), + /* K11 */ be_nested_str_weak(error), + /* K12 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20assignments_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), + /* K13 */ be_nested_str_weak(expect_assign), + /* K14 */ be_nested_str_weak(process_value), + /* K15 */ be_nested_str_weak(property), + /* K16 */ be_nested_str_weak(collect_inline_comment), + /* K17 */ be_nested_str_weak(resolve_symbol_reference), + /* K18 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s_X2E_X25s_X20_X3D_X20_X25s_X20end), + /* K19 */ be_nested_str_weak(add), + /* K20 */ be_nested_str_weak(_X25s_X25s_X2Epush_X28animation_X2Ecreate_assign_step_X28_X25s_X29_X29_X25s), + /* K21 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), + /* K22 */ be_nested_str_weak(skip_statement), + }), + be_str_weak(process_sequence_assignment_generic), + &be_const_str_solidified, + ( &(const binstruction[82]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x8C100101, // 0002 GETMET R4 R0 K1 + 0x7C100200, // 0003 CALL R4 1 + 0x4C140000, // 0004 LDNIL R5 + 0x20100805, // 0005 NE R4 R4 R5 + 0x78120041, // 0006 JMPF R4 #0049 + 0x8C100101, // 0007 GETMET R4 R0 K1 + 0x7C100200, // 0008 CALL R4 1 + 0x88100902, // 0009 GETMBR R4 R4 K2 + 0xB8160600, // 000A GETNGBL R5 K3 + 0x88140B04, // 000B GETMBR R5 R5 K4 + 0x88140B05, // 000C GETMBR R5 R5 K5 + 0x1C100805, // 000D EQ R4 R4 R5 + 0x78120039, // 000E JMPF R4 #0049 + 0x8C100106, // 000F GETMET R4 R0 K6 + 0x7C100200, // 0010 CALL R4 1 + 0x8C100100, // 0011 GETMET R4 R0 K0 + 0x7C100200, // 0012 CALL R4 1 + 0x88140107, // 0013 GETMBR R5 R0 K7 + 0x8C140B08, // 0014 GETMET R5 R5 K8 + 0x5C1C0600, // 0015 MOVE R7 R3 + 0x7C140400, // 0016 CALL R5 2 + 0x78160016, // 0017 JMPF R5 #002F + 0x88140107, // 0018 GETMBR R5 R0 K7 + 0x94140A03, // 0019 GETIDX R5 R5 R3 + 0x60180004, // 001A GETGBL R6 G4 + 0x5C1C0A00, // 001B MOVE R7 R5 + 0x7C180200, // 001C CALL R6 1 + 0x20180D09, // 001D NE R6 R6 K9 + 0x781A0008, // 001E JMPF R6 #0028 + 0x60180005, // 001F GETGBL R6 G5 + 0x5C1C0A00, // 0020 MOVE R7 R5 + 0x7C180200, // 0021 CALL R6 1 + 0x8C1C010A, // 0022 GETMET R7 R0 K10 + 0x5C240C00, // 0023 MOVE R9 R6 + 0x5C280800, // 0024 MOVE R10 R4 + 0x5C2C0A00, // 0025 MOVE R11 R5 + 0x7C1C0800, // 0026 CALL R7 4 + 0x70020006, // 0027 JMP #002F + 0x8C18010B, // 0028 GETMET R6 R0 K11 + 0x60200018, // 0029 GETGBL R8 G24 + 0x5824000C, // 002A LDCONST R9 K12 + 0x5C280600, // 002B MOVE R10 R3 + 0x7C200400, // 002C CALL R8 2 + 0x7C180400, // 002D CALL R6 2 + 0x80000C00, // 002E RET 0 + 0x8C14010D, // 002F GETMET R5 R0 K13 + 0x7C140200, // 0030 CALL R5 1 + 0x8C14010E, // 0031 GETMET R5 R0 K14 + 0x581C000F, // 0032 LDCONST R7 K15 + 0x7C140400, // 0033 CALL R5 2 + 0x8C180110, // 0034 GETMET R6 R0 K16 + 0x7C180200, // 0035 CALL R6 1 + 0x8C1C0111, // 0036 GETMET R7 R0 K17 + 0x5C240600, // 0037 MOVE R9 R3 + 0x7C1C0400, // 0038 CALL R7 2 + 0x60200018, // 0039 GETGBL R8 G24 + 0x58240012, // 003A LDCONST R9 K18 + 0x5C280E00, // 003B MOVE R10 R7 + 0x5C2C0800, // 003C MOVE R11 R4 + 0x5C300A00, // 003D MOVE R12 R5 + 0x7C200800, // 003E CALL R8 4 + 0x8C240113, // 003F GETMET R9 R0 K19 + 0x602C0018, // 0040 GETGBL R11 G24 + 0x58300014, // 0041 LDCONST R12 K20 + 0x5C340200, // 0042 MOVE R13 R1 + 0x5C380400, // 0043 MOVE R14 R2 + 0x5C3C1000, // 0044 MOVE R15 R8 + 0x5C400C00, // 0045 MOVE R16 R6 + 0x7C2C0A00, // 0046 CALL R11 5 + 0x7C240400, // 0047 CALL R9 2 + 0x70020007, // 0048 JMP #0051 + 0x8C10010B, // 0049 GETMET R4 R0 K11 + 0x60180018, // 004A GETGBL R6 G24 + 0x581C0015, // 004B LDCONST R7 K21 + 0x5C200600, // 004C MOVE R8 R3 + 0x7C180400, // 004D CALL R6 2 + 0x7C100400, // 004E CALL R4 2 + 0x8C100116, // 004F GETMET R4 R0 K22 + 0x7C100200, // 0050 CALL R4 1 + 0x80000000, // 0051 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _generate_anonymous_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 2), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(push), + /* K1 */ be_nested_str_weak(_X20_X20provider_X2E_X25s_X20_X3D_X20_X25s_X25s), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[10]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x60140018, // 0002 GETGBL R5 G24 + 0x58180001, // 0003 LDCONST R6 K1 + 0x5C1C0000, // 0004 MOVE R7 R0 + 0x5C200200, // 0005 MOVE R8 R1 + 0x5C240400, // 0006 MOVE R9 R2 + 0x7C140800, // 0007 CALL R5 4 + 0x7C0C0400, // 0008 CALL R3 2 + 0x80000000, // 0009 RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(push), + /* K1 */ be_nested_str_weak(_X28def_X20_X28engine_X29), + /* K2 */ be_nested_str_weak(_X20_X20var_X20provider_X20_X3D_X20animation_X2E_X25s_X28engine_X29), + /* K3 */ be_nested_str_weak(expect_left_paren), + /* K4 */ be_nested_str_weak(_process_parameters_core), + /* K5 */ be_nested_str_weak(generic), + /* K6 */ be_nested_str_weak(expect_right_paren), + /* K7 */ be_nested_str_weak(_X20_X20return_X20provider), + /* K8 */ be_nested_str_weak(end_X29_X28engine_X29), + /* K9 */ be_nested_str_weak(), + /* K10 */ be_const_int(0), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(_X0A), + /* K13 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(_generate_anonymous_function_call), + &be_const_str_solidified, + ( &(const binstruction[49]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x8C0C0500, // 0002 GETMET R3 R2 K0 + 0x58140001, // 0003 LDCONST R5 K1 + 0x7C0C0400, // 0004 CALL R3 2 + 0x8C0C0500, // 0005 GETMET R3 R2 K0 + 0x60140018, // 0006 GETGBL R5 G24 + 0x58180002, // 0007 LDCONST R6 K2 + 0x5C1C0200, // 0008 MOVE R7 R1 + 0x7C140400, // 0009 CALL R5 2 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x7C0C0200, // 000C CALL R3 1 + 0x840C0000, // 000D CLOSURE R3 P0 + 0x8C100104, // 000E GETMET R4 R0 K4 + 0x5C180200, // 000F MOVE R6 R1 + 0x581C0005, // 0010 LDCONST R7 K5 + 0x5C200600, // 0011 MOVE R8 R3 + 0x7C100800, // 0012 CALL R4 4 + 0x8C100106, // 0013 GETMET R4 R0 K6 + 0x7C100200, // 0014 CALL R4 1 + 0x8C100500, // 0015 GETMET R4 R2 K0 + 0x58180007, // 0016 LDCONST R6 K7 + 0x7C100400, // 0017 CALL R4 2 + 0x8C100500, // 0018 GETMET R4 R2 K0 + 0x58180008, // 0019 LDCONST R6 K8 + 0x7C100400, // 001A CALL R4 2 + 0x58100009, // 001B LDCONST R4 K9 + 0x60140010, // 001C GETGBL R5 G16 + 0x6018000C, // 001D GETGBL R6 G12 + 0x5C1C0400, // 001E MOVE R7 R2 + 0x7C180200, // 001F CALL R6 1 + 0x04180D0B, // 0020 SUB R6 R6 K11 + 0x401A1406, // 0021 CONNECT R6 K10 R6 + 0x7C140200, // 0022 CALL R5 1 + 0xA8020007, // 0023 EXBLK 0 #002C + 0x5C180A00, // 0024 MOVE R6 R5 + 0x7C180000, // 0025 CALL R6 0 + 0x241C0D0A, // 0026 GT R7 R6 K10 + 0x781E0000, // 0027 JMPF R7 #0029 + 0x0010090C, // 0028 ADD R4 R4 K12 + 0x941C0406, // 0029 GETIDX R7 R2 R6 + 0x00100807, // 002A ADD R4 R4 R7 + 0x7001FFF7, // 002B JMP #0024 + 0x5814000D, // 002C LDCONST R5 K13 + 0xAC140200, // 002D CATCH R5 1 0 + 0xB0080000, // 002E RAISE 2 R0 R0 + 0xA0000000, // 002F CLOSE R0 + 0x80040800, // 0030 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_computation_closure_from_string +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string, /* name */ + be_nested_proto( + 9, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(transform_expression_for_closure), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(_X20_X20), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(replace), + /* K6 */ be_nested_str_weak(_X20), + /* K7 */ be_nested_str_weak(def_X20_X28self_X29_X20return_X20_X25s_X20end), + /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), + }), + be_str_weak(create_computation_closure_from_string), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0101, // 0001 GETMET R3 R0 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x8C100502, // 0004 GETMET R4 R2 K2 + 0x5C180600, // 0005 MOVE R6 R3 + 0x581C0003, // 0006 LDCONST R7 K3 + 0x7C100600, // 0007 CALL R4 3 + 0x28100904, // 0008 GE R4 R4 K4 + 0x78120006, // 0009 JMPF R4 #0011 + 0x8C100505, // 000A GETMET R4 R2 K5 + 0x5C180600, // 000B MOVE R6 R3 + 0x581C0003, // 000C LDCONST R7 K3 + 0x58200006, // 000D LDCONST R8 K6 + 0x7C100800, // 000E CALL R4 4 + 0x5C0C0800, // 000F MOVE R3 R4 + 0x7001FFF2, // 0010 JMP #0004 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140007, // 0012 LDCONST R5 K7 + 0x5C180600, // 0013 MOVE R6 R3 + 0x7C100400, // 0014 CALL R4 2 + 0x60140018, // 0015 GETGBL R5 G24 + 0x58180008, // 0016 LDCONST R6 K8 + 0x5C1C0800, // 0017 MOVE R7 R4 + 0x7C140400, // 0018 CALL R5 2 + 0x80040A00, // 0019 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_unary_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ @@ -5586,48 +7891,71 @@ be_local_closure(class_SimpleDSLTranspiler_process_log_call, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(fluent), - /* K1 */ be_nested_str_weak(def_X20_X28engine_X29_X20log_X28f_X22_X25s_X22_X2C_X203_X29_X20end), - /* K2 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), - /* K3 */ be_nested_str_weak(get_indent), - /* K4 */ be_nested_str_weak(expression), - /* K5 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29), - /* K6 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29_X25s), + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Expected_X20value), + /* K3 */ be_nested_str_weak(nil), + /* K4 */ be_nested_str_weak(type), + /* K5 */ be_nested_str_weak(animation_dsl), + /* K6 */ be_nested_str_weak(Token), + /* K7 */ be_nested_str_weak(MINUS), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(process_unary_expression), + /* K10 */ be_nested_str_weak(_X28_X2D_X25s_X29), + /* K11 */ be_nested_str_weak(PLUS), + /* K12 */ be_nested_str_weak(process_primary_expression), }), - be_str_weak(process_log_call), + be_str_weak(process_unary_expression), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x1C100500, // 0000 EQ R4 R2 K0 - 0x7812000C, // 0001 JMPF R4 #000F - 0x60100018, // 0002 GETGBL R4 G24 - 0x58140001, // 0003 LDCONST R5 K1 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x60140018, // 0006 GETGBL R5 G24 - 0x58180002, // 0007 LDCONST R6 K2 - 0x8C1C0103, // 0008 GETMET R7 R0 K3 - 0x7C1C0200, // 0009 CALL R7 1 - 0x5C200800, // 000A MOVE R8 R4 - 0x5C240600, // 000B MOVE R9 R3 - 0x7C140800, // 000C CALL R5 4 - 0x80040A00, // 000D RET 1 R5 - 0x7002000D, // 000E JMP #001D - 0x1C100504, // 000F EQ R4 R2 K4 - 0x78120005, // 0010 JMPF R4 #0017 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140005, // 0012 LDCONST R5 K5 - 0x5C180200, // 0013 MOVE R6 R1 - 0x7C100400, // 0014 CALL R4 2 - 0x80040800, // 0015 RET 1 R4 - 0x70020005, // 0016 JMP #001D - 0x60100018, // 0017 GETGBL R4 G24 - 0x58140006, // 0018 LDCONST R5 K6 - 0x5C180200, // 0019 MOVE R6 R1 - 0x5C1C0600, // 001A MOVE R7 R3 - 0x7C100600, // 001B CALL R4 3 - 0x80040800, // 001C RET 1 R4 - 0x80000000, // 001D RET 0 + ( &(const binstruction[47]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x4C140000, // 0002 LDNIL R5 + 0x1C140805, // 0003 EQ R5 R4 R5 + 0x78160003, // 0004 JMPF R5 #0009 + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x581C0002, // 0006 LDCONST R7 K2 + 0x7C140400, // 0007 CALL R5 2 + 0x80060600, // 0008 RET 1 K3 + 0x88140904, // 0009 GETMBR R5 R4 K4 + 0xB81A0A00, // 000A GETNGBL R6 K5 + 0x88180D06, // 000B GETMBR R6 R6 K6 + 0x88180D07, // 000C GETMBR R6 R6 K7 + 0x1C140A06, // 000D EQ R5 R5 R6 + 0x7816000B, // 000E JMPF R5 #001B + 0x8C140108, // 000F GETMET R5 R0 K8 + 0x7C140200, // 0010 CALL R5 1 + 0x8C140109, // 0011 GETMET R5 R0 K9 + 0x5C1C0200, // 0012 MOVE R7 R1 + 0x50200000, // 0013 LDBOOL R8 0 0 + 0x5C240600, // 0014 MOVE R9 R3 + 0x7C140800, // 0015 CALL R5 4 + 0x60180018, // 0016 GETGBL R6 G24 + 0x581C000A, // 0017 LDCONST R7 K10 + 0x5C200A00, // 0018 MOVE R8 R5 + 0x7C180400, // 0019 CALL R6 2 + 0x80040C00, // 001A RET 1 R6 + 0x88140904, // 001B GETMBR R5 R4 K4 + 0xB81A0A00, // 001C GETNGBL R6 K5 + 0x88180D06, // 001D GETMBR R6 R6 K6 + 0x88180D0B, // 001E GETMBR R6 R6 K11 + 0x1C140A06, // 001F EQ R5 R5 R6 + 0x78160007, // 0020 JMPF R5 #0029 + 0x8C140108, // 0021 GETMET R5 R0 K8 + 0x7C140200, // 0022 CALL R5 1 + 0x8C140109, // 0023 GETMET R5 R0 K9 + 0x5C1C0200, // 0024 MOVE R7 R1 + 0x50200000, // 0025 LDBOOL R8 0 0 + 0x5C240600, // 0026 MOVE R9 R3 + 0x7C140800, // 0027 CALL R5 4 + 0x80040A00, // 0028 RET 1 R5 + 0x8C14010C, // 0029 GETMET R5 R0 K12 + 0x5C1C0200, // 002A MOVE R7 R1 + 0x5C200400, // 002B MOVE R8 R2 + 0x5C240600, // 002C MOVE R9 R3 + 0x7C140800, // 002D CALL R5 4 + 0x80040A00, // 002E RET 1 R5 }) ) ); @@ -5639,15 +7967,15 @@ be_local_closure(class_SimpleDSLTranspiler_process_log_call, /* name */ ********************************************************************/ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name */ be_nested_proto( - 13, /* nstack */ - 3, /* argc */ + 14, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[57]) { /* constants */ + ( &(const bvalue[62]) { /* constants */ /* K0 */ be_nested_str_weak(current), /* K1 */ be_nested_str_weak(error), /* K2 */ be_nested_str_weak(Expected_X20value), @@ -5664,364 +7992,792 @@ be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* name /* K13 */ be_nested_str_weak(IDENTIFIER), /* K14 */ be_nested_str_weak(peek), /* K15 */ be_nested_str_weak(value), - /* K16 */ be_nested_str_weak(_is_simple_function_call), - /* K17 */ be_nested_str_weak(process_function_call), - /* K18 */ be_nested_str_weak(argument), - /* K19 */ be_nested_str_weak(property), - /* K20 */ be_nested_str_weak(variable), - /* K21 */ be_nested_str_weak(process_nested_function_call), - /* K22 */ be_nested_str_weak(COLOR), - /* K23 */ be_nested_str_weak(convert_color), - /* K24 */ be_nested_str_weak(TIME), - /* K25 */ be_nested_str_weak(process_time_value), - /* K26 */ be_nested_str_weak(PERCENTAGE), - /* K27 */ be_nested_str_weak(process_percentage_value), - /* K28 */ be_nested_str_weak(NUMBER), - /* K29 */ be_nested_str_weak(STRING), - /* K30 */ be_nested_str_weak(_X22_X25s_X22), - /* K31 */ be_nested_str_weak(LEFT_BRACKET), - /* K32 */ be_nested_str_weak(process_array_literal), - /* K33 */ be_nested_str_weak(DOT), - /* K34 */ be_nested_str_weak(expect_identifier), - /* K35 */ be_nested_str_weak(user), - /* K36 */ be_nested_str_weak(_process_user_function_call), - /* K37 */ be_nested_str_weak(symbol_table), - /* K38 */ be_nested_str_weak(contains), - /* K39 */ be_nested_str_weak(string), - /* K40 */ be_nested_str_weak(_validate_single_parameter), - /* K41 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20references_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), - /* K42 */ be_nested_str_weak(introspect), - /* K43 */ be_nested_str_weak(), - /* K44 */ be_nested_str_weak(animation), - /* K45 */ be_nested_str_weak(animation_X2E_X25s), - /* K46 */ be_nested_str_weak(_X25s_), - /* K47 */ be_nested_str_weak(repeat_count), - /* K48 */ be_nested_str_weak(_X25s_X2E_X25s), - /* K49 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), - /* K50 */ be_nested_str_weak(startswith), - /* K51 */ be_nested_str_weak(PALETTE_), - /* K52 */ be_nested_str_weak(is_color_name), - /* K53 */ be_nested_str_weak(get_named_color_value), - /* K54 */ be_nested_str_weak(true), - /* K55 */ be_nested_str_weak(false), - /* K56 */ be_nested_str_weak(Unexpected_X20value_X3A_X20_X25s), + /* K16 */ be_nested_str_weak(is_math_method), + /* K17 */ be_nested_str_weak(process_function_arguments), + /* K18 */ be_nested_str_weak(self_X2E_X25s_X28_X25s_X29), + /* K19 */ be_nested_str_weak(log), + /* K20 */ be_nested_str_weak(process_log_call), + /* K21 */ be_nested_str_weak(expression), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_nested_str_weak(template_definitions), + /* K24 */ be_nested_str_weak(contains), + /* K25 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), + /* K26 */ be_nested_str_weak(self_X2Eengine), + /* K27 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K28 */ be_nested_str_weak(Function_X20_X27_X25s_X27_X20not_X20supported_X20in_X20expression_X20context), + /* K29 */ be_nested_str_weak(_is_simple_function_call), + /* K30 */ be_nested_str_weak(process_function_call), + /* K31 */ be_nested_str_weak(argument), + /* K32 */ be_nested_str_weak(property), + /* K33 */ be_nested_str_weak(variable), + /* K34 */ be_nested_str_weak(process_nested_function_call), + /* K35 */ be_nested_str_weak(COLOR), + /* K36 */ be_nested_str_weak(convert_color), + /* K37 */ be_nested_str_weak(TIME), + /* K38 */ be_nested_str_weak(process_time_value), + /* K39 */ be_nested_str_weak(PERCENTAGE), + /* K40 */ be_nested_str_weak(process_percentage_value), + /* K41 */ be_nested_str_weak(NUMBER), + /* K42 */ be_nested_str_weak(STRING), + /* K43 */ be_nested_str_weak(_X22_X25s_X22), + /* K44 */ be_nested_str_weak(LEFT_BRACKET), + /* K45 */ be_nested_str_weak(process_array_literal), + /* K46 */ be_nested_str_weak(DOT), + /* K47 */ be_nested_str_weak(expect_identifier), + /* K48 */ be_nested_str_weak(user), + /* K49 */ be_nested_str_weak(_process_user_function_call), + /* K50 */ be_nested_str_weak(symbol_table), + /* K51 */ be_nested_str_weak(string), + /* K52 */ be_nested_str_weak(_validate_single_parameter), + /* K53 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20references_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), + /* K54 */ be_nested_str_weak(resolve_symbol_reference), + /* K55 */ be_nested_str_weak(repeat_count), + /* K56 */ be_nested_str_weak(_X25s_X2E_X25s), + /* K57 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), + /* K58 */ be_nested_str_weak(true), + /* K59 */ be_nested_str_weak(false), + /* K60 */ be_nested_str_weak(animation_X2E_X25s), + /* K61 */ be_nested_str_weak(Unexpected_X20value_X3A_X20_X25s), }), be_str_weak(process_primary_expression), &be_const_str_solidified, - ( &(const binstruction[313]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x4C100000, // 0002 LDNIL R4 - 0x1C100604, // 0003 EQ R4 R3 R4 - 0x78120003, // 0004 JMPF R4 #0009 - 0x8C100101, // 0005 GETMET R4 R0 K1 - 0x58180002, // 0006 LDCONST R6 K2 - 0x7C100400, // 0007 CALL R4 2 + ( &(const binstruction[328]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x4C140000, // 0002 LDNIL R5 + 0x1C140805, // 0003 EQ R5 R4 R5 + 0x78160003, // 0004 JMPF R5 #0009 + 0x8C140101, // 0005 GETMET R5 R0 K1 + 0x581C0002, // 0006 LDCONST R7 K2 + 0x7C140400, // 0007 CALL R5 2 0x80060600, // 0008 RET 1 K3 - 0x88100704, // 0009 GETMBR R4 R3 K4 - 0xB8160A00, // 000A GETNGBL R5 K5 - 0x88140B06, // 000B GETMBR R5 R5 K6 - 0x88140B07, // 000C GETMBR R5 R5 K7 - 0x1C100805, // 000D EQ R4 R4 R5 - 0x7812000C, // 000E JMPF R4 #001C - 0x8C100108, // 000F GETMET R4 R0 K8 - 0x7C100200, // 0010 CALL R4 1 - 0x8C100109, // 0011 GETMET R4 R0 K9 - 0x5C180200, // 0012 MOVE R6 R1 - 0x501C0000, // 0013 LDBOOL R7 0 0 - 0x7C100600, // 0014 CALL R4 3 - 0x8C14010A, // 0015 GETMET R5 R0 K10 - 0x7C140200, // 0016 CALL R5 1 - 0x60140018, // 0017 GETGBL R5 G24 - 0x5818000B, // 0018 LDCONST R6 K11 - 0x5C1C0800, // 0019 MOVE R7 R4 - 0x7C140400, // 001A CALL R5 2 - 0x80040A00, // 001B RET 1 R5 - 0x88100704, // 001C GETMBR R4 R3 K4 - 0xB8160A00, // 001D GETNGBL R5 K5 - 0x88140B06, // 001E GETMBR R5 R5 K6 - 0x88140B0C, // 001F GETMBR R5 R5 K12 - 0x1C100805, // 0020 EQ R4 R4 R5 - 0x74120005, // 0021 JMPT R4 #0028 - 0x88100704, // 0022 GETMBR R4 R3 K4 - 0xB8160A00, // 0023 GETNGBL R5 K5 - 0x88140B06, // 0024 GETMBR R5 R5 K6 - 0x88140B0D, // 0025 GETMBR R5 R5 K13 - 0x1C100805, // 0026 EQ R4 R4 R5 - 0x78120024, // 0027 JMPF R4 #004D - 0x8C10010E, // 0028 GETMET R4 R0 K14 - 0x7C100200, // 0029 CALL R4 1 - 0x4C140000, // 002A LDNIL R5 - 0x20100805, // 002B NE R4 R4 R5 - 0x7812001F, // 002C JMPF R4 #004D - 0x8C10010E, // 002D GETMET R4 R0 K14 - 0x7C100200, // 002E CALL R4 1 - 0x88100904, // 002F GETMBR R4 R4 K4 - 0xB8160A00, // 0030 GETNGBL R5 K5 - 0x88140B06, // 0031 GETMBR R5 R5 K6 - 0x88140B07, // 0032 GETMBR R5 R5 K7 - 0x1C100805, // 0033 EQ R4 R4 R5 - 0x78120017, // 0034 JMPF R4 #004D - 0x8810070F, // 0035 GETMBR R4 R3 K15 - 0x8C140110, // 0036 GETMET R5 R0 K16 - 0x5C1C0800, // 0037 MOVE R7 R4 - 0x7C140400, // 0038 CALL R5 2 - 0x78160004, // 0039 JMPF R5 #003F - 0x8C140111, // 003A GETMET R5 R0 K17 - 0x5C1C0200, // 003B MOVE R7 R1 - 0x7C140400, // 003C CALL R5 2 - 0x80040A00, // 003D RET 1 R5 - 0x7002000D, // 003E JMP #004D - 0x1C140312, // 003F EQ R5 R1 K18 - 0x74160003, // 0040 JMPT R5 #0045 - 0x1C140313, // 0041 EQ R5 R1 K19 - 0x74160001, // 0042 JMPT R5 #0045 - 0x1C140314, // 0043 EQ R5 R1 K20 - 0x78160003, // 0044 JMPF R5 #0049 - 0x8C140115, // 0045 GETMET R5 R0 K21 - 0x7C140200, // 0046 CALL R5 1 - 0x80040A00, // 0047 RET 1 R5 - 0x70020003, // 0048 JMP #004D - 0x8C140111, // 0049 GETMET R5 R0 K17 - 0x5C1C0200, // 004A MOVE R7 R1 - 0x7C140400, // 004B CALL R5 2 - 0x80040A00, // 004C RET 1 R5 - 0x88100704, // 004D GETMBR R4 R3 K4 - 0xB8160A00, // 004E GETNGBL R5 K5 - 0x88140B06, // 004F GETMBR R5 R5 K6 - 0x88140B16, // 0050 GETMBR R5 R5 K22 - 0x1C100805, // 0051 EQ R4 R4 R5 - 0x78120005, // 0052 JMPF R4 #0059 - 0x8C100108, // 0053 GETMET R4 R0 K8 - 0x7C100200, // 0054 CALL R4 1 - 0x8C100117, // 0055 GETMET R4 R0 K23 - 0x8818070F, // 0056 GETMBR R6 R3 K15 - 0x7C100400, // 0057 CALL R4 2 - 0x80040800, // 0058 RET 1 R4 - 0x88100704, // 0059 GETMBR R4 R3 K4 - 0xB8160A00, // 005A GETNGBL R5 K5 - 0x88140B06, // 005B GETMBR R5 R5 K6 - 0x88140B18, // 005C GETMBR R5 R5 K24 - 0x1C100805, // 005D EQ R4 R4 R5 - 0x78120004, // 005E JMPF R4 #0064 - 0x60100008, // 005F GETGBL R4 G8 - 0x8C140119, // 0060 GETMET R5 R0 K25 - 0x7C140200, // 0061 CALL R5 1 - 0x7C100200, // 0062 CALL R4 1 - 0x80040800, // 0063 RET 1 R4 - 0x88100704, // 0064 GETMBR R4 R3 K4 - 0xB8160A00, // 0065 GETNGBL R5 K5 - 0x88140B06, // 0066 GETMBR R5 R5 K6 - 0x88140B1A, // 0067 GETMBR R5 R5 K26 - 0x1C100805, // 0068 EQ R4 R4 R5 - 0x78120004, // 0069 JMPF R4 #006F - 0x60100008, // 006A GETGBL R4 G8 - 0x8C14011B, // 006B GETMET R5 R0 K27 - 0x7C140200, // 006C CALL R5 1 - 0x7C100200, // 006D CALL R4 1 - 0x80040800, // 006E RET 1 R4 - 0x88100704, // 006F GETMBR R4 R3 K4 - 0xB8160A00, // 0070 GETNGBL R5 K5 - 0x88140B06, // 0071 GETMBR R5 R5 K6 - 0x88140B1C, // 0072 GETMBR R5 R5 K28 - 0x1C100805, // 0073 EQ R4 R4 R5 - 0x78120003, // 0074 JMPF R4 #0079 - 0x8810070F, // 0075 GETMBR R4 R3 K15 - 0x8C140108, // 0076 GETMET R5 R0 K8 - 0x7C140200, // 0077 CALL R5 1 - 0x80040800, // 0078 RET 1 R4 - 0x88100704, // 0079 GETMBR R4 R3 K4 - 0xB8160A00, // 007A GETNGBL R5 K5 - 0x88140B06, // 007B GETMBR R5 R5 K6 - 0x88140B1D, // 007C GETMBR R5 R5 K29 - 0x1C100805, // 007D EQ R4 R4 R5 - 0x78120007, // 007E JMPF R4 #0087 - 0x8810070F, // 007F GETMBR R4 R3 K15 - 0x8C140108, // 0080 GETMET R5 R0 K8 - 0x7C140200, // 0081 CALL R5 1 - 0x60140018, // 0082 GETGBL R5 G24 - 0x5818001E, // 0083 LDCONST R6 K30 - 0x5C1C0800, // 0084 MOVE R7 R4 - 0x7C140400, // 0085 CALL R5 2 - 0x80040A00, // 0086 RET 1 R5 - 0x88100704, // 0087 GETMBR R4 R3 K4 - 0xB8160A00, // 0088 GETNGBL R5 K5 - 0x88140B06, // 0089 GETMBR R5 R5 K6 - 0x88140B1F, // 008A GETMBR R5 R5 K31 - 0x1C100805, // 008B EQ R4 R4 R5 - 0x78120002, // 008C JMPF R4 #0090 - 0x8C100120, // 008D GETMET R4 R0 K32 - 0x7C100200, // 008E CALL R4 1 - 0x80040800, // 008F RET 1 R4 - 0x88100704, // 0090 GETMBR R4 R3 K4 - 0xB8160A00, // 0091 GETNGBL R5 K5 - 0x88140B06, // 0092 GETMBR R5 R5 K6 - 0x88140B0D, // 0093 GETMBR R5 R5 K13 - 0x1C100805, // 0094 EQ R4 R4 R5 - 0x7812007B, // 0095 JMPF R4 #0112 - 0x8810070F, // 0096 GETMBR R4 R3 K15 - 0x8C140108, // 0097 GETMET R5 R0 K8 - 0x7C140200, // 0098 CALL R5 1 - 0x8C140100, // 0099 GETMET R5 R0 K0 - 0x7C140200, // 009A CALL R5 1 - 0x4C180000, // 009B LDNIL R6 - 0x20140A06, // 009C NE R5 R5 R6 - 0x7816004E, // 009D JMPF R5 #00ED - 0x8C140100, // 009E GETMET R5 R0 K0 - 0x7C140200, // 009F CALL R5 1 - 0x88140B04, // 00A0 GETMBR R5 R5 K4 - 0xB81A0A00, // 00A1 GETNGBL R6 K5 - 0x88180D06, // 00A2 GETMBR R6 R6 K6 - 0x88180D21, // 00A3 GETMBR R6 R6 K33 - 0x1C140A06, // 00A4 EQ R5 R5 R6 - 0x78160046, // 00A5 JMPF R5 #00ED - 0x8C140108, // 00A6 GETMET R5 R0 K8 + 0x88140904, // 0009 GETMBR R5 R4 K4 + 0xB81A0A00, // 000A GETNGBL R6 K5 + 0x88180D06, // 000B GETMBR R6 R6 K6 + 0x88180D07, // 000C GETMBR R6 R6 K7 + 0x1C140A06, // 000D EQ R5 R5 R6 + 0x7816000D, // 000E JMPF R5 #001D + 0x8C140108, // 000F GETMET R5 R0 K8 + 0x7C140200, // 0010 CALL R5 1 + 0x8C140109, // 0011 GETMET R5 R0 K9 + 0x5C1C0200, // 0012 MOVE R7 R1 + 0x50200000, // 0013 LDBOOL R8 0 0 + 0x5C240600, // 0014 MOVE R9 R3 + 0x7C140800, // 0015 CALL R5 4 + 0x8C18010A, // 0016 GETMET R6 R0 K10 + 0x7C180200, // 0017 CALL R6 1 + 0x60180018, // 0018 GETGBL R6 G24 + 0x581C000B, // 0019 LDCONST R7 K11 + 0x5C200A00, // 001A MOVE R8 R5 + 0x7C180400, // 001B CALL R6 2 + 0x80040C00, // 001C RET 1 R6 + 0x88140904, // 001D GETMBR R5 R4 K4 + 0xB81A0A00, // 001E GETNGBL R6 K5 + 0x88180D06, // 001F GETMBR R6 R6 K6 + 0x88180D0C, // 0020 GETMBR R6 R6 K12 + 0x1C140A06, // 0021 EQ R5 R5 R6 + 0x74160005, // 0022 JMPT R5 #0029 + 0x88140904, // 0023 GETMBR R5 R4 K4 + 0xB81A0A00, // 0024 GETNGBL R6 K5 + 0x88180D06, // 0025 GETMBR R6 R6 K6 + 0x88180D0D, // 0026 GETMBR R6 R6 K13 + 0x1C140A06, // 0027 EQ R5 R5 R6 + 0x7816005D, // 0028 JMPF R5 #0087 + 0x8C14010E, // 0029 GETMET R5 R0 K14 + 0x7C140200, // 002A CALL R5 1 + 0x4C180000, // 002B LDNIL R6 + 0x20140A06, // 002C NE R5 R5 R6 + 0x78160058, // 002D JMPF R5 #0087 + 0x8C14010E, // 002E GETMET R5 R0 K14 + 0x7C140200, // 002F CALL R5 1 + 0x88140B04, // 0030 GETMBR R5 R5 K4 + 0xB81A0A00, // 0031 GETNGBL R6 K5 + 0x88180D06, // 0032 GETMBR R6 R6 K6 + 0x88180D07, // 0033 GETMBR R6 R6 K7 + 0x1C140A06, // 0034 EQ R5 R5 R6 + 0x78160050, // 0035 JMPF R5 #0087 + 0x8814090F, // 0036 GETMBR R5 R4 K15 + 0x780E0037, // 0037 JMPF R3 #0070 + 0x8C180108, // 0038 GETMET R6 R0 K8 + 0x7C180200, // 0039 CALL R6 1 + 0x8C180110, // 003A GETMET R6 R0 K16 + 0x5C200A00, // 003B MOVE R8 R5 + 0x7C180400, // 003C CALL R6 2 + 0x781A0008, // 003D JMPF R6 #0047 + 0x8C180111, // 003E GETMET R6 R0 K17 + 0x50200200, // 003F LDBOOL R8 1 0 + 0x7C180400, // 0040 CALL R6 2 + 0x601C0018, // 0041 GETGBL R7 G24 + 0x58200012, // 0042 LDCONST R8 K18 + 0x5C240A00, // 0043 MOVE R9 R5 + 0x5C280C00, // 0044 MOVE R10 R6 + 0x7C1C0600, // 0045 CALL R7 3 + 0x80040E00, // 0046 RET 1 R7 + 0x1C180B13, // 0047 EQ R6 R5 K19 + 0x781A0008, // 0048 JMPF R6 #0052 + 0x8C180111, // 0049 GETMET R6 R0 K17 + 0x50200200, // 004A LDBOOL R8 1 0 + 0x7C180400, // 004B CALL R6 2 + 0x8C1C0114, // 004C GETMET R7 R0 K20 + 0x5C240C00, // 004D MOVE R9 R6 + 0x58280015, // 004E LDCONST R10 K21 + 0x582C0016, // 004F LDCONST R11 K22 + 0x7C1C0800, // 0050 CALL R7 4 + 0x80040E00, // 0051 RET 1 R7 + 0x88180117, // 0052 GETMBR R6 R0 K23 + 0x8C180D18, // 0053 GETMET R6 R6 K24 + 0x5C200A00, // 0054 MOVE R8 R5 + 0x7C180400, // 0055 CALL R6 2 + 0x781A0010, // 0056 JMPF R6 #0068 + 0x8C180111, // 0057 GETMET R6 R0 K17 + 0x50200200, // 0058 LDBOOL R8 1 0 + 0x7C180400, // 0059 CALL R6 2 + 0x201C0D16, // 005A NE R7 R6 K22 + 0x781E0004, // 005B JMPF R7 #0061 + 0x601C0018, // 005C GETGBL R7 G24 + 0x58200019, // 005D LDCONST R8 K25 + 0x5C240C00, // 005E MOVE R9 R6 + 0x7C1C0400, // 005F CALL R7 2 + 0x70020000, // 0060 JMP #0062 + 0x581C001A, // 0061 LDCONST R7 K26 + 0x60200018, // 0062 GETGBL R8 G24 + 0x5824001B, // 0063 LDCONST R9 K27 + 0x5C280A00, // 0064 MOVE R10 R5 + 0x5C2C0E00, // 0065 MOVE R11 R7 + 0x7C200600, // 0066 CALL R8 3 + 0x80041000, // 0067 RET 1 R8 + 0x8C180101, // 0068 GETMET R6 R0 K1 + 0x60200018, // 0069 GETGBL R8 G24 + 0x5824001C, // 006A LDCONST R9 K28 + 0x5C280A00, // 006B MOVE R10 R5 + 0x7C200400, // 006C CALL R8 2 + 0x7C180400, // 006D CALL R6 2 + 0x80060600, // 006E RET 1 K3 + 0x70020016, // 006F JMP #0087 + 0x8C18011D, // 0070 GETMET R6 R0 K29 + 0x5C200A00, // 0071 MOVE R8 R5 + 0x7C180400, // 0072 CALL R6 2 + 0x781A0004, // 0073 JMPF R6 #0079 + 0x8C18011E, // 0074 GETMET R6 R0 K30 + 0x5C200200, // 0075 MOVE R8 R1 + 0x7C180400, // 0076 CALL R6 2 + 0x80040C00, // 0077 RET 1 R6 + 0x7002000D, // 0078 JMP #0087 + 0x1C18031F, // 0079 EQ R6 R1 K31 + 0x741A0003, // 007A JMPT R6 #007F + 0x1C180320, // 007B EQ R6 R1 K32 + 0x741A0001, // 007C JMPT R6 #007F + 0x1C180321, // 007D EQ R6 R1 K33 + 0x781A0003, // 007E JMPF R6 #0083 + 0x8C180122, // 007F GETMET R6 R0 K34 + 0x7C180200, // 0080 CALL R6 1 + 0x80040C00, // 0081 RET 1 R6 + 0x70020003, // 0082 JMP #0087 + 0x8C18011E, // 0083 GETMET R6 R0 K30 + 0x5C200200, // 0084 MOVE R8 R1 + 0x7C180400, // 0085 CALL R6 2 + 0x80040C00, // 0086 RET 1 R6 + 0x88140904, // 0087 GETMBR R5 R4 K4 + 0xB81A0A00, // 0088 GETNGBL R6 K5 + 0x88180D06, // 0089 GETMBR R6 R6 K6 + 0x88180D23, // 008A GETMBR R6 R6 K35 + 0x1C140A06, // 008B EQ R5 R5 R6 + 0x78160005, // 008C JMPF R5 #0093 + 0x8C140108, // 008D GETMET R5 R0 K8 + 0x7C140200, // 008E CALL R5 1 + 0x8C140124, // 008F GETMET R5 R0 K36 + 0x881C090F, // 0090 GETMBR R7 R4 K15 + 0x7C140400, // 0091 CALL R5 2 + 0x80040A00, // 0092 RET 1 R5 + 0x88140904, // 0093 GETMBR R5 R4 K4 + 0xB81A0A00, // 0094 GETNGBL R6 K5 + 0x88180D06, // 0095 GETMBR R6 R6 K6 + 0x88180D25, // 0096 GETMBR R6 R6 K37 + 0x1C140A06, // 0097 EQ R5 R5 R6 + 0x78160004, // 0098 JMPF R5 #009E + 0x60140008, // 0099 GETGBL R5 G8 + 0x8C180126, // 009A GETMET R6 R0 K38 + 0x7C180200, // 009B CALL R6 1 + 0x7C140200, // 009C CALL R5 1 + 0x80040A00, // 009D RET 1 R5 + 0x88140904, // 009E GETMBR R5 R4 K4 + 0xB81A0A00, // 009F GETNGBL R6 K5 + 0x88180D06, // 00A0 GETMBR R6 R6 K6 + 0x88180D27, // 00A1 GETMBR R6 R6 K39 + 0x1C140A06, // 00A2 EQ R5 R5 R6 + 0x78160004, // 00A3 JMPF R5 #00A9 + 0x60140008, // 00A4 GETGBL R5 G8 + 0x8C180128, // 00A5 GETMET R6 R0 K40 + 0x7C180200, // 00A6 CALL R6 1 0x7C140200, // 00A7 CALL R5 1 - 0x8C140122, // 00A8 GETMET R5 R0 K34 - 0x7C140200, // 00A9 CALL R5 1 - 0x1C180923, // 00AA EQ R6 R4 K35 - 0x781A0003, // 00AB JMPF R6 #00B0 - 0x8C180124, // 00AC GETMET R6 R0 K36 - 0x5C200A00, // 00AD MOVE R8 R5 - 0x7C180400, // 00AE CALL R6 2 - 0x80040C00, // 00AF RET 1 R6 - 0x88180125, // 00B0 GETMBR R6 R0 K37 - 0x8C180D26, // 00B1 GETMET R6 R6 K38 - 0x5C200800, // 00B2 MOVE R8 R4 - 0x7C180400, // 00B3 CALL R6 2 - 0x781A0016, // 00B4 JMPF R6 #00CC - 0x88180125, // 00B5 GETMBR R6 R0 K37 - 0x94180C04, // 00B6 GETIDX R6 R6 R4 - 0x601C0004, // 00B7 GETGBL R7 G4 - 0x5C200C00, // 00B8 MOVE R8 R6 - 0x7C1C0200, // 00B9 CALL R7 1 - 0x201C0F27, // 00BA NE R7 R7 K39 - 0x781E0008, // 00BB JMPF R7 #00C5 - 0x601C0005, // 00BC GETGBL R7 G5 - 0x5C200C00, // 00BD MOVE R8 R6 - 0x7C1C0200, // 00BE CALL R7 1 - 0x8C200128, // 00BF GETMET R8 R0 K40 - 0x5C280E00, // 00C0 MOVE R10 R7 - 0x5C2C0A00, // 00C1 MOVE R11 R5 - 0x5C300C00, // 00C2 MOVE R12 R6 - 0x7C200800, // 00C3 CALL R8 4 - 0x70020006, // 00C4 JMP #00CC - 0x8C1C0101, // 00C5 GETMET R7 R0 K1 - 0x60240018, // 00C6 GETGBL R9 G24 - 0x58280029, // 00C7 LDCONST R10 K41 - 0x5C2C0800, // 00C8 MOVE R11 R4 - 0x7C240400, // 00C9 CALL R9 2 - 0x7C1C0400, // 00CA CALL R7 2 - 0x80060600, // 00CB RET 1 K3 - 0xA41A5400, // 00CC IMPORT R6 K42 - 0x581C002B, // 00CD LDCONST R7 K43 - 0x8C200D26, // 00CE GETMET R8 R6 K38 - 0xB82A5800, // 00CF GETNGBL R10 K44 - 0x5C2C0800, // 00D0 MOVE R11 R4 - 0x7C200600, // 00D1 CALL R8 3 - 0x78220005, // 00D2 JMPF R8 #00D9 - 0x60200018, // 00D3 GETGBL R8 G24 - 0x5824002D, // 00D4 LDCONST R9 K45 - 0x5C280800, // 00D5 MOVE R10 R4 - 0x7C200400, // 00D6 CALL R8 2 - 0x5C1C1000, // 00D7 MOVE R7 R8 - 0x70020004, // 00D8 JMP #00DE - 0x60200018, // 00D9 GETGBL R8 G24 - 0x5824002E, // 00DA LDCONST R9 K46 - 0x5C280800, // 00DB MOVE R10 R4 - 0x7C200400, // 00DC CALL R8 2 - 0x5C1C1000, // 00DD MOVE R7 R8 - 0x1C20032F, // 00DE EQ R8 R1 K47 - 0x78220006, // 00DF JMPF R8 #00E7 - 0x60200018, // 00E0 GETGBL R8 G24 - 0x58240030, // 00E1 LDCONST R9 K48 - 0x5C280E00, // 00E2 MOVE R10 R7 - 0x5C2C0A00, // 00E3 MOVE R11 R5 - 0x7C200600, // 00E4 CALL R8 3 - 0x80041000, // 00E5 RET 1 R8 - 0x70020005, // 00E6 JMP #00ED - 0x60200018, // 00E7 GETGBL R8 G24 - 0x58240031, // 00E8 LDCONST R9 K49 - 0x5C280E00, // 00E9 MOVE R10 R7 - 0x5C2C0A00, // 00EA MOVE R11 R5 - 0x7C200600, // 00EB CALL R8 3 - 0x80041000, // 00EC RET 1 R8 - 0xA4164E00, // 00ED IMPORT R5 K39 - 0x8C180B32, // 00EE GETMET R6 R5 K50 - 0x5C200800, // 00EF MOVE R8 R4 - 0x58240033, // 00F0 LDCONST R9 K51 - 0x7C180600, // 00F1 CALL R6 3 - 0x781A0004, // 00F2 JMPF R6 #00F8 - 0x60180018, // 00F3 GETGBL R6 G24 - 0x581C002D, // 00F4 LDCONST R7 K45 - 0x5C200800, // 00F5 MOVE R8 R4 - 0x7C180400, // 00F6 CALL R6 2 - 0x80040C00, // 00F7 RET 1 R6 - 0xB81A0A00, // 00F8 GETNGBL R6 K5 - 0x8C180D34, // 00F9 GETMET R6 R6 K52 - 0x5C200800, // 00FA MOVE R8 R4 - 0x7C180400, // 00FB CALL R6 2 - 0x781A0003, // 00FC JMPF R6 #0101 - 0x8C180135, // 00FD GETMET R6 R0 K53 - 0x5C200800, // 00FE MOVE R8 R4 - 0x7C180400, // 00FF CALL R6 2 - 0x80040C00, // 0100 RET 1 R6 - 0xA41A5400, // 0101 IMPORT R6 K42 - 0x8C1C0D26, // 0102 GETMET R7 R6 K38 - 0xB8265800, // 0103 GETNGBL R9 K44 - 0x5C280800, // 0104 MOVE R10 R4 - 0x7C1C0600, // 0105 CALL R7 3 - 0x781E0005, // 0106 JMPF R7 #010D - 0x601C0018, // 0107 GETGBL R7 G24 - 0x5820002D, // 0108 LDCONST R8 K45 - 0x5C240800, // 0109 MOVE R9 R4 - 0x7C1C0400, // 010A CALL R7 2 - 0x80040E00, // 010B RET 1 R7 - 0x70020004, // 010C JMP #0112 - 0x601C0018, // 010D GETGBL R7 G24 - 0x5820002E, // 010E LDCONST R8 K46 - 0x5C240800, // 010F MOVE R9 R4 - 0x7C1C0400, // 0110 CALL R7 2 - 0x80040E00, // 0111 RET 1 R7 - 0x88100704, // 0112 GETMBR R4 R3 K4 - 0xB8160A00, // 0113 GETNGBL R5 K5 - 0x88140B06, // 0114 GETMBR R5 R5 K6 - 0x88140B0C, // 0115 GETMBR R5 R5 K12 - 0x1C100805, // 0116 EQ R4 R4 R5 - 0x78120009, // 0117 JMPF R4 #0122 - 0x8810070F, // 0118 GETMBR R4 R3 K15 - 0x1C100936, // 0119 EQ R4 R4 K54 - 0x74120002, // 011A JMPT R4 #011E - 0x8810070F, // 011B GETMBR R4 R3 K15 - 0x1C100937, // 011C EQ R4 R4 K55 - 0x78120003, // 011D JMPF R4 #0122 - 0x8810070F, // 011E GETMBR R4 R3 K15 - 0x8C140108, // 011F GETMET R5 R0 K8 - 0x7C140200, // 0120 CALL R5 1 - 0x80040800, // 0121 RET 1 R4 - 0x88100704, // 0122 GETMBR R4 R3 K4 - 0xB8160A00, // 0123 GETNGBL R5 K5 - 0x88140B06, // 0124 GETMBR R5 R5 K6 - 0x88140B0C, // 0125 GETMBR R5 R5 K12 - 0x1C100805, // 0126 EQ R4 R4 R5 - 0x78120007, // 0127 JMPF R4 #0130 - 0x8810070F, // 0128 GETMBR R4 R3 K15 - 0x8C140108, // 0129 GETMET R5 R0 K8 - 0x7C140200, // 012A CALL R5 1 - 0x60140018, // 012B GETGBL R5 G24 - 0x5818002D, // 012C LDCONST R6 K45 - 0x5C1C0800, // 012D MOVE R7 R4 - 0x7C140400, // 012E CALL R5 2 - 0x80040A00, // 012F RET 1 R5 - 0x8C100101, // 0130 GETMET R4 R0 K1 - 0x60180018, // 0131 GETGBL R6 G24 - 0x581C0038, // 0132 LDCONST R7 K56 - 0x8820070F, // 0133 GETMBR R8 R3 K15 - 0x7C180400, // 0134 CALL R6 2 - 0x7C100400, // 0135 CALL R4 2 - 0x8C100108, // 0136 GETMET R4 R0 K8 - 0x7C100200, // 0137 CALL R4 1 - 0x80060600, // 0138 RET 1 K3 + 0x80040A00, // 00A8 RET 1 R5 + 0x88140904, // 00A9 GETMBR R5 R4 K4 + 0xB81A0A00, // 00AA GETNGBL R6 K5 + 0x88180D06, // 00AB GETMBR R6 R6 K6 + 0x88180D29, // 00AC GETMBR R6 R6 K41 + 0x1C140A06, // 00AD EQ R5 R5 R6 + 0x78160003, // 00AE JMPF R5 #00B3 + 0x8814090F, // 00AF GETMBR R5 R4 K15 + 0x8C180108, // 00B0 GETMET R6 R0 K8 + 0x7C180200, // 00B1 CALL R6 1 + 0x80040A00, // 00B2 RET 1 R5 + 0x88140904, // 00B3 GETMBR R5 R4 K4 + 0xB81A0A00, // 00B4 GETNGBL R6 K5 + 0x88180D06, // 00B5 GETMBR R6 R6 K6 + 0x88180D2A, // 00B6 GETMBR R6 R6 K42 + 0x1C140A06, // 00B7 EQ R5 R5 R6 + 0x78160007, // 00B8 JMPF R5 #00C1 + 0x8814090F, // 00B9 GETMBR R5 R4 K15 + 0x8C180108, // 00BA GETMET R6 R0 K8 + 0x7C180200, // 00BB CALL R6 1 + 0x60180018, // 00BC GETGBL R6 G24 + 0x581C002B, // 00BD LDCONST R7 K43 + 0x5C200A00, // 00BE MOVE R8 R5 + 0x7C180400, // 00BF CALL R6 2 + 0x80040C00, // 00C0 RET 1 R6 + 0x88140904, // 00C1 GETMBR R5 R4 K4 + 0xB81A0A00, // 00C2 GETNGBL R6 K5 + 0x88180D06, // 00C3 GETMBR R6 R6 K6 + 0x88180D2C, // 00C4 GETMBR R6 R6 K44 + 0x1C140A06, // 00C5 EQ R5 R5 R6 + 0x78160004, // 00C6 JMPF R5 #00CC + 0x5C140600, // 00C7 MOVE R5 R3 + 0x74160002, // 00C8 JMPT R5 #00CC + 0x8C14012D, // 00C9 GETMET R5 R0 K45 + 0x7C140200, // 00CA CALL R5 1 + 0x80040A00, // 00CB RET 1 R5 + 0x88140904, // 00CC GETMBR R5 R4 K4 + 0xB81A0A00, // 00CD GETNGBL R6 K5 + 0x88180D06, // 00CE GETMBR R6 R6 K6 + 0x88180D0D, // 00CF GETMBR R6 R6 K13 + 0x1C140A06, // 00D0 EQ R5 R5 R6 + 0x7816004E, // 00D1 JMPF R5 #0121 + 0x8814090F, // 00D2 GETMBR R5 R4 K15 + 0x8C180108, // 00D3 GETMET R6 R0 K8 + 0x7C180200, // 00D4 CALL R6 1 + 0x8C180100, // 00D5 GETMET R6 R0 K0 + 0x7C180200, // 00D6 CALL R6 1 + 0x4C1C0000, // 00D7 LDNIL R7 + 0x20180C07, // 00D8 NE R6 R6 R7 + 0x781A0042, // 00D9 JMPF R6 #011D + 0x8C180100, // 00DA GETMET R6 R0 K0 + 0x7C180200, // 00DB CALL R6 1 + 0x88180D04, // 00DC GETMBR R6 R6 K4 + 0xB81E0A00, // 00DD GETNGBL R7 K5 + 0x881C0F06, // 00DE GETMBR R7 R7 K6 + 0x881C0F2E, // 00DF GETMBR R7 R7 K46 + 0x1C180C07, // 00E0 EQ R6 R6 R7 + 0x781A003A, // 00E1 JMPF R6 #011D + 0x8C180108, // 00E2 GETMET R6 R0 K8 + 0x7C180200, // 00E3 CALL R6 1 + 0x8C18012F, // 00E4 GETMET R6 R0 K47 + 0x7C180200, // 00E5 CALL R6 1 + 0x1C1C0B30, // 00E6 EQ R7 R5 K48 + 0x781E0003, // 00E7 JMPF R7 #00EC + 0x8C1C0131, // 00E8 GETMET R7 R0 K49 + 0x5C240C00, // 00E9 MOVE R9 R6 + 0x7C1C0400, // 00EA CALL R7 2 + 0x80040E00, // 00EB RET 1 R7 + 0x5C1C0600, // 00EC MOVE R7 R3 + 0x741E001B, // 00ED JMPT R7 #010A + 0x881C0132, // 00EE GETMBR R7 R0 K50 + 0x8C1C0F18, // 00EF GETMET R7 R7 K24 + 0x5C240A00, // 00F0 MOVE R9 R5 + 0x7C1C0400, // 00F1 CALL R7 2 + 0x781E0016, // 00F2 JMPF R7 #010A + 0x881C0132, // 00F3 GETMBR R7 R0 K50 + 0x941C0E05, // 00F4 GETIDX R7 R7 R5 + 0x60200004, // 00F5 GETGBL R8 G4 + 0x5C240E00, // 00F6 MOVE R9 R7 + 0x7C200200, // 00F7 CALL R8 1 + 0x20201133, // 00F8 NE R8 R8 K51 + 0x78220008, // 00F9 JMPF R8 #0103 + 0x60200005, // 00FA GETGBL R8 G5 + 0x5C240E00, // 00FB MOVE R9 R7 + 0x7C200200, // 00FC CALL R8 1 + 0x8C240134, // 00FD GETMET R9 R0 K52 + 0x5C2C1000, // 00FE MOVE R11 R8 + 0x5C300C00, // 00FF MOVE R12 R6 + 0x5C340E00, // 0100 MOVE R13 R7 + 0x7C240800, // 0101 CALL R9 4 + 0x70020006, // 0102 JMP #010A + 0x8C200101, // 0103 GETMET R8 R0 K1 + 0x60280018, // 0104 GETGBL R10 G24 + 0x582C0035, // 0105 LDCONST R11 K53 + 0x5C300A00, // 0106 MOVE R12 R5 + 0x7C280400, // 0107 CALL R10 2 + 0x7C200400, // 0108 CALL R8 2 + 0x80060600, // 0109 RET 1 K3 + 0x8C1C0136, // 010A GETMET R7 R0 K54 + 0x5C240A00, // 010B MOVE R9 R5 + 0x7C1C0400, // 010C CALL R7 2 + 0x740E0001, // 010D JMPT R3 #0110 + 0x1C200337, // 010E EQ R8 R1 K55 + 0x78220006, // 010F JMPF R8 #0117 + 0x60200018, // 0110 GETGBL R8 G24 + 0x58240038, // 0111 LDCONST R9 K56 + 0x5C280E00, // 0112 MOVE R10 R7 + 0x5C2C0C00, // 0113 MOVE R11 R6 + 0x7C200600, // 0114 CALL R8 3 + 0x80041000, // 0115 RET 1 R8 + 0x70020005, // 0116 JMP #011D + 0x60200018, // 0117 GETGBL R8 G24 + 0x58240039, // 0118 LDCONST R9 K57 + 0x5C280E00, // 0119 MOVE R10 R7 + 0x5C2C0C00, // 011A MOVE R11 R6 + 0x7C200600, // 011B CALL R8 3 + 0x80041000, // 011C RET 1 R8 + 0x8C180136, // 011D GETMET R6 R0 K54 + 0x5C200A00, // 011E MOVE R8 R5 + 0x7C180400, // 011F CALL R6 2 + 0x80040C00, // 0120 RET 1 R6 + 0x88140904, // 0121 GETMBR R5 R4 K4 + 0xB81A0A00, // 0122 GETNGBL R6 K5 + 0x88180D06, // 0123 GETMBR R6 R6 K6 + 0x88180D0C, // 0124 GETMBR R6 R6 K12 + 0x1C140A06, // 0125 EQ R5 R5 R6 + 0x78160009, // 0126 JMPF R5 #0131 + 0x8814090F, // 0127 GETMBR R5 R4 K15 + 0x1C140B3A, // 0128 EQ R5 R5 K58 + 0x74160002, // 0129 JMPT R5 #012D + 0x8814090F, // 012A GETMBR R5 R4 K15 + 0x1C140B3B, // 012B EQ R5 R5 K59 + 0x78160003, // 012C JMPF R5 #0131 + 0x8814090F, // 012D GETMBR R5 R4 K15 + 0x8C180108, // 012E GETMET R6 R0 K8 + 0x7C180200, // 012F CALL R6 1 + 0x80040A00, // 0130 RET 1 R5 + 0x88140904, // 0131 GETMBR R5 R4 K4 + 0xB81A0A00, // 0132 GETNGBL R6 K5 + 0x88180D06, // 0133 GETMBR R6 R6 K6 + 0x88180D0C, // 0134 GETMBR R6 R6 K12 + 0x1C140A06, // 0135 EQ R5 R5 R6 + 0x78160007, // 0136 JMPF R5 #013F + 0x8814090F, // 0137 GETMBR R5 R4 K15 + 0x8C180108, // 0138 GETMET R6 R0 K8 + 0x7C180200, // 0139 CALL R6 1 + 0x60180018, // 013A GETGBL R6 G24 + 0x581C003C, // 013B LDCONST R7 K60 + 0x5C200A00, // 013C MOVE R8 R5 + 0x7C180400, // 013D CALL R6 2 + 0x80040C00, // 013E RET 1 R6 + 0x8C140101, // 013F GETMET R5 R0 K1 + 0x601C0018, // 0140 GETGBL R7 G24 + 0x5820003D, // 0141 LDCONST R8 K61 + 0x8824090F, // 0142 GETMBR R9 R4 K15 + 0x7C1C0400, // 0143 CALL R7 2 + 0x7C140400, // 0144 CALL R5 2 + 0x8C140108, // 0145 GETMET R5 R0 K8 + 0x7C140200, // 0146 CALL R5 1 + 0x80060600, // 0147 RET 1 K3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transpile_template_body +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transpile_template_body, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(at_end), + /* K1 */ be_nested_str_weak(process_statement), + /* K2 */ be_nested_str_weak(run_statements), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(name), + /* K5 */ be_nested_str_weak(comment), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), + /* K8 */ be_nested_str_weak(stop_iteration), + /* K9 */ be_nested_str_weak(errors), + /* K10 */ be_nested_str_weak(join_output), + /* K11 */ be_nested_str_weak(error), + /* K12 */ be_nested_str_weak(Template_X20body_X20transpilation_X20failed_X3A_X20_X25s), + }), + be_str_weak(transpile_template_body), + &be_const_str_solidified, + ( &(const binstruction[57]) { /* code */ + 0xA802002A, // 0000 EXBLK 0 #002C + 0x8C040100, // 0001 GETMET R1 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x74060002, // 0003 JMPT R1 #0007 + 0x8C040101, // 0004 GETMET R1 R0 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x7001FFF9, // 0006 JMP #0001 + 0x6004000C, // 0007 GETGBL R1 G12 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x7C040200, // 0009 CALL R1 1 + 0x24040303, // 000A GT R1 R1 K3 + 0x78060012, // 000B JMPF R1 #001F + 0x60040010, // 000C GETGBL R1 G16 + 0x88080102, // 000D GETMBR R2 R0 K2 + 0x7C040200, // 000E CALL R1 1 + 0xA802000B, // 000F EXBLK 0 #001C + 0x5C080200, // 0010 MOVE R2 R1 + 0x7C080000, // 0011 CALL R2 0 + 0x940C0504, // 0012 GETIDX R3 R2 K4 + 0x94100505, // 0013 GETIDX R4 R2 K5 + 0x8C140106, // 0014 GETMET R5 R0 K6 + 0x601C0018, // 0015 GETGBL R7 G24 + 0x58200007, // 0016 LDCONST R8 K7 + 0x5C240600, // 0017 MOVE R9 R3 + 0x5C280800, // 0018 MOVE R10 R4 + 0x7C1C0600, // 0019 CALL R7 3 + 0x7C140400, // 001A CALL R5 2 + 0x7001FFF3, // 001B JMP #0010 + 0x58040008, // 001C LDCONST R1 K8 + 0xAC040200, // 001D CATCH R1 1 0 + 0xB0080000, // 001E RAISE 2 R0 R0 + 0x6004000C, // 001F GETGBL R1 G12 + 0x88080109, // 0020 GETMBR R2 R0 K9 + 0x7C040200, // 0021 CALL R1 1 + 0x1C040303, // 0022 EQ R1 R1 K3 + 0x78060002, // 0023 JMPF R1 #0027 + 0x8C04010A, // 0024 GETMET R1 R0 K10 + 0x7C040200, // 0025 CALL R1 1 + 0x70020000, // 0026 JMP #0028 + 0x4C040000, // 0027 LDNIL R1 + 0xA8040001, // 0028 EXBLK 1 1 + 0x80040200, // 0029 RET 1 R1 + 0xA8040001, // 002A EXBLK 1 1 + 0x7002000B, // 002B JMP #0038 + 0xAC040002, // 002C CATCH R1 0 2 + 0x70020008, // 002D JMP #0037 + 0x8C0C010B, // 002E GETMET R3 R0 K11 + 0x60140018, // 002F GETGBL R5 G24 + 0x5818000C, // 0030 LDCONST R6 K12 + 0x5C1C0400, // 0031 MOVE R7 R2 + 0x7C140400, // 0032 CALL R5 2 + 0x7C0C0400, // 0033 CALL R3 2 + 0x4C0C0000, // 0034 LDNIL R3 + 0x80040600, // 0035 RET 1 R3 + 0x70020000, // 0036 JMP #0038 + 0xB0080000, // 0037 RAISE 2 R0 R0 + 0x80000000, // 0038 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_dot +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_dot, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(DOT), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X2E_X27), + }), + be_str_weak(expect_dot), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_function_arguments +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_function_arguments, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(at_end), + /* K8 */ be_const_int(0), + /* K9 */ be_nested_str_weak(RIGHT_PAREN), + }), + be_str_weak(skip_function_arguments), + &be_const_str_solidified, + ( &(const binstruction[42]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20040202, // 0003 NE R1 R1 R2 + 0x78060023, // 0004 JMPF R1 #0029 + 0x8C040100, // 0005 GETMET R1 R0 K0 + 0x7C040200, // 0006 CALL R1 1 + 0x88040301, // 0007 GETMBR R1 R1 K1 + 0xB80A0400, // 0008 GETNGBL R2 K2 + 0x88080503, // 0009 GETMBR R2 R2 K3 + 0x88080504, // 000A GETMBR R2 R2 K4 + 0x1C040202, // 000B EQ R1 R1 R2 + 0x7806001B, // 000C JMPF R1 #0029 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0x58040006, // 000F LDCONST R1 K6 + 0x8C080107, // 0010 GETMET R2 R0 K7 + 0x7C080200, // 0011 CALL R2 1 + 0x740A0015, // 0012 JMPT R2 #0029 + 0x24080308, // 0013 GT R2 R1 K8 + 0x780A0013, // 0014 JMPF R2 #0029 + 0x8C080100, // 0015 GETMET R2 R0 K0 + 0x7C080200, // 0016 CALL R2 1 + 0x880C0501, // 0017 GETMBR R3 R2 K1 + 0xB8120400, // 0018 GETNGBL R4 K2 + 0x88100903, // 0019 GETMBR R4 R4 K3 + 0x88100904, // 001A GETMBR R4 R4 K4 + 0x1C0C0604, // 001B EQ R3 R3 R4 + 0x780E0001, // 001C JMPF R3 #001F + 0x00040306, // 001D ADD R1 R1 K6 + 0x70020006, // 001E JMP #0026 + 0x880C0501, // 001F GETMBR R3 R2 K1 + 0xB8120400, // 0020 GETNGBL R4 K2 + 0x88100903, // 0021 GETMBR R4 R4 K3 + 0x88100909, // 0022 GETMBR R4 R4 K9 + 0x1C0C0604, // 0023 EQ R3 R3 R4 + 0x780E0000, // 0024 JMPF R3 #0026 + 0x04040306, // 0025 SUB R1 R1 K6 + 0x8C0C0105, // 0026 GETMET R3 R0 K5 + 0x7C0C0200, // 0027 CALL R3 1 + 0x7001FFE6, // 0028 JMP #0010 + 0x80000000, // 0029 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transpile +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transpile, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_nested_str_weak(import_X20animation), + /* K2 */ be_nested_str_weak(), + /* K3 */ be_nested_str_weak(at_end), + /* K4 */ be_nested_str_weak(process_statement), + /* K5 */ be_nested_str_weak(generate_engine_start), + /* K6 */ be_nested_str_weak(errors), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(join_output), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Transpilation_X20failed_X3A_X20_X25s), + }), + be_str_weak(transpile), + &be_const_str_solidified, + ( &(const binstruction[41]) { /* code */ + 0xA802001A, // 0000 EXBLK 0 #001C + 0x8C040100, // 0001 GETMET R1 R0 K0 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x7C040400, // 0003 CALL R1 2 + 0x8C040100, // 0004 GETMET R1 R0 K0 + 0x580C0002, // 0005 LDCONST R3 K2 + 0x7C040400, // 0006 CALL R1 2 + 0x8C040103, // 0007 GETMET R1 R0 K3 + 0x7C040200, // 0008 CALL R1 1 + 0x74060002, // 0009 JMPT R1 #000D + 0x8C040104, // 000A GETMET R1 R0 K4 + 0x7C040200, // 000B CALL R1 1 + 0x7001FFF9, // 000C JMP #0007 + 0x8C040105, // 000D GETMET R1 R0 K5 + 0x7C040200, // 000E CALL R1 1 + 0x6004000C, // 000F GETGBL R1 G12 + 0x88080106, // 0010 GETMBR R2 R0 K6 + 0x7C040200, // 0011 CALL R1 1 + 0x1C040307, // 0012 EQ R1 R1 K7 + 0x78060002, // 0013 JMPF R1 #0017 + 0x8C040108, // 0014 GETMET R1 R0 K8 + 0x7C040200, // 0015 CALL R1 1 + 0x70020000, // 0016 JMP #0018 + 0x4C040000, // 0017 LDNIL R1 + 0xA8040001, // 0018 EXBLK 1 1 + 0x80040200, // 0019 RET 1 R1 + 0xA8040001, // 001A EXBLK 1 1 + 0x7002000B, // 001B JMP #0028 + 0xAC040002, // 001C CATCH R1 0 2 + 0x70020008, // 001D JMP #0027 + 0x8C0C0109, // 001E GETMET R3 R0 K9 + 0x60140018, // 001F GETGBL R5 G24 + 0x5818000A, // 0020 LDCONST R6 K10 + 0x5C1C0400, // 0021 MOVE R7 R2 + 0x7C140400, // 0022 CALL R5 2 + 0x7C0C0400, // 0023 CALL R3 2 + 0x4C0C0000, // 0024 LDNIL R3 + 0x80040600, // 0025 RET 1 R3 + 0x70020000, // 0026 JMP #0028 + 0xB0080000, // 0027 RAISE 2 R0 R0 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_identifier_char +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(a), + /* K1 */ be_nested_str_weak(z), + /* K2 */ be_nested_str_weak(A), + /* K3 */ be_nested_str_weak(Z), + /* K4 */ be_nested_str_weak(0), + /* K5 */ be_nested_str_weak(9), + /* K6 */ be_nested_str_weak(_), + }), + be_str_weak(is_identifier_char), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x28080300, // 0000 GE R2 R1 K0 + 0x780A0001, // 0001 JMPF R2 #0004 + 0x18080301, // 0002 LE R2 R1 K1 + 0x740A000A, // 0003 JMPT R2 #000F + 0x28080302, // 0004 GE R2 R1 K2 + 0x780A0001, // 0005 JMPF R2 #0008 + 0x18080303, // 0006 LE R2 R1 K3 + 0x740A0006, // 0007 JMPT R2 #000F + 0x28080304, // 0008 GE R2 R1 K4 + 0x780A0001, // 0009 JMPF R2 #000C + 0x18080305, // 000A LE R2 R1 K5 + 0x740A0002, // 000B JMPT R2 #000F + 0x1C080306, // 000C EQ R2 R1 K6 + 0x740A0000, // 000D JMPT R2 #000F + 0x50080001, // 000E LDBOOL R2 0 1 + 0x50080200, // 000F LDBOOL R2 1 0 + 0x80040400, // 0010 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_color_provider_factory_exists +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_validate_factory_function), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(color_provider), + }), + be_str_weak(_validate_color_provider_factory_exists), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0xB8160200, // 0002 GETNGBL R5 K1 + 0x88140B02, // 0003 GETMBR R5 R5 K2 + 0x7C080600, // 0004 CALL R2 3 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_indent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_indent, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_X20_X20), + /* K1 */ be_nested_str_weak(indent_level), + /* K2 */ be_const_int(1), + }), + be_str_weak(get_indent), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x88040101, // 0000 GETMBR R1 R0 K1 + 0x00040302, // 0001 ADD R1 R1 K2 + 0x08060001, // 0002 MUL R1 K0 R1 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -6297,12 +9053,140 @@ be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* name /******************************************************************** -** Solidified function: _validate_single_parameter +** Solidified function: _process_named_arguments_generic ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, /* name */ be_nested_proto( - 12, /* nstack */ - 4, /* argc */ + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(generic), + }), + be_str_weak(_process_named_arguments_generic), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x581C0001, // 0003 LDCONST R7 K1 + 0x7C0C0800, // 0004 CALL R3 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_engine_start +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_engine_start, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(run_statements), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(has_template_calls), + /* K3 */ be_nested_str_weak(name), + /* K4 */ be_nested_str_weak(comment), + /* K5 */ be_nested_str_weak(add), + /* K6 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), + /* K7 */ be_nested_str_weak(stop_iteration), + /* K8 */ be_nested_str_weak(engine_X2Estart_X28_X29), + }), + be_str_weak(generate_engine_start), + &be_const_str_solidified, + ( &(const binstruction[31]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x1C040301, // 0003 EQ R1 R1 K1 + 0x78060002, // 0004 JMPF R1 #0008 + 0x88040102, // 0005 GETMBR R1 R0 K2 + 0x74060000, // 0006 JMPT R1 #0008 + 0x80000200, // 0007 RET 0 + 0x60040010, // 0008 GETGBL R1 G16 + 0x88080100, // 0009 GETMBR R2 R0 K0 + 0x7C040200, // 000A CALL R1 1 + 0xA802000B, // 000B EXBLK 0 #0018 + 0x5C080200, // 000C MOVE R2 R1 + 0x7C080000, // 000D CALL R2 0 + 0x940C0503, // 000E GETIDX R3 R2 K3 + 0x94100504, // 000F GETIDX R4 R2 K4 + 0x8C140105, // 0010 GETMET R5 R0 K5 + 0x601C0018, // 0011 GETGBL R7 G24 + 0x58200006, // 0012 LDCONST R8 K6 + 0x5C240600, // 0013 MOVE R9 R3 + 0x5C280800, // 0014 MOVE R10 R4 + 0x7C1C0600, // 0015 CALL R7 3 + 0x7C140400, // 0016 CALL R5 2 + 0x7001FFF3, // 0017 JMP #000C + 0x58040007, // 0018 LDCONST R1 K7 + 0xAC040200, // 0019 CATCH R1 1 0 + 0xB0080000, // 001A RAISE 2 R0 R0 + 0x8C040105, // 001B GETMET R1 R0 K5 + 0x580C0008, // 001C LDCONST R3 K8 + 0x7C040400, // 001D CALL R1 2 + 0x80000000, // 001E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _process_named_arguments_for_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(animation), + }), + be_str_weak(_process_named_arguments_for_animation), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x581C0001, // 0003 LDCONST R7 K1 + 0x7C0C0800, // 0004 CALL R3 4 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: is_math_method +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_math_method, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -6311,55 +9195,108 @@ be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(_has_param), - /* K3 */ be_nested_str_weak(current), - /* K4 */ be_nested_str_weak(line), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Animation_X20_X27_X25s_X27_X20does_X20not_X20have_X20parameter_X20_X27_X25s_X27_X2E_X20Check_X20the_X20animation_X20documentation_X20for_X20valid_X20parameters_X2E), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(closure_value), + /* K3 */ be_nested_str_weak(members), + /* K4 */ be_nested_str_weak(get), + /* K5 */ be_nested_str_weak(ismethod), + /* K6 */ be_nested_str_weak(function), + /* K7 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(_validate_single_parameter), + be_str_weak(is_math_method), &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0xA802001F, // 0000 EXBLK 0 #0021 - 0xA4120000, // 0001 IMPORT R4 K0 - 0x4C140000, // 0002 LDNIL R5 - 0x20140605, // 0003 NE R5 R3 R5 - 0x78160019, // 0004 JMPF R5 #001F - 0x8C140901, // 0005 GETMET R5 R4 K1 - 0x5C1C0600, // 0006 MOVE R7 R3 - 0x58200002, // 0007 LDCONST R8 K2 - 0x7C140600, // 0008 CALL R5 3 - 0x78160014, // 0009 JMPF R5 #001F - 0x8C140702, // 000A GETMET R5 R3 K2 - 0x5C1C0400, // 000B MOVE R7 R2 - 0x7C140400, // 000C CALL R5 2 - 0x74160010, // 000D JMPT R5 #001F - 0x8C140103, // 000E GETMET R5 R0 K3 + ( &(const binstruction[54]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA802002C, // 0001 EXBLK 0 #002F + 0xB80E0200, // 0002 GETNGBL R3 K1 + 0x880C0702, // 0003 GETMBR R3 R3 K2 + 0x4C100000, // 0004 LDNIL R4 + 0x1C100604, // 0005 EQ R4 R3 R4 + 0x78120002, // 0006 JMPF R4 #000A + 0x50100000, // 0007 LDBOOL R4 0 0 + 0xA8040001, // 0008 EXBLK 1 1 + 0x80040800, // 0009 RET 1 R4 + 0x8C100503, // 000A GETMET R4 R2 K3 + 0x5C180600, // 000B MOVE R6 R3 + 0x7C100400, // 000C CALL R4 2 + 0x60140010, // 000D GETGBL R5 G16 + 0x5C180800, // 000E MOVE R6 R4 0x7C140200, // 000F CALL R5 1 - 0x4C180000, // 0010 LDNIL R6 - 0x20140A06, // 0011 NE R5 R5 R6 - 0x78160003, // 0012 JMPF R5 #0017 - 0x8C140103, // 0013 GETMET R5 R0 K3 - 0x7C140200, // 0014 CALL R5 1 - 0x88140B04, // 0015 GETMBR R5 R5 K4 - 0x70020000, // 0016 JMP #0018 - 0x58140005, // 0017 LDCONST R5 K5 - 0x8C180106, // 0018 GETMET R6 R0 K6 - 0x60200018, // 0019 GETGBL R8 G24 - 0x58240007, // 001A LDCONST R9 K7 - 0x5C280200, // 001B MOVE R10 R1 - 0x5C2C0400, // 001C MOVE R11 R2 - 0x7C200600, // 001D CALL R8 3 - 0x7C180400, // 001E CALL R6 2 - 0xA8040001, // 001F EXBLK 1 1 - 0x70020003, // 0020 JMP #0025 - 0xAC100002, // 0021 CATCH R4 0 2 - 0x70020000, // 0022 JMP #0024 - 0x70020000, // 0023 JMP #0025 - 0xB0080000, // 0024 RAISE 2 R0 R0 - 0x80000000, // 0025 RET 0 + 0xA8020015, // 0010 EXBLK 0 #0027 + 0x5C180A00, // 0011 MOVE R6 R5 + 0x7C180000, // 0012 CALL R6 0 + 0x1C1C0C01, // 0013 EQ R7 R6 R1 + 0x781E0010, // 0014 JMPF R7 #0026 + 0x8C1C0504, // 0015 GETMET R7 R2 K4 + 0x5C240600, // 0016 MOVE R9 R3 + 0x5C280200, // 0017 MOVE R10 R1 + 0x7C1C0600, // 0018 CALL R7 3 + 0x8C200505, // 0019 GETMET R8 R2 K5 + 0x5C280E00, // 001A MOVE R10 R7 + 0x7C200400, // 001B CALL R8 2 + 0x74220005, // 001C JMPT R8 #0023 + 0x60200004, // 001D GETGBL R8 G4 + 0x5C240E00, // 001E MOVE R9 R7 + 0x7C200200, // 001F CALL R8 1 + 0x1C201106, // 0020 EQ R8 R8 K6 + 0x74220000, // 0021 JMPT R8 #0023 + 0x50200001, // 0022 LDBOOL R8 0 1 + 0x50200200, // 0023 LDBOOL R8 1 0 + 0xA8040002, // 0024 EXBLK 1 2 + 0x80041000, // 0025 RET 1 R8 + 0x7001FFE9, // 0026 JMP #0011 + 0x58140007, // 0027 LDCONST R5 K7 + 0xAC140200, // 0028 CATCH R5 1 0 + 0xB0080000, // 0029 RAISE 2 R0 R0 + 0x50140000, // 002A LDBOOL R5 0 0 + 0xA8040001, // 002B EXBLK 1 1 + 0x80040A00, // 002C RET 1 R5 + 0xA8040001, // 002D EXBLK 1 1 + 0x70020005, // 002E JMP #0035 + 0xAC0C0002, // 002F CATCH R3 0 2 + 0x70020002, // 0030 JMP #0034 + 0x50140000, // 0031 LDBOOL R5 0 0 + 0x80040A00, // 0032 RET 1 R5 + 0x70020000, // 0033 JMP #0035 + 0xB0080000, // 0034 RAISE 2 R0 R0 + 0x80000000, // 0035 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_object_reference +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_object_reference, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(validate_symbol_reference), + }), + be_str_weak(_validate_object_reference), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0xA8020005, // 0000 EXBLK 0 #0007 + 0x8C0C0100, // 0001 GETMET R3 R0 K0 + 0x5C140200, // 0002 MOVE R5 R1 + 0x5C180400, // 0003 MOVE R6 R2 + 0x7C0C0600, // 0004 CALL R3 3 + 0xA8040001, // 0005 EXBLK 1 1 + 0x70020003, // 0006 JMP #000B + 0xAC0C0002, // 0007 CATCH R3 0 2 + 0x70020000, // 0008 JMP #000A + 0x70020000, // 0009 JMP #000B + 0xB0080000, // 000A RAISE 2 R0 R0 + 0x80000000, // 000B RET 0 }) ) ); @@ -6437,508 +9374,71 @@ be_local_closure(class_SimpleDSLTranspiler_can_use_as_identifier, /* name */ /******************************************************************** -** Solidified function: process_color +** Solidified function: _process_named_arguments_unified ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_color, /* name */ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_unified, /* name */ be_nested_proto( - 15, /* nstack */ - 1, /* argc */ + 10, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[37]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(color), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(KEYWORD), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(peek), - /* K13 */ be_nested_str_weak(LEFT_PAREN), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(), - /* K16 */ be_nested_str_weak(COMMENT), - /* K17 */ be_nested_str_weak(_X20_X20), - /* K18 */ be_nested_str_weak(template_definitions), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(process_function_arguments), - /* K21 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K22 */ be_nested_str_weak(engine), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), - /* K25 */ be_nested_str_weak(_validate_color_provider_factory_exists), - /* K26 */ be_nested_str_weak(error), - /* K27 */ be_nested_str_weak(Color_X20provider_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), - /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), - /* K29 */ be_nested_str_weak(_create_instance_for_validation), - /* K30 */ be_nested_str_weak(symbol_table), - /* K31 */ be_nested_str_weak(_process_named_arguments_for_color_provider), - /* K32 */ be_nested_str_weak(_X25s_), - /* K33 */ be_nested_str_weak(process_value), - /* K34 */ be_nested_str_weak(collect_inline_comment), - /* K35 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K36 */ be_nested_str_weak(string), + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(add), + /* K1 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x60140018, // 0002 GETGBL R5 G24 + 0x58180001, // 0003 LDCONST R6 K1 + 0x681C0001, // 0004 GETUPV R7 U1 + 0x5C200000, // 0005 MOVE R8 R0 + 0x5C240200, // 0006 MOVE R9 R1 + 0x5C280400, // 0007 MOVE R10 R2 + 0x7C140A00, // 0008 CALL R5 5 + 0x7C0C0400, // 0009 CALL R3 2 + 0x80000000, // 000A RET 0 + }) + ), }), - be_str_weak(process_color), - &be_const_str_solidified, - ( &(const binstruction[191]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x880C0507, // 0010 GETMBR R3 R2 K7 - 0xB8121000, // 0011 GETNGBL R4 K8 - 0x88100909, // 0012 GETMBR R4 R4 K9 - 0x8810090A, // 0013 GETMBR R4 R4 K10 - 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x740E0005, // 0015 JMPT R3 #001C - 0x880C0507, // 0016 GETMBR R3 R2 K7 - 0xB8121000, // 0017 GETNGBL R4 K8 - 0x88100909, // 0018 GETMBR R4 R4 K9 - 0x8810090B, // 0019 GETMBR R4 R4 K11 - 0x1C0C0604, // 001A EQ R3 R3 R4 - 0x780E0061, // 001B JMPF R3 #007E - 0x8C0C010C, // 001C GETMET R3 R0 K12 - 0x7C0C0200, // 001D CALL R3 1 - 0x4C100000, // 001E LDNIL R4 - 0x200C0604, // 001F NE R3 R3 R4 - 0x780E005C, // 0020 JMPF R3 #007E - 0x8C0C010C, // 0021 GETMET R3 R0 K12 - 0x7C0C0200, // 0022 CALL R3 1 - 0x880C0707, // 0023 GETMBR R3 R3 K7 - 0xB8121000, // 0024 GETNGBL R4 K8 - 0x88100909, // 0025 GETMBR R4 R4 K9 - 0x8810090D, // 0026 GETMBR R4 R4 K13 - 0x1C0C0604, // 0027 EQ R3 R3 R4 - 0x780E0054, // 0028 JMPF R3 #007E - 0x880C050E, // 0029 GETMBR R3 R2 K14 - 0x8C100100, // 002A GETMET R4 R0 K0 - 0x7C100200, // 002B CALL R4 1 - 0x5810000F, // 002C LDCONST R4 K15 - 0x8C140106, // 002D GETMET R5 R0 K6 - 0x7C140200, // 002E CALL R5 1 - 0x4C180000, // 002F LDNIL R6 - 0x20140A06, // 0030 NE R5 R5 R6 - 0x7816000E, // 0031 JMPF R5 #0041 - 0x8C140106, // 0032 GETMET R5 R0 K6 - 0x7C140200, // 0033 CALL R5 1 - 0x88140B07, // 0034 GETMBR R5 R5 K7 - 0xB81A1000, // 0035 GETNGBL R6 K8 - 0x88180D09, // 0036 GETMBR R6 R6 K9 - 0x88180D10, // 0037 GETMBR R6 R6 K16 - 0x1C140A06, // 0038 EQ R5 R5 R6 - 0x78160006, // 0039 JMPF R5 #0041 - 0x8C140106, // 003A GETMET R5 R0 K6 - 0x7C140200, // 003B CALL R5 1 - 0x88140B0E, // 003C GETMBR R5 R5 K14 - 0x00162205, // 003D ADD R5 K17 R5 - 0x5C100A00, // 003E MOVE R4 R5 - 0x8C140100, // 003F GETMET R5 R0 K0 - 0x7C140200, // 0040 CALL R5 1 - 0x88140112, // 0041 GETMBR R5 R0 K18 - 0x8C140B13, // 0042 GETMET R5 R5 K19 - 0x5C1C0600, // 0043 MOVE R7 R3 - 0x7C140400, // 0044 CALL R5 2 - 0x78160012, // 0045 JMPF R5 #0059 - 0x8C140114, // 0046 GETMET R5 R0 K20 - 0x7C140200, // 0047 CALL R5 1 - 0x20180B0F, // 0048 NE R6 R5 K15 - 0x781A0004, // 0049 JMPF R6 #004F - 0x60180018, // 004A GETGBL R6 G24 - 0x581C0015, // 004B LDCONST R7 K21 - 0x5C200A00, // 004C MOVE R8 R5 - 0x7C180400, // 004D CALL R6 2 - 0x70020000, // 004E JMP #0050 - 0x58180016, // 004F LDCONST R6 K22 - 0x8C1C0117, // 0050 GETMET R7 R0 K23 - 0x60240018, // 0051 GETGBL R9 G24 - 0x58280018, // 0052 LDCONST R10 K24 - 0x5C2C0600, // 0053 MOVE R11 R3 - 0x5C300C00, // 0054 MOVE R12 R6 - 0x5C340800, // 0055 MOVE R13 R4 - 0x7C240800, // 0056 CALL R9 4 - 0x7C1C0400, // 0057 CALL R7 2 - 0x70020023, // 0058 JMP #007D - 0x8C140119, // 0059 GETMET R5 R0 K25 - 0x5C1C0600, // 005A MOVE R7 R3 - 0x7C140400, // 005B CALL R5 2 - 0x74160008, // 005C JMPT R5 #0066 - 0x8C14011A, // 005D GETMET R5 R0 K26 - 0x601C0018, // 005E GETGBL R7 G24 - 0x5820001B, // 005F LDCONST R8 K27 - 0x5C240600, // 0060 MOVE R9 R3 - 0x7C1C0400, // 0061 CALL R7 2 - 0x7C140400, // 0062 CALL R5 2 - 0x8C140104, // 0063 GETMET R5 R0 K4 - 0x7C140200, // 0064 CALL R5 1 - 0x80000A00, // 0065 RET 0 - 0x8C140117, // 0066 GETMET R5 R0 K23 - 0x601C0018, // 0067 GETGBL R7 G24 - 0x5820001C, // 0068 LDCONST R8 K28 - 0x5C240200, // 0069 MOVE R9 R1 - 0x5C280600, // 006A MOVE R10 R3 - 0x5C2C0800, // 006B MOVE R11 R4 - 0x7C1C0800, // 006C CALL R7 4 - 0x7C140400, // 006D CALL R5 2 - 0x8C14011D, // 006E GETMET R5 R0 K29 - 0x5C1C0600, // 006F MOVE R7 R3 - 0x7C140400, // 0070 CALL R5 2 - 0x4C180000, // 0071 LDNIL R6 - 0x20180A06, // 0072 NE R6 R5 R6 - 0x781A0001, // 0073 JMPF R6 #0076 - 0x8818011E, // 0074 GETMBR R6 R0 K30 - 0x98180205, // 0075 SETIDX R6 R1 R5 - 0x8C18011F, // 0076 GETMET R6 R0 K31 - 0x60200018, // 0077 GETGBL R8 G24 - 0x58240020, // 0078 LDCONST R9 K32 - 0x5C280200, // 0079 MOVE R10 R1 - 0x7C200400, // 007A CALL R8 2 - 0x5C240600, // 007B MOVE R9 R3 - 0x7C180600, // 007C CALL R6 3 - 0x7002003F, // 007D JMP #00BE - 0x8C0C0106, // 007E GETMET R3 R0 K6 - 0x7C0C0200, // 007F CALL R3 1 - 0x4C100000, // 0080 LDNIL R4 - 0x20100604, // 0081 NE R4 R3 R4 - 0x78120012, // 0082 JMPF R4 #0096 - 0x88100707, // 0083 GETMBR R4 R3 K7 - 0xB8161000, // 0084 GETNGBL R5 K8 - 0x88140B09, // 0085 GETMBR R5 R5 K9 - 0x88140B0B, // 0086 GETMBR R5 R5 K11 - 0x1C100805, // 0087 EQ R4 R4 R5 - 0x7812000C, // 0088 JMPF R4 #0096 - 0x8C10010C, // 0089 GETMET R4 R0 K12 - 0x7C100200, // 008A CALL R4 1 - 0x4C140000, // 008B LDNIL R5 - 0x1C100805, // 008C EQ R4 R4 R5 - 0x74120008, // 008D JMPT R4 #0097 - 0x8C10010C, // 008E GETMET R4 R0 K12 - 0x7C100200, // 008F CALL R4 1 - 0x88100907, // 0090 GETMBR R4 R4 K7 - 0xB8161000, // 0091 GETNGBL R5 K8 - 0x88140B09, // 0092 GETMBR R5 R5 K9 - 0x88140B0D, // 0093 GETMBR R5 R5 K13 - 0x20100805, // 0094 NE R4 R4 R5 - 0x74120000, // 0095 JMPT R4 #0097 - 0x50100001, // 0096 LDBOOL R4 0 1 - 0x50100200, // 0097 LDBOOL R4 1 0 - 0x78120001, // 0098 JMPF R4 #009B - 0x8814070E, // 0099 GETMBR R5 R3 K14 - 0x70020000, // 009A JMP #009C - 0x4C140000, // 009B LDNIL R5 - 0x8C180121, // 009C GETMET R6 R0 K33 - 0x58200003, // 009D LDCONST R8 K3 - 0x7C180400, // 009E CALL R6 2 - 0x8C1C0122, // 009F GETMET R7 R0 K34 - 0x7C1C0200, // 00A0 CALL R7 1 - 0x8C200117, // 00A1 GETMET R8 R0 K23 - 0x60280018, // 00A2 GETGBL R10 G24 - 0x582C0023, // 00A3 LDCONST R11 K35 - 0x5C300200, // 00A4 MOVE R12 R1 - 0x5C340C00, // 00A5 MOVE R13 R6 - 0x5C380E00, // 00A6 MOVE R14 R7 - 0x7C280800, // 00A7 CALL R10 4 - 0x7C200400, // 00A8 CALL R8 2 - 0x78120011, // 00A9 JMPF R4 #00BC - 0x4C200000, // 00AA LDNIL R8 - 0x20200A08, // 00AB NE R8 R5 R8 - 0x7822000E, // 00AC JMPF R8 #00BC - 0x8820011E, // 00AD GETMBR R8 R0 K30 - 0x8C201113, // 00AE GETMET R8 R8 K19 - 0x5C280A00, // 00AF MOVE R10 R5 - 0x7C200400, // 00B0 CALL R8 2 - 0x78220009, // 00B1 JMPF R8 #00BC - 0x8820011E, // 00B2 GETMBR R8 R0 K30 - 0x94201005, // 00B3 GETIDX R8 R8 R5 - 0x60240004, // 00B4 GETGBL R9 G4 - 0x5C281000, // 00B5 MOVE R10 R8 - 0x7C240200, // 00B6 CALL R9 1 - 0x20241324, // 00B7 NE R9 R9 K36 - 0x78260001, // 00B8 JMPF R9 #00BB - 0x8824011E, // 00B9 GETMBR R9 R0 K30 - 0x98240208, // 00BA SETIDX R9 R1 R8 - 0x70020001, // 00BB JMP #00BE - 0x8820011E, // 00BC GETMBR R8 R0 K30 - 0x98200303, // 00BD SETIDX R8 R1 K3 - 0x80000000, // 00BE RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_statement, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[42]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(EOF), - /* K5 */ be_nested_str_weak(COMMENT), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(NEWLINE), - /* K10 */ be_nested_str_weak(first_statement), - /* K11 */ be_nested_str_weak(KEYWORD), - /* K12 */ be_nested_str_weak(IDENTIFIER), - /* K13 */ be_nested_str_weak(strip), - /* K14 */ be_nested_str_weak(error), - /* K15 */ be_nested_str_weak(_X27strip_X27_X20directive_X20is_X20temporarily_X20disabled_X2E_X20Strip_X20configuration_X20is_X20handled_X20automatically_X2E), - /* K16 */ be_nested_str_weak(skip_statement), - /* K17 */ be_nested_str_weak(strip_initialized), - /* K18 */ be_nested_str_weak(generate_default_strip_initialization), - /* K19 */ be_nested_str_weak(color), - /* K20 */ be_nested_str_weak(process_color), - /* K21 */ be_nested_str_weak(palette), - /* K22 */ be_nested_str_weak(process_palette), - /* K23 */ be_nested_str_weak(animation), - /* K24 */ be_nested_str_weak(process_animation), - /* K25 */ be_nested_str_weak(set), - /* K26 */ be_nested_str_weak(process_set), - /* K27 */ be_nested_str_weak(sequence), - /* K28 */ be_nested_str_weak(process_sequence), - /* K29 */ be_nested_str_weak(template), - /* K30 */ be_nested_str_weak(process_template), - /* K31 */ be_nested_str_weak(run), - /* K32 */ be_nested_str_weak(process_run), - /* K33 */ be_nested_str_weak(import), - /* K34 */ be_nested_str_weak(process_import), - /* K35 */ be_nested_str_weak(on), - /* K36 */ be_nested_str_weak(process_event_handler), - /* K37 */ be_nested_str_weak(log), - /* K38 */ be_nested_str_weak(peek), - /* K39 */ be_nested_str_weak(LEFT_PAREN), - /* K40 */ be_nested_str_weak(process_standalone_log), - /* K41 */ be_nested_str_weak(process_property_assignment), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_paren), + /* K1 */ be_nested_str_weak(_process_parameters_core), + /* K2 */ be_nested_str_weak(expect_right_paren), }), - be_str_weak(process_statement), + be_str_weak(_process_named_arguments_unified), &be_const_str_solidified, - ( &(const binstruction[160]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x740A0005, // 0004 JMPT R2 #000B - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0000, // 000A JMPF R2 #000C - 0x80000400, // 000B RET 0 - 0x88080301, // 000C GETMBR R2 R1 K1 - 0xB80E0400, // 000D GETNGBL R3 K2 - 0x880C0703, // 000E GETMBR R3 R3 K3 - 0x880C0705, // 000F GETMBR R3 R3 K5 - 0x1C080403, // 0010 EQ R2 R2 R3 - 0x780A0005, // 0011 JMPF R2 #0018 - 0x8C080106, // 0012 GETMET R2 R0 K6 - 0x88100307, // 0013 GETMBR R4 R1 K7 - 0x7C080400, // 0014 CALL R2 2 - 0x8C080108, // 0015 GETMET R2 R0 K8 - 0x7C080200, // 0016 CALL R2 1 - 0x80000400, // 0017 RET 0 - 0x88080301, // 0018 GETMBR R2 R1 K1 - 0xB80E0400, // 0019 GETNGBL R3 K2 - 0x880C0703, // 001A GETMBR R3 R3 K3 - 0x880C0709, // 001B GETMBR R3 R3 K9 - 0x1C080403, // 001C EQ R2 R2 R3 - 0x780A0002, // 001D JMPF R2 #0021 - 0x8C080108, // 001E GETMET R2 R0 K8 - 0x7C080200, // 001F CALL R2 1 - 0x80000400, // 0020 RET 0 - 0x8808010A, // 0021 GETMBR R2 R0 K10 - 0x880C0301, // 0022 GETMBR R3 R1 K1 - 0xB8120400, // 0023 GETNGBL R4 K2 - 0x88100903, // 0024 GETMBR R4 R4 K3 - 0x8810090B, // 0025 GETMBR R4 R4 K11 - 0x1C0C0604, // 0026 EQ R3 R3 R4 - 0x740E0005, // 0027 JMPT R3 #002E - 0x880C0301, // 0028 GETMBR R3 R1 K1 - 0xB8120400, // 0029 GETNGBL R4 K2 - 0x88100903, // 002A GETMBR R4 R4 K3 - 0x8810090C, // 002B GETMBR R4 R4 K12 - 0x1C0C0604, // 002C EQ R3 R3 R4 - 0x780E0001, // 002D JMPF R3 #0030 - 0x500C0000, // 002E LDBOOL R3 0 0 - 0x90021403, // 002F SETMBR R0 K10 R3 - 0x880C0301, // 0030 GETMBR R3 R1 K1 - 0xB8120400, // 0031 GETNGBL R4 K2 - 0x88100903, // 0032 GETMBR R4 R4 K3 - 0x8810090B, // 0033 GETMBR R4 R4 K11 - 0x1C0C0604, // 0034 EQ R3 R3 R4 - 0x780E0046, // 0035 JMPF R3 #007D - 0x880C0307, // 0036 GETMBR R3 R1 K7 - 0x1C0C070D, // 0037 EQ R3 R3 K13 - 0x780E0006, // 0038 JMPF R3 #0040 - 0x8C0C010E, // 0039 GETMET R3 R0 K14 - 0x5814000F, // 003A LDCONST R5 K15 - 0x7C0C0400, // 003B CALL R3 2 - 0x8C0C0110, // 003C GETMET R3 R0 K16 - 0x7C0C0200, // 003D CALL R3 1 - 0x80000600, // 003E RET 0 - 0x7002003B, // 003F JMP #007C - 0x880C0111, // 0040 GETMBR R3 R0 K17 - 0x740E0001, // 0041 JMPT R3 #0044 - 0x8C0C0112, // 0042 GETMET R3 R0 K18 - 0x7C0C0200, // 0043 CALL R3 1 - 0x880C0307, // 0044 GETMBR R3 R1 K7 - 0x1C0C0713, // 0045 EQ R3 R3 K19 - 0x780E0002, // 0046 JMPF R3 #004A - 0x8C0C0114, // 0047 GETMET R3 R0 K20 - 0x7C0C0200, // 0048 CALL R3 1 - 0x70020031, // 0049 JMP #007C - 0x880C0307, // 004A GETMBR R3 R1 K7 - 0x1C0C0715, // 004B EQ R3 R3 K21 - 0x780E0002, // 004C JMPF R3 #0050 - 0x8C0C0116, // 004D GETMET R3 R0 K22 - 0x7C0C0200, // 004E CALL R3 1 - 0x7002002B, // 004F JMP #007C - 0x880C0307, // 0050 GETMBR R3 R1 K7 - 0x1C0C0717, // 0051 EQ R3 R3 K23 - 0x780E0002, // 0052 JMPF R3 #0056 - 0x8C0C0118, // 0053 GETMET R3 R0 K24 - 0x7C0C0200, // 0054 CALL R3 1 - 0x70020025, // 0055 JMP #007C - 0x880C0307, // 0056 GETMBR R3 R1 K7 - 0x1C0C0719, // 0057 EQ R3 R3 K25 - 0x780E0002, // 0058 JMPF R3 #005C - 0x8C0C011A, // 0059 GETMET R3 R0 K26 - 0x7C0C0200, // 005A CALL R3 1 - 0x7002001F, // 005B JMP #007C - 0x880C0307, // 005C GETMBR R3 R1 K7 - 0x1C0C071B, // 005D EQ R3 R3 K27 - 0x780E0002, // 005E JMPF R3 #0062 - 0x8C0C011C, // 005F GETMET R3 R0 K28 - 0x7C0C0200, // 0060 CALL R3 1 - 0x70020019, // 0061 JMP #007C - 0x880C0307, // 0062 GETMBR R3 R1 K7 - 0x1C0C071D, // 0063 EQ R3 R3 K29 - 0x780E0002, // 0064 JMPF R3 #0068 - 0x8C0C011E, // 0065 GETMET R3 R0 K30 - 0x7C0C0200, // 0066 CALL R3 1 - 0x70020013, // 0067 JMP #007C - 0x880C0307, // 0068 GETMBR R3 R1 K7 - 0x1C0C071F, // 0069 EQ R3 R3 K31 - 0x780E0002, // 006A JMPF R3 #006E - 0x8C0C0120, // 006B GETMET R3 R0 K32 - 0x7C0C0200, // 006C CALL R3 1 - 0x7002000D, // 006D JMP #007C - 0x880C0307, // 006E GETMBR R3 R1 K7 - 0x1C0C0721, // 006F EQ R3 R3 K33 - 0x780E0002, // 0070 JMPF R3 #0074 - 0x8C0C0122, // 0071 GETMET R3 R0 K34 - 0x7C0C0200, // 0072 CALL R3 1 - 0x70020007, // 0073 JMP #007C - 0x880C0307, // 0074 GETMBR R3 R1 K7 - 0x1C0C0723, // 0075 EQ R3 R3 K35 - 0x780E0002, // 0076 JMPF R3 #007A - 0x8C0C0124, // 0077 GETMET R3 R0 K36 - 0x7C0C0200, // 0078 CALL R3 1 - 0x70020001, // 0079 JMP #007C - 0x8C0C0110, // 007A GETMET R3 R0 K16 - 0x7C0C0200, // 007B CALL R3 1 - 0x70020021, // 007C JMP #009F - 0x880C0301, // 007D GETMBR R3 R1 K1 - 0xB8120400, // 007E GETNGBL R4 K2 - 0x88100903, // 007F GETMBR R4 R4 K3 - 0x8810090C, // 0080 GETMBR R4 R4 K12 - 0x1C0C0604, // 0081 EQ R3 R3 R4 - 0x780E0019, // 0082 JMPF R3 #009D - 0x880C0111, // 0083 GETMBR R3 R0 K17 - 0x740E0001, // 0084 JMPT R3 #0087 - 0x8C0C0112, // 0085 GETMET R3 R0 K18 - 0x7C0C0200, // 0086 CALL R3 1 - 0x880C0307, // 0087 GETMBR R3 R1 K7 - 0x1C0C0725, // 0088 EQ R3 R3 K37 - 0x780E000F, // 0089 JMPF R3 #009A - 0x8C0C0126, // 008A GETMET R3 R0 K38 - 0x7C0C0200, // 008B CALL R3 1 - 0x4C100000, // 008C LDNIL R4 - 0x200C0604, // 008D NE R3 R3 R4 - 0x780E000A, // 008E JMPF R3 #009A - 0x8C0C0126, // 008F GETMET R3 R0 K38 - 0x7C0C0200, // 0090 CALL R3 1 - 0x880C0701, // 0091 GETMBR R3 R3 K1 - 0xB8120400, // 0092 GETNGBL R4 K2 - 0x88100903, // 0093 GETMBR R4 R4 K3 - 0x88100927, // 0094 GETMBR R4 R4 K39 - 0x1C0C0604, // 0095 EQ R3 R3 R4 - 0x780E0002, // 0096 JMPF R3 #009A - 0x8C0C0128, // 0097 GETMET R3 R0 K40 - 0x7C0C0200, // 0098 CALL R3 1 - 0x70020001, // 0099 JMP #009C - 0x8C0C0129, // 009A GETMET R3 R0 K41 - 0x7C0C0200, // 009B CALL R3 1 - 0x70020001, // 009C JMP #009F - 0x8C0C0110, // 009D GETMET R3 R0 K16 - 0x7C0C0200, // 009E CALL R3 1 - 0x80000000, // 009F RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_add, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(output), - /* K1 */ be_nested_str_weak(push), - }), - be_str_weak(add), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 + ( &(const binstruction[12]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x84100000, // 0002 CLOSURE R4 P0 + 0x8C140101, // 0003 GETMET R5 R0 K1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x5C200600, // 0005 MOVE R8 R3 + 0x5C240800, // 0006 MOVE R9 R4 + 0x7C140800, // 0007 CALL R5 4 + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x7C140200, // 0009 CALL R5 1 + 0xA0000000, // 000A CLOSE R0 + 0x80000000, // 000B RET 0 }) ) ); @@ -7080,166 +9580,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_play_statement_fluent, /* n /******************************************************************** -** Solidified function: validate_user_name +** Solidified function: process_palette ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_palette, /* name */ be_nested_proto( - 13, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(Token), - /* K2 */ be_nested_str_weak(color_names), - /* K3 */ be_nested_str_weak(error), - /* K4 */ be_nested_str_weak(Cannot_X20redefine_X20predefined_X20color_X20_X27_X25s_X27_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), - /* K5 */ be_nested_str_weak(stop_iteration), - /* K6 */ be_nested_str_weak(statement_keywords), - /* K7 */ be_nested_str_weak(Cannot_X20use_X20DSL_X20keyword_X20_X27_X25s_X27_X20as_X20_X25s_X20name_X2E_X20Use_X20a_X20different_X20name_X20like_X20_X27_X25s_custom_X27_X20or_X20_X27my__X25s_X27), - }), - be_str_weak(validate_user_name), - &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x600C0010, // 0000 GETGBL R3 G16 - 0xB8120000, // 0001 GETNGBL R4 K0 - 0x88100901, // 0002 GETMBR R4 R4 K1 - 0x88100902, // 0003 GETMBR R4 R4 K2 - 0x7C0C0200, // 0004 CALL R3 1 - 0xA802000F, // 0005 EXBLK 0 #0016 - 0x5C100600, // 0006 MOVE R4 R3 - 0x7C100000, // 0007 CALL R4 0 - 0x1C140204, // 0008 EQ R5 R1 R4 - 0x7816000A, // 0009 JMPF R5 #0015 - 0x8C140103, // 000A GETMET R5 R0 K3 - 0x601C0018, // 000B GETGBL R7 G24 - 0x58200004, // 000C LDCONST R8 K4 - 0x5C240200, // 000D MOVE R9 R1 - 0x5C280200, // 000E MOVE R10 R1 - 0x5C2C0200, // 000F MOVE R11 R1 - 0x7C1C0800, // 0010 CALL R7 4 - 0x7C140400, // 0011 CALL R5 2 - 0x50140000, // 0012 LDBOOL R5 0 0 - 0xA8040001, // 0013 EXBLK 1 1 - 0x80040A00, // 0014 RET 1 R5 - 0x7001FFEF, // 0015 JMP #0006 - 0x580C0005, // 0016 LDCONST R3 K5 - 0xAC0C0200, // 0017 CATCH R3 1 0 - 0xB0080000, // 0018 RAISE 2 R0 R0 - 0x600C0010, // 0019 GETGBL R3 G16 - 0xB8120000, // 001A GETNGBL R4 K0 - 0x88100901, // 001B GETMBR R4 R4 K1 - 0x88100906, // 001C GETMBR R4 R4 K6 - 0x7C0C0200, // 001D CALL R3 1 - 0xA8020010, // 001E EXBLK 0 #0030 - 0x5C100600, // 001F MOVE R4 R3 - 0x7C100000, // 0020 CALL R4 0 - 0x1C140204, // 0021 EQ R5 R1 R4 - 0x7816000B, // 0022 JMPF R5 #002F - 0x8C140103, // 0023 GETMET R5 R0 K3 - 0x601C0018, // 0024 GETGBL R7 G24 - 0x58200007, // 0025 LDCONST R8 K7 - 0x5C240200, // 0026 MOVE R9 R1 - 0x5C280400, // 0027 MOVE R10 R2 - 0x5C2C0200, // 0028 MOVE R11 R1 - 0x5C300200, // 0029 MOVE R12 R1 - 0x7C1C0A00, // 002A CALL R7 5 - 0x7C140400, // 002B CALL R5 2 - 0x50140000, // 002C LDBOOL R5 0 0 - 0xA8040001, // 002D EXBLK 1 1 - 0x80040A00, // 002E RET 1 R5 - 0x7001FFEE, // 002F JMP #001F - 0x580C0005, // 0030 LDCONST R3 K5 - 0xAC0C0200, // 0031 CATCH R3 1 0 - 0xB0080000, // 0032 RAISE 2 R0 R0 - 0x500C0200, // 0033 LDBOOL R3 1 0 - 0x80040600, // 0034 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_computed_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_computed_expression, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X28), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(animation_X2E), - /* K5 */ be_nested_str_weak(_), - }), - be_str_weak(is_computed_expression), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x8C140901, // 0001 GETMET R5 R4 K1 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x58200002, // 0003 LDCONST R8 K2 - 0x7C140600, // 0004 CALL R5 3 - 0x28140B03, // 0005 GE R5 R5 K3 - 0x7416001E, // 0006 JMPT R5 #0026 - 0x8C140901, // 0007 GETMET R5 R4 K1 - 0x5C1C0600, // 0008 MOVE R7 R3 - 0x58200002, // 0009 LDCONST R8 K2 - 0x7C140600, // 000A CALL R5 3 - 0x28140B03, // 000B GE R5 R5 K3 - 0x74160018, // 000C JMPT R5 #0026 - 0x8C140901, // 000D GETMET R5 R4 K1 - 0x5C1C0200, // 000E MOVE R7 R1 - 0x58200004, // 000F LDCONST R8 K4 - 0x7C140600, // 0010 CALL R5 3 - 0x28140B03, // 0011 GE R5 R5 K3 - 0x74160012, // 0012 JMPT R5 #0026 - 0x8C140901, // 0013 GETMET R5 R4 K1 - 0x5C1C0600, // 0014 MOVE R7 R3 - 0x58200004, // 0015 LDCONST R8 K4 - 0x7C140600, // 0016 CALL R5 3 - 0x28140B03, // 0017 GE R5 R5 K3 - 0x7416000C, // 0018 JMPT R5 #0026 - 0x8C140901, // 0019 GETMET R5 R4 K1 - 0x5C1C0200, // 001A MOVE R7 R1 - 0x58200005, // 001B LDCONST R8 K5 - 0x7C140600, // 001C CALL R5 3 - 0x28140B03, // 001D GE R5 R5 K3 - 0x74160006, // 001E JMPT R5 #0026 - 0x8C140901, // 001F GETMET R5 R4 K1 - 0x5C1C0600, // 0020 MOVE R7 R3 - 0x58200005, // 0021 LDCONST R8 K5 - 0x7C140600, // 0022 CALL R5 3 - 0x28140B03, // 0023 GE R5 R5 K3 - 0x74160000, // 0024 JMPT R5 #0026 - 0x50140001, // 0025 LDBOOL R5 0 1 - 0x50140200, // 0026 LDBOOL R5 1 0 - 0x80040A00, // 0027 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_additive_expression_raw -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_additive_expression_raw, /* name */ - be_nested_proto( - 10, /* nstack */ + 18, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -7247,704 +9592,58 @@ be_local_closure(class_SimpleDSLTranspiler_process_additive_expression_raw, /* 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(process_multiplicative_expression_raw), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(PLUS), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - }), - be_str_weak(process_additive_expression_raw), - &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x740A001F, // 0004 JMPT R2 #0025 - 0x8C080102, // 0005 GETMET R2 R0 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x4C0C0000, // 0007 LDNIL R3 - 0x200C0403, // 0008 NE R3 R2 R3 - 0x780E0018, // 0009 JMPF R3 #0023 - 0x880C0503, // 000A GETMBR R3 R2 K3 - 0xB8120800, // 000B GETNGBL R4 K4 - 0x88100905, // 000C GETMBR R4 R4 K5 - 0x88100906, // 000D GETMBR R4 R4 K6 - 0x1C0C0604, // 000E EQ R3 R3 R4 - 0x740E0005, // 000F JMPT R3 #0016 - 0x880C0503, // 0010 GETMBR R3 R2 K3 - 0xB8120800, // 0011 GETNGBL R4 K4 - 0x88100905, // 0012 GETMBR R4 R4 K5 - 0x88100907, // 0013 GETMBR R4 R4 K7 - 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x780E000C, // 0015 JMPF R3 #0023 - 0x880C0508, // 0016 GETMBR R3 R2 K8 - 0x8C100109, // 0017 GETMET R4 R0 K9 - 0x7C100200, // 0018 CALL R4 1 - 0x8C100100, // 0019 GETMET R4 R0 K0 - 0x7C100200, // 001A CALL R4 1 - 0x60140018, // 001B GETGBL R5 G24 - 0x5818000A, // 001C LDCONST R6 K10 - 0x5C1C0200, // 001D MOVE R7 R1 - 0x5C200600, // 001E MOVE R8 R3 - 0x5C240800, // 001F MOVE R9 R4 - 0x7C140800, // 0020 CALL R5 4 - 0x5C040A00, // 0021 MOVE R1 R5 - 0x70020000, // 0022 JMP #0024 - 0x70020000, // 0023 JMP #0025 - 0x7001FFDC, // 0024 JMP #0002 - 0x80040200, // 0025 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_run -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(_validate_object_reference), - /* K3 */ be_nested_str_weak(run), - /* K4 */ be_nested_str_weak(collect_inline_comment), - /* K5 */ be_nested_str_weak(run_statements), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(comment), - }), - be_str_weak(process_run), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x8C080104, // 0008 GETMET R2 R0 K4 - 0x7C080200, // 0009 CALL R2 1 - 0x880C0105, // 000A GETMBR R3 R0 K5 - 0x8C0C0706, // 000B GETMET R3 R3 K6 - 0x60140013, // 000C GETGBL R5 G19 - 0x7C140000, // 000D CALL R5 0 - 0x98160E01, // 000E SETIDX R5 K7 R1 - 0x98161002, // 000F SETIDX R5 K8 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: create_simple_function_from_string -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_create_simple_function_from_string, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), - }), - be_str_weak(create_simple_function_from_string), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x60080018, // 0000 GETGBL R2 G24 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: has_errors -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_has_errors, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(errors), - /* K1 */ be_const_int(0), - }), - be_str_weak(has_errors), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x24040301, // 0003 GT R1 R1 K1 - 0x80040200, // 0004 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: collect_inline_comment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_collect_inline_comment, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(COMMENT), - /* K5 */ be_nested_str_weak(_X20_X20), - /* K6 */ be_nested_str_weak(value), - /* K7 */ be_nested_str_weak(next), - /* K8 */ be_nested_str_weak(), - }), - be_str_weak(collect_inline_comment), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A000A, // 0004 JMPF R2 #0010 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0004, // 000A JMPF R2 #0010 - 0x88080306, // 000B GETMBR R2 R1 K6 - 0x000A0A02, // 000C ADD R2 K5 R2 - 0x8C0C0107, // 000D GETMET R3 R0 K7 - 0x7C0C0200, // 000E CALL R3 1 - 0x80040400, // 000F RET 1 R2 - 0x80061000, // 0010 RET 1 K8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_additive_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[20]) { /* constants */ - /* K0 */ be_nested_str_weak(process_multiplicative_expression), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(PLUS), - /* K7 */ be_nested_str_weak(MINUS), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - /* K11 */ be_nested_str_weak(is_anonymous_function), - /* K12 */ be_nested_str_weak(repeat_count), - /* K13 */ be_nested_str_weak(string), - /* K14 */ be_nested_str_weak(is_computed_expression_string), - /* K15 */ be_nested_str_weak(find), - /* K16 */ be_nested_str_weak(_X2E), - /* K17 */ be_const_int(0), - /* K18 */ be_nested_str_weak(create_simple_function_from_string), - /* K19 */ be_nested_str_weak(create_computation_closure_from_string), - }), - be_str_weak(process_additive_expression), - &be_const_str_solidified, - ( &(const binstruction[79]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100101, // 0004 GETMET R4 R0 K1 - 0x7C100200, // 0005 CALL R4 1 - 0x74120021, // 0006 JMPT R4 #0029 - 0x8C100102, // 0007 GETMET R4 R0 K2 - 0x7C100200, // 0008 CALL R4 1 - 0x4C140000, // 0009 LDNIL R5 - 0x20140805, // 000A NE R5 R4 R5 - 0x7816001A, // 000B JMPF R5 #0027 - 0x88140903, // 000C GETMBR R5 R4 K3 - 0xB81A0800, // 000D GETNGBL R6 K4 - 0x88180D05, // 000E GETMBR R6 R6 K5 - 0x88180D06, // 000F GETMBR R6 R6 K6 - 0x1C140A06, // 0010 EQ R5 R5 R6 - 0x74160005, // 0011 JMPT R5 #0018 - 0x88140903, // 0012 GETMBR R5 R4 K3 - 0xB81A0800, // 0013 GETNGBL R6 K4 - 0x88180D05, // 0014 GETMBR R6 R6 K5 - 0x88180D07, // 0015 GETMBR R6 R6 K7 - 0x1C140A06, // 0016 EQ R5 R5 R6 - 0x7816000E, // 0017 JMPF R5 #0027 - 0x88140908, // 0018 GETMBR R5 R4 K8 - 0x8C180109, // 0019 GETMET R6 R0 K9 - 0x7C180200, // 001A CALL R6 1 - 0x8C180100, // 001B GETMET R6 R0 K0 - 0x5C200200, // 001C MOVE R8 R1 - 0x50240000, // 001D LDBOOL R9 0 0 - 0x7C180600, // 001E CALL R6 3 - 0x601C0018, // 001F GETGBL R7 G24 - 0x5820000A, // 0020 LDCONST R8 K10 - 0x5C240600, // 0021 MOVE R9 R3 - 0x5C280A00, // 0022 MOVE R10 R5 - 0x5C2C0C00, // 0023 MOVE R11 R6 - 0x7C1C0800, // 0024 CALL R7 4 - 0x5C0C0E00, // 0025 MOVE R3 R7 - 0x70020000, // 0026 JMP #0028 - 0x70020000, // 0027 JMP #0029 - 0x7001FFDA, // 0028 JMP #0004 - 0x780A0022, // 0029 JMPF R2 #004D - 0x8C10010B, // 002A GETMET R4 R0 K11 - 0x5C180600, // 002B MOVE R6 R3 - 0x7C100400, // 002C CALL R4 2 - 0x7412001E, // 002D JMPT R4 #004D - 0x1C10030C, // 002E EQ R4 R1 K12 - 0x78120011, // 002F JMPF R4 #0042 - 0xA4121A00, // 0030 IMPORT R4 K13 - 0x8C14010E, // 0031 GETMET R5 R0 K14 - 0x5C1C0600, // 0032 MOVE R7 R3 - 0x7C140400, // 0033 CALL R5 2 - 0x74160005, // 0034 JMPT R5 #003B - 0x8C14090F, // 0035 GETMET R5 R4 K15 - 0x5C1C0600, // 0036 MOVE R7 R3 - 0x58200010, // 0037 LDCONST R8 K16 - 0x7C140600, // 0038 CALL R5 3 - 0x28140B11, // 0039 GE R5 R5 K17 - 0x78160004, // 003A JMPF R5 #0040 - 0x8C140112, // 003B GETMET R5 R0 K18 - 0x5C1C0600, // 003C MOVE R7 R3 - 0x7C140400, // 003D CALL R5 2 - 0x80040A00, // 003E RET 1 R5 - 0x70020000, // 003F JMP #0041 - 0x80040600, // 0040 RET 1 R3 - 0x70020009, // 0041 JMP #004C - 0x8C10010E, // 0042 GETMET R4 R0 K14 - 0x5C180600, // 0043 MOVE R6 R3 - 0x7C100400, // 0044 CALL R4 2 - 0x78120004, // 0045 JMPF R4 #004B - 0x8C100113, // 0046 GETMET R4 R0 K19 - 0x5C180600, // 0047 MOVE R6 R3 - 0x7C100400, // 0048 CALL R4 2 - 0x80040800, // 0049 RET 1 R4 - 0x70020000, // 004A JMP #004C - 0x80040600, // 004B RET 1 R3 - 0x70020000, // 004C JMP #004E - 0x80040600, // 004D RET 1 R3 - 0x80000000, // 004E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_whitespace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_whitespace, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(NEWLINE), - /* K6 */ be_nested_str_weak(COMMENT), - /* K7 */ be_nested_str_weak(next), - }), - be_str_weak(skip_whitespace), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060015, // 0002 JMPT R1 #0019 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x4C080000, // 0005 LDNIL R2 - 0x20080202, // 0006 NE R2 R1 R2 - 0x780A000E, // 0007 JMPF R2 #0017 - 0x88080302, // 0008 GETMBR R2 R1 K2 - 0xB80E0600, // 0009 GETNGBL R3 K3 - 0x880C0704, // 000A GETMBR R3 R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x1C080403, // 000C EQ R2 R2 R3 - 0x740A0005, // 000D JMPT R2 #0014 - 0x88080302, // 000E GETMBR R2 R1 K2 - 0xB80E0600, // 000F GETNGBL R3 K3 - 0x880C0704, // 0010 GETMBR R3 R3 K4 - 0x880C0706, // 0011 GETMBR R3 R3 K6 - 0x1C080403, // 0012 EQ R2 R2 R3 - 0x780A0002, // 0013 JMPF R2 #0017 - 0x8C080107, // 0014 GETMET R2 R0 K7 - 0x7C080200, // 0015 CALL R2 1 - 0x70020000, // 0016 JMP #0018 - 0x70020000, // 0017 JMP #0019 - 0x7001FFE6, // 0018 JMP #0000 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: next -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_next, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_nested_str_weak(tokens), - /* K2 */ be_const_int(1), - }), - be_str_weak(next), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x6008000C, // 0001 GETGBL R2 G12 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x14040202, // 0004 LT R1 R1 R2 - 0x78060002, // 0005 JMPF R1 #0009 - 0x88040100, // 0006 GETMBR R1 R0 K0 - 0x00040302, // 0007 ADD R1 R1 K2 - 0x90020001, // 0008 SETMBR R0 K0 R1 - 0x80000000, // 0009 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_reset_restart_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_reset_restart_statement_fluent, /* name */ - be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(value), - /* K2 */ be_nested_str_weak(next), - /* K3 */ be_nested_str_weak(expect_identifier), - /* K4 */ be_nested_str_weak(_validate_value_provider_reference), - /* K5 */ be_nested_str_weak(skip_statement), - /* K6 */ be_nested_str_weak(collect_inline_comment), - /* K7 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2Estart_X28engine_X2Etime_ms_X29_X20end), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), - /* K10 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_reset_restart_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x88040301, // 0002 GETMBR R1 R1 K1 - 0x8C080102, // 0003 GETMET R2 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x8C080103, // 0005 GETMET R2 R0 K3 - 0x7C080200, // 0006 CALL R2 1 - 0x8C0C0104, // 0007 GETMET R3 R0 K4 - 0x5C140400, // 0008 MOVE R5 R2 - 0x5C180200, // 0009 MOVE R6 R1 - 0x7C0C0600, // 000A CALL R3 3 - 0x740E0002, // 000B JMPT R3 #000F - 0x8C0C0105, // 000C GETMET R3 R0 K5 - 0x7C0C0200, // 000D CALL R3 1 - 0x80000600, // 000E RET 0 - 0x8C0C0106, // 000F GETMET R3 R0 K6 - 0x7C0C0200, // 0010 CALL R3 1 - 0x60100018, // 0011 GETGBL R4 G24 - 0x58140007, // 0012 LDCONST R5 K7 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x8C140108, // 0015 GETMET R5 R0 K8 - 0x601C0018, // 0016 GETGBL R7 G24 - 0x58200009, // 0017 LDCONST R8 K9 - 0x8C24010A, // 0018 GETMET R9 R0 K10 - 0x7C240200, // 0019 CALL R9 1 - 0x5C280800, // 001A MOVE R10 R4 - 0x5C2C0600, // 001B MOVE R11 R3 - 0x7C1C0800, // 001C CALL R7 4 - 0x7C140400, // 001D CALL R5 2 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_user_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_user_function_call, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(LEFT_PAREN), - /* K5 */ be_nested_str_weak(process_function_arguments_for_expression), - /* K6 */ be_nested_str_weak(), - /* K7 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K8 */ be_nested_str_weak(self_X2Eengine), - /* K9 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), - /* K10 */ be_nested_str_weak(error), - /* K11 */ be_nested_str_weak(User_X20functions_X20must_X20be_X20called_X20with_X20parentheses_X3A_X20user_X2Efunction_name_X28_X29), - /* K12 */ be_nested_str_weak(nil), - }), - be_str_weak(_process_user_function_call), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0018, // 0004 JMPF R2 #001E - 0x8C080100, // 0005 GETMET R2 R0 K0 - 0x7C080200, // 0006 CALL R2 1 - 0x88080501, // 0007 GETMBR R2 R2 K1 - 0xB80E0400, // 0008 GETNGBL R3 K2 - 0x880C0703, // 0009 GETMBR R3 R3 K3 - 0x880C0704, // 000A GETMBR R3 R3 K4 - 0x1C080403, // 000B EQ R2 R2 R3 - 0x780A0010, // 000C JMPF R2 #001E - 0x8C080105, // 000D GETMET R2 R0 K5 - 0x7C080200, // 000E CALL R2 1 - 0x200C0506, // 000F NE R3 R2 K6 - 0x780E0004, // 0010 JMPF R3 #0016 - 0x600C0018, // 0011 GETGBL R3 G24 - 0x58100007, // 0012 LDCONST R4 K7 - 0x5C140400, // 0013 MOVE R5 R2 - 0x7C0C0400, // 0014 CALL R3 2 - 0x70020000, // 0015 JMP #0017 - 0x580C0008, // 0016 LDCONST R3 K8 - 0x60100018, // 0017 GETGBL R4 G24 - 0x58140009, // 0018 LDCONST R5 K9 - 0x5C180200, // 0019 MOVE R6 R1 - 0x5C1C0600, // 001A MOVE R7 R3 - 0x7C100600, // 001B CALL R4 3 - 0x80040800, // 001C RET 1 R4 - 0x70020003, // 001D JMP #0022 - 0x8C08010A, // 001E GETMET R2 R0 K10 - 0x5810000B, // 001F LDCONST R4 K11 - 0x7C080400, // 0020 CALL R2 2 - 0x80061800, // 0021 RET 1 K12 - 0x80000000, // 0022 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_event_parameters -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_event_parameters, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_X7B), - /* K2 */ be_nested_str_weak(at_end), - /* K3 */ be_nested_str_weak(check_right_paren), - /* K4 */ be_nested_str_weak(current), - /* K5 */ be_nested_str_weak(type), - /* K6 */ be_nested_str_weak(animation_dsl), - /* K7 */ be_nested_str_weak(Token), - /* K8 */ be_nested_str_weak(TIME), - /* K9 */ be_nested_str_weak(process_time_value), - /* K10 */ be_nested_str_weak(_X22interval_X22_X3A_X20_X25s), - /* K11 */ be_nested_str_weak(process_value), - /* K12 */ be_nested_str_weak(event_param), - /* K13 */ be_nested_str_weak(_X22value_X22_X3A_X20_X25s), - /* K14 */ be_nested_str_weak(expect_right_paren), - /* K15 */ be_nested_str_weak(_X7D), - }), - be_str_weak(process_event_parameters), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58040001, // 0002 LDCONST R1 K1 - 0x8C080102, // 0003 GETMET R2 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x740A001D, // 0005 JMPT R2 #0024 - 0x8C080103, // 0006 GETMET R2 R0 K3 - 0x7C080200, // 0007 CALL R2 1 - 0x740A001A, // 0008 JMPT R2 #0024 - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x4C0C0000, // 000B LDNIL R3 - 0x200C0403, // 000C NE R3 R2 R3 - 0x780E000D, // 000D JMPF R3 #001C - 0x880C0505, // 000E GETMBR R3 R2 K5 - 0xB8120C00, // 000F GETNGBL R4 K6 - 0x88100907, // 0010 GETMBR R4 R4 K7 - 0x88100908, // 0011 GETMBR R4 R4 K8 - 0x1C0C0604, // 0012 EQ R3 R3 R4 - 0x780E0007, // 0013 JMPF R3 #001C - 0x8C0C0109, // 0014 GETMET R3 R0 K9 - 0x7C0C0200, // 0015 CALL R3 1 - 0x60100018, // 0016 GETGBL R4 G24 - 0x5814000A, // 0017 LDCONST R5 K10 - 0x5C180600, // 0018 MOVE R6 R3 - 0x7C100400, // 0019 CALL R4 2 - 0x00040204, // 001A ADD R1 R1 R4 - 0x70020007, // 001B JMP #0024 - 0x8C0C010B, // 001C GETMET R3 R0 K11 - 0x5814000C, // 001D LDCONST R5 K12 - 0x7C0C0400, // 001E CALL R3 2 - 0x60100018, // 001F GETGBL R4 G24 - 0x5814000D, // 0020 LDCONST R5 K13 - 0x5C180600, // 0021 MOVE R6 R3 - 0x7C100400, // 0022 CALL R4 2 - 0x00040204, // 0023 ADD R1 R1 R4 - 0x8C08010E, // 0024 GETMET R2 R0 K14 - 0x7C080200, // 0025 CALL R2 1 - 0x0004030F, // 0026 ADD R1 R1 K15 - 0x80040200, // 0027 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_set -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[22]) { /* constants */ + ( &(const bvalue[47]) { /* constants */ /* K0 */ be_nested_str_weak(next), /* K1 */ be_nested_str_weak(expect_identifier), /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(variable), + /* K3 */ be_nested_str_weak(palette), /* K4 */ be_nested_str_weak(skip_statement), /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(KEYWORD), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(peek), - /* K13 */ be_nested_str_weak(LEFT_PAREN), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(_validate_value_provider_factory_exists), - /* K16 */ be_nested_str_weak(process_value), - /* K17 */ be_nested_str_weak(collect_inline_comment), - /* K18 */ be_nested_str_weak(add), - /* K19 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K20 */ be_nested_str_weak(symbol_table), - /* K21 */ be_nested_str_weak(value_provider), + /* K6 */ be_nested_str_weak(expect_left_bracket), + /* K7 */ be_nested_str_weak(skip_whitespace_including_newlines), + /* K8 */ be_nested_str_weak(check_right_bracket), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Empty_X20palettes_X20are_X20not_X20allowed_X2E_X20A_X20palette_X20must_X20contain_X20at_X20least_X20one_X20color_X20entry_X2E), + /* K11 */ be_nested_str_weak(current), + /* K12 */ be_nested_str_weak(type), + /* K13 */ be_nested_str_weak(animation_dsl), + /* K14 */ be_nested_str_weak(Token), + /* K15 */ be_nested_str_weak(LEFT_PAREN), + /* K16 */ be_nested_str_weak(at_end), + /* K17 */ be_nested_str_weak(Cannot_X20mix_X20alternative_X20syntax_X20_X5Bcolor1_X2C_X20color2_X2C_X20_X2E_X2E_X2E_X5D_X20with_X20tuple_X20syntax_X20_X28value_X2C_X20color_X29_X2E_X20Use_X20only_X20one_X20syntax_X20per_X20palette_X2E), + /* K18 */ be_nested_str_weak(expect_left_paren), + /* K19 */ be_nested_str_weak(expect_number), + /* K20 */ be_nested_str_weak(expect_comma), + /* K21 */ be_nested_str_weak(process_palette_color), + /* K22 */ be_nested_str_weak(expect_right_paren), + /* K23 */ be_nested_str_weak(convert_to_vrgb), + /* K24 */ be_nested_str_weak(0x_X25s), + /* K25 */ be_nested_str_weak(push), + /* K26 */ be_nested_str_weak(Cannot_X20mix_X20tuple_X20syntax_X20_X28value_X2C_X20color_X29_X20with_X20alternative_X20syntax_X20_X5Bcolor1_X2C_X20color2_X2C_X20_X2E_X2E_X2E_X5D_X2E_X20Use_X20only_X20one_X20syntax_X20per_X20palette_X2E), + /* K27 */ be_nested_str_weak(), + /* K28 */ be_nested_str_weak(COMMA), + /* K29 */ be_nested_str_weak(COMMENT), + /* K30 */ be_nested_str_weak(value), + /* K31 */ be_nested_str_weak(NEWLINE), + /* K32 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20palette_X20definition), + /* K33 */ be_nested_str_weak(expect_right_bracket), + /* K34 */ be_nested_str_weak(collect_inline_comment), + /* K35 */ be_nested_str_weak(stop_iteration), + /* K36 */ be_nested_str_weak(add), + /* K37 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20bytes_X28_X25s), + /* K38 */ be_const_int(0), + /* K39 */ be_const_int(1), + /* K40 */ be_nested_str_weak(_X2508X), + /* K41 */ be_nested_str_weak(_X20_X20_X25s), + /* K42 */ be_nested_str_weak(_X20_X20_X22_X25s_X22_X25s), + /* K43 */ be_nested_str_weak(_X29), + /* K44 */ be_nested_str_weak(_X20), + /* K45 */ be_nested_str_weak(_X22_X25s_X22), + /* K46 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20bytes_X28_X25s_X29_X25s), }), - be_str_weak(process_set), + be_str_weak(process_palette), &be_const_str_solidified, - ( &(const binstruction[68]) { /* code */ + ( &(const binstruction[344]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 0x8C040101, // 0002 GETMET R1 R0 K1 @@ -7959,60 +9658,336 @@ be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ 0x80000400, // 000B RET 0 0x8C080105, // 000C GETMET R2 R0 K5 0x7C080200, // 000D CALL R2 1 - 0x50080000, // 000E LDBOOL R2 0 0 - 0x8C0C0106, // 000F GETMET R3 R0 K6 - 0x7C0C0200, // 0010 CALL R3 1 - 0x88100707, // 0011 GETMBR R4 R3 K7 - 0xB8161000, // 0012 GETNGBL R5 K8 - 0x88140B09, // 0013 GETMBR R5 R5 K9 - 0x88140B0A, // 0014 GETMBR R5 R5 K10 - 0x1C100805, // 0015 EQ R4 R4 R5 - 0x74120005, // 0016 JMPT R4 #001D - 0x88100707, // 0017 GETMBR R4 R3 K7 - 0xB8161000, // 0018 GETNGBL R5 K8 - 0x88140B09, // 0019 GETMBR R5 R5 K9 - 0x88140B0B, // 001A GETMBR R5 R5 K11 - 0x1C100805, // 001B EQ R4 R4 R5 - 0x78120012, // 001C JMPF R4 #0030 - 0x8C10010C, // 001D GETMET R4 R0 K12 - 0x7C100200, // 001E CALL R4 1 - 0x4C140000, // 001F LDNIL R5 - 0x20100805, // 0020 NE R4 R4 R5 - 0x7812000D, // 0021 JMPF R4 #0030 - 0x8C10010C, // 0022 GETMET R4 R0 K12 - 0x7C100200, // 0023 CALL R4 1 - 0x88100907, // 0024 GETMBR R4 R4 K7 - 0xB8161000, // 0025 GETNGBL R5 K8 - 0x88140B09, // 0026 GETMBR R5 R5 K9 - 0x88140B0D, // 0027 GETMBR R5 R5 K13 - 0x1C100805, // 0028 EQ R4 R4 R5 - 0x78120005, // 0029 JMPF R4 #0030 - 0x8810070E, // 002A GETMBR R4 R3 K14 - 0x8C14010F, // 002B GETMET R5 R0 K15 - 0x5C1C0800, // 002C MOVE R7 R4 - 0x7C140400, // 002D CALL R5 2 - 0x78160000, // 002E JMPF R5 #0030 - 0x50080200, // 002F LDBOOL R2 1 0 - 0x8C100110, // 0030 GETMET R4 R0 K16 - 0x58180003, // 0031 LDCONST R6 K3 - 0x7C100400, // 0032 CALL R4 2 - 0x8C140111, // 0033 GETMET R5 R0 K17 - 0x7C140200, // 0034 CALL R5 1 - 0x8C180112, // 0035 GETMET R6 R0 K18 - 0x60200018, // 0036 GETGBL R8 G24 - 0x58240013, // 0037 LDCONST R9 K19 - 0x5C280200, // 0038 MOVE R10 R1 - 0x5C2C0800, // 0039 MOVE R11 R4 - 0x5C300A00, // 003A MOVE R12 R5 - 0x7C200800, // 003B CALL R8 4 - 0x7C180400, // 003C CALL R6 2 - 0x780A0002, // 003D JMPF R2 #0041 - 0x88180114, // 003E GETMBR R6 R0 K20 - 0x98180315, // 003F SETIDX R6 R1 K21 - 0x70020001, // 0040 JMP #0043 - 0x88180114, // 0041 GETMBR R6 R0 K20 - 0x98180303, // 0042 SETIDX R6 R1 K3 - 0x80000000, // 0043 RET 0 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x7C080200, // 000F CALL R2 1 + 0x60080012, // 0010 GETGBL R2 G18 + 0x7C080000, // 0011 CALL R2 0 + 0x600C0012, // 0012 GETGBL R3 G18 + 0x7C0C0000, // 0013 CALL R3 0 + 0x8C100107, // 0014 GETMET R4 R0 K7 + 0x7C100200, // 0015 CALL R4 1 + 0x8C100108, // 0016 GETMET R4 R0 K8 + 0x7C100200, // 0017 CALL R4 1 + 0x78120005, // 0018 JMPF R4 #001F + 0x8C100109, // 0019 GETMET R4 R0 K9 + 0x5818000A, // 001A LDCONST R6 K10 + 0x7C100400, // 001B CALL R4 2 + 0x8C100104, // 001C GETMET R4 R0 K4 + 0x7C100200, // 001D CALL R4 1 + 0x80000800, // 001E RET 0 + 0x8C10010B, // 001F GETMET R4 R0 K11 + 0x7C100200, // 0020 CALL R4 1 + 0x4C140000, // 0021 LDNIL R5 + 0x20100805, // 0022 NE R4 R4 R5 + 0x78120007, // 0023 JMPF R4 #002C + 0x8C10010B, // 0024 GETMET R4 R0 K11 + 0x7C100200, // 0025 CALL R4 1 + 0x8810090C, // 0026 GETMBR R4 R4 K12 + 0xB8161A00, // 0027 GETNGBL R5 K13 + 0x88140B0E, // 0028 GETMBR R5 R5 K14 + 0x88140B0F, // 0029 GETMBR R5 R5 K15 + 0x1C100805, // 002A EQ R4 R4 R5 + 0x74120000, // 002B JMPT R4 #002D + 0x50100001, // 002C LDBOOL R4 0 1 + 0x50100200, // 002D LDBOOL R4 1 0 + 0x8C140110, // 002E GETMET R5 R0 K16 + 0x7C140200, // 002F CALL R5 1 + 0x741600BF, // 0030 JMPT R5 #00F1 + 0x8C140108, // 0031 GETMET R5 R0 K8 + 0x7C140200, // 0032 CALL R5 1 + 0x741600BC, // 0033 JMPT R5 #00F1 + 0x8C140107, // 0034 GETMET R5 R0 K7 + 0x7C140200, // 0035 CALL R5 1 + 0x8C140108, // 0036 GETMET R5 R0 K8 + 0x7C140200, // 0037 CALL R5 1 + 0x78160000, // 0038 JMPF R5 #003A + 0x700200B6, // 0039 JMP #00F1 + 0x7812002A, // 003A JMPF R4 #0066 + 0x8C14010B, // 003B GETMET R5 R0 K11 + 0x7C140200, // 003C CALL R5 1 + 0x4C180000, // 003D LDNIL R6 + 0x20140A06, // 003E NE R5 R5 R6 + 0x7816000D, // 003F JMPF R5 #004E + 0x8C14010B, // 0040 GETMET R5 R0 K11 + 0x7C140200, // 0041 CALL R5 1 + 0x88140B0C, // 0042 GETMBR R5 R5 K12 + 0xB81A1A00, // 0043 GETNGBL R6 K13 + 0x88180D0E, // 0044 GETMBR R6 R6 K14 + 0x88180D0F, // 0045 GETMBR R6 R6 K15 + 0x20140A06, // 0046 NE R5 R5 R6 + 0x78160005, // 0047 JMPF R5 #004E + 0x8C140109, // 0048 GETMET R5 R0 K9 + 0x581C0011, // 0049 LDCONST R7 K17 + 0x7C140400, // 004A CALL R5 2 + 0x8C140104, // 004B GETMET R5 R0 K4 + 0x7C140200, // 004C CALL R5 1 + 0x80000A00, // 004D RET 0 + 0x8C140112, // 004E GETMET R5 R0 K18 + 0x7C140200, // 004F CALL R5 1 + 0x8C140113, // 0050 GETMET R5 R0 K19 + 0x7C140200, // 0051 CALL R5 1 + 0x8C180114, // 0052 GETMET R6 R0 K20 + 0x7C180200, // 0053 CALL R6 1 + 0x8C180115, // 0054 GETMET R6 R0 K21 + 0x7C180200, // 0055 CALL R6 1 + 0x8C1C0116, // 0056 GETMET R7 R0 K22 + 0x7C1C0200, // 0057 CALL R7 1 + 0x8C1C0117, // 0058 GETMET R7 R0 K23 + 0x5C240A00, // 0059 MOVE R9 R5 + 0x5C280C00, // 005A MOVE R10 R6 + 0x7C1C0600, // 005B CALL R7 3 + 0x60200009, // 005C GETGBL R8 G9 + 0x60240018, // 005D GETGBL R9 G24 + 0x58280018, // 005E LDCONST R10 K24 + 0x5C2C0E00, // 005F MOVE R11 R7 + 0x7C240400, // 0060 CALL R9 2 + 0x7C200200, // 0061 CALL R8 1 + 0x8C240519, // 0062 GETMET R9 R2 K25 + 0x5C2C1000, // 0063 MOVE R11 R8 + 0x7C240400, // 0064 CALL R9 2 + 0x70020021, // 0065 JMP #0088 + 0x8C14010B, // 0066 GETMET R5 R0 K11 + 0x7C140200, // 0067 CALL R5 1 + 0x4C180000, // 0068 LDNIL R6 + 0x20140A06, // 0069 NE R5 R5 R6 + 0x7816000D, // 006A JMPF R5 #0079 + 0x8C14010B, // 006B GETMET R5 R0 K11 + 0x7C140200, // 006C CALL R5 1 + 0x88140B0C, // 006D GETMBR R5 R5 K12 + 0xB81A1A00, // 006E GETNGBL R6 K13 + 0x88180D0E, // 006F GETMBR R6 R6 K14 + 0x88180D0F, // 0070 GETMBR R6 R6 K15 + 0x1C140A06, // 0071 EQ R5 R5 R6 + 0x78160005, // 0072 JMPF R5 #0079 + 0x8C140109, // 0073 GETMET R5 R0 K9 + 0x581C001A, // 0074 LDCONST R7 K26 + 0x7C140400, // 0075 CALL R5 2 + 0x8C140104, // 0076 GETMET R5 R0 K4 + 0x7C140200, // 0077 CALL R5 1 + 0x80000A00, // 0078 RET 0 + 0x8C140115, // 0079 GETMET R5 R0 K21 + 0x7C140200, // 007A CALL R5 1 + 0x8C180117, // 007B GETMET R6 R0 K23 + 0x542200FE, // 007C LDINT R8 255 + 0x5C240A00, // 007D MOVE R9 R5 + 0x7C180600, // 007E CALL R6 3 + 0x601C0009, // 007F GETGBL R7 G9 + 0x60200018, // 0080 GETGBL R8 G24 + 0x58240018, // 0081 LDCONST R9 K24 + 0x5C280C00, // 0082 MOVE R10 R6 + 0x7C200400, // 0083 CALL R8 2 + 0x7C1C0200, // 0084 CALL R7 1 + 0x8C200519, // 0085 GETMET R8 R2 K25 + 0x5C280E00, // 0086 MOVE R10 R7 + 0x7C200400, // 0087 CALL R8 2 + 0x5814001B, // 0088 LDCONST R5 K27 + 0x8C18010B, // 0089 GETMET R6 R0 K11 + 0x7C180200, // 008A CALL R6 1 + 0x4C1C0000, // 008B LDNIL R7 + 0x20180C07, // 008C NE R6 R6 R7 + 0x781A002F, // 008D JMPF R6 #00BE + 0x8C18010B, // 008E GETMET R6 R0 K11 + 0x7C180200, // 008F CALL R6 1 + 0x88180D0C, // 0090 GETMBR R6 R6 K12 + 0xB81E1A00, // 0091 GETNGBL R7 K13 + 0x881C0F0E, // 0092 GETMBR R7 R7 K14 + 0x881C0F1C, // 0093 GETMBR R7 R7 K28 + 0x1C180C07, // 0094 EQ R6 R6 R7 + 0x781A0027, // 0095 JMPF R6 #00BE + 0x8C180100, // 0096 GETMET R6 R0 K0 + 0x7C180200, // 0097 CALL R6 1 + 0x8C18010B, // 0098 GETMET R6 R0 K11 + 0x7C180200, // 0099 CALL R6 1 + 0x4C1C0000, // 009A LDNIL R7 + 0x20180C07, // 009B NE R6 R6 R7 + 0x781A000C, // 009C JMPF R6 #00AA + 0x8C18010B, // 009D GETMET R6 R0 K11 + 0x7C180200, // 009E CALL R6 1 + 0x88180D0C, // 009F GETMBR R6 R6 K12 + 0xB81E1A00, // 00A0 GETNGBL R7 K13 + 0x881C0F0E, // 00A1 GETMBR R7 R7 K14 + 0x881C0F1D, // 00A2 GETMBR R7 R7 K29 + 0x1C180C07, // 00A3 EQ R6 R6 R7 + 0x781A0004, // 00A4 JMPF R6 #00AA + 0x8C18010B, // 00A5 GETMET R6 R0 K11 + 0x7C180200, // 00A6 CALL R6 1 + 0x88140D1E, // 00A7 GETMBR R5 R6 K30 + 0x8C180100, // 00A8 GETMET R6 R0 K0 + 0x7C180200, // 00A9 CALL R6 1 + 0x8C180110, // 00AA GETMET R6 R0 K16 + 0x7C180200, // 00AB CALL R6 1 + 0x741A000F, // 00AC JMPT R6 #00BD + 0x8C18010B, // 00AD GETMET R6 R0 K11 + 0x7C180200, // 00AE CALL R6 1 + 0x4C1C0000, // 00AF LDNIL R7 + 0x201C0C07, // 00B0 NE R7 R6 R7 + 0x781E0008, // 00B1 JMPF R7 #00BB + 0x881C0D0C, // 00B2 GETMBR R7 R6 K12 + 0xB8221A00, // 00B3 GETNGBL R8 K13 + 0x8820110E, // 00B4 GETMBR R8 R8 K14 + 0x8820111F, // 00B5 GETMBR R8 R8 K31 + 0x1C1C0E08, // 00B6 EQ R7 R7 R8 + 0x781E0002, // 00B7 JMPF R7 #00BB + 0x8C1C0100, // 00B8 GETMET R7 R0 K0 + 0x7C1C0200, // 00B9 CALL R7 1 + 0x70020000, // 00BA JMP #00BC + 0x70020000, // 00BB JMP #00BD + 0x7001FFEC, // 00BC JMP #00AA + 0x7002002E, // 00BD JMP #00ED + 0x8C18010B, // 00BE GETMET R6 R0 K11 + 0x7C180200, // 00BF CALL R6 1 + 0x4C1C0000, // 00C0 LDNIL R7 + 0x20180C07, // 00C1 NE R6 R6 R7 + 0x781A000C, // 00C2 JMPF R6 #00D0 + 0x8C18010B, // 00C3 GETMET R6 R0 K11 + 0x7C180200, // 00C4 CALL R6 1 + 0x88180D0C, // 00C5 GETMBR R6 R6 K12 + 0xB81E1A00, // 00C6 GETNGBL R7 K13 + 0x881C0F0E, // 00C7 GETMBR R7 R7 K14 + 0x881C0F1F, // 00C8 GETMBR R7 R7 K31 + 0x1C180C07, // 00C9 EQ R6 R6 R7 + 0x781A0004, // 00CA JMPF R6 #00D0 + 0x8C180100, // 00CB GETMET R6 R0 K0 + 0x7C180200, // 00CC CALL R6 1 + 0x8C180107, // 00CD GETMET R6 R0 K7 + 0x7C180200, // 00CE CALL R6 1 + 0x7002001C, // 00CF JMP #00ED + 0x8C180108, // 00D0 GETMET R6 R0 K8 + 0x7C180200, // 00D1 CALL R6 1 + 0x741A0019, // 00D2 JMPT R6 #00ED + 0x8C18010B, // 00D3 GETMET R6 R0 K11 + 0x7C180200, // 00D4 CALL R6 1 + 0x4C1C0000, // 00D5 LDNIL R7 + 0x20180C07, // 00D6 NE R6 R6 R7 + 0x781A000D, // 00D7 JMPF R6 #00E6 + 0x8C18010B, // 00D8 GETMET R6 R0 K11 + 0x7C180200, // 00D9 CALL R6 1 + 0x88180D0C, // 00DA GETMBR R6 R6 K12 + 0xB81E1A00, // 00DB GETNGBL R7 K13 + 0x881C0F0E, // 00DC GETMBR R7 R7 K14 + 0x881C0F1D, // 00DD GETMBR R7 R7 K29 + 0x1C180C07, // 00DE EQ R6 R6 R7 + 0x781A0005, // 00DF JMPF R6 #00E6 + 0x8C18010B, // 00E0 GETMET R6 R0 K11 + 0x7C180200, // 00E1 CALL R6 1 + 0x88140D1E, // 00E2 GETMBR R5 R6 K30 + 0x8C180100, // 00E3 GETMET R6 R0 K0 + 0x7C180200, // 00E4 CALL R6 1 + 0x70020006, // 00E5 JMP #00ED + 0x8C180108, // 00E6 GETMET R6 R0 K8 + 0x7C180200, // 00E7 CALL R6 1 + 0x741A0003, // 00E8 JMPT R6 #00ED + 0x8C180109, // 00E9 GETMET R6 R0 K9 + 0x58200020, // 00EA LDCONST R8 K32 + 0x7C180400, // 00EB CALL R6 2 + 0x70020003, // 00EC JMP #00F1 + 0x8C180719, // 00ED GETMET R6 R3 K25 + 0x5C200A00, // 00EE MOVE R8 R5 + 0x7C180400, // 00EF CALL R6 2 + 0x7001FF3C, // 00F0 JMP #002E + 0x8C140121, // 00F1 GETMET R5 R0 K33 + 0x7C140200, // 00F2 CALL R5 1 + 0x8C140122, // 00F3 GETMET R5 R0 K34 + 0x7C140200, // 00F4 CALL R5 1 + 0x50180000, // 00F5 LDBOOL R6 0 0 + 0x601C0010, // 00F6 GETGBL R7 G16 + 0x5C200600, // 00F7 MOVE R8 R3 + 0x7C1C0200, // 00F8 CALL R7 1 + 0xA8020008, // 00F9 EXBLK 0 #0103 + 0x5C200E00, // 00FA MOVE R8 R7 + 0x7C200000, // 00FB CALL R8 0 + 0x2024111B, // 00FC NE R9 R8 K27 + 0x78260001, // 00FD JMPF R9 #0100 + 0x50180200, // 00FE LDBOOL R6 1 0 + 0x70020000, // 00FF JMP #0101 + 0x7001FFF8, // 0100 JMP #00FA + 0xA8040001, // 0101 EXBLK 1 1 + 0x70020002, // 0102 JMP #0106 + 0x581C0023, // 0103 LDCONST R7 K35 + 0xAC1C0200, // 0104 CATCH R7 1 0 + 0xB0080000, // 0105 RAISE 2 R0 R0 + 0x781A002C, // 0106 JMPF R6 #0134 + 0x8C1C0124, // 0107 GETMET R7 R0 K36 + 0x60240018, // 0108 GETGBL R9 G24 + 0x58280025, // 0109 LDCONST R10 K37 + 0x5C2C0200, // 010A MOVE R11 R1 + 0x5C300A00, // 010B MOVE R12 R5 + 0x7C240600, // 010C CALL R9 3 + 0x7C1C0400, // 010D CALL R7 2 + 0x601C0010, // 010E GETGBL R7 G16 + 0x6020000C, // 010F GETGBL R8 G12 + 0x5C240400, // 0110 MOVE R9 R2 + 0x7C200200, // 0111 CALL R8 1 + 0x04201127, // 0112 SUB R8 R8 K39 + 0x40224C08, // 0113 CONNECT R8 K38 R8 + 0x7C1C0200, // 0114 CALL R7 1 + 0xA8020016, // 0115 EXBLK 0 #012D + 0x5C200E00, // 0116 MOVE R8 R7 + 0x7C200000, // 0117 CALL R8 0 + 0x60240018, // 0118 GETGBL R9 G24 + 0x58280028, // 0119 LDCONST R10 K40 + 0x942C0408, // 011A GETIDX R11 R2 R8 + 0x7C240400, // 011B CALL R9 2 + 0x94280608, // 011C GETIDX R10 R3 R8 + 0x202C151B, // 011D NE R11 R10 K27 + 0x782E0004, // 011E JMPF R11 #0124 + 0x602C0018, // 011F GETGBL R11 G24 + 0x58300029, // 0120 LDCONST R12 K41 + 0x5C341400, // 0121 MOVE R13 R10 + 0x7C2C0400, // 0122 CALL R11 2 + 0x70020000, // 0123 JMP #0125 + 0x582C001B, // 0124 LDCONST R11 K27 + 0x8C300124, // 0125 GETMET R12 R0 K36 + 0x60380018, // 0126 GETGBL R14 G24 + 0x583C002A, // 0127 LDCONST R15 K42 + 0x5C401200, // 0128 MOVE R16 R9 + 0x5C441600, // 0129 MOVE R17 R11 + 0x7C380600, // 012A CALL R14 3 + 0x7C300400, // 012B CALL R12 2 + 0x7001FFE8, // 012C JMP #0116 + 0x581C0023, // 012D LDCONST R7 K35 + 0xAC1C0200, // 012E CATCH R7 1 0 + 0xB0080000, // 012F RAISE 2 R0 R0 + 0x8C1C0124, // 0130 GETMET R7 R0 K36 + 0x5824002B, // 0131 LDCONST R9 K43 + 0x7C1C0400, // 0132 CALL R7 2 + 0x70020022, // 0133 JMP #0157 + 0x581C001B, // 0134 LDCONST R7 K27 + 0x60200010, // 0135 GETGBL R8 G16 + 0x6024000C, // 0136 GETGBL R9 G12 + 0x5C280400, // 0137 MOVE R10 R2 + 0x7C240200, // 0138 CALL R9 1 + 0x04241327, // 0139 SUB R9 R9 K39 + 0x40264C09, // 013A CONNECT R9 K38 R9 + 0x7C200200, // 013B CALL R8 1 + 0xA802000E, // 013C EXBLK 0 #014C + 0x5C241000, // 013D MOVE R9 R8 + 0x7C240000, // 013E CALL R9 0 + 0x24281326, // 013F GT R10 R9 K38 + 0x782A0000, // 0140 JMPF R10 #0142 + 0x001C0F2C, // 0141 ADD R7 R7 K44 + 0x60280018, // 0142 GETGBL R10 G24 + 0x582C0028, // 0143 LDCONST R11 K40 + 0x94300409, // 0144 GETIDX R12 R2 R9 + 0x7C280400, // 0145 CALL R10 2 + 0x602C0018, // 0146 GETGBL R11 G24 + 0x5830002D, // 0147 LDCONST R12 K45 + 0x5C341400, // 0148 MOVE R13 R10 + 0x7C2C0400, // 0149 CALL R11 2 + 0x001C0E0B, // 014A ADD R7 R7 R11 + 0x7001FFF0, // 014B JMP #013D + 0x58200023, // 014C LDCONST R8 K35 + 0xAC200200, // 014D CATCH R8 1 0 + 0xB0080000, // 014E RAISE 2 R0 R0 + 0x8C200124, // 014F GETMET R8 R0 K36 + 0x60280018, // 0150 GETGBL R10 G24 + 0x582C002E, // 0151 LDCONST R11 K46 + 0x5C300200, // 0152 MOVE R12 R1 + 0x5C340E00, // 0153 MOVE R13 R7 + 0x5C380A00, // 0154 MOVE R14 R5 + 0x7C280800, // 0155 CALL R10 4 + 0x7C200400, // 0156 CALL R8 2 + 0x80000000, // 0157 RET 0 }) ) ); @@ -8020,49 +9995,32 @@ be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ /******************************************************************** -** Solidified function: expect_right_bracket +** Solidified function: _validate_value_provider_factory_exists ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* name */ +be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists, /* name */ be_nested_proto( - 5, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACKET), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(_validate_factory_function), + /* K1 */ be_nested_str_weak(animation), + /* K2 */ be_nested_str_weak(value_provider), }), - be_str_weak(expect_right_bracket), + be_str_weak(_validate_value_provider_factory_exists), &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 + ( &(const binstruction[ 6]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0xB8160200, // 0002 GETNGBL R5 K1 + 0x88140B02, // 0003 GETMBR R5 R5 K2 + 0x7C080600, // 0004 CALL R2 3 + 0x80040400, // 0005 RET 1 R2 }) ) ); @@ -8120,201 +10078,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* name */ /******************************************************************** -** Solidified function: process_named_arguments_for_variable +** Solidified function: process_log_statement_fluent ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_log_statement_fluent, /* name */ be_nested_proto( - 16, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[33]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(string), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(temp_), - /* K5 */ be_const_int(0), - /* K6 */ be_nested_str_weak(split), - /* K7 */ be_nested_str_weak(_), - /* K8 */ be_const_int(2), - /* K9 */ be_const_int(1), - /* K10 */ be_nested_str_weak(_create_instance_for_validation), - /* K11 */ be_nested_str_weak(at_end), - /* K12 */ be_nested_str_weak(check_right_paren), - /* K13 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K14 */ be_nested_str_weak(expect_identifier), - /* K15 */ be_nested_str_weak(_validate_single_parameter), - /* K16 */ be_nested_str_weak(expect_assign), - /* K17 */ be_nested_str_weak(process_value), - /* K18 */ be_nested_str_weak(argument), - /* K19 */ be_nested_str_weak(collect_inline_comment), - /* K20 */ be_nested_str_weak(add), - /* K21 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K22 */ be_nested_str_weak(current), - /* K23 */ be_nested_str_weak(type), - /* K24 */ be_nested_str_weak(animation_dsl), - /* K25 */ be_nested_str_weak(Token), - /* K26 */ be_nested_str_weak(COMMENT), - /* K27 */ be_nested_str_weak(next), - /* K28 */ be_nested_str_weak(COMMA), - /* K29 */ be_nested_str_weak(NEWLINE), - /* K30 */ be_nested_str_weak(error), - /* K31 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K32 */ be_nested_str_weak(expect_right_paren), - }), - be_str_weak(process_named_arguments_for_variable), - &be_const_str_solidified, - ( &(const binstruction[133]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x58080001, // 0002 LDCONST R2 K1 - 0xA40E0400, // 0003 IMPORT R3 K2 - 0x8C100703, // 0004 GETMET R4 R3 K3 - 0x5C180200, // 0005 MOVE R6 R1 - 0x581C0004, // 0006 LDCONST R7 K4 - 0x7C100600, // 0007 CALL R4 3 - 0x1C100905, // 0008 EQ R4 R4 K5 - 0x78120009, // 0009 JMPF R4 #0014 - 0x8C100706, // 000A GETMET R4 R3 K6 - 0x5C180200, // 000B MOVE R6 R1 - 0x581C0007, // 000C LDCONST R7 K7 - 0x7C100600, // 000D CALL R4 3 - 0x6014000C, // 000E GETGBL R5 G12 - 0x5C180800, // 000F MOVE R6 R4 - 0x7C140200, // 0010 CALL R5 1 - 0x28140B08, // 0011 GE R5 R5 K8 - 0x78160000, // 0012 JMPF R5 #0014 - 0x94080909, // 0013 GETIDX R2 R4 K9 - 0x4C100000, // 0014 LDNIL R4 - 0x20140501, // 0015 NE R5 R2 K1 - 0x78160003, // 0016 JMPF R5 #001B - 0x8C14010A, // 0017 GETMET R5 R0 K10 - 0x5C1C0400, // 0018 MOVE R7 R2 - 0x7C140400, // 0019 CALL R5 2 - 0x5C100A00, // 001A MOVE R4 R5 - 0x8C14010B, // 001B GETMET R5 R0 K11 - 0x7C140200, // 001C CALL R5 1 - 0x74160063, // 001D JMPT R5 #0082 - 0x8C14010C, // 001E GETMET R5 R0 K12 - 0x7C140200, // 001F CALL R5 1 - 0x74160060, // 0020 JMPT R5 #0082 - 0x8C14010D, // 0021 GETMET R5 R0 K13 - 0x7C140200, // 0022 CALL R5 1 - 0x8C14010C, // 0023 GETMET R5 R0 K12 - 0x7C140200, // 0024 CALL R5 1 - 0x78160000, // 0025 JMPF R5 #0027 - 0x7002005A, // 0026 JMP #0082 - 0x8C14010E, // 0027 GETMET R5 R0 K14 - 0x7C140200, // 0028 CALL R5 1 - 0x4C180000, // 0029 LDNIL R6 - 0x20180806, // 002A NE R6 R4 R6 - 0x781A0006, // 002B JMPF R6 #0033 - 0x20180501, // 002C NE R6 R2 K1 - 0x781A0004, // 002D JMPF R6 #0033 - 0x8C18010F, // 002E GETMET R6 R0 K15 - 0x5C200400, // 002F MOVE R8 R2 - 0x5C240A00, // 0030 MOVE R9 R5 - 0x5C280800, // 0031 MOVE R10 R4 - 0x7C180800, // 0032 CALL R6 4 - 0x8C180110, // 0033 GETMET R6 R0 K16 - 0x7C180200, // 0034 CALL R6 1 - 0x8C180111, // 0035 GETMET R6 R0 K17 - 0x58200012, // 0036 LDCONST R8 K18 - 0x7C180400, // 0037 CALL R6 2 - 0x8C1C0113, // 0038 GETMET R7 R0 K19 - 0x7C1C0200, // 0039 CALL R7 1 - 0x8C200114, // 003A GETMET R8 R0 K20 - 0x60280018, // 003B GETGBL R10 G24 - 0x582C0015, // 003C LDCONST R11 K21 - 0x5C300200, // 003D MOVE R12 R1 - 0x5C340A00, // 003E MOVE R13 R5 - 0x5C380C00, // 003F MOVE R14 R6 - 0x5C3C0E00, // 0040 MOVE R15 R7 - 0x7C280A00, // 0041 CALL R10 5 - 0x7C200400, // 0042 CALL R8 2 - 0x8C20010B, // 0043 GETMET R8 R0 K11 - 0x7C200200, // 0044 CALL R8 1 - 0x7422000F, // 0045 JMPT R8 #0056 - 0x8C200116, // 0046 GETMET R8 R0 K22 - 0x7C200200, // 0047 CALL R8 1 - 0x4C240000, // 0048 LDNIL R9 - 0x20241009, // 0049 NE R9 R8 R9 - 0x78260008, // 004A JMPF R9 #0054 - 0x88241117, // 004B GETMBR R9 R8 K23 - 0xB82A3000, // 004C GETNGBL R10 K24 - 0x88281519, // 004D GETMBR R10 R10 K25 - 0x8828151A, // 004E GETMBR R10 R10 K26 - 0x1C24120A, // 004F EQ R9 R9 R10 - 0x78260002, // 0050 JMPF R9 #0054 - 0x8C24011B, // 0051 GETMET R9 R0 K27 - 0x7C240200, // 0052 CALL R9 1 - 0x70020000, // 0053 JMP #0055 - 0x70020000, // 0054 JMP #0056 - 0x7001FFEC, // 0055 JMP #0043 - 0x8C200116, // 0056 GETMET R8 R0 K22 - 0x7C200200, // 0057 CALL R8 1 - 0x4C240000, // 0058 LDNIL R9 - 0x20201009, // 0059 NE R8 R8 R9 - 0x7822000C, // 005A JMPF R8 #0068 - 0x8C200116, // 005B GETMET R8 R0 K22 - 0x7C200200, // 005C CALL R8 1 - 0x88201117, // 005D GETMBR R8 R8 K23 - 0xB8263000, // 005E GETNGBL R9 K24 - 0x88241319, // 005F GETMBR R9 R9 K25 - 0x8824131C, // 0060 GETMBR R9 R9 K28 - 0x1C201009, // 0061 EQ R8 R8 R9 - 0x78220004, // 0062 JMPF R8 #0068 - 0x8C20011B, // 0063 GETMET R8 R0 K27 - 0x7C200200, // 0064 CALL R8 1 - 0x8C20010D, // 0065 GETMET R8 R0 K13 - 0x7C200200, // 0066 CALL R8 1 - 0x70020018, // 0067 JMP #0081 - 0x8C200116, // 0068 GETMET R8 R0 K22 - 0x7C200200, // 0069 CALL R8 1 - 0x4C240000, // 006A LDNIL R9 - 0x20201009, // 006B NE R8 R8 R9 - 0x7822000C, // 006C JMPF R8 #007A - 0x8C200116, // 006D GETMET R8 R0 K22 - 0x7C200200, // 006E CALL R8 1 - 0x88201117, // 006F GETMBR R8 R8 K23 - 0xB8263000, // 0070 GETNGBL R9 K24 - 0x88241319, // 0071 GETMBR R9 R9 K25 - 0x8824131D, // 0072 GETMBR R9 R9 K29 - 0x1C201009, // 0073 EQ R8 R8 R9 - 0x78220004, // 0074 JMPF R8 #007A - 0x8C20011B, // 0075 GETMET R8 R0 K27 - 0x7C200200, // 0076 CALL R8 1 - 0x8C20010D, // 0077 GETMET R8 R0 K13 - 0x7C200200, // 0078 CALL R8 1 - 0x70020006, // 0079 JMP #0081 - 0x8C20010C, // 007A GETMET R8 R0 K12 - 0x7C200200, // 007B CALL R8 1 - 0x74220003, // 007C JMPT R8 #0081 - 0x8C20011E, // 007D GETMET R8 R0 K30 - 0x5828001F, // 007E LDCONST R10 K31 - 0x7C200400, // 007F CALL R8 2 - 0x70020000, // 0080 JMP #0082 - 0x7001FF98, // 0081 JMP #001B - 0x8C140120, // 0082 GETMET R5 R0 K32 - 0x7C140200, // 0083 CALL R5 1 - 0x80000000, // 0084 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transpile_template_body -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile_template_body, /* name */ - be_nested_proto( - 11, /* nstack */ + 9, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -8322,195 +10090,64 @@ be_local_closure(class_SimpleDSLTranspiler_transpile_template_body, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(process_statement), - /* K2 */ be_nested_str_weak(run_statements), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(name), - /* K5 */ be_nested_str_weak(comment), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), - /* K8 */ be_nested_str_weak(stop_iteration), - /* K9 */ be_nested_str_weak(errors), - /* K10 */ be_nested_str_weak(join_output), - /* K11 */ be_nested_str_weak(error), - /* K12 */ be_nested_str_weak(Template_X20body_X20transpilation_X20failed_X3A_X20_X25s), + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_left_paren), + /* K2 */ be_nested_str_weak(current), + /* K3 */ be_nested_str_weak(type), + /* K4 */ be_nested_str_weak(animation_dsl), + /* K5 */ be_nested_str_weak(Token), + /* K6 */ be_nested_str_weak(STRING), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), + /* K9 */ be_nested_str_weak(skip_statement), + /* K10 */ be_nested_str_weak(value), + /* K11 */ be_nested_str_weak(expect_right_paren), + /* K12 */ be_nested_str_weak(collect_inline_comment), + /* K13 */ be_nested_str_weak(process_log_call), + /* K14 */ be_nested_str_weak(fluent), + /* K15 */ be_nested_str_weak(add), }), - be_str_weak(transpile_template_body), + be_str_weak(process_log_statement_fluent), &be_const_str_solidified, - ( &(const binstruction[57]) { /* code */ - 0xA802002A, // 0000 EXBLK 0 #002C - 0x8C040100, // 0001 GETMET R1 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x74060002, // 0003 JMPT R1 #0007 - 0x8C040101, // 0004 GETMET R1 R0 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x7001FFF9, // 0006 JMP #0001 - 0x6004000C, // 0007 GETGBL R1 G12 - 0x88080102, // 0008 GETMBR R2 R0 K2 - 0x7C040200, // 0009 CALL R1 1 - 0x24040303, // 000A GT R1 R1 K3 - 0x78060012, // 000B JMPF R1 #001F - 0x60040010, // 000C GETGBL R1 G16 - 0x88080102, // 000D GETMBR R2 R0 K2 - 0x7C040200, // 000E CALL R1 1 - 0xA802000B, // 000F EXBLK 0 #001C - 0x5C080200, // 0010 MOVE R2 R1 - 0x7C080000, // 0011 CALL R2 0 - 0x940C0504, // 0012 GETIDX R3 R2 K4 - 0x94100505, // 0013 GETIDX R4 R2 K5 - 0x8C140106, // 0014 GETMET R5 R0 K6 - 0x601C0018, // 0015 GETGBL R7 G24 - 0x58200007, // 0016 LDCONST R8 K7 - 0x5C240600, // 0017 MOVE R9 R3 - 0x5C280800, // 0018 MOVE R10 R4 - 0x7C1C0600, // 0019 CALL R7 3 - 0x7C140400, // 001A CALL R5 2 - 0x7001FFF3, // 001B JMP #0010 - 0x58040008, // 001C LDCONST R1 K8 - 0xAC040200, // 001D CATCH R1 1 0 - 0xB0080000, // 001E RAISE 2 R0 R0 - 0x6004000C, // 001F GETGBL R1 G12 - 0x88080109, // 0020 GETMBR R2 R0 K9 - 0x7C040200, // 0021 CALL R1 1 - 0x1C040303, // 0022 EQ R1 R1 K3 - 0x78060002, // 0023 JMPF R1 #0027 - 0x8C04010A, // 0024 GETMET R1 R0 K10 - 0x7C040200, // 0025 CALL R1 1 - 0x70020000, // 0026 JMP #0028 - 0x4C040000, // 0027 LDNIL R1 - 0xA8040001, // 0028 EXBLK 1 1 - 0x80040200, // 0029 RET 1 R1 - 0xA8040001, // 002A EXBLK 1 1 - 0x7002000B, // 002B JMP #0038 - 0xAC040002, // 002C CATCH R1 0 2 - 0x70020008, // 002D JMP #0037 - 0x8C0C010B, // 002E GETMET R3 R0 K11 - 0x60140018, // 002F GETGBL R5 G24 - 0x5818000C, // 0030 LDCONST R6 K12 - 0x5C1C0400, // 0031 MOVE R7 R2 - 0x7C140400, // 0032 CALL R5 2 - 0x7C0C0400, // 0033 CALL R3 2 - 0x4C0C0000, // 0034 LDNIL R3 - 0x80040600, // 0035 RET 1 R3 - 0x70020000, // 0036 JMP #0038 - 0xB0080000, // 0037 RAISE 2 R0 R0 - 0x80000000, // 0038 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_engine_start -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_engine_start, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(run_statements), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(has_template_calls), - /* K3 */ be_nested_str_weak(name), - /* K4 */ be_nested_str_weak(comment), - /* K5 */ be_nested_str_weak(add), - /* K6 */ be_nested_str_weak(engine_X2Eadd_X28_X25s__X29_X25s), - /* K7 */ be_nested_str_weak(stop_iteration), - /* K8 */ be_nested_str_weak(engine_X2Estart_X28_X29), - }), - be_str_weak(generate_engine_start), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 - 0x78060002, // 0004 JMPF R1 #0008 - 0x88040102, // 0005 GETMBR R1 R0 K2 - 0x74060000, // 0006 JMPT R1 #0008 - 0x80000200, // 0007 RET 0 - 0x60040010, // 0008 GETGBL R1 G16 - 0x88080100, // 0009 GETMBR R2 R0 K0 - 0x7C040200, // 000A CALL R1 1 - 0xA802000B, // 000B EXBLK 0 #0018 - 0x5C080200, // 000C MOVE R2 R1 - 0x7C080000, // 000D CALL R2 0 - 0x940C0503, // 000E GETIDX R3 R2 K3 - 0x94100504, // 000F GETIDX R4 R2 K4 - 0x8C140105, // 0010 GETMET R5 R0 K5 - 0x601C0018, // 0011 GETGBL R7 G24 - 0x58200006, // 0012 LDCONST R8 K6 - 0x5C240600, // 0013 MOVE R9 R3 - 0x5C280800, // 0014 MOVE R10 R4 - 0x7C1C0600, // 0015 CALL R7 3 - 0x7C140400, // 0016 CALL R5 2 - 0x7001FFF3, // 0017 JMP #000C - 0x58040007, // 0018 LDCONST R1 K7 - 0xAC040200, // 0019 CATCH R1 1 0 - 0xB0080000, // 001A RAISE 2 R0 R0 - 0x8C040105, // 001B GETMET R1 R0 K5 - 0x580C0008, // 001C LDCONST R3 K8 - 0x7C040400, // 001D CALL R1 2 - 0x80000000, // 001E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_dot -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_dot, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(DOT), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X2E_X27), - }), - be_str_weak(expect_dot), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ + ( &(const binstruction[37]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C040102, // 0004 GETMET R1 R0 K2 + 0x7C040200, // 0005 CALL R1 1 + 0x4C080000, // 0006 LDNIL R2 + 0x1C080202, // 0007 EQ R2 R1 R2 + 0x740A0005, // 0008 JMPT R2 #000F + 0x88080303, // 0009 GETMBR R2 R1 K3 + 0xB80E0800, // 000A GETNGBL R3 K4 + 0x880C0705, // 000B GETMBR R3 R3 K5 + 0x880C0706, // 000C GETMBR R3 R3 K6 + 0x20080403, // 000D NE R2 R2 R3 + 0x780A0005, // 000E JMPF R2 #0015 + 0x8C080107, // 000F GETMET R2 R0 K7 + 0x58100008, // 0010 LDCONST R4 K8 + 0x7C080400, // 0011 CALL R2 2 + 0x8C080109, // 0012 GETMET R2 R0 K9 + 0x7C080200, // 0013 CALL R2 1 + 0x80000400, // 0014 RET 0 + 0x8808030A, // 0015 GETMBR R2 R1 K10 + 0x8C0C0100, // 0016 GETMET R3 R0 K0 + 0x7C0C0200, // 0017 CALL R3 1 + 0x8C0C010B, // 0018 GETMET R3 R0 K11 + 0x7C0C0200, // 0019 CALL R3 1 + 0x8C0C010C, // 001A GETMET R3 R0 K12 + 0x7C0C0200, // 001B CALL R3 1 + 0x8C10010D, // 001C GETMET R4 R0 K13 + 0x5C180400, // 001D MOVE R6 R2 + 0x581C000E, // 001E LDCONST R7 K14 + 0x5C200600, // 001F MOVE R8 R3 + 0x7C100800, // 0020 CALL R4 4 + 0x8C14010F, // 0021 GETMET R5 R0 K15 + 0x5C1C0800, // 0022 MOVE R7 R4 + 0x7C140400, // 0023 CALL R5 2 + 0x80000000, // 0024 RET 0 }) ) ); @@ -8518,12 +10155,12 @@ be_local_closure(class_SimpleDSLTranspiler_expect_dot, /* name */ /******************************************************************** -** Solidified function: is_anonymous_function +** Solidified function: process_import ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_import, /* name */ be_nested_proto( - 7, /* nstack */ - 2, /* argc */ + 9, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -8531,31 +10168,29 @@ be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X28def_X20), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_X29_X28engine_X29), + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(collect_inline_comment), + /* K3 */ be_nested_str_weak(add), + /* K4 */ be_nested_str_weak(import_X20_X25s_X20_X25s), }), - be_str_weak(is_anonymous_function), + be_str_weak(process_import), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x1C0C0703, // 0005 EQ R3 R3 K3 - 0x780E0005, // 0006 JMPF R3 #000D - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x5C140200, // 0008 MOVE R5 R1 - 0x58180004, // 0009 LDCONST R6 K4 - 0x7C0C0600, // 000A CALL R3 3 - 0x280C0703, // 000B GE R3 R3 K3 - 0x740E0000, // 000C JMPT R3 #000E - 0x500C0001, // 000D LDBOOL R3 0 1 - 0x500C0200, // 000E LDBOOL R3 1 0 - 0x80040600, // 000F RET 1 R3 + ( &(const binstruction[14]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x8C0C0103, // 0006 GETMET R3 R0 K3 + 0x60140018, // 0007 GETGBL R5 G24 + 0x58180004, // 0008 LDCONST R6 K4 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200400, // 000A MOVE R8 R2 + 0x7C140600, // 000B CALL R5 3 + 0x7C0C0400, // 000C CALL R3 2 + 0x80000000, // 000D RET 0 }) ) ); @@ -8713,11 +10348,56 @@ be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ /******************************************************************** -** Solidified function: expect_comma +** Solidified function: is_anonymous_function ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ +be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ be_nested_proto( - 5, /* nstack */ + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(_X28def_X20), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(_X29_X28engine_X29), + }), + be_str_weak(is_anonymous_function), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x1C0C0703, // 0005 EQ R3 R3 K3 + 0x780E0005, // 0006 JMPF R3 #000D + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x5C140200, // 0008 MOVE R5 R1 + 0x58180004, // 0009 LDCONST R6 K4 + 0x7C0C0600, // 000A CALL R3 3 + 0x280C0703, // 000B GE R3 R3 K3 + 0x740E0000, // 000C JMPT R3 #000E + 0x500C0001, // 000D LDBOOL R3 0 1 + 0x500C0200, // 000E LDBOOL R3 1 0 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_palette_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_palette_color, /* name */ + be_nested_proto( + 8, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -8725,36 +10405,711 @@ be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ + ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(COMMA), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), + /* K1 */ be_nested_str_weak(error), + /* K2 */ be_nested_str_weak(Expected_X20color_X20value_X20in_X20palette), + /* K3 */ be_nested_str_weak(0xFFFFFFFF), + /* K4 */ be_nested_str_weak(type), + /* K5 */ be_nested_str_weak(animation_dsl), + /* K6 */ be_nested_str_weak(Token), + /* K7 */ be_nested_str_weak(COLOR), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(convert_color), + /* K10 */ be_nested_str_weak(value), + /* K11 */ be_nested_str_weak(IDENTIFIER), + /* K12 */ be_nested_str_weak(is_color_name), + /* K13 */ be_nested_str_weak(get_named_color_value), + /* K14 */ be_nested_str_weak(Unknown_X20color_X20_X27_X25s_X27_X2E_X20Palettes_X20only_X20accept_X20hex_X20colors_X20_X280xRRGGBB_X29_X20or_X20predefined_X20color_X20names_X20_X28like_X20_X27red_X27_X2C_X20_X27blue_X27_X2C_X20_X27green_X27_X29_X2C_X20but_X20not_X20custom_X20colors_X20defined_X20previously_X2E_X20For_X20dynamic_X20palettes_X20with_X20custom_X20colors_X2C_X20use_X20user_X20functions_X20instead_X2E), + /* K15 */ be_nested_str_weak(Expected_X20color_X20value_X20in_X20palette_X2E_X20Use_X20hex_X20colors_X20_X280xRRGGBB_X29_X20or_X20predefined_X20color_X20names_X20_X28like_X20_X27red_X27_X2C_X20_X27blue_X27_X2C_X20_X27green_X27_X29_X2E), }), - be_str_weak(expect_comma), + be_str_weak(process_palette_color), + &be_const_str_solidified, + ( &(const binstruction[50]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x1C080202, // 0003 EQ R2 R1 R2 + 0x780A0003, // 0004 JMPF R2 #0009 + 0x8C080101, // 0005 GETMET R2 R0 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x7C080400, // 0007 CALL R2 2 + 0x80060600, // 0008 RET 1 K3 + 0x88080304, // 0009 GETMBR R2 R1 K4 + 0xB80E0A00, // 000A GETNGBL R3 K5 + 0x880C0706, // 000B GETMBR R3 R3 K6 + 0x880C0707, // 000C GETMBR R3 R3 K7 + 0x1C080403, // 000D EQ R2 R2 R3 + 0x780A0005, // 000E JMPF R2 #0015 + 0x8C080108, // 000F GETMET R2 R0 K8 + 0x7C080200, // 0010 CALL R2 1 + 0x8C080109, // 0011 GETMET R2 R0 K9 + 0x8810030A, // 0012 GETMBR R4 R1 K10 + 0x7C080400, // 0013 CALL R2 2 + 0x80040400, // 0014 RET 1 R2 + 0x88080304, // 0015 GETMBR R2 R1 K4 + 0xB80E0A00, // 0016 GETNGBL R3 K5 + 0x880C0706, // 0017 GETMBR R3 R3 K6 + 0x880C070B, // 0018 GETMBR R3 R3 K11 + 0x1C080403, // 0019 EQ R2 R2 R3 + 0x780A0012, // 001A JMPF R2 #002E + 0x8808030A, // 001B GETMBR R2 R1 K10 + 0x8C0C0108, // 001C GETMET R3 R0 K8 + 0x7C0C0200, // 001D CALL R3 1 + 0xB80E0A00, // 001E GETNGBL R3 K5 + 0x8C0C070C, // 001F GETMET R3 R3 K12 + 0x5C140400, // 0020 MOVE R5 R2 + 0x7C0C0400, // 0021 CALL R3 2 + 0x780E0003, // 0022 JMPF R3 #0027 + 0x8C0C010D, // 0023 GETMET R3 R0 K13 + 0x5C140400, // 0024 MOVE R5 R2 + 0x7C0C0400, // 0025 CALL R3 2 + 0x80040600, // 0026 RET 1 R3 + 0x8C0C0101, // 0027 GETMET R3 R0 K1 + 0x60140018, // 0028 GETGBL R5 G24 + 0x5818000E, // 0029 LDCONST R6 K14 + 0x5C1C0400, // 002A MOVE R7 R2 + 0x7C140400, // 002B CALL R5 2 + 0x7C0C0400, // 002C CALL R3 2 + 0x80060600, // 002D RET 1 K3 + 0x8C080101, // 002E GETMET R2 R0 K1 + 0x5810000F, // 002F LDCONST R4 K15 + 0x7C080400, // 0030 CALL R2 2 + 0x80060600, // 0031 RET 1 K3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_simple_function_from_string +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_create_simple_function_from_string, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(def_X20_X28engine_X29_X20return_X20_X25s_X20end), + }), + be_str_weak(create_simple_function_from_string), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x60080018, // 0000 GETGBL R2 G24 + 0x580C0000, // 0001 LDCONST R3 K0 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_sequence_assignment_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent, /* name */ + be_nested_proto( + 13, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_identifier), + /* K1 */ be_nested_str_weak(expect_dot), + /* K2 */ be_nested_str_weak(expect_assign), + /* K3 */ be_nested_str_weak(process_value), + /* K4 */ be_nested_str_weak(property), + /* K5 */ be_nested_str_weak(collect_inline_comment), + /* K6 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2E_X25s_X20_X3D_X20_X25s_X20end), + /* K7 */ be_nested_str_weak(add), + /* K8 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), + /* K9 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_sequence_assignment_fluent), + &be_const_str_solidified, + ( &(const binstruction[29]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C080101, // 0002 GETMET R2 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x8C080100, // 0004 GETMET R2 R0 K0 + 0x7C080200, // 0005 CALL R2 1 + 0x8C0C0102, // 0006 GETMET R3 R0 K2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x8C0C0103, // 0008 GETMET R3 R0 K3 + 0x58140004, // 0009 LDCONST R5 K4 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C100105, // 000B GETMET R4 R0 K5 + 0x7C100200, // 000C CALL R4 1 + 0x60140018, // 000D GETGBL R5 G24 + 0x58180006, // 000E LDCONST R6 K6 + 0x5C1C0200, // 000F MOVE R7 R1 + 0x5C200400, // 0010 MOVE R8 R2 + 0x5C240600, // 0011 MOVE R9 R3 + 0x7C140800, // 0012 CALL R5 4 + 0x8C180107, // 0013 GETMET R6 R0 K7 + 0x60200018, // 0014 GETGBL R8 G24 + 0x58240008, // 0015 LDCONST R9 K8 + 0x8C280109, // 0016 GETMET R10 R0 K9 + 0x7C280200, // 0017 CALL R10 1 + 0x5C2C0A00, // 0018 MOVE R11 R5 + 0x5C300800, // 0019 MOVE R12 R4 + 0x7C200800, // 001A CALL R8 4 + 0x7C180400, // 001B CALL R6 2 + 0x80000000, // 001C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: peek +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(tokens), + }), + be_str_weak(peek), + &be_const_str_solidified, + ( &(const binstruction[14]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x00040301, // 0001 ADD R1 R1 K1 + 0x6008000C, // 0002 GETGBL R2 G12 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x14040202, // 0005 LT R1 R1 R2 + 0x78060004, // 0006 JMPF R1 #000C + 0x88040100, // 0007 GETMBR R1 R0 K0 + 0x00040301, // 0008 ADD R1 R1 K1 + 0x88080102, // 0009 GETMBR R2 R0 K2 + 0x94040401, // 000A GETIDX R1 R2 R1 + 0x70020000, // 000B JMP #000D + 0x4C040000, // 000C LDNIL R1 + 0x80040200, // 000D RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_computation_closure +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_create_computation_closure, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(transform_operand_for_closure), + /* K2 */ be_nested_str_weak(find), + /* K3 */ be_nested_str_weak(_X20_X20), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(replace), + /* K6 */ be_nested_str_weak(_X20), + /* K7 */ be_nested_str_weak(def_X20_X28self_X29_X20return_X20_X25s_X20_X25s_X20_X25s_X20end), + /* K8 */ be_nested_str_weak(animation_X2Ecreate_closure_value_X28engine_X2C_X20_X25s_X29), + }), + be_str_weak(create_computation_closure), + &be_const_str_solidified, + ( &(const binstruction[44]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140101, // 0001 GETMET R5 R0 K1 + 0x5C1C0200, // 0002 MOVE R7 R1 + 0x7C140400, // 0003 CALL R5 2 + 0x8C180101, // 0004 GETMET R6 R0 K1 + 0x5C200600, // 0005 MOVE R8 R3 + 0x7C180400, // 0006 CALL R6 2 + 0x8C1C0902, // 0007 GETMET R7 R4 K2 + 0x5C240A00, // 0008 MOVE R9 R5 + 0x58280003, // 0009 LDCONST R10 K3 + 0x7C1C0600, // 000A CALL R7 3 + 0x281C0F04, // 000B GE R7 R7 K4 + 0x781E0006, // 000C JMPF R7 #0014 + 0x8C1C0905, // 000D GETMET R7 R4 K5 + 0x5C240A00, // 000E MOVE R9 R5 + 0x58280003, // 000F LDCONST R10 K3 + 0x582C0006, // 0010 LDCONST R11 K6 + 0x7C1C0800, // 0011 CALL R7 4 + 0x5C140E00, // 0012 MOVE R5 R7 + 0x7001FFF2, // 0013 JMP #0007 + 0x8C1C0902, // 0014 GETMET R7 R4 K2 + 0x5C240C00, // 0015 MOVE R9 R6 + 0x58280003, // 0016 LDCONST R10 K3 + 0x7C1C0600, // 0017 CALL R7 3 + 0x281C0F04, // 0018 GE R7 R7 K4 + 0x781E0006, // 0019 JMPF R7 #0021 + 0x8C1C0905, // 001A GETMET R7 R4 K5 + 0x5C240C00, // 001B MOVE R9 R6 + 0x58280003, // 001C LDCONST R10 K3 + 0x582C0006, // 001D LDCONST R11 K6 + 0x7C1C0800, // 001E CALL R7 4 + 0x5C180E00, // 001F MOVE R6 R7 + 0x7001FFF2, // 0020 JMP #0014 + 0x601C0018, // 0021 GETGBL R7 G24 + 0x58200007, // 0022 LDCONST R8 K7 + 0x5C240A00, // 0023 MOVE R9 R5 + 0x5C280400, // 0024 MOVE R10 R2 + 0x5C2C0C00, // 0025 MOVE R11 R6 + 0x7C1C0800, // 0026 CALL R7 4 + 0x60200018, // 0027 GETGBL R8 G24 + 0x58240008, // 0028 LDCONST R9 K8 + 0x5C280E00, // 0029 MOVE R10 R7 + 0x7C200400, // 002A CALL R8 2 + 0x80041000, // 002B RET 1 R8 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_function_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ + be_nested_proto( + 10, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(type), + /* K3 */ be_nested_str_weak(animation_dsl), + /* K4 */ be_nested_str_weak(Token), + /* K5 */ be_nested_str_weak(IDENTIFIER), + /* K6 */ be_nested_str_weak(KEYWORD), + /* K7 */ be_nested_str_weak(value), + /* K8 */ be_nested_str_weak(next), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20function_X20name), + /* K11 */ be_nested_str_weak(nil), + /* K12 */ be_nested_str_weak(is_math_method), + /* K13 */ be_nested_str_weak(process_function_arguments), + /* K14 */ be_nested_str_weak(_X25s_X28_X25s_X29), + /* K15 */ be_nested_str_weak(log), + /* K16 */ be_nested_str_weak(process_log_call), + /* K17 */ be_nested_str_weak(expression), + /* K18 */ be_nested_str_weak(template_definitions), + /* K19 */ be_nested_str_weak(contains), + /* K20 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K21 */ be_nested_str_weak(engine), + /* K22 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K23 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), + /* K24 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + }), + be_str_weak(process_function_call), + &be_const_str_solidified, + ( &(const binstruction[88]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x7C080200, // 0001 CALL R2 1 + 0x580C0001, // 0002 LDCONST R3 K1 + 0x4C100000, // 0003 LDNIL R4 + 0x20100404, // 0004 NE R4 R2 R4 + 0x7812000F, // 0005 JMPF R4 #0016 + 0x88100502, // 0006 GETMBR R4 R2 K2 + 0xB8160600, // 0007 GETNGBL R5 K3 + 0x88140B04, // 0008 GETMBR R5 R5 K4 + 0x88140B05, // 0009 GETMBR R5 R5 K5 + 0x1C100805, // 000A EQ R4 R4 R5 + 0x74120005, // 000B JMPT R4 #0012 + 0x88100502, // 000C GETMBR R4 R2 K2 + 0xB8160600, // 000D GETNGBL R5 K3 + 0x88140B04, // 000E GETMBR R5 R5 K4 + 0x88140B06, // 000F GETMBR R5 R5 K6 + 0x1C100805, // 0010 EQ R4 R4 R5 + 0x78120003, // 0011 JMPF R4 #0016 + 0x880C0507, // 0012 GETMBR R3 R2 K7 + 0x8C100108, // 0013 GETMET R4 R0 K8 + 0x7C100200, // 0014 CALL R4 1 + 0x70020003, // 0015 JMP #001A + 0x8C100109, // 0016 GETMET R4 R0 K9 + 0x5818000A, // 0017 LDCONST R6 K10 + 0x7C100400, // 0018 CALL R4 2 + 0x80061600, // 0019 RET 1 K11 + 0x8C10010C, // 001A GETMET R4 R0 K12 + 0x5C180600, // 001B MOVE R6 R3 + 0x7C100400, // 001C CALL R4 2 + 0x78120008, // 001D JMPF R4 #0027 + 0x8C10010D, // 001E GETMET R4 R0 K13 + 0x50180000, // 001F LDBOOL R6 0 0 + 0x7C100400, // 0020 CALL R4 2 + 0x60140018, // 0021 GETGBL R5 G24 + 0x5818000E, // 0022 LDCONST R6 K14 + 0x5C1C0600, // 0023 MOVE R7 R3 + 0x5C200800, // 0024 MOVE R8 R4 + 0x7C140600, // 0025 CALL R5 3 + 0x80040A00, // 0026 RET 1 R5 + 0x1C10070F, // 0027 EQ R4 R3 K15 + 0x78120008, // 0028 JMPF R4 #0032 + 0x8C10010D, // 0029 GETMET R4 R0 K13 + 0x50180000, // 002A LDBOOL R6 0 0 + 0x7C100400, // 002B CALL R4 2 + 0x8C140110, // 002C GETMET R5 R0 K16 + 0x5C1C0800, // 002D MOVE R7 R4 + 0x58200011, // 002E LDCONST R8 K17 + 0x58240001, // 002F LDCONST R9 K1 + 0x7C140800, // 0030 CALL R5 4 + 0x80040A00, // 0031 RET 1 R5 + 0x8C10010D, // 0032 GETMET R4 R0 K13 + 0x50180000, // 0033 LDBOOL R6 0 0 + 0x7C100400, // 0034 CALL R4 2 + 0x88140112, // 0035 GETMBR R5 R0 K18 + 0x8C140B13, // 0036 GETMET R5 R5 K19 + 0x5C1C0600, // 0037 MOVE R7 R3 + 0x7C140400, // 0038 CALL R5 2 + 0x7816000E, // 0039 JMPF R5 #0049 + 0x20140901, // 003A NE R5 R4 K1 + 0x78160004, // 003B JMPF R5 #0041 + 0x60140018, // 003C GETGBL R5 G24 + 0x58180014, // 003D LDCONST R6 K20 + 0x5C1C0800, // 003E MOVE R7 R4 + 0x7C140400, // 003F CALL R5 2 + 0x70020000, // 0040 JMP #0042 + 0x58140015, // 0041 LDCONST R5 K21 + 0x60180018, // 0042 GETGBL R6 G24 + 0x581C0016, // 0043 LDCONST R7 K22 + 0x5C200600, // 0044 MOVE R8 R3 + 0x5C240A00, // 0045 MOVE R9 R5 + 0x7C180600, // 0046 CALL R6 3 + 0x80040C00, // 0047 RET 1 R6 + 0x7002000D, // 0048 JMP #0057 + 0x20140901, // 0049 NE R5 R4 K1 + 0x78160006, // 004A JMPF R5 #0052 + 0x60140018, // 004B GETGBL R5 G24 + 0x58180017, // 004C LDCONST R6 K23 + 0x5C1C0600, // 004D MOVE R7 R3 + 0x5C200800, // 004E MOVE R8 R4 + 0x7C140600, // 004F CALL R5 3 + 0x80040A00, // 0050 RET 1 R5 + 0x70020004, // 0051 JMP #0057 + 0x60140018, // 0052 GETGBL R5 G24 + 0x58180018, // 0053 LDCONST R6 K24 + 0x5C1C0600, // 0054 MOVE R7 R3 + 0x7C140400, // 0055 CALL R5 2 + 0x80040A00, // 0056 RET 1 R5 + 0x80000000, // 0057 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_log_call +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_log_call, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(fluent), + /* K1 */ be_nested_str_weak(def_X20_X28engine_X29_X20log_X28f_X22_X25s_X22_X2C_X203_X29_X20end), + /* K2 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), + /* K3 */ be_nested_str_weak(get_indent), + /* K4 */ be_nested_str_weak(expression), + /* K5 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29), + /* K6 */ be_nested_str_weak(log_X28f_X22_X25s_X22_X2C_X203_X29_X25s), + }), + be_str_weak(process_log_call), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* code */ + 0x1C100500, // 0000 EQ R4 R2 K0 + 0x7812000C, // 0001 JMPF R4 #000F + 0x60100018, // 0002 GETGBL R4 G24 + 0x58140001, // 0003 LDCONST R5 K1 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x60140018, // 0006 GETGBL R5 G24 + 0x58180002, // 0007 LDCONST R6 K2 + 0x8C1C0103, // 0008 GETMET R7 R0 K3 + 0x7C1C0200, // 0009 CALL R7 1 + 0x5C200800, // 000A MOVE R8 R4 + 0x5C240600, // 000B MOVE R9 R3 + 0x7C140800, // 000C CALL R5 4 + 0x80040A00, // 000D RET 1 R5 + 0x7002000D, // 000E JMP #001D + 0x1C100504, // 000F EQ R4 R2 K4 + 0x78120005, // 0010 JMPF R4 #0017 + 0x60100018, // 0011 GETGBL R4 G24 + 0x58140005, // 0012 LDCONST R5 K5 + 0x5C180200, // 0013 MOVE R6 R1 + 0x7C100400, // 0014 CALL R4 2 + 0x80040800, // 0015 RET 1 R4 + 0x70020005, // 0016 JMP #001D + 0x60100018, // 0017 GETGBL R4 G24 + 0x58140006, // 0018 LDCONST R5 K6 + 0x5C180200, // 0019 MOVE R6 R1 + 0x5C1C0600, // 001A MOVE R7 R3 + 0x7C100600, // 001B CALL R4 3 + 0x80040800, // 001C RET 1 R4 + 0x80000000, // 001D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_single_parameter +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(introspect), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(_has_param), + /* K3 */ be_nested_str_weak(current), + /* K4 */ be_nested_str_weak(line), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Animation_X20_X27_X25s_X27_X20does_X20not_X20have_X20parameter_X20_X27_X25s_X27_X2E_X20Check_X20the_X20animation_X20documentation_X20for_X20valid_X20parameters_X2E), + }), + be_str_weak(_validate_single_parameter), + &be_const_str_solidified, + ( &(const binstruction[38]) { /* code */ + 0xA802001F, // 0000 EXBLK 0 #0021 + 0xA4120000, // 0001 IMPORT R4 K0 + 0x4C140000, // 0002 LDNIL R5 + 0x20140605, // 0003 NE R5 R3 R5 + 0x78160019, // 0004 JMPF R5 #001F + 0x8C140901, // 0005 GETMET R5 R4 K1 + 0x5C1C0600, // 0006 MOVE R7 R3 + 0x58200002, // 0007 LDCONST R8 K2 + 0x7C140600, // 0008 CALL R5 3 + 0x78160014, // 0009 JMPF R5 #001F + 0x8C140702, // 000A GETMET R5 R3 K2 + 0x5C1C0400, // 000B MOVE R7 R2 + 0x7C140400, // 000C CALL R5 2 + 0x74160010, // 000D JMPT R5 #001F + 0x8C140103, // 000E GETMET R5 R0 K3 + 0x7C140200, // 000F CALL R5 1 + 0x4C180000, // 0010 LDNIL R6 + 0x20140A06, // 0011 NE R5 R5 R6 + 0x78160003, // 0012 JMPF R5 #0017 + 0x8C140103, // 0013 GETMET R5 R0 K3 + 0x7C140200, // 0014 CALL R5 1 + 0x88140B04, // 0015 GETMBR R5 R5 K4 + 0x70020000, // 0016 JMP #0018 + 0x58140005, // 0017 LDCONST R5 K5 + 0x8C180106, // 0018 GETMET R6 R0 K6 + 0x60200018, // 0019 GETGBL R8 G24 + 0x58240007, // 001A LDCONST R9 K7 + 0x5C280200, // 001B MOVE R10 R1 + 0x5C2C0400, // 001C MOVE R11 R2 + 0x7C200600, // 001D CALL R8 3 + 0x7C180400, // 001E CALL R6 2 + 0xA8040001, // 001F EXBLK 1 1 + 0x70020003, // 0020 JMP #0025 + 0xAC100002, // 0021 CATCH R4 0 2 + 0x70020000, // 0022 JMP #0024 + 0x70020000, // 0023 JMP #0025 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x80000000, // 0025 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: transform_operand_for_closure +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_transform_operand_for_closure, /* name */ + be_nested_proto( + 11, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(animation_X2Ecreate_closure_value), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(return_X20_X28), + /* K5 */ be_nested_str_weak(_X20_X20), + /* K6 */ be_nested_str_weak(replace), + /* K7 */ be_nested_str_weak(_X20), + /* K8 */ be_nested_str_weak(_), + /* K9 */ be_nested_str_weak(_X28), + /* K10 */ be_nested_str_weak(animation_X2E), + /* K11 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X29), + }), + be_str_weak(transform_operand_for_closure), + &be_const_str_solidified, + ( &(const binstruction[69]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x280C0703, // 0005 GE R3 R3 K3 + 0x780E001A, // 0006 JMPF R3 #0022 + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x5C140200, // 0008 MOVE R5 R1 + 0x58180004, // 0009 LDCONST R6 K4 + 0x7C0C0600, // 000A CALL R3 3 + 0x54120007, // 000B LDINT R4 8 + 0x000C0604, // 000C ADD R3 R3 R4 + 0x6010000C, // 000D GETGBL R4 G12 + 0x5C140200, // 000E MOVE R5 R1 + 0x7C100200, // 000F CALL R4 1 + 0x54160004, // 0010 LDINT R5 5 + 0x04100805, // 0011 SUB R4 R4 R5 + 0x40140604, // 0012 CONNECT R5 R3 R4 + 0x94140205, // 0013 GETIDX R5 R1 R5 + 0x8C180501, // 0014 GETMET R6 R2 K1 + 0x5C200A00, // 0015 MOVE R8 R5 + 0x58240005, // 0016 LDCONST R9 K5 + 0x7C180600, // 0017 CALL R6 3 + 0x28180D03, // 0018 GE R6 R6 K3 + 0x781A0006, // 0019 JMPF R6 #0021 + 0x8C180506, // 001A GETMET R6 R2 K6 + 0x5C200A00, // 001B MOVE R8 R5 + 0x58240005, // 001C LDCONST R9 K5 + 0x58280007, // 001D LDCONST R10 K7 + 0x7C180800, // 001E CALL R6 4 + 0x5C140C00, // 001F MOVE R5 R6 + 0x7001FFF2, // 0020 JMP #0014 + 0x80040A00, // 0021 RET 1 R5 + 0x8C0C0501, // 0022 GETMET R3 R2 K1 + 0x5C140200, // 0023 MOVE R5 R1 + 0x58180008, // 0024 LDCONST R6 K8 + 0x7C0C0600, // 0025 CALL R3 3 + 0x280C0703, // 0026 GE R3 R3 K3 + 0x8C100501, // 0027 GETMET R4 R2 K1 + 0x5C180200, // 0028 MOVE R6 R1 + 0x581C0007, // 0029 LDCONST R7 K7 + 0x7C100600, // 002A CALL R4 3 + 0x28100903, // 002B GE R4 R4 K3 + 0x8C140501, // 002C GETMET R5 R2 K1 + 0x5C1C0200, // 002D MOVE R7 R1 + 0x58200009, // 002E LDCONST R8 K9 + 0x7C140600, // 002F CALL R5 3 + 0x28140B03, // 0030 GE R5 R5 K3 + 0x8C180501, // 0031 GETMET R6 R2 K1 + 0x5C200200, // 0032 MOVE R8 R1 + 0x5824000A, // 0033 LDCONST R9 K10 + 0x7C180600, // 0034 CALL R6 3 + 0x28180D03, // 0035 GE R6 R6 K3 + 0x780E000B, // 0036 JMPF R3 #0043 + 0x5C1C0800, // 0037 MOVE R7 R4 + 0x741E0009, // 0038 JMPT R7 #0043 + 0x5C1C0A00, // 0039 MOVE R7 R5 + 0x741E0007, // 003A JMPT R7 #0043 + 0x5C1C0C00, // 003B MOVE R7 R6 + 0x741E0005, // 003C JMPT R7 #0043 + 0x601C0018, // 003D GETGBL R7 G24 + 0x5820000B, // 003E LDCONST R8 K11 + 0x5C240200, // 003F MOVE R9 R1 + 0x7C1C0400, // 0040 CALL R7 2 + 0x80040E00, // 0041 RET 1 R7 + 0x70020000, // 0042 JMP #0044 + 0x80040200, // 0043 RET 1 R1 + 0x80000000, // 0044 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_run +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_run, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(expect_identifier), + /* K2 */ be_nested_str_weak(_validate_object_reference), + /* K3 */ be_nested_str_weak(run), + /* K4 */ be_nested_str_weak(collect_inline_comment), + /* K5 */ be_nested_str_weak(run_statements), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(comment), + }), + be_str_weak(process_run), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 + 0x8C040101, // 0002 GETMET R1 R0 K1 + 0x7C040200, // 0003 CALL R1 1 + 0x8C080102, // 0004 GETMET R2 R0 K2 + 0x5C100200, // 0005 MOVE R4 R1 + 0x58140003, // 0006 LDCONST R5 K3 + 0x7C080600, // 0007 CALL R2 3 + 0x8C080104, // 0008 GETMET R2 R0 K4 + 0x7C080200, // 0009 CALL R2 1 + 0x880C0105, // 000A GETMBR R3 R0 K5 + 0x8C0C0706, // 000B GETMET R3 R3 K6 + 0x60140013, // 000C GETGBL R5 G19 + 0x7C140000, // 000D CALL R5 0 + 0x98160E01, // 000E SETIDX R5 K7 R1 + 0x98161002, // 000F SETIDX R5 K8 R2 + 0x7C0C0400, // 0010 CALL R3 2 0x80000000, // 0011 RET 0 }) ) @@ -8763,11 +11118,11 @@ be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ /******************************************************************** -** Solidified function: get_error_report +** Solidified function: has_errors ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ +be_local_closure(class_SimpleDSLTranspiler_has_errors, /* name */ be_nested_proto( - 5, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -8775,37 +11130,404 @@ be_local_closure(class_SimpleDSLTranspiler_get_error_report, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(has_errors), - /* K1 */ be_nested_str_weak(No_X20compilation_X20errors), - /* K2 */ be_nested_str_weak(Compilation_X20errors_X3A_X0A), - /* K3 */ be_nested_str_weak(errors), - /* K4 */ be_nested_str_weak(_X20_X20), - /* K5 */ be_nested_str_weak(_X0A), - /* K6 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(errors), + /* K1 */ be_const_int(0), }), - be_str_weak(get_error_report), + be_str_weak(has_errors), &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ + ( &(const binstruction[ 5]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x24040301, // 0003 GT R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _create_instance_for_validation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__create_instance_for_validation, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(MockEngine), + /* K2 */ be_nested_str_weak(introspect), + /* K3 */ be_nested_str_weak(contains), + /* K4 */ be_nested_str_weak(animation), + /* K5 */ be_nested_str_weak(class), + /* K6 */ be_nested_str_weak(function), + }), + be_str_weak(_create_instance_for_validation), + &be_const_str_solidified, + ( &(const binstruction[39]) { /* code */ + 0xA802001E, // 0000 EXBLK 0 #0020 + 0xB80A0000, // 0001 GETNGBL R2 K0 + 0x8C080501, // 0002 GETMET R2 R2 K1 + 0x7C080200, // 0003 CALL R2 1 + 0xA40E0400, // 0004 IMPORT R3 K2 + 0x8C100703, // 0005 GETMET R4 R3 K3 + 0xB81A0800, // 0006 GETNGBL R6 K4 + 0x5C1C0200, // 0007 MOVE R7 R1 + 0x7C100600, // 0008 CALL R4 3 + 0x78120010, // 0009 JMPF R4 #001B + 0xB8120800, // 000A GETNGBL R4 K4 + 0x88100801, // 000B GETMBR R4 R4 R1 + 0x60140004, // 000C GETGBL R5 G4 + 0x5C180800, // 000D MOVE R6 R4 + 0x7C140200, // 000E CALL R5 1 + 0x1C140B05, // 000F EQ R5 R5 K5 + 0x74160004, // 0010 JMPT R5 #0016 + 0x60140004, // 0011 GETGBL R5 G4 + 0x5C180800, // 0012 MOVE R6 R4 + 0x7C140200, // 0013 CALL R5 1 + 0x1C140B06, // 0014 EQ R5 R5 K6 + 0x78160004, // 0015 JMPF R5 #001B + 0x5C140800, // 0016 MOVE R5 R4 + 0x5C180400, // 0017 MOVE R6 R2 + 0x7C140200, // 0018 CALL R5 1 + 0xA8040001, // 0019 EXBLK 1 1 + 0x80040A00, // 001A RET 1 R5 + 0x4C100000, // 001B LDNIL R4 + 0xA8040001, // 001C EXBLK 1 1 + 0x80040800, // 001D RET 1 R4 + 0xA8040001, // 001E EXBLK 1 1 + 0x70020005, // 001F JMP #0026 + 0xAC080002, // 0020 CATCH R2 0 2 + 0x70020002, // 0021 JMP #0025 + 0x4C100000, // 0022 LDNIL R4 + 0x80040800, // 0023 RET 1 R4 + 0x70020000, // 0024 JMP #0026 + 0xB0080000, // 0025 RAISE 2 R0 R0 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_default_strip_initialization +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(strip_initialized), + /* K1 */ be_nested_str_weak(add), + /* K2 */ be_nested_str_weak(_X23_X20Auto_X2Dgenerated_X20strip_X20initialization_X20_X28using_X20Tasmota_X20configuration_X29), + /* K3 */ be_nested_str_weak(var_X20engine_X20_X3D_X20animation_X2Einit_strip_X28_X29), + /* K4 */ be_nested_str_weak(), + }), + be_str_weak(generate_default_strip_initialization), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060000, // 0001 JMPF R1 #0003 + 0x80000200, // 0002 RET 0 + 0x8C040101, // 0003 GETMET R1 R0 K1 + 0x580C0002, // 0004 LDCONST R3 K2 + 0x7C040400, // 0005 CALL R1 2 + 0x8C040101, // 0006 GETMET R1 R0 K1 + 0x580C0003, // 0007 LDCONST R3 K3 + 0x7C040400, // 0008 CALL R1 2 + 0x8C040101, // 0009 GETMET R1 R0 K1 + 0x580C0004, // 000A LDCONST R3 K4 + 0x7C040400, // 000B CALL R1 2 + 0x50040200, // 000C LDBOOL R1 1 0 + 0x90020001, // 000D SETMBR R0 K0 R1 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: generate_template_function +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_generate_template_function, /* name */ + be_nested_proto( + 17, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(engine), + /* K2 */ be_nested_str_weak(_X2C_X20_X25s_), + /* K3 */ be_nested_str_weak(stop_iteration), + /* K4 */ be_nested_str_weak(add), + /* K5 */ be_nested_str_weak(_X23_X20Template_X20function_X3A_X20_X25s), + /* K6 */ be_nested_str_weak(def_X20_X25s_template_X28_X25s_X29), + /* K7 */ be_nested_str_weak(animation_dsl), + /* K8 */ be_nested_str_weak(SimpleDSLTranspiler), + /* K9 */ be_nested_str_weak(symbol_table), + /* K10 */ be_nested_str_weak(strip_initialized), + /* K11 */ be_nested_str_weak(parameter), + /* K12 */ be_nested_str_weak(transpile_template_body), + /* K13 */ be_nested_str_weak(split), + /* K14 */ be_nested_str_weak(_X0A), + /* K15 */ be_const_int(0), + /* K16 */ be_nested_str_weak(_X20_X20_X25s), + /* K17 */ be_nested_str_weak(errors), + /* K18 */ be_nested_str_weak(error), + /* K19 */ be_nested_str_weak(Template_X20_X27_X25s_X27_X20body_X20error_X3A_X20_X25s), + /* K20 */ be_nested_str_weak(end), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(animation_X2Eregister_user_function_X28_X27_X25s_X27_X2C_X20_X25s_template_X29), + }), + be_str_weak(generate_template_function), + &be_const_str_solidified, + ( &(const binstruction[116]) { /* code */ + 0xA4160000, // 0000 IMPORT R5 K0 + 0x58180001, // 0001 LDCONST R6 K1 + 0x601C0010, // 0002 GETGBL R7 G16 + 0x5C200400, // 0003 MOVE R8 R2 + 0x7C1C0200, // 0004 CALL R7 1 + 0xA8020007, // 0005 EXBLK 0 #000E + 0x5C200E00, // 0006 MOVE R8 R7 + 0x7C200000, // 0007 CALL R8 0 + 0x60240018, // 0008 GETGBL R9 G24 + 0x58280002, // 0009 LDCONST R10 K2 + 0x5C2C1000, // 000A MOVE R11 R8 + 0x7C240400, // 000B CALL R9 2 + 0x00180C09, // 000C ADD R6 R6 R9 + 0x7001FFF7, // 000D JMP #0006 + 0x581C0003, // 000E LDCONST R7 K3 + 0xAC1C0200, // 000F CATCH R7 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x8C1C0104, // 0011 GETMET R7 R0 K4 + 0x60240018, // 0012 GETGBL R9 G24 + 0x58280005, // 0013 LDCONST R10 K5 + 0x5C2C0200, // 0014 MOVE R11 R1 + 0x7C240400, // 0015 CALL R9 2 + 0x7C1C0400, // 0016 CALL R7 2 + 0x8C1C0104, // 0017 GETMET R7 R0 K4 + 0x60240018, // 0018 GETGBL R9 G24 + 0x58280006, // 0019 LDCONST R10 K6 + 0x5C2C0200, // 001A MOVE R11 R1 + 0x5C300C00, // 001B MOVE R12 R6 + 0x7C240600, // 001C CALL R9 3 + 0x7C1C0400, // 001D CALL R7 2 + 0xB81E0E00, // 001E GETNGBL R7 K7 + 0x8C1C0F08, // 001F GETMET R7 R7 K8 + 0x5C240800, // 0020 MOVE R9 R4 + 0x7C1C0400, // 0021 CALL R7 2 + 0x60200013, // 0022 GETGBL R8 G19 + 0x7C200000, // 0023 CALL R8 0 + 0x901E1208, // 0024 SETMBR R7 K9 R8 + 0x50200200, // 0025 LDBOOL R8 1 0 + 0x901E1408, // 0026 SETMBR R7 K10 R8 + 0x60200010, // 0027 GETGBL R8 G16 + 0x5C240400, // 0028 MOVE R9 R2 + 0x7C200200, // 0029 CALL R8 1 + 0xA8020004, // 002A EXBLK 0 #0030 + 0x5C241000, // 002B MOVE R9 R8 + 0x7C240000, // 002C CALL R9 0 + 0x88280F09, // 002D GETMBR R10 R7 K9 + 0x9828130B, // 002E SETIDX R10 R9 K11 + 0x7001FFFA, // 002F JMP #002B + 0x58200003, // 0030 LDCONST R8 K3 + 0xAC200200, // 0031 CATCH R8 1 0 + 0xB0080000, // 0032 RAISE 2 R0 R0 + 0x8C200F0C, // 0033 GETMET R8 R7 K12 + 0x7C200200, // 0034 CALL R8 1 + 0x4C240000, // 0035 LDNIL R9 + 0x20241009, // 0036 NE R9 R8 R9 + 0x78260019, // 0037 JMPF R9 #0052 + 0x8C240B0D, // 0038 GETMET R9 R5 K13 + 0x5C2C1000, // 0039 MOVE R11 R8 + 0x5830000E, // 003A LDCONST R12 K14 + 0x7C240600, // 003B CALL R9 3 + 0x60280010, // 003C GETGBL R10 G16 + 0x5C2C1200, // 003D MOVE R11 R9 + 0x7C280200, // 003E CALL R10 1 + 0xA802000D, // 003F EXBLK 0 #004E + 0x5C2C1400, // 0040 MOVE R11 R10 + 0x7C2C0000, // 0041 CALL R11 0 + 0x6030000C, // 0042 GETGBL R12 G12 + 0x5C341600, // 0043 MOVE R13 R11 + 0x7C300200, // 0044 CALL R12 1 + 0x2430190F, // 0045 GT R12 R12 K15 + 0x78320005, // 0046 JMPF R12 #004D + 0x8C300104, // 0047 GETMET R12 R0 K4 + 0x60380018, // 0048 GETGBL R14 G24 + 0x583C0010, // 0049 LDCONST R15 K16 + 0x5C401600, // 004A MOVE R16 R11 + 0x7C380400, // 004B CALL R14 2 + 0x7C300400, // 004C CALL R12 2 + 0x7001FFF1, // 004D JMP #0040 + 0x58280003, // 004E LDCONST R10 K3 + 0xAC280200, // 004F CATCH R10 1 0 + 0xB0080000, // 0050 RAISE 2 R0 R0 + 0x70020010, // 0051 JMP #0063 + 0x60240010, // 0052 GETGBL R9 G16 + 0x88280F11, // 0053 GETMBR R10 R7 K17 + 0x7C240200, // 0054 CALL R9 1 + 0xA8020009, // 0055 EXBLK 0 #0060 + 0x5C281200, // 0056 MOVE R10 R9 + 0x7C280000, // 0057 CALL R10 0 + 0x8C2C0112, // 0058 GETMET R11 R0 K18 + 0x60340018, // 0059 GETGBL R13 G24 + 0x58380013, // 005A LDCONST R14 K19 + 0x5C3C0200, // 005B MOVE R15 R1 + 0x5C401400, // 005C MOVE R16 R10 + 0x7C340600, // 005D CALL R13 3 + 0x7C2C0400, // 005E CALL R11 2 + 0x7001FFF5, // 005F JMP #0056 + 0x58240003, // 0060 LDCONST R9 K3 + 0xAC240200, // 0061 CATCH R9 1 0 + 0xB0080000, // 0062 RAISE 2 R0 R0 + 0x8C240104, // 0063 GETMET R9 R0 K4 + 0x582C0014, // 0064 LDCONST R11 K20 + 0x7C240400, // 0065 CALL R9 2 + 0x8C240104, // 0066 GETMET R9 R0 K4 + 0x582C0015, // 0067 LDCONST R11 K21 + 0x7C240400, // 0068 CALL R9 2 + 0x8C240104, // 0069 GETMET R9 R0 K4 + 0x602C0018, // 006A GETGBL R11 G24 + 0x58300016, // 006B LDCONST R12 K22 + 0x5C340200, // 006C MOVE R13 R1 + 0x5C380200, // 006D MOVE R14 R1 + 0x7C2C0600, // 006E CALL R11 3 + 0x7C240400, // 006F CALL R9 2 + 0x8C240104, // 0070 GETMET R9 R0 K4 + 0x582C0015, // 0071 LDCONST R11 K21 + 0x7C240400, // 0072 CALL R9 2 + 0x80000000, // 0073 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_array_literal +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_str_weak(expect_left_bracket), + /* K1 */ be_nested_str_weak(at_end), + /* K2 */ be_nested_str_weak(check_right_bracket), + /* K3 */ be_nested_str_weak(process_value), + /* K4 */ be_nested_str_weak(array_element), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_nested_str_weak(current), + /* K7 */ be_nested_str_weak(type), + /* K8 */ be_nested_str_weak(animation_dsl), + /* K9 */ be_nested_str_weak(Token), + /* K10 */ be_nested_str_weak(COMMA), + /* K11 */ be_nested_str_weak(next), + /* K12 */ be_nested_str_weak(error), + /* K13 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X5D_X27_X20in_X20array_X20literal), + /* K14 */ be_nested_str_weak(expect_right_bracket), + /* K15 */ be_nested_str_weak(_X5B), + /* K16 */ be_const_int(0), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_str_weak(_X2C_X20), + /* K19 */ be_nested_str_weak(stop_iteration), + /* K20 */ be_nested_str_weak(_X5D), + }), + be_str_weak(process_array_literal), + &be_const_str_solidified, + ( &(const binstruction[64]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x74060000, // 0002 JMPT R1 #0004 - 0x80060200, // 0003 RET 1 K1 - 0x58040002, // 0004 LDCONST R1 K2 - 0x60080010, // 0005 GETGBL R2 G16 - 0x880C0103, // 0006 GETMBR R3 R0 K3 - 0x7C080200, // 0007 CALL R2 1 - 0xA8020005, // 0008 EXBLK 0 #000F - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x00120803, // 000B ADD R4 K4 R3 - 0x00100905, // 000C ADD R4 R4 K5 - 0x00040204, // 000D ADD R1 R1 R4 - 0x7001FFF9, // 000E JMP #0009 - 0x58080006, // 000F LDCONST R2 K6 - 0xAC080200, // 0010 CATCH R2 1 0 - 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x80040200, // 0012 RET 1 R1 + 0x60040012, // 0002 GETGBL R1 G18 + 0x7C040000, // 0003 CALL R1 0 + 0x8C080101, // 0004 GETMET R2 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x740A0020, // 0006 JMPT R2 #0028 + 0x8C080102, // 0007 GETMET R2 R0 K2 + 0x7C080200, // 0008 CALL R2 1 + 0x740A001D, // 0009 JMPT R2 #0028 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x58100004, // 000B LDCONST R4 K4 + 0x7C080400, // 000C CALL R2 2 + 0x8C0C0305, // 000D GETMET R3 R1 K5 + 0x5C140400, // 000E MOVE R5 R2 + 0x7C0C0400, // 000F CALL R3 2 + 0x8C0C0106, // 0010 GETMET R3 R0 K6 + 0x7C0C0200, // 0011 CALL R3 1 + 0x4C100000, // 0012 LDNIL R4 + 0x200C0604, // 0013 NE R3 R3 R4 + 0x780E000A, // 0014 JMPF R3 #0020 + 0x8C0C0106, // 0015 GETMET R3 R0 K6 + 0x7C0C0200, // 0016 CALL R3 1 + 0x880C0707, // 0017 GETMBR R3 R3 K7 + 0xB8121000, // 0018 GETNGBL R4 K8 + 0x88100909, // 0019 GETMBR R4 R4 K9 + 0x8810090A, // 001A GETMBR R4 R4 K10 + 0x1C0C0604, // 001B EQ R3 R3 R4 + 0x780E0002, // 001C JMPF R3 #0020 + 0x8C0C010B, // 001D GETMET R3 R0 K11 + 0x7C0C0200, // 001E CALL R3 1 + 0x70020006, // 001F JMP #0027 + 0x8C0C0102, // 0020 GETMET R3 R0 K2 + 0x7C0C0200, // 0021 CALL R3 1 + 0x740E0003, // 0022 JMPT R3 #0027 + 0x8C0C010C, // 0023 GETMET R3 R0 K12 + 0x5814000D, // 0024 LDCONST R5 K13 + 0x7C0C0400, // 0025 CALL R3 2 + 0x70020000, // 0026 JMP #0028 + 0x7001FFDB, // 0027 JMP #0004 + 0x8C08010E, // 0028 GETMET R2 R0 K14 + 0x7C080200, // 0029 CALL R2 1 + 0x5808000F, // 002A LDCONST R2 K15 + 0x600C0010, // 002B GETGBL R3 G16 + 0x6010000C, // 002C GETGBL R4 G12 + 0x5C140200, // 002D MOVE R5 R1 + 0x7C100200, // 002E CALL R4 1 + 0x04100911, // 002F SUB R4 R4 K17 + 0x40122004, // 0030 CONNECT R4 K16 R4 + 0x7C0C0200, // 0031 CALL R3 1 + 0xA8020007, // 0032 EXBLK 0 #003B + 0x5C100600, // 0033 MOVE R4 R3 + 0x7C100000, // 0034 CALL R4 0 + 0x24140910, // 0035 GT R5 R4 K16 + 0x78160000, // 0036 JMPF R5 #0038 + 0x00080512, // 0037 ADD R2 R2 K18 + 0x94140204, // 0038 GETIDX R5 R1 R4 + 0x00080405, // 0039 ADD R2 R2 R5 + 0x7001FFF7, // 003A JMP #0033 + 0x580C0013, // 003B LDCONST R3 K19 + 0xAC0C0200, // 003C CATCH R3 1 0 + 0xB0080000, // 003D RAISE 2 R0 R0 + 0x00080514, // 003E ADD R2 R2 K20 + 0x80040400, // 003F RET 1 R2 }) ) ); @@ -8908,712 +11630,12 @@ be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ /******************************************************************** -** Solidified function: process_template +** Solidified function: _process_named_arguments_for_color_provider ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_template, /* name */ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider, /* name */ be_nested_proto( - 12, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(template), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_left_brace), - /* K6 */ be_nested_str_weak(at_end), - /* K7 */ be_nested_str_weak(check_right_brace), - /* K8 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K9 */ be_nested_str_weak(current), - /* K10 */ be_nested_str_weak(type), - /* K11 */ be_nested_str_weak(animation_dsl), - /* K12 */ be_nested_str_weak(Token), - /* K13 */ be_nested_str_weak(KEYWORD), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(param), - /* K16 */ be_nested_str_weak(push), - /* K17 */ be_nested_str_weak(NEWLINE), - /* K18 */ be_const_int(0), - /* K19 */ be_nested_str_weak(EOF), - /* K20 */ be_nested_str_weak(LEFT_BRACE), - /* K21 */ be_const_int(1), - /* K22 */ be_nested_str_weak(RIGHT_BRACE), - /* K23 */ be_nested_str_weak(expect_right_brace), - /* K24 */ be_nested_str_weak(template_definitions), - /* K25 */ be_nested_str_weak(params), - /* K26 */ be_nested_str_weak(param_types), - /* K27 */ be_nested_str_weak(body_tokens), - /* K28 */ be_nested_str_weak(generate_template_function), - /* K29 */ be_nested_str_weak(symbol_table), - }), - be_str_weak(process_template), - &be_const_str_solidified, - ( &(const binstruction[165]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 - 0x60080012, // 000E GETGBL R2 G18 - 0x7C080000, // 000F CALL R2 0 - 0x600C0013, // 0010 GETGBL R3 G19 - 0x7C0C0000, // 0011 CALL R3 0 - 0x8C100106, // 0012 GETMET R4 R0 K6 - 0x7C100200, // 0013 CALL R4 1 - 0x7412004B, // 0014 JMPT R4 #0061 - 0x8C100107, // 0015 GETMET R4 R0 K7 - 0x7C100200, // 0016 CALL R4 1 - 0x74120048, // 0017 JMPT R4 #0061 - 0x8C100108, // 0018 GETMET R4 R0 K8 - 0x7C100200, // 0019 CALL R4 1 - 0x8C100107, // 001A GETMET R4 R0 K7 - 0x7C100200, // 001B CALL R4 1 - 0x78120000, // 001C JMPF R4 #001E - 0x70020042, // 001D JMP #0061 - 0x8C100109, // 001E GETMET R4 R0 K9 - 0x7C100200, // 001F CALL R4 1 - 0x4C140000, // 0020 LDNIL R5 - 0x20140805, // 0021 NE R5 R4 R5 - 0x7816003B, // 0022 JMPF R5 #005F - 0x8814090A, // 0023 GETMBR R5 R4 K10 - 0xB81A1600, // 0024 GETNGBL R6 K11 - 0x88180D0C, // 0025 GETMBR R6 R6 K12 - 0x88180D0D, // 0026 GETMBR R6 R6 K13 - 0x1C140A06, // 0027 EQ R5 R5 R6 - 0x78160035, // 0028 JMPF R5 #005F - 0x8814090E, // 0029 GETMBR R5 R4 K14 - 0x1C140B0F, // 002A EQ R5 R5 K15 - 0x78160032, // 002B JMPF R5 #005F - 0x8C140100, // 002C GETMET R5 R0 K0 - 0x7C140200, // 002D CALL R5 1 - 0x8C140101, // 002E GETMET R5 R0 K1 - 0x7C140200, // 002F CALL R5 1 - 0x4C180000, // 0030 LDNIL R6 - 0x8C1C0109, // 0031 GETMET R7 R0 K9 - 0x7C1C0200, // 0032 CALL R7 1 - 0x4C200000, // 0033 LDNIL R8 - 0x201C0E08, // 0034 NE R7 R7 R8 - 0x781E0011, // 0035 JMPF R7 #0048 - 0x8C1C0109, // 0036 GETMET R7 R0 K9 - 0x7C1C0200, // 0037 CALL R7 1 - 0x881C0F0A, // 0038 GETMBR R7 R7 K10 - 0xB8221600, // 0039 GETNGBL R8 K11 - 0x8820110C, // 003A GETMBR R8 R8 K12 - 0x8820110D, // 003B GETMBR R8 R8 K13 - 0x1C1C0E08, // 003C EQ R7 R7 R8 - 0x781E0009, // 003D JMPF R7 #0048 - 0x8C1C0109, // 003E GETMET R7 R0 K9 - 0x7C1C0200, // 003F CALL R7 1 - 0x881C0F0E, // 0040 GETMBR R7 R7 K14 - 0x1C1C0F0A, // 0041 EQ R7 R7 K10 - 0x781E0004, // 0042 JMPF R7 #0048 - 0x8C1C0100, // 0043 GETMET R7 R0 K0 - 0x7C1C0200, // 0044 CALL R7 1 - 0x8C1C0101, // 0045 GETMET R7 R0 K1 - 0x7C1C0200, // 0046 CALL R7 1 - 0x5C180E00, // 0047 MOVE R6 R7 - 0x8C1C0510, // 0048 GETMET R7 R2 K16 - 0x5C240A00, // 0049 MOVE R9 R5 - 0x7C1C0400, // 004A CALL R7 2 - 0x4C1C0000, // 004B LDNIL R7 - 0x201C0C07, // 004C NE R7 R6 R7 - 0x781E0000, // 004D JMPF R7 #004F - 0x980C0A06, // 004E SETIDX R3 R5 R6 - 0x8C1C0109, // 004F GETMET R7 R0 K9 - 0x7C1C0200, // 0050 CALL R7 1 - 0x4C200000, // 0051 LDNIL R8 - 0x201C0E08, // 0052 NE R7 R7 R8 - 0x781E0009, // 0053 JMPF R7 #005E - 0x8C1C0109, // 0054 GETMET R7 R0 K9 - 0x7C1C0200, // 0055 CALL R7 1 - 0x881C0F0A, // 0056 GETMBR R7 R7 K10 - 0xB8221600, // 0057 GETNGBL R8 K11 - 0x8820110C, // 0058 GETMBR R8 R8 K12 - 0x88201111, // 0059 GETMBR R8 R8 K17 - 0x1C1C0E08, // 005A EQ R7 R7 R8 - 0x781E0001, // 005B JMPF R7 #005E - 0x8C1C0100, // 005C GETMET R7 R0 K0 - 0x7C1C0200, // 005D CALL R7 1 - 0x70020000, // 005E JMP #0060 - 0x70020000, // 005F JMP #0061 - 0x7001FFB0, // 0060 JMP #0012 - 0x60100012, // 0061 GETGBL R4 G18 - 0x7C100000, // 0062 CALL R4 0 - 0x58140012, // 0063 LDCONST R5 K18 - 0x8C180106, // 0064 GETMET R6 R0 K6 - 0x7C180200, // 0065 CALL R6 1 - 0x741A002B, // 0066 JMPT R6 #0093 - 0x8C180109, // 0067 GETMET R6 R0 K9 - 0x7C180200, // 0068 CALL R6 1 - 0x4C1C0000, // 0069 LDNIL R7 - 0x1C1C0C07, // 006A EQ R7 R6 R7 - 0x741E0005, // 006B JMPT R7 #0072 - 0x881C0D0A, // 006C GETMBR R7 R6 K10 - 0xB8221600, // 006D GETNGBL R8 K11 - 0x8820110C, // 006E GETMBR R8 R8 K12 - 0x88201113, // 006F GETMBR R8 R8 K19 - 0x1C1C0E08, // 0070 EQ R7 R7 R8 - 0x781E0000, // 0071 JMPF R7 #0073 - 0x7002001F, // 0072 JMP #0093 - 0x881C0D0A, // 0073 GETMBR R7 R6 K10 - 0xB8221600, // 0074 GETNGBL R8 K11 - 0x8820110C, // 0075 GETMBR R8 R8 K12 - 0x88201114, // 0076 GETMBR R8 R8 K20 - 0x1C1C0E08, // 0077 EQ R7 R7 R8 - 0x781E0004, // 0078 JMPF R7 #007E - 0x00140B15, // 0079 ADD R5 R5 K21 - 0x8C1C0910, // 007A GETMET R7 R4 K16 - 0x5C240C00, // 007B MOVE R9 R6 - 0x7C1C0400, // 007C CALL R7 2 - 0x70020011, // 007D JMP #0090 - 0x881C0D0A, // 007E GETMBR R7 R6 K10 - 0xB8221600, // 007F GETNGBL R8 K11 - 0x8820110C, // 0080 GETMBR R8 R8 K12 - 0x88201116, // 0081 GETMBR R8 R8 K22 - 0x1C1C0E08, // 0082 EQ R7 R7 R8 - 0x781E0008, // 0083 JMPF R7 #008D - 0x1C1C0B12, // 0084 EQ R7 R5 K18 - 0x781E0001, // 0085 JMPF R7 #0088 - 0x7002000B, // 0086 JMP #0093 - 0x70020003, // 0087 JMP #008C - 0x04140B15, // 0088 SUB R5 R5 K21 - 0x8C1C0910, // 0089 GETMET R7 R4 K16 - 0x5C240C00, // 008A MOVE R9 R6 - 0x7C1C0400, // 008B CALL R7 2 - 0x70020002, // 008C JMP #0090 - 0x8C1C0910, // 008D GETMET R7 R4 K16 - 0x5C240C00, // 008E MOVE R9 R6 - 0x7C1C0400, // 008F CALL R7 2 - 0x8C1C0100, // 0090 GETMET R7 R0 K0 - 0x7C1C0200, // 0091 CALL R7 1 - 0x7001FFD0, // 0092 JMP #0064 - 0x8C180117, // 0093 GETMET R6 R0 K23 - 0x7C180200, // 0094 CALL R6 1 - 0x88180118, // 0095 GETMBR R6 R0 K24 - 0x601C0013, // 0096 GETGBL R7 G19 - 0x7C1C0000, // 0097 CALL R7 0 - 0x981E3202, // 0098 SETIDX R7 K25 R2 - 0x981E3403, // 0099 SETIDX R7 K26 R3 - 0x981E3604, // 009A SETIDX R7 K27 R4 - 0x98180207, // 009B SETIDX R6 R1 R7 - 0x8C18011C, // 009C GETMET R6 R0 K28 - 0x5C200200, // 009D MOVE R8 R1 - 0x5C240400, // 009E MOVE R9 R2 - 0x5C280600, // 009F MOVE R10 R3 - 0x5C2C0800, // 00A0 MOVE R11 R4 - 0x7C180A00, // 00A1 CALL R6 5 - 0x8818011D, // 00A2 GETMBR R6 R0 K29 - 0x98180303, // 00A3 SETIDX R6 R1 K3 - 0x80000000, // 00A4 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_identifier_char -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(a), - /* K1 */ be_nested_str_weak(z), - /* K2 */ be_nested_str_weak(A), - /* K3 */ be_nested_str_weak(Z), - /* K4 */ be_nested_str_weak(0), - /* K5 */ be_nested_str_weak(9), - /* K6 */ be_nested_str_weak(_), - }), - be_str_weak(is_identifier_char), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x28080300, // 0000 GE R2 R1 K0 - 0x780A0001, // 0001 JMPF R2 #0004 - 0x18080301, // 0002 LE R2 R1 K1 - 0x740A000A, // 0003 JMPT R2 #000F - 0x28080302, // 0004 GE R2 R1 K2 - 0x780A0001, // 0005 JMPF R2 #0008 - 0x18080303, // 0006 LE R2 R1 K3 - 0x740A0006, // 0007 JMPT R2 #000F - 0x28080304, // 0008 GE R2 R1 K4 - 0x780A0001, // 0009 JMPF R2 #000C - 0x18080305, // 000A LE R2 R1 K5 - 0x740A0002, // 000B JMPT R2 #000F - 0x1C080306, // 000C EQ R2 R1 K6 - 0x740A0000, // 000D JMPT R2 #000F - 0x50080001, // 000E LDBOOL R2 0 1 - 0x50080200, // 000F LDBOOL R2 1 0 - 0x80040400, // 0010 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_primary_expression_raw -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_primary_expression_raw, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[53]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20value), - /* K3 */ be_nested_str_weak(nil), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(LEFT_PAREN), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(process_additive_expression_raw), - /* K10 */ be_nested_str_weak(expect_right_paren), - /* K11 */ be_nested_str_weak(_X28_X25s_X29), - /* K12 */ be_nested_str_weak(KEYWORD), - /* K13 */ be_nested_str_weak(IDENTIFIER), - /* K14 */ be_nested_str_weak(peek), - /* K15 */ be_nested_str_weak(value), - /* K16 */ be_nested_str_weak(is_math_method), - /* K17 */ be_nested_str_weak(process_function_arguments_for_expression), - /* K18 */ be_nested_str_weak(self_X2E_X25s_X28_X25s_X29), - /* K19 */ be_nested_str_weak(log), - /* K20 */ be_nested_str_weak(process_log_call), - /* K21 */ be_nested_str_weak(expression), - /* K22 */ be_nested_str_weak(), - /* K23 */ be_nested_str_weak(template_definitions), - /* K24 */ be_nested_str_weak(contains), - /* K25 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K26 */ be_nested_str_weak(self_X2Eengine), - /* K27 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), - /* K28 */ be_nested_str_weak(Function_X20_X27_X25s_X27_X20not_X20supported_X20in_X20expression_X20context), - /* K29 */ be_nested_str_weak(COLOR), - /* K30 */ be_nested_str_weak(convert_color), - /* K31 */ be_nested_str_weak(TIME), - /* K32 */ be_nested_str_weak(process_time_value), - /* K33 */ be_nested_str_weak(PERCENTAGE), - /* K34 */ be_nested_str_weak(process_percentage_value), - /* K35 */ be_nested_str_weak(NUMBER), - /* K36 */ be_nested_str_weak(STRING), - /* K37 */ be_nested_str_weak(_X22_X25s_X22), - /* K38 */ be_nested_str_weak(DOT), - /* K39 */ be_nested_str_weak(expect_identifier), - /* K40 */ be_nested_str_weak(user), - /* K41 */ be_nested_str_weak(_process_user_function_call), - /* K42 */ be_nested_str_weak(symbol_table), - /* K43 */ be_nested_str_weak(string), - /* K44 */ be_nested_str_weak(_validate_single_parameter), - /* K45 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20references_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), - /* K46 */ be_nested_str_weak(introspect), - /* K47 */ be_nested_str_weak(animation), - /* K48 */ be_nested_str_weak(animation_X2E_X25s), - /* K49 */ be_nested_str_weak(_X25s_), - /* K50 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), - /* K51 */ be_nested_str_weak(self_X2Eresolve_X28_X25s__X29), - /* K52 */ be_nested_str_weak(Unexpected_X20token_X20in_X20expression_X3A_X20_X25s), - }), - be_str_weak(process_primary_expression_raw), - &be_const_str_solidified, - ( &(const binstruction[258]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080101, // 0005 GETMET R2 R0 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x7C080400, // 0007 CALL R2 2 - 0x80060600, // 0008 RET 1 K3 - 0x88080304, // 0009 GETMBR R2 R1 K4 - 0xB80E0A00, // 000A GETNGBL R3 K5 - 0x880C0706, // 000B GETMBR R3 R3 K6 - 0x880C0707, // 000C GETMBR R3 R3 K7 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x780A000A, // 000E JMPF R2 #001A - 0x8C080108, // 000F GETMET R2 R0 K8 - 0x7C080200, // 0010 CALL R2 1 - 0x8C080109, // 0011 GETMET R2 R0 K9 - 0x7C080200, // 0012 CALL R2 1 - 0x8C0C010A, // 0013 GETMET R3 R0 K10 - 0x7C0C0200, // 0014 CALL R3 1 - 0x600C0018, // 0015 GETGBL R3 G24 - 0x5810000B, // 0016 LDCONST R4 K11 - 0x5C140400, // 0017 MOVE R5 R2 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80040600, // 0019 RET 1 R3 - 0x88080304, // 001A GETMBR R2 R1 K4 - 0xB80E0A00, // 001B GETNGBL R3 K5 - 0x880C0706, // 001C GETMBR R3 R3 K6 - 0x880C070C, // 001D GETMBR R3 R3 K12 - 0x1C080403, // 001E EQ R2 R2 R3 - 0x740A0005, // 001F JMPT R2 #0026 - 0x88080304, // 0020 GETMBR R2 R1 K4 - 0xB80E0A00, // 0021 GETNGBL R3 K5 - 0x880C0706, // 0022 GETMBR R3 R3 K6 - 0x880C070D, // 0023 GETMBR R3 R3 K13 - 0x1C080403, // 0024 EQ R2 R2 R3 - 0x780A0041, // 0025 JMPF R2 #0068 - 0x8C08010E, // 0026 GETMET R2 R0 K14 - 0x7C080200, // 0027 CALL R2 1 - 0x4C0C0000, // 0028 LDNIL R3 - 0x20080403, // 0029 NE R2 R2 R3 - 0x780A003C, // 002A JMPF R2 #0068 - 0x8C08010E, // 002B GETMET R2 R0 K14 - 0x7C080200, // 002C CALL R2 1 - 0x88080504, // 002D GETMBR R2 R2 K4 - 0xB80E0A00, // 002E GETNGBL R3 K5 - 0x880C0706, // 002F GETMBR R3 R3 K6 - 0x880C0707, // 0030 GETMBR R3 R3 K7 - 0x1C080403, // 0031 EQ R2 R2 R3 - 0x780A0034, // 0032 JMPF R2 #0068 - 0x8808030F, // 0033 GETMBR R2 R1 K15 - 0x8C0C0108, // 0034 GETMET R3 R0 K8 - 0x7C0C0200, // 0035 CALL R3 1 - 0x8C0C0110, // 0036 GETMET R3 R0 K16 - 0x5C140400, // 0037 MOVE R5 R2 - 0x7C0C0400, // 0038 CALL R3 2 - 0x780E0007, // 0039 JMPF R3 #0042 - 0x8C0C0111, // 003A GETMET R3 R0 K17 - 0x7C0C0200, // 003B CALL R3 1 - 0x60100018, // 003C GETGBL R4 G24 - 0x58140012, // 003D LDCONST R5 K18 - 0x5C180400, // 003E MOVE R6 R2 - 0x5C1C0600, // 003F MOVE R7 R3 - 0x7C100600, // 0040 CALL R4 3 - 0x80040800, // 0041 RET 1 R4 - 0x1C0C0513, // 0042 EQ R3 R2 K19 - 0x780E0007, // 0043 JMPF R3 #004C - 0x8C0C0111, // 0044 GETMET R3 R0 K17 - 0x7C0C0200, // 0045 CALL R3 1 - 0x8C100114, // 0046 GETMET R4 R0 K20 - 0x5C180600, // 0047 MOVE R6 R3 - 0x581C0015, // 0048 LDCONST R7 K21 - 0x58200016, // 0049 LDCONST R8 K22 - 0x7C100800, // 004A CALL R4 4 - 0x80040800, // 004B RET 1 R4 - 0x880C0117, // 004C GETMBR R3 R0 K23 - 0x8C0C0718, // 004D GETMET R3 R3 K24 - 0x5C140400, // 004E MOVE R5 R2 - 0x7C0C0400, // 004F CALL R3 2 - 0x780E000F, // 0050 JMPF R3 #0061 - 0x8C0C0111, // 0051 GETMET R3 R0 K17 - 0x7C0C0200, // 0052 CALL R3 1 - 0x20100716, // 0053 NE R4 R3 K22 - 0x78120004, // 0054 JMPF R4 #005A - 0x60100018, // 0055 GETGBL R4 G24 - 0x58140019, // 0056 LDCONST R5 K25 - 0x5C180600, // 0057 MOVE R6 R3 - 0x7C100400, // 0058 CALL R4 2 - 0x70020000, // 0059 JMP #005B - 0x5810001A, // 005A LDCONST R4 K26 - 0x60140018, // 005B GETGBL R5 G24 - 0x5818001B, // 005C LDCONST R6 K27 - 0x5C1C0400, // 005D MOVE R7 R2 - 0x5C200800, // 005E MOVE R8 R4 - 0x7C140600, // 005F CALL R5 3 - 0x80040A00, // 0060 RET 1 R5 - 0x8C0C0101, // 0061 GETMET R3 R0 K1 - 0x60140018, // 0062 GETGBL R5 G24 - 0x5818001C, // 0063 LDCONST R6 K28 - 0x5C1C0400, // 0064 MOVE R7 R2 - 0x7C140400, // 0065 CALL R5 2 - 0x7C0C0400, // 0066 CALL R3 2 - 0x80060600, // 0067 RET 1 K3 - 0x88080304, // 0068 GETMBR R2 R1 K4 - 0xB80E0A00, // 0069 GETNGBL R3 K5 - 0x880C0706, // 006A GETMBR R3 R3 K6 - 0x880C071D, // 006B GETMBR R3 R3 K29 - 0x1C080403, // 006C EQ R2 R2 R3 - 0x780A0005, // 006D JMPF R2 #0074 - 0x8C080108, // 006E GETMET R2 R0 K8 - 0x7C080200, // 006F CALL R2 1 - 0x8C08011E, // 0070 GETMET R2 R0 K30 - 0x8810030F, // 0071 GETMBR R4 R1 K15 - 0x7C080400, // 0072 CALL R2 2 - 0x80040400, // 0073 RET 1 R2 - 0x88080304, // 0074 GETMBR R2 R1 K4 - 0xB80E0A00, // 0075 GETNGBL R3 K5 - 0x880C0706, // 0076 GETMBR R3 R3 K6 - 0x880C071F, // 0077 GETMBR R3 R3 K31 - 0x1C080403, // 0078 EQ R2 R2 R3 - 0x780A0004, // 0079 JMPF R2 #007F - 0x60080008, // 007A GETGBL R2 G8 - 0x8C0C0120, // 007B GETMET R3 R0 K32 - 0x7C0C0200, // 007C CALL R3 1 - 0x7C080200, // 007D CALL R2 1 - 0x80040400, // 007E RET 1 R2 - 0x88080304, // 007F GETMBR R2 R1 K4 - 0xB80E0A00, // 0080 GETNGBL R3 K5 - 0x880C0706, // 0081 GETMBR R3 R3 K6 - 0x880C0721, // 0082 GETMBR R3 R3 K33 - 0x1C080403, // 0083 EQ R2 R2 R3 - 0x780A0004, // 0084 JMPF R2 #008A - 0x60080008, // 0085 GETGBL R2 G8 - 0x8C0C0122, // 0086 GETMET R3 R0 K34 - 0x7C0C0200, // 0087 CALL R3 1 - 0x7C080200, // 0088 CALL R2 1 - 0x80040400, // 0089 RET 1 R2 - 0x88080304, // 008A GETMBR R2 R1 K4 - 0xB80E0A00, // 008B GETNGBL R3 K5 - 0x880C0706, // 008C GETMBR R3 R3 K6 - 0x880C0723, // 008D GETMBR R3 R3 K35 - 0x1C080403, // 008E EQ R2 R2 R3 - 0x780A0003, // 008F JMPF R2 #0094 - 0x8808030F, // 0090 GETMBR R2 R1 K15 - 0x8C0C0108, // 0091 GETMET R3 R0 K8 - 0x7C0C0200, // 0092 CALL R3 1 - 0x80040400, // 0093 RET 1 R2 - 0x88080304, // 0094 GETMBR R2 R1 K4 - 0xB80E0A00, // 0095 GETNGBL R3 K5 - 0x880C0706, // 0096 GETMBR R3 R3 K6 - 0x880C0724, // 0097 GETMBR R3 R3 K36 - 0x1C080403, // 0098 EQ R2 R2 R3 - 0x780A0007, // 0099 JMPF R2 #00A2 - 0x8808030F, // 009A GETMBR R2 R1 K15 - 0x8C0C0108, // 009B GETMET R3 R0 K8 - 0x7C0C0200, // 009C CALL R3 1 - 0x600C0018, // 009D GETGBL R3 G24 - 0x58100025, // 009E LDCONST R4 K37 - 0x5C140400, // 009F MOVE R5 R2 - 0x7C0C0400, // 00A0 CALL R3 2 - 0x80040600, // 00A1 RET 1 R3 - 0x88080304, // 00A2 GETMBR R2 R1 K4 - 0xB80E0A00, // 00A3 GETNGBL R3 K5 - 0x880C0706, // 00A4 GETMBR R3 R3 K6 - 0x880C070D, // 00A5 GETMBR R3 R3 K13 - 0x1C080403, // 00A6 EQ R2 R2 R3 - 0x780A0052, // 00A7 JMPF R2 #00FB - 0x8808030F, // 00A8 GETMBR R2 R1 K15 - 0x8C0C0108, // 00A9 GETMET R3 R0 K8 - 0x7C0C0200, // 00AA CALL R3 1 - 0x8C0C0100, // 00AB GETMET R3 R0 K0 - 0x7C0C0200, // 00AC CALL R3 1 - 0x4C100000, // 00AD LDNIL R4 - 0x200C0604, // 00AE NE R3 R3 R4 - 0x780E0045, // 00AF JMPF R3 #00F6 - 0x8C0C0100, // 00B0 GETMET R3 R0 K0 - 0x7C0C0200, // 00B1 CALL R3 1 - 0x880C0704, // 00B2 GETMBR R3 R3 K4 - 0xB8120A00, // 00B3 GETNGBL R4 K5 - 0x88100906, // 00B4 GETMBR R4 R4 K6 - 0x88100926, // 00B5 GETMBR R4 R4 K38 - 0x1C0C0604, // 00B6 EQ R3 R3 R4 - 0x780E003D, // 00B7 JMPF R3 #00F6 - 0x8C0C0108, // 00B8 GETMET R3 R0 K8 - 0x7C0C0200, // 00B9 CALL R3 1 - 0x8C0C0127, // 00BA GETMET R3 R0 K39 - 0x7C0C0200, // 00BB CALL R3 1 - 0x1C100528, // 00BC EQ R4 R2 K40 - 0x78120003, // 00BD JMPF R4 #00C2 - 0x8C100129, // 00BE GETMET R4 R0 K41 - 0x5C180600, // 00BF MOVE R6 R3 - 0x7C100400, // 00C0 CALL R4 2 - 0x80040800, // 00C1 RET 1 R4 - 0x8810012A, // 00C2 GETMBR R4 R0 K42 - 0x8C100918, // 00C3 GETMET R4 R4 K24 - 0x5C180400, // 00C4 MOVE R6 R2 - 0x7C100400, // 00C5 CALL R4 2 - 0x78120016, // 00C6 JMPF R4 #00DE - 0x8810012A, // 00C7 GETMBR R4 R0 K42 - 0x94100802, // 00C8 GETIDX R4 R4 R2 - 0x60140004, // 00C9 GETGBL R5 G4 - 0x5C180800, // 00CA MOVE R6 R4 - 0x7C140200, // 00CB CALL R5 1 - 0x20140B2B, // 00CC NE R5 R5 K43 - 0x78160008, // 00CD JMPF R5 #00D7 - 0x60140005, // 00CE GETGBL R5 G5 - 0x5C180800, // 00CF MOVE R6 R4 - 0x7C140200, // 00D0 CALL R5 1 - 0x8C18012C, // 00D1 GETMET R6 R0 K44 - 0x5C200A00, // 00D2 MOVE R8 R5 - 0x5C240600, // 00D3 MOVE R9 R3 - 0x5C280800, // 00D4 MOVE R10 R4 - 0x7C180800, // 00D5 CALL R6 4 - 0x70020006, // 00D6 JMP #00DE - 0x8C140101, // 00D7 GETMET R5 R0 K1 - 0x601C0018, // 00D8 GETGBL R7 G24 - 0x5820002D, // 00D9 LDCONST R8 K45 - 0x5C240400, // 00DA MOVE R9 R2 - 0x7C1C0400, // 00DB CALL R7 2 - 0x7C140400, // 00DC CALL R5 2 - 0x80060600, // 00DD RET 1 K3 - 0xA4125C00, // 00DE IMPORT R4 K46 - 0x58140016, // 00DF LDCONST R5 K22 - 0x8C180918, // 00E0 GETMET R6 R4 K24 - 0xB8225E00, // 00E1 GETNGBL R8 K47 - 0x5C240400, // 00E2 MOVE R9 R2 - 0x7C180600, // 00E3 CALL R6 3 - 0x781A0005, // 00E4 JMPF R6 #00EB - 0x60180018, // 00E5 GETGBL R6 G24 - 0x581C0030, // 00E6 LDCONST R7 K48 - 0x5C200400, // 00E7 MOVE R8 R2 - 0x7C180400, // 00E8 CALL R6 2 - 0x5C140C00, // 00E9 MOVE R5 R6 - 0x70020004, // 00EA JMP #00F0 - 0x60180018, // 00EB GETGBL R6 G24 - 0x581C0031, // 00EC LDCONST R7 K49 - 0x5C200400, // 00ED MOVE R8 R2 - 0x7C180400, // 00EE CALL R6 2 - 0x5C140C00, // 00EF MOVE R5 R6 - 0x60180018, // 00F0 GETGBL R6 G24 - 0x581C0032, // 00F1 LDCONST R7 K50 - 0x5C200A00, // 00F2 MOVE R8 R5 - 0x5C240600, // 00F3 MOVE R9 R3 - 0x7C180600, // 00F4 CALL R6 3 - 0x80040C00, // 00F5 RET 1 R6 - 0x600C0018, // 00F6 GETGBL R3 G24 - 0x58100033, // 00F7 LDCONST R4 K51 - 0x5C140400, // 00F8 MOVE R5 R2 - 0x7C0C0400, // 00F9 CALL R3 2 - 0x80040600, // 00FA RET 1 R3 - 0x8C080101, // 00FB GETMET R2 R0 K1 - 0x60100018, // 00FC GETGBL R4 G24 - 0x58140034, // 00FD LDCONST R5 K52 - 0x8818030F, // 00FE GETMBR R6 R1 K15 - 0x7C100400, // 00FF CALL R4 2 - 0x7C080400, // 0100 CALL R2 2 - 0x80060600, // 0101 RET 1 K3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: is_computed_expression_string -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_computed_expression_string, /* name */ - be_nested_proto( - 12, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(find), - /* K2 */ be_nested_str_weak(_X20_X2B_X20), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(_X20_X2D_X20), - /* K5 */ be_nested_str_weak(_X20_X2A_X20), - /* K6 */ be_nested_str_weak(_X20_X2F_X20), - /* K7 */ be_nested_str_weak(_X28), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(is_identifier_char), - /* K10 */ be_nested_str_weak(_is_simple_function_call), - }), - be_str_weak(is_computed_expression_string), - &be_const_str_solidified, - ( &(const binstruction[63]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x280C0703, // 0005 GE R3 R3 K3 - 0x740E0012, // 0006 JMPT R3 #001A - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x5C140200, // 0008 MOVE R5 R1 - 0x58180004, // 0009 LDCONST R6 K4 - 0x7C0C0600, // 000A CALL R3 3 - 0x280C0703, // 000B GE R3 R3 K3 - 0x740E000C, // 000C JMPT R3 #001A - 0x8C0C0501, // 000D GETMET R3 R2 K1 - 0x5C140200, // 000E MOVE R5 R1 - 0x58180005, // 000F LDCONST R6 K5 - 0x7C0C0600, // 0010 CALL R3 3 - 0x280C0703, // 0011 GE R3 R3 K3 - 0x740E0006, // 0012 JMPT R3 #001A - 0x8C0C0501, // 0013 GETMET R3 R2 K1 - 0x5C140200, // 0014 MOVE R5 R1 - 0x58180006, // 0015 LDCONST R6 K6 - 0x7C0C0600, // 0016 CALL R3 3 - 0x280C0703, // 0017 GE R3 R3 K3 - 0x740E0000, // 0018 JMPT R3 #001A - 0x500C0001, // 0019 LDBOOL R3 0 1 - 0x500C0200, // 001A LDBOOL R3 1 0 - 0x50100000, // 001B LDBOOL R4 0 0 - 0x8C140501, // 001C GETMET R5 R2 K1 - 0x5C1C0200, // 001D MOVE R7 R1 - 0x58200007, // 001E LDCONST R8 K7 - 0x7C140600, // 001F CALL R5 3 - 0x24180B03, // 0020 GT R6 R5 K3 - 0x781A0017, // 0021 JMPF R6 #003A - 0x04180B08, // 0022 SUB R6 R5 K8 - 0x94180206, // 0023 GETIDX R6 R1 R6 - 0x8C1C0109, // 0024 GETMET R7 R0 K9 - 0x5C240C00, // 0025 MOVE R9 R6 - 0x7C1C0400, // 0026 CALL R7 2 - 0x781E0011, // 0027 JMPF R7 #003A - 0x041C0B08, // 0028 SUB R7 R5 K8 - 0x28200F03, // 0029 GE R8 R7 K3 - 0x78220005, // 002A JMPF R8 #0031 - 0x8C200109, // 002B GETMET R8 R0 K9 - 0x94280207, // 002C GETIDX R10 R1 R7 - 0x7C200400, // 002D CALL R8 2 - 0x78220001, // 002E JMPF R8 #0031 - 0x041C0F08, // 002F SUB R7 R7 K8 - 0x7001FFF7, // 0030 JMP #0029 - 0x001C0F08, // 0031 ADD R7 R7 K8 - 0x04200B08, // 0032 SUB R8 R5 K8 - 0x40200E08, // 0033 CONNECT R8 R7 R8 - 0x94200208, // 0034 GETIDX R8 R1 R8 - 0x8C24010A, // 0035 GETMET R9 R0 K10 - 0x5C2C1000, // 0036 MOVE R11 R8 - 0x7C240400, // 0037 CALL R9 2 - 0x74260000, // 0038 JMPT R9 #003A - 0x50100200, // 0039 LDBOOL R4 1 0 - 0x740E0001, // 003A JMPT R3 #003D - 0x74120000, // 003B JMPT R4 #003D - 0x50180001, // 003C LDBOOL R6 0 1 - 0x50180200, // 003D LDBOOL R6 1 0 - 0x80040C00, // 003E RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_animation_factory_exists -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ + 8, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -9621,987 +11643,18 @@ be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(is_math_method), - /* K1 */ be_nested_str_weak(_validate_factory_function), + /* K0 */ be_nested_str_weak(_process_named_arguments_unified), + /* K1 */ be_nested_str_weak(color_provider), }), - be_str_weak(_validate_animation_factory_exists), + be_str_weak(_process_named_arguments_for_color_provider), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x780A0001, // 0003 JMPF R2 #0006 - 0x50080200, // 0004 LDBOOL R2 1 0 - 0x80040400, // 0005 RET 1 R2 - 0x8C080101, // 0006 GETMET R2 R0 K1 - 0x5C100200, // 0007 MOVE R4 R1 - 0x4C140000, // 0008 LDNIL R5 - 0x7C080600, // 0009 CALL R2 3 - 0x80040400, // 000A RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_call, /* name */ - be_nested_proto( - 10, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[25]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(IDENTIFIER), - /* K6 */ be_nested_str_weak(KEYWORD), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20function_X20name), - /* K11 */ be_nested_str_weak(nil), - /* K12 */ be_nested_str_weak(is_math_method), - /* K13 */ be_nested_str_weak(process_function_arguments), - /* K14 */ be_nested_str_weak(_X25s_X28_X25s_X29), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(process_log_call), - /* K17 */ be_nested_str_weak(expression), - /* K18 */ be_nested_str_weak(template_definitions), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K21 */ be_nested_str_weak(engine), - /* K22 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), - /* K23 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), - /* K24 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - }), - be_str_weak(process_function_call), - &be_const_str_solidified, - ( &(const binstruction[85]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x4C100000, // 0003 LDNIL R4 - 0x20100404, // 0004 NE R4 R2 R4 - 0x7812000F, // 0005 JMPF R4 #0016 - 0x88100502, // 0006 GETMBR R4 R2 K2 - 0xB8160600, // 0007 GETNGBL R5 K3 - 0x88140B04, // 0008 GETMBR R5 R5 K4 - 0x88140B05, // 0009 GETMBR R5 R5 K5 - 0x1C100805, // 000A EQ R4 R4 R5 - 0x74120005, // 000B JMPT R4 #0012 - 0x88100502, // 000C GETMBR R4 R2 K2 - 0xB8160600, // 000D GETNGBL R5 K3 - 0x88140B04, // 000E GETMBR R5 R5 K4 - 0x88140B06, // 000F GETMBR R5 R5 K6 - 0x1C100805, // 0010 EQ R4 R4 R5 - 0x78120003, // 0011 JMPF R4 #0016 - 0x880C0507, // 0012 GETMBR R3 R2 K7 - 0x8C100108, // 0013 GETMET R4 R0 K8 - 0x7C100200, // 0014 CALL R4 1 - 0x70020003, // 0015 JMP #001A - 0x8C100109, // 0016 GETMET R4 R0 K9 - 0x5818000A, // 0017 LDCONST R6 K10 - 0x7C100400, // 0018 CALL R4 2 - 0x80061600, // 0019 RET 1 K11 - 0x8C10010C, // 001A GETMET R4 R0 K12 - 0x5C180600, // 001B MOVE R6 R3 - 0x7C100400, // 001C CALL R4 2 - 0x78120007, // 001D JMPF R4 #0026 - 0x8C10010D, // 001E GETMET R4 R0 K13 - 0x7C100200, // 001F CALL R4 1 - 0x60140018, // 0020 GETGBL R5 G24 - 0x5818000E, // 0021 LDCONST R6 K14 - 0x5C1C0600, // 0022 MOVE R7 R3 - 0x5C200800, // 0023 MOVE R8 R4 - 0x7C140600, // 0024 CALL R5 3 - 0x80040A00, // 0025 RET 1 R5 - 0x1C10070F, // 0026 EQ R4 R3 K15 - 0x78120007, // 0027 JMPF R4 #0030 - 0x8C10010D, // 0028 GETMET R4 R0 K13 - 0x7C100200, // 0029 CALL R4 1 - 0x8C140110, // 002A GETMET R5 R0 K16 - 0x5C1C0800, // 002B MOVE R7 R4 - 0x58200011, // 002C LDCONST R8 K17 - 0x58240001, // 002D LDCONST R9 K1 - 0x7C140800, // 002E CALL R5 4 - 0x80040A00, // 002F RET 1 R5 - 0x8C10010D, // 0030 GETMET R4 R0 K13 - 0x7C100200, // 0031 CALL R4 1 - 0x88140112, // 0032 GETMBR R5 R0 K18 - 0x8C140B13, // 0033 GETMET R5 R5 K19 - 0x5C1C0600, // 0034 MOVE R7 R3 - 0x7C140400, // 0035 CALL R5 2 - 0x7816000E, // 0036 JMPF R5 #0046 - 0x20140901, // 0037 NE R5 R4 K1 - 0x78160004, // 0038 JMPF R5 #003E - 0x60140018, // 0039 GETGBL R5 G24 - 0x58180014, // 003A LDCONST R6 K20 - 0x5C1C0800, // 003B MOVE R7 R4 - 0x7C140400, // 003C CALL R5 2 - 0x70020000, // 003D JMP #003F - 0x58140015, // 003E LDCONST R5 K21 - 0x60180018, // 003F GETGBL R6 G24 - 0x581C0016, // 0040 LDCONST R7 K22 - 0x5C200600, // 0041 MOVE R8 R3 - 0x5C240A00, // 0042 MOVE R9 R5 - 0x7C180600, // 0043 CALL R6 3 - 0x80040C00, // 0044 RET 1 R6 - 0x7002000D, // 0045 JMP #0054 - 0x20140901, // 0046 NE R5 R4 K1 - 0x78160006, // 0047 JMPF R5 #004F - 0x60140018, // 0048 GETGBL R5 G24 - 0x58180017, // 0049 LDCONST R6 K23 - 0x5C1C0600, // 004A MOVE R7 R3 - 0x5C200800, // 004B MOVE R8 R4 - 0x7C140600, // 004C CALL R5 3 - 0x80040A00, // 004D RET 1 R5 - 0x70020004, // 004E JMP #0054 - 0x60140018, // 004F GETGBL R5 G24 - 0x58180018, // 0050 LDCONST R6 K24 - 0x5C1C0600, // 0051 MOVE R7 R3 - 0x7C140400, // 0052 CALL R5 2 - 0x80040A00, // 0053 RET 1 R5 - 0x80000000, // 0054 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_generic -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_create_instance_for_validation), - /* K2 */ be_nested_str_weak(at_end), - /* K3 */ be_nested_str_weak(check_right_paren), - /* K4 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K5 */ be_nested_str_weak(expect_identifier), - /* K6 */ be_nested_str_weak(_validate_single_parameter), - /* K7 */ be_nested_str_weak(expect_assign), - /* K8 */ be_nested_str_weak(process_value), - /* K9 */ be_nested_str_weak(argument), - /* K10 */ be_nested_str_weak(collect_inline_comment), - /* K11 */ be_nested_str_weak(add), - /* K12 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K13 */ be_nested_str_weak(current), - /* K14 */ be_nested_str_weak(type), - /* K15 */ be_nested_str_weak(animation_dsl), - /* K16 */ be_nested_str_weak(Token), - /* K17 */ be_nested_str_weak(COMMENT), - /* K18 */ be_nested_str_weak(next), - /* K19 */ be_nested_str_weak(COMMA), - /* K20 */ be_nested_str_weak(NEWLINE), - /* K21 */ be_nested_str_weak(error), - /* K22 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K23 */ be_nested_str_weak(expect_right_paren), - }), - be_str_weak(_process_named_arguments_generic), - &be_const_str_solidified, - ( &(const binstruction[109]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 - 0x5C140400, // 0003 MOVE R5 R2 - 0x7C0C0400, // 0004 CALL R3 2 - 0x8C100102, // 0005 GETMET R4 R0 K2 - 0x7C100200, // 0006 CALL R4 1 - 0x74120061, // 0007 JMPT R4 #006A - 0x8C100103, // 0008 GETMET R4 R0 K3 - 0x7C100200, // 0009 CALL R4 1 - 0x7412005E, // 000A JMPT R4 #006A - 0x8C100104, // 000B GETMET R4 R0 K4 - 0x7C100200, // 000C CALL R4 1 - 0x8C100103, // 000D GETMET R4 R0 K3 - 0x7C100200, // 000E CALL R4 1 - 0x78120000, // 000F JMPF R4 #0011 - 0x70020058, // 0010 JMP #006A - 0x8C100105, // 0011 GETMET R4 R0 K5 - 0x7C100200, // 0012 CALL R4 1 - 0x4C140000, // 0013 LDNIL R5 - 0x20140605, // 0014 NE R5 R3 R5 - 0x78160004, // 0015 JMPF R5 #001B - 0x8C140106, // 0016 GETMET R5 R0 K6 - 0x5C1C0400, // 0017 MOVE R7 R2 - 0x5C200800, // 0018 MOVE R8 R4 - 0x5C240600, // 0019 MOVE R9 R3 - 0x7C140800, // 001A CALL R5 4 - 0x8C140107, // 001B GETMET R5 R0 K7 - 0x7C140200, // 001C CALL R5 1 - 0x8C140108, // 001D GETMET R5 R0 K8 - 0x581C0009, // 001E LDCONST R7 K9 - 0x7C140400, // 001F CALL R5 2 - 0x8C18010A, // 0020 GETMET R6 R0 K10 - 0x7C180200, // 0021 CALL R6 1 - 0x8C1C010B, // 0022 GETMET R7 R0 K11 - 0x60240018, // 0023 GETGBL R9 G24 - 0x5828000C, // 0024 LDCONST R10 K12 - 0x5C2C0200, // 0025 MOVE R11 R1 - 0x5C300800, // 0026 MOVE R12 R4 - 0x5C340A00, // 0027 MOVE R13 R5 - 0x5C380C00, // 0028 MOVE R14 R6 - 0x7C240A00, // 0029 CALL R9 5 - 0x7C1C0400, // 002A CALL R7 2 - 0x8C1C0102, // 002B GETMET R7 R0 K2 - 0x7C1C0200, // 002C CALL R7 1 - 0x741E000F, // 002D JMPT R7 #003E - 0x8C1C010D, // 002E GETMET R7 R0 K13 - 0x7C1C0200, // 002F CALL R7 1 - 0x4C200000, // 0030 LDNIL R8 - 0x20200E08, // 0031 NE R8 R7 R8 - 0x78220008, // 0032 JMPF R8 #003C - 0x88200F0E, // 0033 GETMBR R8 R7 K14 - 0xB8261E00, // 0034 GETNGBL R9 K15 - 0x88241310, // 0035 GETMBR R9 R9 K16 - 0x88241311, // 0036 GETMBR R9 R9 K17 - 0x1C201009, // 0037 EQ R8 R8 R9 - 0x78220002, // 0038 JMPF R8 #003C - 0x8C200112, // 0039 GETMET R8 R0 K18 - 0x7C200200, // 003A CALL R8 1 - 0x70020000, // 003B JMP #003D - 0x70020000, // 003C JMP #003E - 0x7001FFEC, // 003D JMP #002B - 0x8C1C010D, // 003E GETMET R7 R0 K13 - 0x7C1C0200, // 003F CALL R7 1 - 0x4C200000, // 0040 LDNIL R8 - 0x201C0E08, // 0041 NE R7 R7 R8 - 0x781E000C, // 0042 JMPF R7 #0050 - 0x8C1C010D, // 0043 GETMET R7 R0 K13 - 0x7C1C0200, // 0044 CALL R7 1 - 0x881C0F0E, // 0045 GETMBR R7 R7 K14 - 0xB8221E00, // 0046 GETNGBL R8 K15 - 0x88201110, // 0047 GETMBR R8 R8 K16 - 0x88201113, // 0048 GETMBR R8 R8 K19 - 0x1C1C0E08, // 0049 EQ R7 R7 R8 - 0x781E0004, // 004A JMPF R7 #0050 - 0x8C1C0112, // 004B GETMET R7 R0 K18 - 0x7C1C0200, // 004C CALL R7 1 - 0x8C1C0104, // 004D GETMET R7 R0 K4 - 0x7C1C0200, // 004E CALL R7 1 - 0x70020018, // 004F JMP #0069 - 0x8C1C010D, // 0050 GETMET R7 R0 K13 - 0x7C1C0200, // 0051 CALL R7 1 - 0x4C200000, // 0052 LDNIL R8 - 0x201C0E08, // 0053 NE R7 R7 R8 - 0x781E000C, // 0054 JMPF R7 #0062 - 0x8C1C010D, // 0055 GETMET R7 R0 K13 - 0x7C1C0200, // 0056 CALL R7 1 - 0x881C0F0E, // 0057 GETMBR R7 R7 K14 - 0xB8221E00, // 0058 GETNGBL R8 K15 - 0x88201110, // 0059 GETMBR R8 R8 K16 - 0x88201114, // 005A GETMBR R8 R8 K20 - 0x1C1C0E08, // 005B EQ R7 R7 R8 - 0x781E0004, // 005C JMPF R7 #0062 - 0x8C1C0112, // 005D GETMET R7 R0 K18 - 0x7C1C0200, // 005E CALL R7 1 - 0x8C1C0104, // 005F GETMET R7 R0 K4 - 0x7C1C0200, // 0060 CALL R7 1 - 0x70020006, // 0061 JMP #0069 - 0x8C1C0103, // 0062 GETMET R7 R0 K3 - 0x7C1C0200, // 0063 CALL R7 1 - 0x741E0003, // 0064 JMPT R7 #0069 - 0x8C1C0115, // 0065 GETMET R7 R0 K21 - 0x58240016, // 0066 LDCONST R9 K22 - 0x7C1C0400, // 0067 CALL R7 2 - 0x70020000, // 0068 JMP #006A - 0x7001FF9A, // 0069 JMP #0005 - 0x8C100117, // 006A GETMET R4 R0 K23 - 0x7C100200, // 006B CALL R4 1 - 0x80000000, // 006C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: join_output -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_join_output, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(output), - /* K2 */ be_nested_str_weak(_X0A), - /* K3 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(join_output), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x60080010, // 0001 GETGBL R2 G16 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0xA8020004, // 0004 EXBLK 0 #000A - 0x5C0C0400, // 0005 MOVE R3 R2 - 0x7C0C0000, // 0006 CALL R3 0 - 0x00100702, // 0007 ADD R4 R3 K2 - 0x00040204, // 0008 ADD R1 R1 R4 - 0x7001FFFA, // 0009 JMP #0005 - 0x58080003, // 000A LDCONST R2 K3 - 0xAC080200, // 000B CATCH R2 1 0 - 0xB0080000, // 000C RAISE 2 R0 R0 - 0x80040200, // 000D RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_expression_argument -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_expression_argument, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(process_additive_expression_raw), - }), - be_str_weak(process_expression_argument), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x80040200, // 0002 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_assignment_generic -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic, /* name */ - be_nested_proto( - 18, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[27]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_identifier), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(DOT), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(symbol_table), - /* K8 */ be_nested_str_weak(contains), - /* K9 */ be_nested_str_weak(string), - /* K10 */ be_nested_str_weak(_validate_single_parameter), - /* K11 */ be_nested_str_weak(error), - /* K12 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20assignments_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), - /* K13 */ be_nested_str_weak(expect_assign), - /* K14 */ be_nested_str_weak(process_value), - /* K15 */ be_nested_str_weak(property), - /* K16 */ be_nested_str_weak(collect_inline_comment), - /* K17 */ be_nested_str_weak(introspect), - /* K18 */ be_nested_str_weak(), - /* K19 */ be_nested_str_weak(animation), - /* K20 */ be_nested_str_weak(animation_X2E_X25s), - /* K21 */ be_nested_str_weak(_X25s_), - /* K22 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s_X2E_X25s_X20_X3D_X20_X25s_X20end), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_nested_str_weak(_X25s_X25s_X2Epush_X28animation_X2Ecreate_assign_step_X28_X25s_X29_X29_X25s), - /* K25 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), - /* K26 */ be_nested_str_weak(skip_statement), - }), - be_str_weak(process_sequence_assignment_generic), - &be_const_str_solidified, - ( &(const binstruction[97]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x8C100101, // 0002 GETMET R4 R0 K1 - 0x7C100200, // 0003 CALL R4 1 - 0x4C140000, // 0004 LDNIL R5 - 0x20100805, // 0005 NE R4 R4 R5 - 0x78120050, // 0006 JMPF R4 #0058 - 0x8C100101, // 0007 GETMET R4 R0 K1 - 0x7C100200, // 0008 CALL R4 1 - 0x88100902, // 0009 GETMBR R4 R4 K2 - 0xB8160600, // 000A GETNGBL R5 K3 - 0x88140B04, // 000B GETMBR R5 R5 K4 - 0x88140B05, // 000C GETMBR R5 R5 K5 - 0x1C100805, // 000D EQ R4 R4 R5 - 0x78120048, // 000E JMPF R4 #0058 - 0x8C100106, // 000F GETMET R4 R0 K6 - 0x7C100200, // 0010 CALL R4 1 - 0x8C100100, // 0011 GETMET R4 R0 K0 - 0x7C100200, // 0012 CALL R4 1 - 0x88140107, // 0013 GETMBR R5 R0 K7 - 0x8C140B08, // 0014 GETMET R5 R5 K8 - 0x5C1C0600, // 0015 MOVE R7 R3 - 0x7C140400, // 0016 CALL R5 2 - 0x78160016, // 0017 JMPF R5 #002F - 0x88140107, // 0018 GETMBR R5 R0 K7 - 0x94140A03, // 0019 GETIDX R5 R5 R3 - 0x60180004, // 001A GETGBL R6 G4 - 0x5C1C0A00, // 001B MOVE R7 R5 - 0x7C180200, // 001C CALL R6 1 - 0x20180D09, // 001D NE R6 R6 K9 - 0x781A0008, // 001E JMPF R6 #0028 - 0x60180005, // 001F GETGBL R6 G5 - 0x5C1C0A00, // 0020 MOVE R7 R5 - 0x7C180200, // 0021 CALL R6 1 - 0x8C1C010A, // 0022 GETMET R7 R0 K10 - 0x5C240C00, // 0023 MOVE R9 R6 - 0x5C280800, // 0024 MOVE R10 R4 - 0x5C2C0A00, // 0025 MOVE R11 R5 - 0x7C1C0800, // 0026 CALL R7 4 - 0x70020006, // 0027 JMP #002F - 0x8C18010B, // 0028 GETMET R6 R0 K11 - 0x60200018, // 0029 GETGBL R8 G24 - 0x5824000C, // 002A LDCONST R9 K12 - 0x5C280600, // 002B MOVE R10 R3 - 0x7C200400, // 002C CALL R8 2 - 0x7C180400, // 002D CALL R6 2 - 0x80000C00, // 002E RET 0 - 0x8C14010D, // 002F GETMET R5 R0 K13 - 0x7C140200, // 0030 CALL R5 1 - 0x8C14010E, // 0031 GETMET R5 R0 K14 - 0x581C000F, // 0032 LDCONST R7 K15 - 0x7C140400, // 0033 CALL R5 2 - 0x8C180110, // 0034 GETMET R6 R0 K16 - 0x7C180200, // 0035 CALL R6 1 - 0xA41E2200, // 0036 IMPORT R7 K17 - 0x58200012, // 0037 LDCONST R8 K18 - 0x8C240F08, // 0038 GETMET R9 R7 K8 - 0xB82E2600, // 0039 GETNGBL R11 K19 - 0x5C300600, // 003A MOVE R12 R3 - 0x7C240600, // 003B CALL R9 3 - 0x78260005, // 003C JMPF R9 #0043 - 0x60240018, // 003D GETGBL R9 G24 - 0x58280014, // 003E LDCONST R10 K20 - 0x5C2C0600, // 003F MOVE R11 R3 - 0x7C240400, // 0040 CALL R9 2 - 0x5C201200, // 0041 MOVE R8 R9 - 0x70020004, // 0042 JMP #0048 - 0x60240018, // 0043 GETGBL R9 G24 - 0x58280015, // 0044 LDCONST R10 K21 - 0x5C2C0600, // 0045 MOVE R11 R3 - 0x7C240400, // 0046 CALL R9 2 - 0x5C201200, // 0047 MOVE R8 R9 - 0x60240018, // 0048 GETGBL R9 G24 - 0x58280016, // 0049 LDCONST R10 K22 - 0x5C2C1000, // 004A MOVE R11 R8 - 0x5C300800, // 004B MOVE R12 R4 - 0x5C340A00, // 004C MOVE R13 R5 - 0x7C240800, // 004D CALL R9 4 - 0x8C280117, // 004E GETMET R10 R0 K23 - 0x60300018, // 004F GETGBL R12 G24 - 0x58340018, // 0050 LDCONST R13 K24 - 0x5C380200, // 0051 MOVE R14 R1 - 0x5C3C0400, // 0052 MOVE R15 R2 - 0x5C401200, // 0053 MOVE R16 R9 - 0x5C440C00, // 0054 MOVE R17 R6 - 0x7C300A00, // 0055 CALL R12 5 - 0x7C280400, // 0056 CALL R10 2 - 0x70020007, // 0057 JMP #0060 - 0x8C10010B, // 0058 GETMET R4 R0 K11 - 0x60180018, // 0059 GETGBL R6 G24 - 0x581C0019, // 005A LDCONST R7 K25 - 0x5C200600, // 005B MOVE R8 R3 - 0x7C180400, // 005C CALL R6 2 - 0x7C100400, // 005D CALL R4 2 - 0x8C10011A, // 005E GETMET R4 R0 K26 - 0x7C100200, // 005F CALL R4 1 - 0x80000000, // 0060 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: convert_to_vrgb -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_to_vrgb, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(format), - /* K3 */ be_nested_str_weak(_X2502X), - /* K4 */ be_nested_str_weak(FFFFFF), - /* K5 */ be_nested_str_weak(startswith), - /* K6 */ be_nested_str_weak(0x), - /* K7 */ be_const_int(2), - }), - be_str_weak(convert_to_vrgb), - &be_const_str_solidified, - ( &(const binstruction[54]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x60100009, // 0001 GETGBL R4 G9 - 0x6014000A, // 0002 GETGBL R5 G10 - 0x5C180200, // 0003 MOVE R6 R1 - 0x7C140200, // 0004 CALL R5 1 - 0x7C100200, // 0005 CALL R4 1 - 0x14140901, // 0006 LT R5 R4 K1 - 0x78160001, // 0007 JMPF R5 #000A - 0x58100001, // 0008 LDCONST R4 K1 - 0x70020003, // 0009 JMP #000E - 0x541600FE, // 000A LDINT R5 255 - 0x24140805, // 000B GT R5 R4 R5 - 0x78160000, // 000C JMPF R5 #000E - 0x541200FE, // 000D LDINT R4 255 - 0x8C140702, // 000E GETMET R5 R3 K2 - 0x581C0003, // 000F LDCONST R7 K3 - 0x5C200800, // 0010 MOVE R8 R4 - 0x7C140600, // 0011 CALL R5 3 - 0x60180008, // 0012 GETGBL R6 G8 - 0x5C1C0400, // 0013 MOVE R7 R2 - 0x7C180200, // 0014 CALL R6 1 - 0x581C0004, // 0015 LDCONST R7 K4 - 0x8C200705, // 0016 GETMET R8 R3 K5 - 0x5C280C00, // 0017 MOVE R10 R6 - 0x582C0006, // 0018 LDCONST R11 K6 - 0x7C200600, // 0019 CALL R8 3 - 0x7822000A, // 001A JMPF R8 #0026 - 0x6020000C, // 001B GETGBL R8 G12 - 0x5C240C00, // 001C MOVE R9 R6 - 0x7C200200, // 001D CALL R8 1 - 0x54260009, // 001E LDINT R9 10 - 0x28201009, // 001F GE R8 R8 R9 - 0x78220004, // 0020 JMPF R8 #0026 - 0x54220003, // 0021 LDINT R8 4 - 0x54260008, // 0022 LDINT R9 9 - 0x40201009, // 0023 CONNECT R8 R8 R9 - 0x941C0C08, // 0024 GETIDX R7 R6 R8 - 0x7002000D, // 0025 JMP #0034 - 0x8C200705, // 0026 GETMET R8 R3 K5 - 0x5C280C00, // 0027 MOVE R10 R6 - 0x582C0006, // 0028 LDCONST R11 K6 - 0x7C200600, // 0029 CALL R8 3 - 0x78220008, // 002A JMPF R8 #0034 - 0x6020000C, // 002B GETGBL R8 G12 - 0x5C240C00, // 002C MOVE R9 R6 - 0x7C200200, // 002D CALL R8 1 - 0x54260007, // 002E LDINT R9 8 - 0x1C201009, // 002F EQ R8 R8 R9 - 0x78220002, // 0030 JMPF R8 #0034 - 0x54220006, // 0031 LDINT R8 7 - 0x40220E08, // 0032 CONNECT R8 K7 R8 - 0x941C0C08, // 0033 GETIDX R7 R6 R8 - 0x00200A07, // 0034 ADD R8 R5 R7 - 0x80041000, // 0035 RET 1 R8 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: error -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_error, /* name */ - be_nested_proto( - 9, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(line), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(errors), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_nested_str_weak(Line_X20_X25s_X3A_X20_X25s), - }), - be_str_weak(error), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x20080403, // 0003 NE R2 R2 R3 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080100, // 0005 GETMET R2 R0 K0 - 0x7C080200, // 0006 CALL R2 1 - 0x88080501, // 0007 GETMBR R2 R2 K1 - 0x70020000, // 0008 JMP #000A - 0x58080002, // 0009 LDCONST R2 K2 - 0x880C0103, // 000A GETMBR R3 R0 K3 - 0x8C0C0704, // 000B GETMET R3 R3 K4 - 0x60140018, // 000C GETGBL R5 G24 - 0x58180005, // 000D LDCONST R6 K5 - 0x5C1C0400, // 000E MOVE R7 R2 - 0x5C200200, // 000F MOVE R8 R1 - 0x7C140600, // 0010 CALL R5 3 - 0x7C0C0400, // 0011 CALL R3 2 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_property_assignment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_property_assignment, /* name */ - be_nested_proto( - 15, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[37]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_identifier), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(LEFT_PAREN), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(process_function_arguments), - /* K8 */ be_nested_str_weak(collect_inline_comment), - /* K9 */ be_nested_str_weak(process_log_call), - /* K10 */ be_nested_str_weak(standalone), - /* K11 */ be_nested_str_weak(add), - /* K12 */ be_nested_str_weak(template_definitions), - /* K13 */ be_nested_str_weak(contains), - /* K14 */ be_nested_str_weak(), - /* K15 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K16 */ be_nested_str_weak(engine), - /* K17 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), - /* K18 */ be_nested_str_weak(has_template_calls), - /* K19 */ be_nested_str_weak(error), - /* K20 */ be_nested_str_weak(Standalone_X20function_X20calls_X20are_X20only_X20supported_X20for_X20templates_X2E_X20_X27_X25s_X27_X20is_X20not_X20a_X20template_X2E), - /* K21 */ be_nested_str_weak(skip_statement), - /* K22 */ be_nested_str_weak(DOT), - /* K23 */ be_nested_str_weak(next), - /* K24 */ be_nested_str_weak(symbol_table), - /* K25 */ be_nested_str_weak(string), - /* K26 */ be_nested_str_weak(_validate_single_parameter), - /* K27 */ be_nested_str_weak(Sequences_X20like_X20_X27_X25s_X27_X20do_X20not_X20have_X20properties_X2E_X20Property_X20assignments_X20are_X20only_X20valid_X20for_X20animations_X20and_X20color_X20providers_X2E), - /* K28 */ be_nested_str_weak(expect_assign), - /* K29 */ be_nested_str_weak(process_value), - /* K30 */ be_nested_str_weak(property), - /* K31 */ be_nested_str_weak(introspect), - /* K32 */ be_nested_str_weak(animation), - /* K33 */ be_nested_str_weak(animation_X2E_X25s), - /* K34 */ be_nested_str_weak(_X25s_), - /* K35 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K36 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), - }), - be_str_weak(process_property_assignment), - &be_const_str_solidified, - ( &(const binstruction[155]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x4C0C0000, // 0004 LDNIL R3 - 0x20080403, // 0005 NE R2 R2 R3 - 0x780A003B, // 0006 JMPF R2 #0043 - 0x8C080101, // 0007 GETMET R2 R0 K1 - 0x7C080200, // 0008 CALL R2 1 - 0x88080502, // 0009 GETMBR R2 R2 K2 - 0xB80E0600, // 000A GETNGBL R3 K3 - 0x880C0704, // 000B GETMBR R3 R3 K4 - 0x880C0705, // 000C GETMBR R3 R3 K5 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x780A0033, // 000E JMPF R2 #0043 - 0x1C080306, // 000F EQ R2 R1 K6 - 0x780A000C, // 0010 JMPF R2 #001E - 0x8C080107, // 0011 GETMET R2 R0 K7 - 0x7C080200, // 0012 CALL R2 1 - 0x8C0C0108, // 0013 GETMET R3 R0 K8 - 0x7C0C0200, // 0014 CALL R3 1 - 0x8C100109, // 0015 GETMET R4 R0 K9 - 0x5C180400, // 0016 MOVE R6 R2 - 0x581C000A, // 0017 LDCONST R7 K10 - 0x5C200600, // 0018 MOVE R8 R3 - 0x7C100800, // 0019 CALL R4 4 - 0x8C14010B, // 001A GETMET R5 R0 K11 - 0x5C1C0800, // 001B MOVE R7 R4 - 0x7C140400, // 001C CALL R5 2 - 0x80000A00, // 001D RET 0 - 0x8808010C, // 001E GETMBR R2 R0 K12 - 0x8C08050D, // 001F GETMET R2 R2 K13 - 0x5C100200, // 0020 MOVE R4 R1 - 0x7C080400, // 0021 CALL R2 2 - 0x780A0016, // 0022 JMPF R2 #003A - 0x8C080107, // 0023 GETMET R2 R0 K7 - 0x7C080200, // 0024 CALL R2 1 - 0x200C050E, // 0025 NE R3 R2 K14 - 0x780E0004, // 0026 JMPF R3 #002C - 0x600C0018, // 0027 GETGBL R3 G24 - 0x5810000F, // 0028 LDCONST R4 K15 - 0x5C140400, // 0029 MOVE R5 R2 - 0x7C0C0400, // 002A CALL R3 2 - 0x70020000, // 002B JMP #002D - 0x580C0010, // 002C LDCONST R3 K16 - 0x8C100108, // 002D GETMET R4 R0 K8 - 0x7C100200, // 002E CALL R4 1 - 0x8C14010B, // 002F GETMET R5 R0 K11 - 0x601C0018, // 0030 GETGBL R7 G24 - 0x58200011, // 0031 LDCONST R8 K17 - 0x5C240200, // 0032 MOVE R9 R1 - 0x5C280600, // 0033 MOVE R10 R3 - 0x5C2C0800, // 0034 MOVE R11 R4 - 0x7C1C0800, // 0035 CALL R7 4 - 0x7C140400, // 0036 CALL R5 2 - 0x50140200, // 0037 LDBOOL R5 1 0 - 0x90022405, // 0038 SETMBR R0 K18 R5 - 0x70020007, // 0039 JMP #0042 - 0x8C080113, // 003A GETMET R2 R0 K19 - 0x60100018, // 003B GETGBL R4 G24 - 0x58140014, // 003C LDCONST R5 K20 - 0x5C180200, // 003D MOVE R6 R1 - 0x7C100400, // 003E CALL R4 2 - 0x7C080400, // 003F CALL R2 2 - 0x8C080115, // 0040 GETMET R2 R0 K21 - 0x7C080200, // 0041 CALL R2 1 - 0x80000400, // 0042 RET 0 - 0x8C080101, // 0043 GETMET R2 R0 K1 - 0x7C080200, // 0044 CALL R2 1 - 0x4C0C0000, // 0045 LDNIL R3 - 0x20080403, // 0046 NE R2 R2 R3 - 0x780A0049, // 0047 JMPF R2 #0092 - 0x8C080101, // 0048 GETMET R2 R0 K1 - 0x7C080200, // 0049 CALL R2 1 - 0x88080502, // 004A GETMBR R2 R2 K2 - 0xB80E0600, // 004B GETNGBL R3 K3 - 0x880C0704, // 004C GETMBR R3 R3 K4 - 0x880C0716, // 004D GETMBR R3 R3 K22 - 0x1C080403, // 004E EQ R2 R2 R3 - 0x780A0041, // 004F JMPF R2 #0092 - 0x8C080117, // 0050 GETMET R2 R0 K23 - 0x7C080200, // 0051 CALL R2 1 - 0x8C080100, // 0052 GETMET R2 R0 K0 - 0x7C080200, // 0053 CALL R2 1 - 0x880C0118, // 0054 GETMBR R3 R0 K24 - 0x8C0C070D, // 0055 GETMET R3 R3 K13 - 0x5C140200, // 0056 MOVE R5 R1 - 0x7C0C0400, // 0057 CALL R3 2 - 0x780E0015, // 0058 JMPF R3 #006F - 0x880C0118, // 0059 GETMBR R3 R0 K24 - 0x940C0601, // 005A GETIDX R3 R3 R1 - 0x60100004, // 005B GETGBL R4 G4 - 0x5C140600, // 005C MOVE R5 R3 - 0x7C100200, // 005D CALL R4 1 - 0x20100919, // 005E NE R4 R4 K25 - 0x78120008, // 005F JMPF R4 #0069 - 0x60100005, // 0060 GETGBL R4 G5 - 0x5C140600, // 0061 MOVE R5 R3 - 0x7C100200, // 0062 CALL R4 1 - 0x8C14011A, // 0063 GETMET R5 R0 K26 - 0x5C1C0800, // 0064 MOVE R7 R4 - 0x5C200400, // 0065 MOVE R8 R2 - 0x5C240600, // 0066 MOVE R9 R3 - 0x7C140800, // 0067 CALL R5 4 - 0x70020005, // 0068 JMP #006F - 0x8C100113, // 0069 GETMET R4 R0 K19 - 0x60180018, // 006A GETGBL R6 G24 - 0x581C001B, // 006B LDCONST R7 K27 - 0x5C200200, // 006C MOVE R8 R1 - 0x7C180400, // 006D CALL R6 2 - 0x7C100400, // 006E CALL R4 2 - 0x8C0C011C, // 006F GETMET R3 R0 K28 - 0x7C0C0200, // 0070 CALL R3 1 - 0x8C0C011D, // 0071 GETMET R3 R0 K29 - 0x5814001E, // 0072 LDCONST R5 K30 - 0x7C0C0400, // 0073 CALL R3 2 - 0x8C100108, // 0074 GETMET R4 R0 K8 - 0x7C100200, // 0075 CALL R4 1 - 0xA4163E00, // 0076 IMPORT R5 K31 - 0x5818000E, // 0077 LDCONST R6 K14 - 0x8C1C0B0D, // 0078 GETMET R7 R5 K13 - 0xB8264000, // 0079 GETNGBL R9 K32 - 0x5C280200, // 007A MOVE R10 R1 - 0x7C1C0600, // 007B CALL R7 3 - 0x781E0005, // 007C JMPF R7 #0083 - 0x601C0018, // 007D GETGBL R7 G24 - 0x58200021, // 007E LDCONST R8 K33 - 0x5C240200, // 007F MOVE R9 R1 - 0x7C1C0400, // 0080 CALL R7 2 - 0x5C180E00, // 0081 MOVE R6 R7 - 0x70020004, // 0082 JMP #0088 - 0x601C0018, // 0083 GETGBL R7 G24 - 0x58200022, // 0084 LDCONST R8 K34 - 0x5C240200, // 0085 MOVE R9 R1 - 0x7C1C0400, // 0086 CALL R7 2 - 0x5C180E00, // 0087 MOVE R6 R7 - 0x8C1C010B, // 0088 GETMET R7 R0 K11 - 0x60240018, // 0089 GETGBL R9 G24 - 0x58280023, // 008A LDCONST R10 K35 - 0x5C2C0C00, // 008B MOVE R11 R6 - 0x5C300400, // 008C MOVE R12 R2 - 0x5C340600, // 008D MOVE R13 R3 - 0x5C380800, // 008E MOVE R14 R4 - 0x7C240A00, // 008F CALL R9 5 - 0x7C1C0400, // 0090 CALL R7 2 - 0x70020007, // 0091 JMP #009A - 0x8C080113, // 0092 GETMET R2 R0 K19 - 0x60100018, // 0093 GETGBL R4 G24 - 0x58140024, // 0094 LDCONST R5 K36 - 0x5C180200, // 0095 MOVE R6 R1 - 0x7C100400, // 0096 CALL R4 2 - 0x7C080400, // 0097 CALL R2 2 - 0x8C080115, // 0098 GETMET R2 R0 K21 - 0x7C080200, // 0099 CALL R2 1 - 0x80000000, // 009A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_errors -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(errors), - }), - be_str_weak(get_errors), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_multiplicative_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(process_unary_expression), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(MULTIPLY), - /* K7 */ be_nested_str_weak(DIVIDE), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(_X25s_X20_X25s_X20_X25s), - }), - be_str_weak(process_multiplicative_expression), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ + ( &(const binstruction[ 6]) { /* code */ 0x8C0C0100, // 0000 GETMET R3 R0 K0 0x5C140200, // 0001 MOVE R5 R1 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 - 0x8C100101, // 0004 GETMET R4 R0 K1 - 0x7C100200, // 0005 CALL R4 1 - 0x74120021, // 0006 JMPT R4 #0029 - 0x8C100102, // 0007 GETMET R4 R0 K2 - 0x7C100200, // 0008 CALL R4 1 - 0x4C140000, // 0009 LDNIL R5 - 0x20140805, // 000A NE R5 R4 R5 - 0x7816001A, // 000B JMPF R5 #0027 - 0x88140903, // 000C GETMBR R5 R4 K3 - 0xB81A0800, // 000D GETNGBL R6 K4 - 0x88180D05, // 000E GETMBR R6 R6 K5 - 0x88180D06, // 000F GETMBR R6 R6 K6 - 0x1C140A06, // 0010 EQ R5 R5 R6 - 0x74160005, // 0011 JMPT R5 #0018 - 0x88140903, // 0012 GETMBR R5 R4 K3 - 0xB81A0800, // 0013 GETNGBL R6 K4 - 0x88180D05, // 0014 GETMBR R6 R6 K5 - 0x88180D07, // 0015 GETMBR R6 R6 K7 - 0x1C140A06, // 0016 EQ R5 R5 R6 - 0x7816000E, // 0017 JMPF R5 #0027 - 0x88140908, // 0018 GETMBR R5 R4 K8 - 0x8C180109, // 0019 GETMET R6 R0 K9 - 0x7C180200, // 001A CALL R6 1 - 0x8C180100, // 001B GETMET R6 R0 K0 - 0x5C200200, // 001C MOVE R8 R1 - 0x50240000, // 001D LDBOOL R9 0 0 - 0x7C180600, // 001E CALL R6 3 - 0x601C0018, // 001F GETGBL R7 G24 - 0x5820000A, // 0020 LDCONST R8 K10 - 0x5C240600, // 0021 MOVE R9 R3 - 0x5C280A00, // 0022 MOVE R10 R5 - 0x5C2C0C00, // 0023 MOVE R11 R6 - 0x7C1C0800, // 0024 CALL R7 4 - 0x5C0C0E00, // 0025 MOVE R3 R7 - 0x70020000, // 0026 JMP #0028 - 0x70020000, // 0027 JMP #0029 - 0x7001FFDA, // 0028 JMP #0004 - 0x80040600, // 0029 RET 1 R3 + 0x581C0001, // 0003 LDCONST R7 K1 + 0x7C0C0800, // 0004 CALL R3 4 + 0x80000000, // 0005 RET 0 }) ) ); @@ -10609,11 +11662,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /******************************************************************** -** Solidified function: process_time_value +** Solidified function: current ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ +be_local_closure(class_SimpleDSLTranspiler_current, /* name */ be_nested_proto( - 7, /* nstack */ + 4, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -10621,1308 +11674,25 @@ be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(TIME), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(convert_time_to_ms), - /* K8 */ be_nested_str_weak(NUMBER), - /* K9 */ be_nested_str_weak(IDENTIFIER), - /* K10 */ be_nested_str_weak(_validate_object_reference), - /* K11 */ be_nested_str_weak(duration), - /* K12 */ be_nested_str_weak(process_primary_expression), - /* K13 */ be_nested_str_weak(time), - /* K14 */ be_nested_str_weak(error), - /* K15 */ be_nested_str_weak(Expected_X20time_X20value), - }), - be_str_weak(process_time_value), - &be_const_str_solidified, - ( &(const binstruction[66]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A000D, // 0004 JMPF R2 #0013 - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0007, // 000A JMPF R2 #0013 - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x8C0C0107, // 000E GETMET R3 R0 K7 - 0x5C140400, // 000F MOVE R5 R2 - 0x7C0C0400, // 0010 CALL R3 2 - 0x80040600, // 0011 RET 1 R3 - 0x7002002D, // 0012 JMP #0041 - 0x4C080000, // 0013 LDNIL R2 - 0x20080202, // 0014 NE R2 R1 R2 - 0x780A0011, // 0015 JMPF R2 #0028 - 0x88080301, // 0016 GETMBR R2 R1 K1 - 0xB80E0400, // 0017 GETNGBL R3 K2 - 0x880C0703, // 0018 GETMBR R3 R3 K3 - 0x880C0708, // 0019 GETMBR R3 R3 K8 - 0x1C080403, // 001A EQ R2 R2 R3 - 0x780A000B, // 001B JMPF R2 #0028 - 0x88080305, // 001C GETMBR R2 R1 K5 - 0x8C0C0106, // 001D GETMET R3 R0 K6 - 0x7C0C0200, // 001E CALL R3 1 - 0x600C0009, // 001F GETGBL R3 G9 - 0x6010000A, // 0020 GETGBL R4 G10 - 0x5C140400, // 0021 MOVE R5 R2 - 0x7C100200, // 0022 CALL R4 1 - 0x7C0C0200, // 0023 CALL R3 1 - 0x541203E7, // 0024 LDINT R4 1000 - 0x080C0604, // 0025 MUL R3 R3 R4 - 0x80040600, // 0026 RET 1 R3 - 0x70020018, // 0027 JMP #0041 - 0x4C080000, // 0028 LDNIL R2 - 0x20080202, // 0029 NE R2 R1 R2 - 0x780A0010, // 002A JMPF R2 #003C - 0x88080301, // 002B GETMBR R2 R1 K1 - 0xB80E0400, // 002C GETNGBL R3 K2 - 0x880C0703, // 002D GETMBR R3 R3 K3 - 0x880C0709, // 002E GETMBR R3 R3 K9 - 0x1C080403, // 002F EQ R2 R2 R3 - 0x780A000A, // 0030 JMPF R2 #003C - 0x88080305, // 0031 GETMBR R2 R1 K5 - 0x8C0C010A, // 0032 GETMET R3 R0 K10 - 0x5C140400, // 0033 MOVE R5 R2 - 0x5818000B, // 0034 LDCONST R6 K11 - 0x7C0C0600, // 0035 CALL R3 3 - 0x8C0C010C, // 0036 GETMET R3 R0 K12 - 0x5814000D, // 0037 LDCONST R5 K13 - 0x50180200, // 0038 LDBOOL R6 1 0 - 0x7C0C0600, // 0039 CALL R3 3 - 0x80040600, // 003A RET 1 R3 - 0x70020004, // 003B JMP #0041 - 0x8C08010E, // 003C GETMET R2 R0 K14 - 0x5810000F, // 003D LDCONST R4 K15 - 0x7C080400, // 003E CALL R2 2 - 0x540A03E7, // 003F LDINT R2 1000 - 0x80040400, // 0040 RET 1 R2 - 0x80000000, // 0041 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_assignment -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(process_sequence_assignment_generic), - /* K1 */ be_nested_str_weak(steps), + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_nested_str_weak(tokens), }), - be_str_weak(process_sequence_assignment), + be_str_weak(current), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x58140001, // 0002 LDCONST R5 K1 - 0x7C080600, // 0003 CALL R2 3 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transform_expression_for_closure -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transform_expression_for_closure, /* name */ - be_nested_proto( - 16, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(find), - /* K3 */ be_nested_str_weak(_X28), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(is_identifier_char), - /* K6 */ be_nested_str_weak(is_math_method), - /* K7 */ be_nested_str_weak(self_X2E), - /* K8 */ be_nested_str_weak(), - /* K9 */ be_const_int(2147483647), - /* K10 */ be_nested_str_weak(_), - /* K11 */ be_nested_str_weak(self_X2Eresolve_X28), - /* K12 */ be_nested_str_weak(animation_X2E), - /* K13 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X29), - }), - be_str_weak(transform_expression_for_closure), - &be_const_str_solidified, - ( &(const binstruction[223]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x58100001, // 0002 LDCONST R4 K1 - 0x58140001, // 0003 LDCONST R5 K1 - 0x50180200, // 0004 LDBOOL R6 1 0 - 0x781A0047, // 0005 JMPF R6 #004E - 0x8C180502, // 0006 GETMET R6 R2 K2 - 0x5C200600, // 0007 MOVE R8 R3 - 0x58240003, // 0008 LDCONST R9 K3 - 0x5C280A00, // 0009 MOVE R10 R5 - 0x7C180800, // 000A CALL R6 4 - 0x141C0D01, // 000B LT R7 R6 K1 - 0x781E0000, // 000C JMPF R7 #000E - 0x7002003F, // 000D JMP #004E - 0x041C0D04, // 000E SUB R7 R6 K4 - 0x28200F01, // 000F GE R8 R7 K1 - 0x78220005, // 0010 JMPF R8 #0017 - 0x8C200105, // 0011 GETMET R8 R0 K5 - 0x94280607, // 0012 GETIDX R10 R3 R7 - 0x7C200400, // 0013 CALL R8 2 - 0x78220001, // 0014 JMPF R8 #0017 - 0x041C0F04, // 0015 SUB R7 R7 K4 - 0x7001FFF7, // 0016 JMP #000F - 0x001C0F04, // 0017 ADD R7 R7 K4 - 0x14200E06, // 0018 LT R8 R7 R6 - 0x78220030, // 0019 JMPF R8 #004B - 0x04200D04, // 001A SUB R8 R6 K4 - 0x40200E08, // 001B CONNECT R8 R7 R8 - 0x94200608, // 001C GETIDX R8 R3 R8 - 0x8C240106, // 001D GETMET R9 R0 K6 - 0x5C2C1000, // 001E MOVE R11 R8 - 0x7C240400, // 001F CALL R9 2 - 0x78260026, // 0020 JMPF R9 #0048 - 0x54260004, // 0021 LDINT R9 5 - 0x28240E09, // 0022 GE R9 R7 R9 - 0x78260002, // 0023 JMPF R9 #0027 - 0x54260004, // 0024 LDINT R9 5 - 0x04240E09, // 0025 SUB R9 R7 R9 - 0x70020000, // 0026 JMP #0028 - 0x58240001, // 0027 LDCONST R9 K1 - 0x04280F04, // 0028 SUB R10 R7 K4 - 0x4028120A, // 0029 CONNECT R10 R9 R10 - 0x9428060A, // 002A GETIDX R10 R3 R10 - 0x8C2C0502, // 002B GETMET R11 R2 K2 - 0x5C341400, // 002C MOVE R13 R10 - 0x58380007, // 002D LDCONST R14 K7 - 0x7C2C0600, // 002E CALL R11 3 - 0x142C1701, // 002F LT R11 R11 K1 - 0x782E0013, // 0030 JMPF R11 #0045 - 0x242C0F01, // 0031 GT R11 R7 K1 - 0x782E0003, // 0032 JMPF R11 #0037 - 0x042C0F04, // 0033 SUB R11 R7 K4 - 0x402E020B, // 0034 CONNECT R11 K1 R11 - 0x942C060B, // 0035 GETIDX R11 R3 R11 - 0x70020000, // 0036 JMP #0038 - 0x582C0008, // 0037 LDCONST R11 K8 - 0x40300F09, // 0038 CONNECT R12 R7 K9 - 0x9430060C, // 0039 GETIDX R12 R3 R12 - 0x00341707, // 003A ADD R13 R11 K7 - 0x00341A0C, // 003B ADD R13 R13 R12 - 0x5C0C1A00, // 003C MOVE R3 R13 - 0x54360004, // 003D LDINT R13 5 - 0x00340E0D, // 003E ADD R13 R7 R13 - 0x6038000C, // 003F GETGBL R14 G12 - 0x5C3C1000, // 0040 MOVE R15 R8 - 0x7C380200, // 0041 CALL R14 1 - 0x00341A0E, // 0042 ADD R13 R13 R14 - 0x5C141A00, // 0043 MOVE R5 R13 - 0x70020001, // 0044 JMP #0047 - 0x002C0D04, // 0045 ADD R11 R6 K4 - 0x5C141600, // 0046 MOVE R5 R11 - 0x70020001, // 0047 JMP #004A - 0x00240D04, // 0048 ADD R9 R6 K4 - 0x5C141200, // 0049 MOVE R5 R9 - 0x70020001, // 004A JMP #004D - 0x00200D04, // 004B ADD R8 R6 K4 - 0x5C141000, // 004C MOVE R5 R8 - 0x7001FFB5, // 004D JMP #0004 - 0x58100001, // 004E LDCONST R4 K1 - 0x6018000C, // 004F GETGBL R6 G12 - 0x5C1C0600, // 0050 MOVE R7 R3 - 0x7C180200, // 0051 CALL R6 1 - 0x14180806, // 0052 LT R6 R4 R6 - 0x781A0089, // 0053 JMPF R6 #00DE - 0x8C180502, // 0054 GETMET R6 R2 K2 - 0x5C200600, // 0055 MOVE R8 R3 - 0x5824000A, // 0056 LDCONST R9 K10 - 0x5C280800, // 0057 MOVE R10 R4 - 0x7C180800, // 0058 CALL R6 4 - 0x141C0D01, // 0059 LT R7 R6 K1 - 0x781E0000, // 005A JMPF R7 #005C - 0x70020081, // 005B JMP #00DE - 0x5C1C0C00, // 005C MOVE R7 R6 - 0x24200F01, // 005D GT R8 R7 K1 - 0x78220006, // 005E JMPF R8 #0066 - 0x8C200105, // 005F GETMET R8 R0 K5 - 0x04280F04, // 0060 SUB R10 R7 K4 - 0x9428060A, // 0061 GETIDX R10 R3 R10 - 0x7C200400, // 0062 CALL R8 2 - 0x78220001, // 0063 JMPF R8 #0066 - 0x041C0F04, // 0064 SUB R7 R7 K4 - 0x7001FFF6, // 0065 JMP #005D - 0x50200200, // 0066 LDBOOL R8 1 0 - 0x5426000C, // 0067 LDINT R9 13 - 0x28240E09, // 0068 GE R9 R7 R9 - 0x78260010, // 0069 JMPF R9 #007B - 0x5426000C, // 006A LDINT R9 13 - 0x28240E09, // 006B GE R9 R7 R9 - 0x78260002, // 006C JMPF R9 #0070 - 0x5426000C, // 006D LDINT R9 13 - 0x04240E09, // 006E SUB R9 R7 R9 - 0x70020000, // 006F JMP #0071 - 0x58240001, // 0070 LDCONST R9 K1 - 0x04280F04, // 0071 SUB R10 R7 K4 - 0x4028120A, // 0072 CONNECT R10 R9 R10 - 0x9428060A, // 0073 GETIDX R10 R3 R10 - 0x8C2C0502, // 0074 GETMET R11 R2 K2 - 0x5C341400, // 0075 MOVE R13 R10 - 0x5838000B, // 0076 LDCONST R14 K11 - 0x7C2C0600, // 0077 CALL R11 3 - 0x282C1701, // 0078 GE R11 R11 K1 - 0x782E0000, // 0079 JMPF R11 #007B - 0x50200000, // 007A LDBOOL R8 0 0 - 0x7822001A, // 007B JMPF R8 #0097 - 0x54260009, // 007C LDINT R9 10 - 0x28240E09, // 007D GE R9 R7 R9 - 0x78260017, // 007E JMPF R9 #0097 - 0x54260009, // 007F LDINT R9 10 - 0x28240E09, // 0080 GE R9 R7 R9 - 0x78260002, // 0081 JMPF R9 #0085 - 0x54260009, // 0082 LDINT R9 10 - 0x04240E09, // 0083 SUB R9 R7 R9 - 0x70020000, // 0084 JMP #0086 - 0x58240001, // 0085 LDCONST R9 K1 - 0x04280F04, // 0086 SUB R10 R7 K4 - 0x4028120A, // 0087 CONNECT R10 R9 R10 - 0x9428060A, // 0088 GETIDX R10 R3 R10 - 0x8C2C0502, // 0089 GETMET R11 R2 K2 - 0x5C341400, // 008A MOVE R13 R10 - 0x5838000C, // 008B LDCONST R14 K12 - 0x7C2C0600, // 008C CALL R11 3 - 0x282C1701, // 008D GE R11 R11 K1 - 0x742E0005, // 008E JMPT R11 #0095 - 0x8C2C0502, // 008F GETMET R11 R2 K2 - 0x5C341400, // 0090 MOVE R13 R10 - 0x58380007, // 0091 LDCONST R14 K7 - 0x7C2C0600, // 0092 CALL R11 3 - 0x282C1701, // 0093 GE R11 R11 K1 - 0x782E0000, // 0094 JMPF R11 #0096 - 0x50200000, // 0095 LDBOOL R8 0 0 - 0x70020014, // 0096 JMP #00AC - 0x78220013, // 0097 JMPF R8 #00AC - 0x54260004, // 0098 LDINT R9 5 - 0x28240E09, // 0099 GE R9 R7 R9 - 0x78260010, // 009A JMPF R9 #00AC - 0x54260004, // 009B LDINT R9 5 - 0x28240E09, // 009C GE R9 R7 R9 - 0x78260002, // 009D JMPF R9 #00A1 - 0x54260004, // 009E LDINT R9 5 - 0x04240E09, // 009F SUB R9 R7 R9 - 0x70020000, // 00A0 JMP #00A2 - 0x58240001, // 00A1 LDCONST R9 K1 - 0x04280F04, // 00A2 SUB R10 R7 K4 - 0x4028120A, // 00A3 CONNECT R10 R9 R10 - 0x9428060A, // 00A4 GETIDX R10 R3 R10 - 0x8C2C0502, // 00A5 GETMET R11 R2 K2 - 0x5C341400, // 00A6 MOVE R13 R10 - 0x58380007, // 00A7 LDCONST R14 K7 - 0x7C2C0600, // 00A8 CALL R11 3 - 0x282C1701, // 00A9 GE R11 R11 K1 - 0x782E0000, // 00AA JMPF R11 #00AC - 0x50200000, // 00AB LDBOOL R8 0 0 - 0x7822002D, // 00AC JMPF R8 #00DB - 0x14240E06, // 00AD LT R9 R7 R6 - 0x7826002B, // 00AE JMPF R9 #00DB - 0x40240E06, // 00AF CONNECT R9 R7 R6 - 0x94240609, // 00B0 GETIDX R9 R3 R9 - 0x00280D04, // 00B1 ADD R10 R6 K4 - 0x602C000C, // 00B2 GETGBL R11 G12 - 0x5C300600, // 00B3 MOVE R12 R3 - 0x7C2C0200, // 00B4 CALL R11 1 - 0x282C140B, // 00B5 GE R11 R10 R11 - 0x742E0003, // 00B6 JMPT R11 #00BB - 0x8C2C0105, // 00B7 GETMET R11 R0 K5 - 0x9434060A, // 00B8 GETIDX R13 R3 R10 - 0x7C2C0400, // 00B9 CALL R11 2 - 0x742E001C, // 00BA JMPT R11 #00D8 - 0x602C0018, // 00BB GETGBL R11 G24 - 0x5830000D, // 00BC LDCONST R12 K13 - 0x5C341200, // 00BD MOVE R13 R9 - 0x7C2C0400, // 00BE CALL R11 2 - 0x24300F01, // 00BF GT R12 R7 K1 - 0x78320003, // 00C0 JMPF R12 #00C5 - 0x04300F04, // 00C1 SUB R12 R7 K4 - 0x4032020C, // 00C2 CONNECT R12 K1 R12 - 0x9430060C, // 00C3 GETIDX R12 R3 R12 - 0x70020000, // 00C4 JMP #00C6 - 0x58300008, // 00C5 LDCONST R12 K8 - 0x6034000C, // 00C6 GETGBL R13 G12 - 0x5C380600, // 00C7 MOVE R14 R3 - 0x7C340200, // 00C8 CALL R13 1 - 0x1434140D, // 00C9 LT R13 R10 R13 - 0x78360002, // 00CA JMPF R13 #00CE - 0x40341509, // 00CB CONNECT R13 R10 K9 - 0x9434060D, // 00CC GETIDX R13 R3 R13 - 0x70020000, // 00CD JMP #00CF - 0x58340008, // 00CE LDCONST R13 K8 - 0x0038180B, // 00CF ADD R14 R12 R11 - 0x00381C0D, // 00D0 ADD R14 R14 R13 - 0x5C0C1C00, // 00D1 MOVE R3 R14 - 0x6038000C, // 00D2 GETGBL R14 G12 - 0x5C3C1600, // 00D3 MOVE R15 R11 - 0x7C380200, // 00D4 CALL R14 1 - 0x00380E0E, // 00D5 ADD R14 R7 R14 - 0x5C101C00, // 00D6 MOVE R4 R14 - 0x70020001, // 00D7 JMP #00DA - 0x002C0D04, // 00D8 ADD R11 R6 K4 - 0x5C101600, // 00D9 MOVE R4 R11 - 0x70020001, // 00DA JMP #00DD - 0x00240D04, // 00DB ADD R9 R6 K4 - 0x5C101200, // 00DC MOVE R4 R9 - 0x7001FF70, // 00DD JMP #004F - 0x80040600, // 00DE RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_sequence_assignment_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent, /* name */ - be_nested_proto( - 13, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_identifier), - /* K1 */ be_nested_str_weak(expect_dot), - /* K2 */ be_nested_str_weak(expect_assign), - /* K3 */ be_nested_str_weak(process_value), - /* K4 */ be_nested_str_weak(property), - /* K5 */ be_nested_str_weak(collect_inline_comment), - /* K6 */ be_nested_str_weak(def_X20_X28engine_X29_X20_X25s__X2E_X25s_X20_X3D_X20_X25s_X20end), - /* K7 */ be_nested_str_weak(add), - /* K8 */ be_nested_str_weak(_X25s_X2Epush_closure_step_X28_X25s_X29_X25s), - /* K9 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_sequence_assignment_fluent), - &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x8C080100, // 0004 GETMET R2 R0 K0 - 0x7C080200, // 0005 CALL R2 1 - 0x8C0C0102, // 0006 GETMET R3 R0 K2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x8C0C0103, // 0008 GETMET R3 R0 K3 - 0x58140004, // 0009 LDCONST R5 K4 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C100105, // 000B GETMET R4 R0 K5 - 0x7C100200, // 000C CALL R4 1 - 0x60140018, // 000D GETGBL R5 G24 - 0x58180006, // 000E LDCONST R6 K6 - 0x5C1C0200, // 000F MOVE R7 R1 - 0x5C200400, // 0010 MOVE R8 R2 - 0x5C240600, // 0011 MOVE R9 R3 - 0x7C140800, // 0012 CALL R5 4 - 0x8C180107, // 0013 GETMET R6 R0 K7 - 0x60200018, // 0014 GETGBL R8 G24 - 0x58240008, // 0015 LDCONST R9 K8 - 0x8C280109, // 0016 GETMET R10 R0 K9 - 0x7C280200, // 0017 CALL R10 1 - 0x5C2C0A00, // 0018 MOVE R11 R5 - 0x5C300800, // 0019 MOVE R12 R4 - 0x7C200800, // 001A CALL R8 4 - 0x7C180400, // 001B CALL R6 2 - 0x80000000, // 001C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(process_additive_expression), - }), - be_str_weak(process_value), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x50140200, // 0002 LDBOOL R5 1 0 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_log_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_log_statement_fluent, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_left_paren), - /* K2 */ be_nested_str_weak(current), - /* K3 */ be_nested_str_weak(type), - /* K4 */ be_nested_str_weak(animation_dsl), - /* K5 */ be_nested_str_weak(Token), - /* K6 */ be_nested_str_weak(STRING), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(log_X28_X29_X20function_X20requires_X20a_X20string_X20message), - /* K9 */ be_nested_str_weak(skip_statement), - /* K10 */ be_nested_str_weak(value), - /* K11 */ be_nested_str_weak(expect_right_paren), - /* K12 */ be_nested_str_weak(collect_inline_comment), - /* K13 */ be_nested_str_weak(process_log_call), - /* K14 */ be_nested_str_weak(fluent), - /* K15 */ be_nested_str_weak(add), - }), - be_str_weak(process_log_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C040102, // 0004 GETMET R1 R0 K2 - 0x7C040200, // 0005 CALL R1 1 - 0x4C080000, // 0006 LDNIL R2 - 0x1C080202, // 0007 EQ R2 R1 R2 - 0x740A0005, // 0008 JMPT R2 #000F - 0x88080303, // 0009 GETMBR R2 R1 K3 - 0xB80E0800, // 000A GETNGBL R3 K4 - 0x880C0705, // 000B GETMBR R3 R3 K5 - 0x880C0706, // 000C GETMBR R3 R3 K6 - 0x20080403, // 000D NE R2 R2 R3 - 0x780A0005, // 000E JMPF R2 #0015 - 0x8C080107, // 000F GETMET R2 R0 K7 - 0x58100008, // 0010 LDCONST R4 K8 - 0x7C080400, // 0011 CALL R2 2 - 0x8C080109, // 0012 GETMET R2 R0 K9 - 0x7C080200, // 0013 CALL R2 1 - 0x80000400, // 0014 RET 0 - 0x8808030A, // 0015 GETMBR R2 R1 K10 - 0x8C0C0100, // 0016 GETMET R3 R0 K0 - 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C010B, // 0018 GETMET R3 R0 K11 - 0x7C0C0200, // 0019 CALL R3 1 - 0x8C0C010C, // 001A GETMET R3 R0 K12 - 0x7C0C0200, // 001B CALL R3 1 - 0x8C10010D, // 001C GETMET R4 R0 K13 - 0x5C180400, // 001D MOVE R6 R2 - 0x581C000E, // 001E LDCONST R7 K14 - 0x5C200600, // 001F MOVE R8 R3 - 0x7C100800, // 0020 CALL R4 4 - 0x8C14010F, // 0021 GETMET R5 R0 K15 - 0x5C1C0800, // 0022 MOVE R7 R4 - 0x7C140400, // 0023 CALL R5 2 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_right_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(type), - /* K2 */ be_nested_str_weak(animation_dsl), - /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_PAREN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X29_X27), - }), - be_str_weak(expect_right_paren), - &be_const_str_solidified, - ( &(const binstruction[18]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0008, // 0004 JMPF R2 #000E - 0x88080301, // 0005 GETMBR R2 R1 K1 - 0xB80E0400, // 0006 GETNGBL R3 K2 - 0x880C0703, // 0007 GETMBR R3 R3 K3 - 0x880C0704, // 0008 GETMBR R3 R3 K4 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x8C080105, // 000B GETMET R2 R0 K5 - 0x7C080200, // 000C CALL R2 1 - 0x70020002, // 000D JMP #0011 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100007, // 000F LDCONST R4 K7 - 0x7C080400, // 0010 CALL R2 2 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: skip_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_statement, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(at_end), - /* K1 */ be_nested_str_weak(current), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(NEWLINE), - /* K6 */ be_nested_str_weak(EOF), - /* K7 */ be_nested_str_weak(next), - }), - be_str_weak(skip_statement), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x74060011, // 0002 JMPT R1 #0015 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x88080302, // 0005 GETMBR R2 R1 K2 - 0xB80E0600, // 0006 GETNGBL R3 K3 - 0x880C0704, // 0007 GETMBR R3 R3 K4 - 0x880C0705, // 0008 GETMBR R3 R3 K5 - 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0005, // 000A JMPT R2 #0011 - 0x88080302, // 000B GETMBR R2 R1 K2 - 0xB80E0600, // 000C GETNGBL R3 K3 - 0x880C0704, // 000D GETMBR R3 R3 K4 - 0x880C0706, // 000E GETMBR R3 R3 K6 - 0x1C080403, // 000F EQ R2 R2 R3 - 0x780A0000, // 0010 JMPF R2 #0012 - 0x70020002, // 0011 JMP #0015 - 0x8C080107, // 0012 GETMET R2 R0 K7 - 0x7C080200, // 0013 CALL R2 1 - 0x7001FFEA, // 0014 JMP #0000 - 0x80000000, // 0015 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_nested_function_call -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_nested_function_call, /* name */ - be_nested_proto( - 9, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[31]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(), - /* K2 */ be_nested_str_weak(type), - /* K3 */ be_nested_str_weak(animation_dsl), - /* K4 */ be_nested_str_weak(Token), - /* K5 */ be_nested_str_weak(IDENTIFIER), - /* K6 */ be_nested_str_weak(KEYWORD), - /* K7 */ be_nested_str_weak(value), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20function_X20name), - /* K11 */ be_nested_str_weak(nil), - /* K12 */ be_nested_str_weak(is_math_method), - /* K13 */ be_nested_str_weak(process_function_arguments_for_expression), - /* K14 */ be_nested_str_weak(self_X2E_X25s_X28_X25s_X29), - /* K15 */ be_nested_str_weak(log), - /* K16 */ be_nested_str_weak(process_log_call), - /* K17 */ be_nested_str_weak(expression), - /* K18 */ be_nested_str_weak(template_definitions), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K21 */ be_nested_str_weak(self_X2Eengine), - /* K22 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), - /* K23 */ be_nested_str_weak(_is_simple_function_call), - /* K24 */ be_nested_str_weak(process_function_arguments), - /* K25 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), - /* K26 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - /* K27 */ be_nested_str_weak(_validate_animation_factory_exists), - /* K28 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X27s_X20available_X20in_X20the_X20animation_X20module_X2E), - /* K29 */ be_nested_str_weak(skip_function_arguments), - /* K30 */ be_nested_str_weak(_generate_anonymous_function_call), - }), - be_str_weak(process_nested_function_call), - &be_const_str_solidified, - ( &(const binstruction[109]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x58080001, // 0002 LDCONST R2 K1 - 0x4C0C0000, // 0003 LDNIL R3 - 0x200C0203, // 0004 NE R3 R1 R3 - 0x780E000F, // 0005 JMPF R3 #0016 - 0x880C0302, // 0006 GETMBR R3 R1 K2 - 0xB8120600, // 0007 GETNGBL R4 K3 - 0x88100904, // 0008 GETMBR R4 R4 K4 - 0x88100905, // 0009 GETMBR R4 R4 K5 - 0x1C0C0604, // 000A EQ R3 R3 R4 - 0x740E0005, // 000B JMPT R3 #0012 - 0x880C0302, // 000C GETMBR R3 R1 K2 - 0xB8120600, // 000D GETNGBL R4 K3 - 0x88100904, // 000E GETMBR R4 R4 K4 - 0x88100906, // 000F GETMBR R4 R4 K6 - 0x1C0C0604, // 0010 EQ R3 R3 R4 - 0x780E0003, // 0011 JMPF R3 #0016 - 0x88080307, // 0012 GETMBR R2 R1 K7 - 0x8C0C0108, // 0013 GETMET R3 R0 K8 - 0x7C0C0200, // 0014 CALL R3 1 - 0x70020003, // 0015 JMP #001A - 0x8C0C0109, // 0016 GETMET R3 R0 K9 - 0x5814000A, // 0017 LDCONST R5 K10 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80061600, // 0019 RET 1 K11 - 0x8C0C010C, // 001A GETMET R3 R0 K12 - 0x5C140400, // 001B MOVE R5 R2 - 0x7C0C0400, // 001C CALL R3 2 - 0x780E0007, // 001D JMPF R3 #0026 - 0x8C0C010D, // 001E GETMET R3 R0 K13 - 0x7C0C0200, // 001F CALL R3 1 - 0x60100018, // 0020 GETGBL R4 G24 - 0x5814000E, // 0021 LDCONST R5 K14 - 0x5C180400, // 0022 MOVE R6 R2 - 0x5C1C0600, // 0023 MOVE R7 R3 - 0x7C100600, // 0024 CALL R4 3 - 0x80040800, // 0025 RET 1 R4 - 0x1C0C050F, // 0026 EQ R3 R2 K15 - 0x780E0007, // 0027 JMPF R3 #0030 - 0x8C0C010D, // 0028 GETMET R3 R0 K13 - 0x7C0C0200, // 0029 CALL R3 1 - 0x8C100110, // 002A GETMET R4 R0 K16 - 0x5C180600, // 002B MOVE R6 R3 - 0x581C0011, // 002C LDCONST R7 K17 - 0x58200001, // 002D LDCONST R8 K1 - 0x7C100800, // 002E CALL R4 4 - 0x80040800, // 002F RET 1 R4 - 0x880C0112, // 0030 GETMBR R3 R0 K18 - 0x8C0C0713, // 0031 GETMET R3 R3 K19 - 0x5C140400, // 0032 MOVE R5 R2 - 0x7C0C0400, // 0033 CALL R3 2 - 0x780E0010, // 0034 JMPF R3 #0046 - 0x8C0C010D, // 0035 GETMET R3 R0 K13 - 0x7C0C0200, // 0036 CALL R3 1 - 0x20100701, // 0037 NE R4 R3 K1 - 0x78120004, // 0038 JMPF R4 #003E - 0x60100018, // 0039 GETGBL R4 G24 - 0x58140014, // 003A LDCONST R5 K20 - 0x5C180600, // 003B MOVE R6 R3 - 0x7C100400, // 003C CALL R4 2 - 0x70020000, // 003D JMP #003F - 0x58100015, // 003E LDCONST R4 K21 - 0x60140018, // 003F GETGBL R5 G24 - 0x58180016, // 0040 LDCONST R6 K22 - 0x5C1C0400, // 0041 MOVE R7 R2 - 0x5C200800, // 0042 MOVE R8 R4 - 0x7C140600, // 0043 CALL R5 3 - 0x80040A00, // 0044 RET 1 R5 - 0x70020025, // 0045 JMP #006C - 0x8C0C0117, // 0046 GETMET R3 R0 K23 - 0x5C140400, // 0047 MOVE R5 R2 - 0x7C0C0400, // 0048 CALL R3 2 - 0x780E0010, // 0049 JMPF R3 #005B - 0x8C0C0118, // 004A GETMET R3 R0 K24 - 0x7C0C0200, // 004B CALL R3 1 - 0x20100701, // 004C NE R4 R3 K1 - 0x78120006, // 004D JMPF R4 #0055 - 0x60100018, // 004E GETGBL R4 G24 - 0x58140019, // 004F LDCONST R5 K25 - 0x5C180400, // 0050 MOVE R6 R2 - 0x5C1C0600, // 0051 MOVE R7 R3 - 0x7C100600, // 0052 CALL R4 3 - 0x80040800, // 0053 RET 1 R4 - 0x70020004, // 0054 JMP #005A - 0x60100018, // 0055 GETGBL R4 G24 - 0x5814001A, // 0056 LDCONST R5 K26 - 0x5C180400, // 0057 MOVE R6 R2 - 0x7C100400, // 0058 CALL R4 2 - 0x80040800, // 0059 RET 1 R4 - 0x70020010, // 005A JMP #006C - 0x8C0C011B, // 005B GETMET R3 R0 K27 - 0x5C140400, // 005C MOVE R5 R2 - 0x7C0C0400, // 005D CALL R3 2 - 0x740E0008, // 005E JMPT R3 #0068 - 0x8C0C0109, // 005F GETMET R3 R0 K9 - 0x60140018, // 0060 GETGBL R5 G24 - 0x5818001C, // 0061 LDCONST R6 K28 - 0x5C1C0400, // 0062 MOVE R7 R2 - 0x7C140400, // 0063 CALL R5 2 - 0x7C0C0400, // 0064 CALL R3 2 - 0x8C0C011D, // 0065 GETMET R3 R0 K29 - 0x7C0C0200, // 0066 CALL R3 1 - 0x80061600, // 0067 RET 1 K11 - 0x8C0C011E, // 0068 GETMET R3 R0 K30 - 0x5C140400, // 0069 MOVE R5 R2 - 0x7C0C0400, // 006A CALL R3 2 - 0x80040600, // 006B RET 1 R3 - 0x80000000, // 006C RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: transpile -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_transpile, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ - /* K0 */ be_nested_str_weak(add), - /* K1 */ be_nested_str_weak(import_X20animation), - /* K2 */ be_nested_str_weak(), - /* K3 */ be_nested_str_weak(at_end), - /* K4 */ be_nested_str_weak(process_statement), - /* K5 */ be_nested_str_weak(generate_engine_start), - /* K6 */ be_nested_str_weak(errors), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(join_output), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Transpilation_X20failed_X3A_X20_X25s), - }), - be_str_weak(transpile), - &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0xA802001A, // 0000 EXBLK 0 #001C - 0x8C040100, // 0001 GETMET R1 R0 K0 - 0x580C0001, // 0002 LDCONST R3 K1 - 0x7C040400, // 0003 CALL R1 2 - 0x8C040100, // 0004 GETMET R1 R0 K0 - 0x580C0002, // 0005 LDCONST R3 K2 - 0x7C040400, // 0006 CALL R1 2 - 0x8C040103, // 0007 GETMET R1 R0 K3 - 0x7C040200, // 0008 CALL R1 1 - 0x74060002, // 0009 JMPT R1 #000D - 0x8C040104, // 000A GETMET R1 R0 K4 - 0x7C040200, // 000B CALL R1 1 - 0x7001FFF9, // 000C JMP #0007 - 0x8C040105, // 000D GETMET R1 R0 K5 - 0x7C040200, // 000E CALL R1 1 - 0x6004000C, // 000F GETGBL R1 G12 - 0x88080106, // 0010 GETMBR R2 R0 K6 - 0x7C040200, // 0011 CALL R1 1 - 0x1C040307, // 0012 EQ R1 R1 K7 - 0x78060002, // 0013 JMPF R1 #0017 - 0x8C040108, // 0014 GETMET R1 R0 K8 - 0x7C040200, // 0015 CALL R1 1 - 0x70020000, // 0016 JMP #0018 - 0x4C040000, // 0017 LDNIL R1 - 0xA8040001, // 0018 EXBLK 1 1 - 0x80040200, // 0019 RET 1 R1 - 0xA8040001, // 001A EXBLK 1 1 - 0x7002000B, // 001B JMP #0028 - 0xAC040002, // 001C CATCH R1 0 2 - 0x70020008, // 001D JMP #0027 - 0x8C0C0109, // 001E GETMET R3 R0 K9 - 0x60140018, // 001F GETGBL R5 G24 - 0x5818000A, // 0020 LDCONST R6 K10 - 0x5C1C0400, // 0021 MOVE R7 R2 - 0x7C140400, // 0022 CALL R5 2 - 0x7C0C0400, // 0023 CALL R3 2 - 0x4C0C0000, // 0024 LDNIL R3 - 0x80040600, // 0025 RET 1 R3 - 0x70020000, // 0026 JMP #0028 - 0xB0080000, // 0027 RAISE 2 R0 R0 - 0x80000000, // 0028 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: generate_default_strip_initialization -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(strip_initialized), - /* K1 */ be_nested_str_weak(add), - /* K2 */ be_nested_str_weak(_X23_X20Auto_X2Dgenerated_X20strip_X20initialization_X20_X28using_X20Tasmota_X20configuration_X29), - /* K3 */ be_nested_str_weak(var_X20engine_X20_X3D_X20animation_X2Einit_strip_X28_X29), - /* K4 */ be_nested_str_weak(), - }), - be_str_weak(generate_default_strip_initialization), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ + ( &(const binstruction[12]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060000, // 0001 JMPF R1 #0003 - 0x80000200, // 0002 RET 0 - 0x8C040101, // 0003 GETMET R1 R0 K1 - 0x580C0002, // 0004 LDCONST R3 K2 - 0x7C040400, // 0005 CALL R1 2 - 0x8C040101, // 0006 GETMET R1 R0 K1 - 0x580C0003, // 0007 LDCONST R3 K3 - 0x7C040400, // 0008 CALL R1 2 - 0x8C040101, // 0009 GETMET R1 R0 K1 - 0x580C0004, // 000A LDCONST R3 K4 - 0x7C040400, // 000B CALL R1 2 - 0x50040200, // 000C LDBOOL R1 1 0 - 0x90020001, // 000D SETMBR R0 K0 R1 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_function_arguments -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(at_end), - /* K2 */ be_nested_str_weak(check_right_paren), - /* K3 */ be_nested_str_weak(skip_whitespace), - /* K4 */ be_nested_str_weak(process_value), - /* K5 */ be_nested_str_weak(argument), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(current), - /* K8 */ be_nested_str_weak(type), - /* K9 */ be_nested_str_weak(animation_dsl), - /* K10 */ be_nested_str_weak(Token), - /* K11 */ be_nested_str_weak(COMMA), - /* K12 */ be_nested_str_weak(next), - /* K13 */ be_nested_str_weak(error), - /* K14 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K15 */ be_nested_str_weak(expect_right_paren), - /* K16 */ be_nested_str_weak(), - /* K17 */ be_const_int(0), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_str_weak(_X2C_X20), - /* K20 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(process_function_arguments), - &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x60040012, // 0002 GETGBL R1 G18 - 0x7C040000, // 0003 CALL R1 0 - 0x8C080101, // 0004 GETMET R2 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x740A002A, // 0006 JMPT R2 #0032 - 0x8C080102, // 0007 GETMET R2 R0 K2 - 0x7C080200, // 0008 CALL R2 1 - 0x740A0027, // 0009 JMPT R2 #0032 - 0x8C080103, // 000A GETMET R2 R0 K3 - 0x7C080200, // 000B CALL R2 1 - 0x8C080102, // 000C GETMET R2 R0 K2 - 0x7C080200, // 000D CALL R2 1 - 0x780A0000, // 000E JMPF R2 #0010 - 0x70020021, // 000F JMP #0032 - 0x8C080104, // 0010 GETMET R2 R0 K4 - 0x58100005, // 0011 LDCONST R4 K5 - 0x7C080400, // 0012 CALL R2 2 - 0x8C0C0306, // 0013 GETMET R3 R1 K6 - 0x5C140400, // 0014 MOVE R5 R2 - 0x7C0C0400, // 0015 CALL R3 2 - 0x8C0C0103, // 0016 GETMET R3 R0 K3 - 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C0107, // 0018 GETMET R3 R0 K7 - 0x7C0C0200, // 0019 CALL R3 1 - 0x4C100000, // 001A LDNIL R4 - 0x200C0604, // 001B NE R3 R3 R4 - 0x780E000C, // 001C JMPF R3 #002A - 0x8C0C0107, // 001D GETMET R3 R0 K7 - 0x7C0C0200, // 001E CALL R3 1 - 0x880C0708, // 001F GETMBR R3 R3 K8 - 0xB8121200, // 0020 GETNGBL R4 K9 - 0x8810090A, // 0021 GETMBR R4 R4 K10 - 0x8810090B, // 0022 GETMBR R4 R4 K11 - 0x1C0C0604, // 0023 EQ R3 R3 R4 - 0x780E0004, // 0024 JMPF R3 #002A - 0x8C0C010C, // 0025 GETMET R3 R0 K12 - 0x7C0C0200, // 0026 CALL R3 1 - 0x8C0C0103, // 0027 GETMET R3 R0 K3 - 0x7C0C0200, // 0028 CALL R3 1 - 0x70020006, // 0029 JMP #0031 - 0x8C0C0102, // 002A GETMET R3 R0 K2 - 0x7C0C0200, // 002B CALL R3 1 - 0x740E0003, // 002C JMPT R3 #0031 - 0x8C0C010D, // 002D GETMET R3 R0 K13 - 0x5814000E, // 002E LDCONST R5 K14 - 0x7C0C0400, // 002F CALL R3 2 - 0x70020000, // 0030 JMP #0032 - 0x7001FFD1, // 0031 JMP #0004 - 0x8C08010F, // 0032 GETMET R2 R0 K15 - 0x7C080200, // 0033 CALL R2 1 - 0x58080010, // 0034 LDCONST R2 K16 - 0x600C0010, // 0035 GETGBL R3 G16 - 0x6010000C, // 0036 GETGBL R4 G12 - 0x5C140200, // 0037 MOVE R5 R1 - 0x7C100200, // 0038 CALL R4 1 - 0x04100912, // 0039 SUB R4 R4 K18 - 0x40122204, // 003A CONNECT R4 K17 R4 - 0x7C0C0200, // 003B CALL R3 1 - 0xA8020007, // 003C EXBLK 0 #0045 - 0x5C100600, // 003D MOVE R4 R3 - 0x7C100000, // 003E CALL R4 0 - 0x24140911, // 003F GT R5 R4 K17 - 0x78160000, // 0040 JMPF R5 #0042 - 0x00080513, // 0041 ADD R2 R2 K19 - 0x94140204, // 0042 GETIDX R5 R1 R4 - 0x00080405, // 0043 ADD R2 R2 R5 - 0x7001FFF7, // 0044 JMP #003D - 0x580C0014, // 0045 LDCONST R3 K20 - 0xAC0C0200, // 0046 CATCH R3 1 0 - 0xB0080000, // 0047 RAISE 2 R0 R0 - 0x80040400, // 0048 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_palette_color -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_palette_color, /* name */ - be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ - /* K0 */ be_nested_str_weak(current), - /* K1 */ be_nested_str_weak(error), - /* K2 */ be_nested_str_weak(Expected_X20color_X20value_X20in_X20palette), - /* K3 */ be_nested_str_weak(0xFFFFFFFF), - /* K4 */ be_nested_str_weak(type), - /* K5 */ be_nested_str_weak(animation_dsl), - /* K6 */ be_nested_str_weak(Token), - /* K7 */ be_nested_str_weak(COLOR), - /* K8 */ be_nested_str_weak(next), - /* K9 */ be_nested_str_weak(convert_color), - /* K10 */ be_nested_str_weak(value), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(is_color_name), - /* K13 */ be_nested_str_weak(get_named_color_value), - /* K14 */ be_nested_str_weak(Unknown_X20color_X20_X27_X25s_X27_X2E_X20Palettes_X20only_X20accept_X20hex_X20colors_X20_X280xRRGGBB_X29_X20or_X20predefined_X20color_X20names_X20_X28like_X20_X27red_X27_X2C_X20_X27blue_X27_X2C_X20_X27green_X27_X29_X2C_X20but_X20not_X20custom_X20colors_X20defined_X20previously_X2E_X20For_X20dynamic_X20palettes_X20with_X20custom_X20colors_X2C_X20use_X20user_X20functions_X20instead_X2E), - /* K15 */ be_nested_str_weak(Expected_X20color_X20value_X20in_X20palette_X2E_X20Use_X20hex_X20colors_X20_X280xRRGGBB_X29_X20or_X20predefined_X20color_X20names_X20_X28like_X20_X27red_X27_X2C_X20_X27blue_X27_X2C_X20_X27green_X27_X29_X2E), - }), - be_str_weak(process_palette_color), - &be_const_str_solidified, - ( &(const binstruction[50]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x1C080202, // 0003 EQ R2 R1 R2 - 0x780A0003, // 0004 JMPF R2 #0009 - 0x8C080101, // 0005 GETMET R2 R0 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x7C080400, // 0007 CALL R2 2 - 0x80060600, // 0008 RET 1 K3 - 0x88080304, // 0009 GETMBR R2 R1 K4 - 0xB80E0A00, // 000A GETNGBL R3 K5 - 0x880C0706, // 000B GETMBR R3 R3 K6 - 0x880C0707, // 000C GETMBR R3 R3 K7 - 0x1C080403, // 000D EQ R2 R2 R3 - 0x780A0005, // 000E JMPF R2 #0015 - 0x8C080108, // 000F GETMET R2 R0 K8 - 0x7C080200, // 0010 CALL R2 1 - 0x8C080109, // 0011 GETMET R2 R0 K9 - 0x8810030A, // 0012 GETMBR R4 R1 K10 - 0x7C080400, // 0013 CALL R2 2 - 0x80040400, // 0014 RET 1 R2 - 0x88080304, // 0015 GETMBR R2 R1 K4 - 0xB80E0A00, // 0016 GETNGBL R3 K5 - 0x880C0706, // 0017 GETMBR R3 R3 K6 - 0x880C070B, // 0018 GETMBR R3 R3 K11 - 0x1C080403, // 0019 EQ R2 R2 R3 - 0x780A0012, // 001A JMPF R2 #002E - 0x8808030A, // 001B GETMBR R2 R1 K10 - 0x8C0C0108, // 001C GETMET R3 R0 K8 - 0x7C0C0200, // 001D CALL R3 1 - 0xB80E0A00, // 001E GETNGBL R3 K5 - 0x8C0C070C, // 001F GETMET R3 R3 K12 - 0x5C140400, // 0020 MOVE R5 R2 - 0x7C0C0400, // 0021 CALL R3 2 - 0x780E0003, // 0022 JMPF R3 #0027 - 0x8C0C010D, // 0023 GETMET R3 R0 K13 - 0x5C140400, // 0024 MOVE R5 R2 - 0x7C0C0400, // 0025 CALL R3 2 - 0x80040600, // 0026 RET 1 R3 - 0x8C0C0101, // 0027 GETMET R3 R0 K1 - 0x60140018, // 0028 GETGBL R5 G24 - 0x5818000E, // 0029 LDCONST R6 K14 - 0x5C1C0400, // 002A MOVE R7 R2 - 0x7C140400, // 002B CALL R5 2 - 0x7C0C0400, // 002C CALL R3 2 - 0x80060600, // 002D RET 1 K3 - 0x8C080101, // 002E GETMET R2 R0 K1 - 0x5810000F, // 002F LDCONST R4 K15 - 0x7C080400, // 0030 CALL R2 2 - 0x80060600, // 0031 RET 1 K3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _process_named_arguments_for_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ - be_nested_proto( - 15, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(expect_left_paren), - /* K1 */ be_nested_str_weak(_create_instance_for_validation), - /* K2 */ be_nested_str_weak(at_end), - /* K3 */ be_nested_str_weak(check_right_paren), - /* K4 */ be_nested_str_weak(skip_whitespace_including_newlines), - /* K5 */ be_nested_str_weak(expect_identifier), - /* K6 */ be_nested_str_weak(_validate_single_parameter), - /* K7 */ be_nested_str_weak(expect_assign), - /* K8 */ be_nested_str_weak(process_value), - /* K9 */ be_nested_str_weak(argument), - /* K10 */ be_nested_str_weak(collect_inline_comment), - /* K11 */ be_nested_str_weak(add), - /* K12 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K13 */ be_nested_str_weak(current), - /* K14 */ be_nested_str_weak(type), - /* K15 */ be_nested_str_weak(animation_dsl), - /* K16 */ be_nested_str_weak(Token), - /* K17 */ be_nested_str_weak(COMMENT), - /* K18 */ be_nested_str_weak(next), - /* K19 */ be_nested_str_weak(COMMA), - /* K20 */ be_nested_str_weak(NEWLINE), - /* K21 */ be_nested_str_weak(error), - /* K22 */ be_nested_str_weak(Expected_X20_X27_X2C_X27_X20or_X20_X27_X29_X27_X20in_X20function_X20arguments), - /* K23 */ be_nested_str_weak(expect_right_paren), - }), - be_str_weak(_process_named_arguments_for_animation), - &be_const_str_solidified, - ( &(const binstruction[109]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x7C0C0200, // 0001 CALL R3 1 - 0x8C0C0101, // 0002 GETMET R3 R0 K1 - 0x5C140400, // 0003 MOVE R5 R2 - 0x7C0C0400, // 0004 CALL R3 2 - 0x8C100102, // 0005 GETMET R4 R0 K2 - 0x7C100200, // 0006 CALL R4 1 - 0x74120061, // 0007 JMPT R4 #006A - 0x8C100103, // 0008 GETMET R4 R0 K3 - 0x7C100200, // 0009 CALL R4 1 - 0x7412005E, // 000A JMPT R4 #006A - 0x8C100104, // 000B GETMET R4 R0 K4 - 0x7C100200, // 000C CALL R4 1 - 0x8C100103, // 000D GETMET R4 R0 K3 - 0x7C100200, // 000E CALL R4 1 - 0x78120000, // 000F JMPF R4 #0011 - 0x70020058, // 0010 JMP #006A - 0x8C100105, // 0011 GETMET R4 R0 K5 - 0x7C100200, // 0012 CALL R4 1 - 0x4C140000, // 0013 LDNIL R5 - 0x20140605, // 0014 NE R5 R3 R5 - 0x78160004, // 0015 JMPF R5 #001B - 0x8C140106, // 0016 GETMET R5 R0 K6 - 0x5C1C0400, // 0017 MOVE R7 R2 - 0x5C200800, // 0018 MOVE R8 R4 - 0x5C240600, // 0019 MOVE R9 R3 - 0x7C140800, // 001A CALL R5 4 - 0x8C140107, // 001B GETMET R5 R0 K7 - 0x7C140200, // 001C CALL R5 1 - 0x8C140108, // 001D GETMET R5 R0 K8 - 0x581C0009, // 001E LDCONST R7 K9 - 0x7C140400, // 001F CALL R5 2 - 0x8C18010A, // 0020 GETMET R6 R0 K10 - 0x7C180200, // 0021 CALL R6 1 - 0x8C1C010B, // 0022 GETMET R7 R0 K11 - 0x60240018, // 0023 GETGBL R9 G24 - 0x5828000C, // 0024 LDCONST R10 K12 - 0x5C2C0200, // 0025 MOVE R11 R1 - 0x5C300800, // 0026 MOVE R12 R4 - 0x5C340A00, // 0027 MOVE R13 R5 - 0x5C380C00, // 0028 MOVE R14 R6 - 0x7C240A00, // 0029 CALL R9 5 - 0x7C1C0400, // 002A CALL R7 2 - 0x8C1C0102, // 002B GETMET R7 R0 K2 - 0x7C1C0200, // 002C CALL R7 1 - 0x741E000F, // 002D JMPT R7 #003E - 0x8C1C010D, // 002E GETMET R7 R0 K13 - 0x7C1C0200, // 002F CALL R7 1 - 0x4C200000, // 0030 LDNIL R8 - 0x20200E08, // 0031 NE R8 R7 R8 - 0x78220008, // 0032 JMPF R8 #003C - 0x88200F0E, // 0033 GETMBR R8 R7 K14 - 0xB8261E00, // 0034 GETNGBL R9 K15 - 0x88241310, // 0035 GETMBR R9 R9 K16 - 0x88241311, // 0036 GETMBR R9 R9 K17 - 0x1C201009, // 0037 EQ R8 R8 R9 - 0x78220002, // 0038 JMPF R8 #003C - 0x8C200112, // 0039 GETMET R8 R0 K18 - 0x7C200200, // 003A CALL R8 1 - 0x70020000, // 003B JMP #003D - 0x70020000, // 003C JMP #003E - 0x7001FFEC, // 003D JMP #002B - 0x8C1C010D, // 003E GETMET R7 R0 K13 - 0x7C1C0200, // 003F CALL R7 1 - 0x4C200000, // 0040 LDNIL R8 - 0x201C0E08, // 0041 NE R7 R7 R8 - 0x781E000C, // 0042 JMPF R7 #0050 - 0x8C1C010D, // 0043 GETMET R7 R0 K13 - 0x7C1C0200, // 0044 CALL R7 1 - 0x881C0F0E, // 0045 GETMBR R7 R7 K14 - 0xB8221E00, // 0046 GETNGBL R8 K15 - 0x88201110, // 0047 GETMBR R8 R8 K16 - 0x88201113, // 0048 GETMBR R8 R8 K19 - 0x1C1C0E08, // 0049 EQ R7 R7 R8 - 0x781E0004, // 004A JMPF R7 #0050 - 0x8C1C0112, // 004B GETMET R7 R0 K18 - 0x7C1C0200, // 004C CALL R7 1 - 0x8C1C0104, // 004D GETMET R7 R0 K4 - 0x7C1C0200, // 004E CALL R7 1 - 0x70020018, // 004F JMP #0069 - 0x8C1C010D, // 0050 GETMET R7 R0 K13 - 0x7C1C0200, // 0051 CALL R7 1 - 0x4C200000, // 0052 LDNIL R8 - 0x201C0E08, // 0053 NE R7 R7 R8 - 0x781E000C, // 0054 JMPF R7 #0062 - 0x8C1C010D, // 0055 GETMET R7 R0 K13 - 0x7C1C0200, // 0056 CALL R7 1 - 0x881C0F0E, // 0057 GETMBR R7 R7 K14 - 0xB8221E00, // 0058 GETNGBL R8 K15 - 0x88201110, // 0059 GETMBR R8 R8 K16 - 0x88201114, // 005A GETMBR R8 R8 K20 - 0x1C1C0E08, // 005B EQ R7 R7 R8 - 0x781E0004, // 005C JMPF R7 #0062 - 0x8C1C0112, // 005D GETMET R7 R0 K18 - 0x7C1C0200, // 005E CALL R7 1 - 0x8C1C0104, // 005F GETMET R7 R0 K4 - 0x7C1C0200, // 0060 CALL R7 1 - 0x70020006, // 0061 JMP #0069 - 0x8C1C0103, // 0062 GETMET R7 R0 K3 - 0x7C1C0200, // 0063 CALL R7 1 - 0x741E0003, // 0064 JMPT R7 #0069 - 0x8C1C0115, // 0065 GETMET R7 R0 K21 - 0x58240016, // 0066 LDCONST R9 K22 - 0x7C1C0400, // 0067 CALL R7 2 - 0x70020000, // 0068 JMP #006A - 0x7001FF9A, // 0069 JMP #0005 - 0x8C100117, // 006A GETMET R4 R0 K23 - 0x7C100200, // 006B CALL R4 1 - 0x80000000, // 006C RET 0 + 0x6008000C, // 0001 GETGBL R2 G12 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x7C080200, // 0003 CALL R2 1 + 0x14040202, // 0004 LT R1 R1 R2 + 0x78060003, // 0005 JMPF R1 #000A + 0x88040101, // 0006 GETMBR R1 R0 K1 + 0x88080100, // 0007 GETMBR R2 R0 K0 + 0x94040202, // 0008 GETIDX R1 R1 R2 + 0x70020000, // 0009 JMP #000B + 0x4C040000, // 000A LDNIL R1 + 0x80040200, // 000B RET 1 R1 }) ) ); @@ -11973,11 +11743,11 @@ be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* name */ /******************************************************************** -** Solidified function: check_right_bracket +** Solidified function: expect_comma ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ be_nested_proto( - 4, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -11985,30 +11755,37 @@ be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 8]) { /* constants */ /* K0 */ be_nested_str_weak(current), /* K1 */ be_nested_str_weak(type), /* K2 */ be_nested_str_weak(animation_dsl), /* K3 */ be_nested_str_weak(Token), - /* K4 */ be_nested_str_weak(RIGHT_BRACKET), + /* K4 */ be_nested_str_weak(COMMA), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), }), - be_str_weak(check_right_bracket), + be_str_weak(expect_comma), &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ + ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 0x4C080000, // 0002 LDNIL R2 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0005, // 0004 JMPF R2 #000B + 0x780A0008, // 0004 JMPF R2 #000E 0x88080301, // 0005 GETMBR R2 R1 K1 0xB80E0400, // 0006 GETNGBL R3 K2 0x880C0703, // 0007 GETMBR R3 R3 K3 0x880C0704, // 0008 GETMBR R3 R3 K4 0x1C080403, // 0009 EQ R2 R2 R3 - 0x740A0000, // 000A JMPT R2 #000C - 0x50080001, // 000B LDBOOL R2 0 1 - 0x50080200, // 000C LDBOOL R2 1 0 - 0x80040400, // 000D RET 1 R2 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 + 0x8C080106, // 000E GETMET R2 R0 K6 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 }) ) ); @@ -12016,11 +11793,11 @@ be_local_closure(class_SimpleDSLTranspiler_check_right_bracket, /* name */ /******************************************************************** -** Solidified function: process_animation +** Solidified function: expect_left_bracket ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_animation, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* name */ be_nested_proto( - 15, /* nstack */ + 5, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -12028,471 +11805,37 @@ be_local_closure(class_SimpleDSLTranspiler_process_animation, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[37]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(expect_identifier), - /* K2 */ be_nested_str_weak(validate_user_name), - /* K3 */ be_nested_str_weak(animation), - /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(current), - /* K7 */ be_nested_str_weak(type), - /* K8 */ be_nested_str_weak(animation_dsl), - /* K9 */ be_nested_str_weak(Token), - /* K10 */ be_nested_str_weak(KEYWORD), - /* K11 */ be_nested_str_weak(IDENTIFIER), - /* K12 */ be_nested_str_weak(peek), - /* K13 */ be_nested_str_weak(LEFT_PAREN), - /* K14 */ be_nested_str_weak(value), - /* K15 */ be_nested_str_weak(), - /* K16 */ be_nested_str_weak(COMMENT), - /* K17 */ be_nested_str_weak(_X20_X20), - /* K18 */ be_nested_str_weak(template_definitions), - /* K19 */ be_nested_str_weak(contains), - /* K20 */ be_nested_str_weak(process_function_arguments), - /* K21 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K22 */ be_nested_str_weak(engine), - /* K23 */ be_nested_str_weak(add), - /* K24 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), - /* K25 */ be_nested_str_weak(_validate_animation_factory_creates_animation), - /* K26 */ be_nested_str_weak(error), - /* K27 */ be_nested_str_weak(Animation_X20factory_X20function_X20_X27_X25s_X27_X20does_X20not_X20exist_X20or_X20does_X20not_X20create_X20an_X20instance_X20of_X20animation_X2Eanimation_X20class_X2E_X20Check_X20the_X20function_X20name_X20and_X20ensure_X20it_X20returns_X20an_X20animation_X20object_X2E), - /* K28 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), - /* K29 */ be_nested_str_weak(_create_instance_for_validation), - /* K30 */ be_nested_str_weak(symbol_table), - /* K31 */ be_nested_str_weak(_process_named_arguments_for_animation), - /* K32 */ be_nested_str_weak(_X25s_), - /* K33 */ be_nested_str_weak(process_value), - /* K34 */ be_nested_str_weak(collect_inline_comment), - /* K35 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K36 */ be_nested_str_weak(string), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(current), + /* K1 */ be_nested_str_weak(type), + /* K2 */ be_nested_str_weak(animation_dsl), + /* K3 */ be_nested_str_weak(Token), + /* K4 */ be_nested_str_weak(LEFT_BRACKET), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X5B_X27), }), - be_str_weak(process_animation), + be_str_weak(expect_left_bracket), &be_const_str_solidified, - ( &(const binstruction[191]) { /* code */ + ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 - 0x8C040101, // 0002 GETMET R1 R0 K1 - 0x7C040200, // 0003 CALL R1 1 - 0x8C080102, // 0004 GETMET R2 R0 K2 - 0x5C100200, // 0005 MOVE R4 R1 - 0x58140003, // 0006 LDCONST R5 K3 - 0x7C080600, // 0007 CALL R2 3 - 0x740A0002, // 0008 JMPT R2 #000C - 0x8C080104, // 0009 GETMET R2 R0 K4 - 0x7C080200, // 000A CALL R2 1 - 0x80000400, // 000B RET 0 - 0x8C080105, // 000C GETMET R2 R0 K5 - 0x7C080200, // 000D CALL R2 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0008, // 0004 JMPF R2 #000E + 0x88080301, // 0005 GETMBR R2 R1 K1 + 0xB80E0400, // 0006 GETNGBL R3 K2 + 0x880C0703, // 0007 GETMBR R3 R3 K3 + 0x880C0704, // 0008 GETMBR R3 R3 K4 + 0x1C080403, // 0009 EQ R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x7C080200, // 000C CALL R2 1 + 0x70020002, // 000D JMP #0011 0x8C080106, // 000E GETMET R2 R0 K6 - 0x7C080200, // 000F CALL R2 1 - 0x880C0507, // 0010 GETMBR R3 R2 K7 - 0xB8121000, // 0011 GETNGBL R4 K8 - 0x88100909, // 0012 GETMBR R4 R4 K9 - 0x8810090A, // 0013 GETMBR R4 R4 K10 - 0x1C0C0604, // 0014 EQ R3 R3 R4 - 0x740E0005, // 0015 JMPT R3 #001C - 0x880C0507, // 0016 GETMBR R3 R2 K7 - 0xB8121000, // 0017 GETNGBL R4 K8 - 0x88100909, // 0018 GETMBR R4 R4 K9 - 0x8810090B, // 0019 GETMBR R4 R4 K11 - 0x1C0C0604, // 001A EQ R3 R3 R4 - 0x780E0061, // 001B JMPF R3 #007E - 0x8C0C010C, // 001C GETMET R3 R0 K12 - 0x7C0C0200, // 001D CALL R3 1 - 0x4C100000, // 001E LDNIL R4 - 0x200C0604, // 001F NE R3 R3 R4 - 0x780E005C, // 0020 JMPF R3 #007E - 0x8C0C010C, // 0021 GETMET R3 R0 K12 - 0x7C0C0200, // 0022 CALL R3 1 - 0x880C0707, // 0023 GETMBR R3 R3 K7 - 0xB8121000, // 0024 GETNGBL R4 K8 - 0x88100909, // 0025 GETMBR R4 R4 K9 - 0x8810090D, // 0026 GETMBR R4 R4 K13 - 0x1C0C0604, // 0027 EQ R3 R3 R4 - 0x780E0054, // 0028 JMPF R3 #007E - 0x880C050E, // 0029 GETMBR R3 R2 K14 - 0x8C100100, // 002A GETMET R4 R0 K0 - 0x7C100200, // 002B CALL R4 1 - 0x5810000F, // 002C LDCONST R4 K15 - 0x8C140106, // 002D GETMET R5 R0 K6 - 0x7C140200, // 002E CALL R5 1 - 0x4C180000, // 002F LDNIL R6 - 0x20140A06, // 0030 NE R5 R5 R6 - 0x7816000E, // 0031 JMPF R5 #0041 - 0x8C140106, // 0032 GETMET R5 R0 K6 - 0x7C140200, // 0033 CALL R5 1 - 0x88140B07, // 0034 GETMBR R5 R5 K7 - 0xB81A1000, // 0035 GETNGBL R6 K8 - 0x88180D09, // 0036 GETMBR R6 R6 K9 - 0x88180D10, // 0037 GETMBR R6 R6 K16 - 0x1C140A06, // 0038 EQ R5 R5 R6 - 0x78160006, // 0039 JMPF R5 #0041 - 0x8C140106, // 003A GETMET R5 R0 K6 - 0x7C140200, // 003B CALL R5 1 - 0x88140B0E, // 003C GETMBR R5 R5 K14 - 0x00162205, // 003D ADD R5 K17 R5 - 0x5C100A00, // 003E MOVE R4 R5 - 0x8C140100, // 003F GETMET R5 R0 K0 - 0x7C140200, // 0040 CALL R5 1 - 0x88140112, // 0041 GETMBR R5 R0 K18 - 0x8C140B13, // 0042 GETMET R5 R5 K19 - 0x5C1C0600, // 0043 MOVE R7 R3 - 0x7C140400, // 0044 CALL R5 2 - 0x78160012, // 0045 JMPF R5 #0059 - 0x8C140114, // 0046 GETMET R5 R0 K20 - 0x7C140200, // 0047 CALL R5 1 - 0x20180B0F, // 0048 NE R6 R5 K15 - 0x781A0004, // 0049 JMPF R6 #004F - 0x60180018, // 004A GETGBL R6 G24 - 0x581C0015, // 004B LDCONST R7 K21 - 0x5C200A00, // 004C MOVE R8 R5 - 0x7C180400, // 004D CALL R6 2 - 0x70020000, // 004E JMP #0050 - 0x58180016, // 004F LDCONST R6 K22 - 0x8C1C0117, // 0050 GETMET R7 R0 K23 - 0x60240018, // 0051 GETGBL R9 G24 - 0x58280018, // 0052 LDCONST R10 K24 - 0x5C2C0600, // 0053 MOVE R11 R3 - 0x5C300C00, // 0054 MOVE R12 R6 - 0x5C340800, // 0055 MOVE R13 R4 - 0x7C240800, // 0056 CALL R9 4 - 0x7C1C0400, // 0057 CALL R7 2 - 0x70020023, // 0058 JMP #007D - 0x8C140119, // 0059 GETMET R5 R0 K25 - 0x5C1C0600, // 005A MOVE R7 R3 - 0x7C140400, // 005B CALL R5 2 - 0x74160008, // 005C JMPT R5 #0066 - 0x8C14011A, // 005D GETMET R5 R0 K26 - 0x601C0018, // 005E GETGBL R7 G24 - 0x5820001B, // 005F LDCONST R8 K27 - 0x5C240600, // 0060 MOVE R9 R3 - 0x7C1C0400, // 0061 CALL R7 2 - 0x7C140400, // 0062 CALL R5 2 - 0x8C140104, // 0063 GETMET R5 R0 K4 - 0x7C140200, // 0064 CALL R5 1 - 0x80000A00, // 0065 RET 0 - 0x8C140117, // 0066 GETMET R5 R0 K23 - 0x601C0018, // 0067 GETGBL R7 G24 - 0x5820001C, // 0068 LDCONST R8 K28 - 0x5C240200, // 0069 MOVE R9 R1 - 0x5C280600, // 006A MOVE R10 R3 - 0x5C2C0800, // 006B MOVE R11 R4 - 0x7C1C0800, // 006C CALL R7 4 - 0x7C140400, // 006D CALL R5 2 - 0x8C14011D, // 006E GETMET R5 R0 K29 - 0x5C1C0600, // 006F MOVE R7 R3 - 0x7C140400, // 0070 CALL R5 2 - 0x4C180000, // 0071 LDNIL R6 - 0x20180A06, // 0072 NE R6 R5 R6 - 0x781A0001, // 0073 JMPF R6 #0076 - 0x8818011E, // 0074 GETMBR R6 R0 K30 - 0x98180205, // 0075 SETIDX R6 R1 R5 - 0x8C18011F, // 0076 GETMET R6 R0 K31 - 0x60200018, // 0077 GETGBL R8 G24 - 0x58240020, // 0078 LDCONST R9 K32 - 0x5C280200, // 0079 MOVE R10 R1 - 0x7C200400, // 007A CALL R8 2 - 0x5C240600, // 007B MOVE R9 R3 - 0x7C180600, // 007C CALL R6 3 - 0x7002003F, // 007D JMP #00BE - 0x8C0C0106, // 007E GETMET R3 R0 K6 - 0x7C0C0200, // 007F CALL R3 1 - 0x4C100000, // 0080 LDNIL R4 - 0x20100604, // 0081 NE R4 R3 R4 - 0x78120012, // 0082 JMPF R4 #0096 - 0x88100707, // 0083 GETMBR R4 R3 K7 - 0xB8161000, // 0084 GETNGBL R5 K8 - 0x88140B09, // 0085 GETMBR R5 R5 K9 - 0x88140B0B, // 0086 GETMBR R5 R5 K11 - 0x1C100805, // 0087 EQ R4 R4 R5 - 0x7812000C, // 0088 JMPF R4 #0096 - 0x8C10010C, // 0089 GETMET R4 R0 K12 - 0x7C100200, // 008A CALL R4 1 - 0x4C140000, // 008B LDNIL R5 - 0x1C100805, // 008C EQ R4 R4 R5 - 0x74120008, // 008D JMPT R4 #0097 - 0x8C10010C, // 008E GETMET R4 R0 K12 - 0x7C100200, // 008F CALL R4 1 - 0x88100907, // 0090 GETMBR R4 R4 K7 - 0xB8161000, // 0091 GETNGBL R5 K8 - 0x88140B09, // 0092 GETMBR R5 R5 K9 - 0x88140B0D, // 0093 GETMBR R5 R5 K13 - 0x20100805, // 0094 NE R4 R4 R5 - 0x74120000, // 0095 JMPT R4 #0097 - 0x50100001, // 0096 LDBOOL R4 0 1 - 0x50100200, // 0097 LDBOOL R4 1 0 - 0x78120001, // 0098 JMPF R4 #009B - 0x8814070E, // 0099 GETMBR R5 R3 K14 - 0x70020000, // 009A JMP #009C - 0x4C140000, // 009B LDNIL R5 - 0x8C180121, // 009C GETMET R6 R0 K33 - 0x58200003, // 009D LDCONST R8 K3 - 0x7C180400, // 009E CALL R6 2 - 0x8C1C0122, // 009F GETMET R7 R0 K34 - 0x7C1C0200, // 00A0 CALL R7 1 - 0x8C200117, // 00A1 GETMET R8 R0 K23 - 0x60280018, // 00A2 GETGBL R10 G24 - 0x582C0023, // 00A3 LDCONST R11 K35 - 0x5C300200, // 00A4 MOVE R12 R1 - 0x5C340C00, // 00A5 MOVE R13 R6 - 0x5C380E00, // 00A6 MOVE R14 R7 - 0x7C280800, // 00A7 CALL R10 4 - 0x7C200400, // 00A8 CALL R8 2 - 0x78120011, // 00A9 JMPF R4 #00BC - 0x4C200000, // 00AA LDNIL R8 - 0x20200A08, // 00AB NE R8 R5 R8 - 0x7822000E, // 00AC JMPF R8 #00BC - 0x8820011E, // 00AD GETMBR R8 R0 K30 - 0x8C201113, // 00AE GETMET R8 R8 K19 - 0x5C280A00, // 00AF MOVE R10 R5 - 0x7C200400, // 00B0 CALL R8 2 - 0x78220009, // 00B1 JMPF R8 #00BC - 0x8820011E, // 00B2 GETMBR R8 R0 K30 - 0x94201005, // 00B3 GETIDX R8 R8 R5 - 0x60240004, // 00B4 GETGBL R9 G4 - 0x5C281000, // 00B5 MOVE R10 R8 - 0x7C240200, // 00B6 CALL R9 1 - 0x20241324, // 00B7 NE R9 R9 K36 - 0x78260001, // 00B8 JMPF R9 #00BB - 0x8824011E, // 00B9 GETMBR R9 R0 K30 - 0x98240208, // 00BA SETIDX R9 R1 R8 - 0x70020001, // 00BB JMP #00BE - 0x8820011E, // 00BC GETMBR R8 R0 K30 - 0x98200303, // 00BD SETIDX R8 R1 K3 - 0x80000000, // 00BE RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_object_reference -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_object_reference, /* name */ - be_nested_proto( - 10, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(introspect), - /* K1 */ be_nested_str_weak(symbol_table), - /* K2 */ be_nested_str_weak(contains), - /* K3 */ be_nested_str_weak(animation), - /* K4 */ be_nested_str_weak(sequence_names), - /* K5 */ be_nested_str_weak(error), - /* K6 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X2E_X20Make_X20sure_X20the_X20object_X20is_X20defined_X20before_X20use_X2E), - }), - be_str_weak(_validate_object_reference), - &be_const_str_solidified, - ( &(const binstruction[37]) { /* code */ - 0xA802001E, // 0000 EXBLK 0 #0020 - 0xA40E0000, // 0001 IMPORT R3 K0 - 0x88100101, // 0002 GETMBR R4 R0 K1 - 0x8C100902, // 0003 GETMET R4 R4 K2 - 0x5C180200, // 0004 MOVE R6 R1 - 0x7C100400, // 0005 CALL R4 2 - 0x78120001, // 0006 JMPF R4 #0009 - 0xA8040001, // 0007 EXBLK 1 1 - 0x80000800, // 0008 RET 0 - 0x8C100702, // 0009 GETMET R4 R3 K2 - 0xB81A0600, // 000A GETNGBL R6 K3 - 0x5C1C0200, // 000B MOVE R7 R1 - 0x7C100600, // 000C CALL R4 3 - 0x78120001, // 000D JMPF R4 #0010 - 0xA8040001, // 000E EXBLK 1 1 - 0x80000800, // 000F RET 0 - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x8C100902, // 0011 GETMET R4 R4 K2 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C100400, // 0013 CALL R4 2 - 0x78120001, // 0014 JMPF R4 #0017 - 0xA8040001, // 0015 EXBLK 1 1 - 0x80000800, // 0016 RET 0 - 0x8C100105, // 0017 GETMET R4 R0 K5 - 0x60180018, // 0018 GETGBL R6 G24 - 0x581C0006, // 0019 LDCONST R7 K6 - 0x5C200200, // 001A MOVE R8 R1 - 0x5C240400, // 001B MOVE R9 R2 - 0x7C180600, // 001C CALL R6 3 - 0x7C100400, // 001D CALL R4 2 - 0xA8040001, // 001E EXBLK 1 1 - 0x70020003, // 001F JMP #0024 - 0xAC0C0002, // 0020 CATCH R3 0 2 - 0x70020000, // 0021 JMP #0023 - 0x70020000, // 0022 JMP #0024 - 0xB0080000, // 0023 RAISE 2 R0 R0 - 0x80000000, // 0024 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_value_provider_reference -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_value_provider_reference, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(symbol_table), - /* K1 */ be_nested_str_weak(contains), - /* K2 */ be_nested_str_weak(string), - /* K3 */ be_nested_str_weak(value_provider), - /* K4 */ be_nested_str_weak(animation), - /* K5 */ be_nested_str_weak(error), - /* K6 */ be_nested_str_weak(_X27_X25s_X27_X20in_X20_X25s_X20statement_X20is_X20not_X20a_X20value_X20provider_X20or_X20animation_X2E_X20Only_X20value_X20providers_X20_X28like_X20oscillators_X29_X20and_X20animations_X20can_X20be_X20reset_X2Frestarted_X2E), - /* K7 */ be_nested_str_weak(Undefined_X20reference_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X2E_X20Make_X20sure_X20the_X20value_X20provider_X20or_X20animation_X20is_X20defined_X20before_X20use_X2E), - /* K8 */ be_nested_str_weak(Could_X20not_X20validate_X20_X27_X25s_X27_X20in_X20_X25s_X20statement_X3A_X20_X25s), - }), - be_str_weak(_validate_value_provider_reference), - &be_const_str_solidified, - ( &(const binstruction[90]) { /* code */ - 0xA8020049, // 0000 EXBLK 0 #004B - 0x880C0100, // 0001 GETMBR R3 R0 K0 - 0x8C0C0701, // 0002 GETMET R3 R3 K1 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C0C0400, // 0004 CALL R3 2 - 0x780E0038, // 0005 JMPF R3 #003F - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x940C0601, // 0007 GETIDX R3 R3 R1 - 0x60100004, // 0008 GETGBL R4 G4 - 0x5C140600, // 0009 MOVE R5 R3 - 0x7C100200, // 000A CALL R4 1 - 0x1C100902, // 000B EQ R4 R4 K2 - 0x78120007, // 000C JMPF R4 #0015 - 0x1C100703, // 000D EQ R4 R3 K3 - 0x74120001, // 000E JMPT R4 #0011 - 0x1C100704, // 000F EQ R4 R3 K4 - 0x78120003, // 0010 JMPF R4 #0015 - 0x50100200, // 0011 LDBOOL R4 1 0 - 0xA8040001, // 0012 EXBLK 1 1 - 0x80040800, // 0013 RET 1 R4 - 0x70020029, // 0014 JMP #003F - 0x60100004, // 0015 GETGBL R4 G4 - 0x5C140600, // 0016 MOVE R5 R3 - 0x7C100200, // 0017 CALL R4 1 - 0x1C100902, // 0018 EQ R4 R4 K2 - 0x7812000A, // 0019 JMPF R4 #0025 - 0x8C100105, // 001A GETMET R4 R0 K5 - 0x60180018, // 001B GETGBL R6 G24 - 0x581C0006, // 001C LDCONST R7 K6 - 0x5C200200, // 001D MOVE R8 R1 - 0x5C240400, // 001E MOVE R9 R2 - 0x7C180600, // 001F CALL R6 3 - 0x7C100400, // 0020 CALL R4 2 - 0x50100000, // 0021 LDBOOL R4 0 0 - 0xA8040001, // 0022 EXBLK 1 1 - 0x80040800, // 0023 RET 1 R4 - 0x70020019, // 0024 JMP #003F - 0x6010000F, // 0025 GETGBL R4 G15 - 0x5C140600, // 0026 MOVE R5 R3 - 0xB81A0800, // 0027 GETNGBL R6 K4 - 0x88180D03, // 0028 GETMBR R6 R6 K3 - 0x7C100400, // 0029 CALL R4 2 - 0x74120005, // 002A JMPT R4 #0031 - 0x6010000F, // 002B GETGBL R4 G15 - 0x5C140600, // 002C MOVE R5 R3 - 0xB81A0800, // 002D GETNGBL R6 K4 - 0x88180D04, // 002E GETMBR R6 R6 K4 - 0x7C100400, // 002F CALL R4 2 - 0x78120003, // 0030 JMPF R4 #0035 - 0x50100200, // 0031 LDBOOL R4 1 0 - 0xA8040001, // 0032 EXBLK 1 1 - 0x80040800, // 0033 RET 1 R4 - 0x70020009, // 0034 JMP #003F - 0x8C100105, // 0035 GETMET R4 R0 K5 - 0x60180018, // 0036 GETGBL R6 G24 - 0x581C0006, // 0037 LDCONST R7 K6 - 0x5C200200, // 0038 MOVE R8 R1 - 0x5C240400, // 0039 MOVE R9 R2 - 0x7C180600, // 003A CALL R6 3 - 0x7C100400, // 003B CALL R4 2 - 0x50100000, // 003C LDBOOL R4 0 0 - 0xA8040001, // 003D EXBLK 1 1 - 0x80040800, // 003E RET 1 R4 - 0x8C0C0105, // 003F GETMET R3 R0 K5 - 0x60140018, // 0040 GETGBL R5 G24 - 0x58180007, // 0041 LDCONST R6 K7 - 0x5C1C0200, // 0042 MOVE R7 R1 - 0x5C200400, // 0043 MOVE R8 R2 - 0x7C140600, // 0044 CALL R5 3 - 0x7C0C0400, // 0045 CALL R3 2 - 0x500C0000, // 0046 LDBOOL R3 0 0 - 0xA8040001, // 0047 EXBLK 1 1 - 0x80040600, // 0048 RET 1 R3 - 0xA8040001, // 0049 EXBLK 1 1 - 0x7002000D, // 004A JMP #0059 - 0xAC0C0002, // 004B CATCH R3 0 2 - 0x7002000A, // 004C JMP #0058 - 0x8C140105, // 004D GETMET R5 R0 K5 - 0x601C0018, // 004E GETGBL R7 G24 - 0x58200008, // 004F LDCONST R8 K8 - 0x5C240200, // 0050 MOVE R9 R1 - 0x5C280400, // 0051 MOVE R10 R2 - 0x5C2C0800, // 0052 MOVE R11 R4 - 0x7C1C0800, // 0053 CALL R7 4 - 0x7C140400, // 0054 CALL R5 2 - 0x50140000, // 0055 LDBOOL R5 0 0 - 0x80040A00, // 0056 RET 1 R5 - 0x70020000, // 0057 JMP #0059 - 0xB0080000, // 0058 RAISE 2 R0 R0 - 0x80000000, // 0059 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: peek -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(pos), - /* K1 */ be_const_int(1), - /* K2 */ be_nested_str_weak(tokens), - }), - be_str_weak(peek), - &be_const_str_solidified, - ( &(const binstruction[14]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x00040301, // 0001 ADD R1 R1 K1 - 0x6008000C, // 0002 GETGBL R2 G12 - 0x880C0102, // 0003 GETMBR R3 R0 K2 - 0x7C080200, // 0004 CALL R2 1 - 0x14040202, // 0005 LT R1 R1 R2 - 0x78060004, // 0006 JMPF R1 #000C - 0x88040100, // 0007 GETMBR R1 R0 K0 - 0x00040301, // 0008 ADD R1 R1 K1 - 0x88080102, // 0009 GETMBR R2 R0 K2 - 0x94040401, // 000A GETIDX R1 R2 R1 - 0x70020000, // 000B JMP #000D - 0x4C040000, // 000C LDNIL R1 - 0x80040200, // 000D RET 1 R1 + 0x58100007, // 000F LDCONST R4 K7 + 0x7C080400, // 0010 CALL R2 2 + 0x80000000, // 0011 RET 0 }) ) ); @@ -12505,76 +11848,21 @@ be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ be_local_class(SimpleDSLTranspiler, 12, NULL, - be_nested_map(123, + be_nested_map(122, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(peek, 9), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, - { be_const_key_weak(expect_keyword, -1), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, - { be_const_key_weak(symbol_table, -1), be_const_var(8) }, - { be_const_key_weak(create_computation_closure_from_string, -1), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string_closure) }, - { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, - { be_const_key_weak(process_import, -1), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, - { be_const_key_weak(check_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, - { be_const_key_weak(first_statement, 84), be_const_var(5) }, - { be_const_key_weak(process_unary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, - { be_const_key_weak(has_template_calls, 102), be_const_var(11) }, - { be_const_key_weak(_validate_color_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, - { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, - { be_const_key_weak(process_palette, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, - { be_const_key_weak(_process_named_arguments_for_animation, 79), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation_closure) }, - { be_const_key_weak(process_function_arguments_for_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expression_closure) }, - { be_const_key_weak(_validate_value_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists_closure) }, - { be_const_key_weak(_generate_anonymous_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call_closure) }, - { be_const_key_weak(process_array_literal, 103), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, - { be_const_key_weak(process_palette_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_color_closure) }, - { be_const_key_weak(process_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, - { be_const_key_weak(process_multiplicative_expression_raw, 0), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw_closure) }, - { be_const_key_weak(process_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, - { be_const_key_weak(process_percentage_value, 86), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, - { be_const_key_weak(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, - { be_const_key_weak(at_end, 29), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, - { be_const_key_weak(template_definitions, -1), be_const_var(10) }, - { be_const_key_weak(expect_left_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, - { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, - { be_const_key_weak(process_sequence, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, - { be_const_key_weak(skip_statement, 109), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, - { be_const_key_weak(expect_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, - { be_const_key_weak(expect_colon, 8), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, - { be_const_key_weak(transform_operand_for_closure, 117), be_const_closure(class_SimpleDSLTranspiler_transform_operand_for_closure_closure) }, - { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, - { be_const_key_weak(process_wait_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_closure) }, - { be_const_key_weak(_process_named_arguments_for_color_provider, 104), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider_closure) }, - { be_const_key_weak(_is_simple_function_call, 23), be_const_closure(class_SimpleDSLTranspiler__is_simple_function_call_closure) }, - { be_const_key_weak(run_statements, -1), be_const_var(4) }, - { be_const_key_weak(get_named_color_value, 115), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, - { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, - { be_const_key_weak(generate_template_function, -1), be_const_closure(class_SimpleDSLTranspiler_generate_template_function_closure) }, { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, - { be_const_key_weak(create_computation_closure, 113), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_closure) }, - { be_const_key_weak(_create_instance_for_validation, -1), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, - { be_const_key_weak(has_errors, -1), be_const_closure(class_SimpleDSLTranspiler_has_errors_closure) }, - { be_const_key_weak(process_log_call, 13), be_const_closure(class_SimpleDSLTranspiler_process_log_call_closure) }, - { be_const_key_weak(process_primary_expression, 58), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, - { be_const_key_weak(process_sequence_statement, 76), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, - { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, - { be_const_key_weak(can_use_as_identifier, 27), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, - { be_const_key_weak(expect_right_brace, 21), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, - { be_const_key_weak(skip_whitespace, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, + { be_const_key_weak(process_reset_restart_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_reset_restart_statement_fluent_closure) }, + { be_const_key_weak(symbol_exists, -1), be_const_closure(class_SimpleDSLTranspiler_symbol_exists_closure) }, + { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, + { be_const_key_weak(at_end, 84), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, + { be_const_key_weak(process_wait_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_closure) }, + { be_const_key_weak(is_computed_expression, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, { be_const_key_weak(add, -1), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, - { be_const_key_weak(errors, 97), be_const_var(3) }, - { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, - { be_const_key_weak(tokens, -1), be_const_var(0) }, - { be_const_key_weak(transform_expression_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, - { be_const_key_weak(process_standalone_log, 108), be_const_closure(class_SimpleDSLTranspiler_process_standalone_log_closure) }, - { be_const_key_weak(process_sequence_assignment, 90), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_closure) }, - { be_const_key_weak(strip_initialized, -1), be_const_var(6) }, - { be_const_key_weak(process_run, 93), be_const_closure(class_SimpleDSLTranspiler_process_run_closure) }, - { be_const_key_weak(create_simple_function_from_string, 56), be_const_closure(class_SimpleDSLTranspiler_create_simple_function_from_string_closure) }, - { be_const_key_weak(skip_whitespace_including_newlines, 44), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, - { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, - { be_const_key_weak(sequence_names, -1), be_const_var(7) }, - { be_const_key_weak(process_additive_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, - { be_const_key_weak(expect_number, 67), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, - { be_const_key_weak(process_time_value, 51), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, + { be_const_key_weak(expect_identifier, 121), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, + { be_const_key_weak(_process_named_arguments_for_color_provider, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider_closure) }, + { be_const_key_weak(process_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, + { be_const_key_weak(process_standalone_log, -1), be_const_closure(class_SimpleDSLTranspiler_process_standalone_log_closure) }, + { be_const_key_weak(resolve_symbol_reference, 97), be_const_closure(class_SimpleDSLTranspiler_resolve_symbol_reference_closure) }, { be_const_key_weak(named_colors, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(37, ( (struct bmapnode*) &(const bmapnode[]) { @@ -12616,60 +11904,114 @@ be_local_class(SimpleDSLTranspiler, { be_const_key_weak(tan, -1), be_nested_str_weak(0xFFD2B48C) }, { be_const_key_weak(maroon, -1), be_nested_str_weak(0xFF800000) }, })) ) } )) }, - { be_const_key_weak(_process_user_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, - { be_const_key_weak(process_event_parameters, 68), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, - { be_const_key_weak(process_multiplicative_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, - { be_const_key_weak(expect_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, { be_const_key_weak(output, -1), be_const_var(2) }, - { be_const_key_weak(expect_assign, -1), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, - { be_const_key_weak(process_named_arguments_for_variable, -1), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, - { be_const_key_weak(convert_color, -1), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, - { be_const_key_weak(generate_engine_start, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_start_closure) }, + { be_const_key_weak(_validate_factory_function, -1), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, + { be_const_key_weak(process_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, + { be_const_key_weak(process_percentage_value, 1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, + { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, { be_const_key_weak(pos, -1), be_const_var(1) }, - { be_const_key_weak(process_property_assignment, -1), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, - { be_const_key_weak(process_additive_expression_raw, 81), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_raw_closure) }, - { be_const_key_weak(is_anonymous_function, -1), be_const_closure(class_SimpleDSLTranspiler_is_anonymous_function_closure) }, - { be_const_key_weak(expect_comma, -1), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, - { be_const_key_weak(get_error_report, -1), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, + { be_const_key_weak(generate_template_function, -1), be_const_closure(class_SimpleDSLTranspiler_generate_template_function_closure) }, + { be_const_key_weak(sequence_names, 13), be_const_var(7) }, + { be_const_key_weak(process_named_arguments_for_variable, 20), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, + { be_const_key_weak(generate_default_strip_initialization, 119), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, { be_const_key_weak(indent_level, -1), be_const_var(9) }, + { be_const_key_weak(get_errors, 3), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, + { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, + { be_const_key_weak(init, -1), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, + { be_const_key_weak(_validate_value_provider_reference, 75), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_reference_closure) }, + { be_const_key_weak(expect_left_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, { be_const_key_weak(is_computed_expression_string, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_string_closure) }, - { be_const_key_weak(process_function_call, 3), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, - { be_const_key_weak(process_reset_restart_statement_fluent, 96), be_const_closure(class_SimpleDSLTranspiler_process_reset_restart_statement_fluent_closure) }, - { be_const_key_weak(is_identifier_char, 85), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, - { be_const_key_weak(_validate_animation_factory_exists, 19), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, - { be_const_key_weak(process_expression_argument, -1), be_const_closure(class_SimpleDSLTranspiler_process_expression_argument_closure) }, - { be_const_key_weak(join_output, 98), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, - { be_const_key_weak(expect_identifier, 91), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, - { be_const_key_weak(_process_named_arguments_generic, 101), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, + { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, + { be_const_key_weak(convert_to_vrgb, 23), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, + { be_const_key_weak(_create_instance_for_validation, 89), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, + { be_const_key_weak(process_sequence, 60), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, + { be_const_key_weak(errors, -1), be_const_var(3) }, + { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, + { be_const_key_weak(_process_user_function_call, 51), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, { be_const_key_weak(process_sequence_assignment_generic, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic_closure) }, - { be_const_key_weak(convert_to_vrgb, 30), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, - { be_const_key_weak(process_primary_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_raw_closure) }, - { be_const_key_weak(process_template, -1), be_const_closure(class_SimpleDSLTranspiler_process_template_closure) }, - { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, - { be_const_key_weak(get_errors, -1), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, - { be_const_key_weak(error, 71), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, - { be_const_key_weak(expect_dot, -1), be_const_closure(class_SimpleDSLTranspiler_expect_dot_closure) }, - { be_const_key_weak(transpile_template_body, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_template_body_closure) }, - { be_const_key_weak(process_set, 2), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, - { be_const_key_weak(next, 10), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, - { be_const_key_weak(init, 54), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, - { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, - { be_const_key_weak(process_log_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_log_statement_fluent_closure) }, - { be_const_key_weak(is_computed_expression, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, - { be_const_key_weak(validate_user_name, 4), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, - { be_const_key_weak(_validate_factory_function, 122), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, - { be_const_key_weak(transpile, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, - { be_const_key_weak(generate_default_strip_initialization, -1), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, - { be_const_key_weak(_validate_animation_factory_creates_animation, 110), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, - { be_const_key_weak(process_play_statement_fluent, 18), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, - { be_const_key_weak(get_indent, -1), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, - { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, - { be_const_key_weak(is_math_method, -1), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, + { be_const_key_weak(_validate_animation_factory_exists, 0), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, + { be_const_key_weak(process_additive_expression, 92), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, + { be_const_key_weak(strip_initialized, 116), be_const_var(6) }, + { be_const_key_weak(validate_symbol_reference, -1), be_const_closure(class_SimpleDSLTranspiler_validate_symbol_reference_closure) }, + { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, + { be_const_key_weak(skip_whitespace, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, + { be_const_key_weak(template_definitions, -1), be_const_var(10) }, + { be_const_key_weak(process_template, -1), be_const_closure(class_SimpleDSLTranspiler_process_template_closure) }, + { be_const_key_weak(skip_statement, -1), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, + { be_const_key_weak(process_log_call, 95), be_const_closure(class_SimpleDSLTranspiler_process_log_call_closure) }, + { be_const_key_weak(check_right_brace, 78), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, + { be_const_key_weak(first_statement, 52), be_const_var(5) }, + { be_const_key_weak(transpile_template_body, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_template_body_closure) }, { be_const_key_weak(process_animation, -1), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, + { be_const_key_weak(process_property_assignment, -1), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, + { be_const_key_weak(validate_user_name, -1), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, + { be_const_key_weak(expect_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, + { be_const_key_weak(process_unary_expression, 112), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, + { be_const_key_weak(process_sequence_assignment, 93), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_closure) }, + { be_const_key_weak(expect_right_brace, 111), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, + { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, + { be_const_key_weak(get_error_report, 36), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, + { be_const_key_weak(next, 7), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, + { be_const_key_weak(join_output, -1), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, + { be_const_key_weak(process_event_parameters, 71), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, + { be_const_key_weak(create_simple_function_from_string, -1), be_const_closure(class_SimpleDSLTranspiler_create_simple_function_from_string_closure) }, + { be_const_key_weak(expect_colon, 38), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, + { be_const_key_weak(_generate_anonymous_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call_closure) }, + { be_const_key_weak(create_computation_closure_from_string, 9), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string_closure) }, + { be_const_key_weak(_validate_animation_factory_creates_animation, 57), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, + { be_const_key_weak(transform_expression_for_closure, 103), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, + { be_const_key_weak(symbol_table, 35), be_const_var(8) }, + { be_const_key_weak(_validate_color_provider_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, + { be_const_key_weak(is_anonymous_function, -1), be_const_closure(class_SimpleDSLTranspiler_is_anonymous_function_closure) }, + { be_const_key_weak(convert_color, -1), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, + { be_const_key_weak(process_import, -1), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, + { be_const_key_weak(expect_number, 72), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, + { be_const_key_weak(run_statements, -1), be_const_var(4) }, + { be_const_key_weak(process_log_statement_fluent, 81), be_const_closure(class_SimpleDSLTranspiler_process_log_statement_fluent_closure) }, + { be_const_key_weak(tokens, -1), be_const_var(0) }, + { be_const_key_weak(expect_assign, 91), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, + { be_const_key_weak(is_math_method, 15), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, + { be_const_key_weak(_process_parameters_core, 80), be_const_closure(class_SimpleDSLTranspiler__process_parameters_core_closure) }, + { be_const_key_weak(_process_named_arguments_for_animation, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation_closure) }, + { be_const_key_weak(process_palette, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, + { be_const_key_weak(can_use_as_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, + { be_const_key_weak(process_time_value, 85), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, + { be_const_key_weak(_process_named_arguments_unified, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_unified_closure) }, + { be_const_key_weak(process_play_statement_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, { be_const_key_weak(_validate_object_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_object_reference_closure) }, - { be_const_key_weak(_validate_value_provider_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_reference_closure) }, - { be_const_key_weak(process_unary_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_raw_closure) }, + { be_const_key_weak(_validate_value_provider_factory_exists, 73), be_const_closure(class_SimpleDSLTranspiler__validate_value_provider_factory_exists_closure) }, + { be_const_key_weak(generate_engine_start, 62), be_const_closure(class_SimpleDSLTranspiler_generate_engine_start_closure) }, + { be_const_key_weak(_process_named_arguments_generic, 117), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, + { be_const_key_weak(process_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, + { be_const_key_weak(skip_whitespace_including_newlines, 74), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, + { be_const_key_weak(get_indent, -1), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, + { be_const_key_weak(process_palette_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_palette_color_closure) }, + { be_const_key_weak(is_identifier_char, 18), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, + { be_const_key_weak(expect_keyword, 65), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, + { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, + { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, + { be_const_key_weak(create_computation_closure, -1), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_closure) }, + { be_const_key_weak(process_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, + { be_const_key_weak(process_primary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, + { be_const_key_weak(expect_dot, 49), be_const_closure(class_SimpleDSLTranspiler_expect_dot_closure) }, + { be_const_key_weak(get_named_color_value, 43), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, + { be_const_key_weak(process_value, 41), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, + { be_const_key_weak(transform_operand_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_operand_for_closure_closure) }, + { be_const_key_weak(process_run, -1), be_const_closure(class_SimpleDSLTranspiler_process_run_closure) }, + { be_const_key_weak(has_errors, -1), be_const_closure(class_SimpleDSLTranspiler_has_errors_closure) }, + { be_const_key_weak(process_sequence_statement, 33), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, + { be_const_key_weak(_is_simple_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__is_simple_function_call_closure) }, + { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, + { be_const_key_weak(transpile, 19), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, + { be_const_key_weak(process_array_literal, -1), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, + { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, + { be_const_key_weak(expect_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, + { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, + { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, + { be_const_key_weak(has_template_calls, -1), be_const_var(11) }, + { be_const_key_weak(expect_comma, -1), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, + { be_const_key_weak(process_multiplicative_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, })), be_str_weak(SimpleDSLTranspiler) ); diff --git a/lib/libesp32/berry_animation/src/tests/animation_engine_test.be b/lib/libesp32/berry_animation/src/tests/animation_engine_test.be index 401458a6e..4e3476719 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_engine_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_engine_test.be @@ -54,9 +54,9 @@ anim3.color = 0xFF0000FF anim3.priority = 15 anim3.name = "blue" -assert_test(engine.add_animation(anim1), "Should add first animation") -assert_test(engine.add_animation(anim2), "Should add second animation") -assert_test(engine.add_animation(anim3), "Should add third animation") +assert_test(engine.add(anim1), "Should add first animation") +assert_test(engine.add(anim2), "Should add second animation") +assert_test(engine.add(anim3), "Should add third animation") assert_equals(engine.size(), 3, "Engine should have 3 animations") # Test priority sorting (higher priority first) @@ -66,7 +66,7 @@ assert_equals(animations[1].priority, 10, "Second animation should have medium p assert_equals(animations[2].priority, 5, "Third animation should have lowest priority") # Test duplicate prevention -assert_test(!engine.add_animation(anim1), "Should not add duplicate animation") +assert_test(!engine.add(anim1), "Should not add duplicate animation") assert_equals(engine.size(), 3, "Size should remain 3 after duplicate attempt") # Test animation removal @@ -93,7 +93,7 @@ var test_anim = animation.solid(engine) test_anim.color = 0xFFFF0000 test_anim.priority = 10 test_anim.name = "test" -engine.add_animation(test_anim) +engine.add(test_anim) engine.start() var current_time = tasmota.millis() @@ -109,7 +109,7 @@ print("\n--- Test 5: Sequence Manager Integration ---") var seq_manager = animation.SequenceManager(engine) assert_not_nil(seq_manager, "Sequence manager should be created") -engine.add_sequence_manager(seq_manager) +engine.add(seq_manager) assert_test(true, "Should add sequence manager without error") engine.remove_sequence_manager(seq_manager) @@ -117,9 +117,9 @@ assert_test(true, "Should remove sequence manager without error") # Test 6: Clear Functionality print("\n--- Test 6: Clear Functionality ---") -engine.add_animation(anim1) -engine.add_animation(anim3) -engine.add_sequence_manager(seq_manager) +engine.add(anim1) +engine.add(anim3) +engine.add(seq_manager) assert_equals(engine.size(), 3, "Should have 3 animations before clear") engine.clear() @@ -137,7 +137,7 @@ for i : 0..49 anim.color = color anim.priority = i anim.name = f"perf_{i}" - engine.add_animation(anim) + engine.add(anim) end var add_time = tasmota.millis() - start_time @@ -261,7 +261,7 @@ dynamic_engine.start() var runtime_anim = animation.solid(dynamic_engine) runtime_anim.color = 0xFF00FF00 # Green runtime_anim.priority = 10 -dynamic_engine.add_animation(runtime_anim) +dynamic_engine.add(runtime_anim) # Simulate several ticks with stable length var tick_time = tasmota.millis() @@ -303,12 +303,12 @@ dynamic_engine.clear() var red_anim = animation.solid(dynamic_engine) red_anim.color = 0xFFFF0000 red_anim.priority = 20 -dynamic_engine.add_animation(red_anim) +dynamic_engine.add(red_anim) var blue_anim = animation.solid(dynamic_engine) blue_anim.color = 0xFF0000FF blue_anim.priority = 10 -dynamic_engine.add_animation(blue_anim) +dynamic_engine.add(blue_anim) assert_equals(dynamic_engine.size(), 2, "Should have 2 animations") diff --git a/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be b/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be index 7722cd6fa..d8ae089c7 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be @@ -42,7 +42,7 @@ base_anim.opacity = 128 # 50% opacity base_anim.priority = 10 base_anim.name = "base_red" -opacity_engine.add_animation(base_anim) +opacity_engine.add(base_anim) opacity_engine.start() # Create frame buffer and test rendering @@ -77,7 +77,7 @@ assert_equals(masked_anim.opacity.name, "opacity_mask", "Opacity animation shoul print("\n--- Test 11c: Animation opacity rendering ---") opacity_engine.clear() -opacity_engine.add_animation(masked_anim) +opacity_engine.add(masked_anim) opacity_engine.start() # Start both animations @@ -111,7 +111,7 @@ rainbow_base.name = "rainbow_with_pulse" # Test multiple renders with changing opacity opacity_engine.clear() -opacity_engine.add_animation(rainbow_base) +opacity_engine.add(rainbow_base) rainbow_base.start() pulsing_opacity.start() @@ -181,7 +181,7 @@ base_nested.opacity = opacity1 # Test rendering with nested opacity opacity_engine.clear() -opacity_engine.add_animation(base_nested) +opacity_engine.add(base_nested) base_nested.start() opacity1.start() @@ -297,7 +297,7 @@ for i : 0..9 perf_animations.push(perf_base) perf_opacities.push(perf_opacity) - opacity_engine.add_animation(perf_base) + opacity_engine.add(perf_base) end # Start all animations diff --git a/lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be b/lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be new file mode 100644 index 000000000..cb6a0f7f3 --- /dev/null +++ b/lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be @@ -0,0 +1,349 @@ +# Black Frame Fix Test for SequenceManager +# Tests the atomic transition functionality that eliminates black frames +# between animation transitions with closure steps +# +# Command to run test: +# ./berry -s -g -m lib/libesp32/berry_animation -e "import tasmota" lib/libesp32/berry_animation/tests/black_frame_fix_test.be + +import string +import animation +import global +import tasmota + +def test_atomic_closure_batch_execution() + print("=== Black Frame Fix: Atomic Closure Batch Execution ===") + + # Create strip and engine + var strip = global.Leds(30) + var engine = animation.create_engine(strip) + var seq_manager = animation.SequenceManager(engine) + + # Create two test animations + var red_provider = animation.static_color(engine) + red_provider.color = 0xFFFF0000 + var red_anim = animation.solid(engine) + red_anim.color = red_provider + red_anim.priority = 0 + red_anim.duration = 0 + red_anim.loop = true + red_anim.name = "red" + + var blue_provider = animation.static_color(engine) + blue_provider.color = 0xFF0000FF + var blue_anim = animation.solid(engine) + blue_anim.color = blue_provider + blue_anim.priority = 0 + blue_anim.duration = 0 + blue_anim.loop = true + blue_anim.name = "blue" + + # Simple test - just verify the basic functionality works + # We'll check that closures execute and animations transition properly + + # Create sequence that would cause black frames without the fix: + # play red -> closure step -> play blue + var closure_executed = false + var test_closure = def (engine) + closure_executed = true + # Simulate color change or other state modification + end + + seq_manager.push_play_step(red_anim, 100) # Short duration + .push_closure_step(test_closure) # Closure step + .push_play_step(blue_anim, 100) # Next animation + + # Start sequence + tasmota.set_millis(10000) + engine.start() + engine.on_tick(10000) + seq_manager.start(10000) + + # Verify initial state + assert(engine.size() == 1, "Should have red animation running") + assert(seq_manager.step_index == 0, "Should be on first step") + assert(!closure_executed, "Closure should not be executed yet") + + # Advance past first animation duration to trigger atomic transition + tasmota.set_millis(10101) # 101ms later + engine.on_tick(10101) + seq_manager.update(10101) + + # Verify atomic transition occurred + assert(closure_executed, "Closure should have been executed") + assert(engine.size() == 1, "Should still have one animation (blue replaced red)") + assert(seq_manager.step_index == 2, "Should have advanced past closure step to blue animation") + + # Verify that the atomic transition worked correctly + # The key test is that closure executed and we advanced properly + assert(engine.size() >= 0, "Engine should be in valid state") + + print("āœ“ Atomic closure batch execution prevents black frames") +end + +def test_multiple_consecutive_closures() + print("=== Black Frame Fix: Multiple Consecutive Closures ===") + + # Create strip and engine + var strip = global.Leds(30) + var engine = animation.create_engine(strip) + var seq_manager = animation.SequenceManager(engine) + + # Create test animations + var green_provider = animation.static_color(engine) + green_provider.color = 0xFF00FF00 + var green_anim = animation.solid(engine) + green_anim.color = green_provider + green_anim.priority = 0 + green_anim.duration = 0 + green_anim.loop = true + green_anim.name = "green" + + var yellow_provider = animation.static_color(engine) + yellow_provider.color = 0xFFFFFF00 + var yellow_anim = animation.solid(engine) + yellow_anim.color = yellow_provider + yellow_anim.priority = 0 + yellow_anim.duration = 0 + yellow_anim.loop = true + yellow_anim.name = "yellow" + + # Track closure execution order + var closure_order = [] + + var closure1 = def (engine) closure_order.push("closure1") end + var closure2 = def (engine) closure_order.push("closure2") end + var closure3 = def (engine) closure_order.push("closure3") end + + # Create sequence with multiple consecutive closures + seq_manager.push_play_step(green_anim, 50) + .push_closure_step(closure1) + .push_closure_step(closure2) + .push_closure_step(closure3) + .push_play_step(yellow_anim, 50) + + # Start sequence + tasmota.set_millis(20000) + engine.start() + engine.on_tick(20000) + seq_manager.start(20000) + + # Verify initial state + assert(engine.size() == 1, "Should have green animation") + assert(size(closure_order) == 0, "No closures executed yet") + + # Advance to trigger batch closure execution + tasmota.set_millis(20051) + engine.on_tick(20051) + seq_manager.update(20051) + + # Verify all closures executed in batch + assert(size(closure_order) == 3, "All three closures should be executed") + assert(closure_order[0] == "closure1", "First closure should execute first") + assert(closure_order[1] == "closure2", "Second closure should execute second") + assert(closure_order[2] == "closure3", "Third closure should execute third") + + # Verify atomic transition to next animation + assert(engine.size() == 1, "Should have yellow animation (atomic transition)") + assert(seq_manager.step_index == 4, "Should be on yellow animation step") + + print("āœ“ Multiple consecutive closures execute atomically") +end + +def test_closure_batch_at_sequence_start() + print("=== Black Frame Fix: Closure Batch at Sequence Start ===") + + # Create strip and engine + var strip = global.Leds(30) + var engine = animation.create_engine(strip) + var seq_manager = animation.SequenceManager(engine) + + # Create test animation + var purple_provider = animation.static_color(engine) + purple_provider.color = 0xFF8000FF + var purple_anim = animation.solid(engine) + purple_anim.color = purple_provider + purple_anim.priority = 0 + purple_anim.duration = 0 + purple_anim.loop = true + purple_anim.name = "purple" + + # Track initial closure execution + var initial_setup_done = false + var initial_closure = def (engine) initial_setup_done = true end + + # Create sequence starting with closure steps + seq_manager.push_closure_step(initial_closure) + .push_play_step(purple_anim, 100) + + # Start sequence + tasmota.set_millis(30000) + engine.start() + engine.on_tick(30000) + seq_manager.start(30000) + + # Verify initial closures executed immediately and animation started + assert(initial_setup_done, "Initial closure should execute immediately") + assert(engine.size() == 1, "Animation should start immediately after initial closures") + assert(seq_manager.step_index == 1, "Should advance past initial closure to animation") + + print("āœ“ Initial closure steps execute atomically at sequence start") +end + +def test_repeat_sequence_closure_batching() + print("=== Black Frame Fix: Repeat Sequence Closure Batching ===") + + # Create strip and engine + var strip = global.Leds(30) + var engine = animation.create_engine(strip) + + # Create test animation + var cyan_provider = animation.static_color(engine) + cyan_provider.color = 0xFF00FFFF + var cyan_anim = animation.solid(engine) + cyan_anim.color = cyan_provider + cyan_anim.priority = 0 + cyan_anim.duration = 0 + cyan_anim.loop = true + cyan_anim.name = "cyan" + + # Track iteration state + var iteration_count = 0 + var iteration_closure = def (engine) iteration_count += 1 end + + # Create repeating sequence with closure + var seq_manager = animation.SequenceManager(engine, 3) # Repeat 3 times + seq_manager.push_closure_step(iteration_closure) + .push_play_step(cyan_anim, 30) # Very short for fast testing + + # Start sequence + tasmota.set_millis(40000) + engine.start() + engine.on_tick(40000) + seq_manager.start(40000) + + # Verify first iteration + assert(iteration_count == 1, "First iteration closure should execute") + assert(engine.size() == 1, "Animation should be running") + assert(seq_manager.current_iteration == 0, "Should be on first iteration") + + # Complete first iteration and start second + tasmota.set_millis(40031) + engine.on_tick(40031) + seq_manager.update(40031) + + # Verify second iteration closure executed atomically + assert(iteration_count == 2, "Second iteration closure should execute") + assert(engine.size() == 1, "Animation should continue without gap") + assert(seq_manager.current_iteration == 1, "Should be on second iteration") + + # Complete second iteration and start third + tasmota.set_millis(40061) + engine.on_tick(40061) + seq_manager.update(40061) + + # Verify third iteration + assert(iteration_count == 3, "Third iteration closure should execute") + assert(seq_manager.current_iteration == 2, "Should be on third iteration") + + # Complete all iterations + tasmota.set_millis(40091) + engine.on_tick(40091) + seq_manager.update(40091) + + # Verify sequence completion + assert(!seq_manager.is_running, "Sequence should complete after 3 iterations") + assert(iteration_count == 3, "Should have executed exactly 3 iterations") + + print("āœ“ Repeat sequence closure batching works correctly") +end + +def test_black_frame_fix_integration() + print("=== Black Frame Fix: Full Integration Test ===") + + # This test simulates the exact scenario from demo_shutter_rainbow.anim + # that was causing black frames + + # Create strip and engine + var strip = global.Leds(30) + var engine = animation.create_engine(strip) + + # Simulate shutter animation + var shutter_provider = animation.static_color(engine) + shutter_provider.color = 0xFFFFFFFF + var shutter_anim = animation.solid(engine) + shutter_anim.color = shutter_provider + shutter_anim.priority = 0 + shutter_anim.duration = 0 + shutter_anim.loop = true + shutter_anim.name = "shutter" + + # Simulate color cycle (like col1.next = 1) + var color_index = 0 + var advance_color = def (engine) color_index += 1 end + + # Create sequence similar to the problematic one: + # sequence shutter_seq repeat 5 times { + # play shutter_animation for 200ms + # col1.next = 1 + # } + var seq_manager = animation.SequenceManager(engine, 5) + seq_manager.push_play_step(shutter_anim, 200) + .push_closure_step(advance_color) + + # Simple test - verify the sequence executes properly + + # Start sequence + tasmota.set_millis(50000) + engine.start() + engine.on_tick(50000) + seq_manager.start(50000) + + # Run through multiple iterations to test the fix + for i : 0..4 # 5 iterations + # Let iteration complete + tasmota.set_millis(50000 + (i + 1) * 201) # 201ms per iteration + engine.on_tick(50000 + (i + 1) * 201) + seq_manager.update(50000 + (i + 1) * 201) + + # Verify color advanced + assert(color_index == i + 1, f"Color should advance to {i + 1}") + end + + # Verify the sequence executed properly + assert(engine.size() >= 0, "Engine should be in valid state") + + # Verify sequence completed + assert(!seq_manager.is_running, "Sequence should complete after 5 iterations") + assert(color_index == 5, "Color should have advanced 5 times") + + print("āœ“ Black frame fix integration test passed - no animation gaps detected") +end + +# Run all black frame fix tests +def run_black_frame_fix_tests() + print("Starting Black Frame Fix Tests...") + print("These tests verify that the atomic transition functionality") + print("eliminates black frames between animation transitions.\n") + + test_atomic_closure_batch_execution() + test_multiple_consecutive_closures() + test_closure_batch_at_sequence_start() + test_repeat_sequence_closure_batching() + test_black_frame_fix_integration() + + print("\nšŸŽ‰ All Black Frame Fix tests passed!") + print("The atomic transition functionality is working correctly.") + return true +end + +# Execute tests +run_black_frame_fix_tests() + +return { + "run_black_frame_fix_tests": run_black_frame_fix_tests, + "test_atomic_closure_batch_execution": test_atomic_closure_batch_execution, + "test_multiple_consecutive_closures": test_multiple_consecutive_closures, + "test_closure_batch_at_sequence_start": test_closure_batch_at_sequence_start, + "test_repeat_sequence_closure_batching": test_repeat_sequence_closure_batching, + "test_black_frame_fix_integration": test_black_frame_fix_integration +} \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be b/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be index bd7bddc91..846086045 100644 --- a/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/breathe_animation_test.be @@ -126,7 +126,7 @@ except "value_error" end # Test engine integration -engine.add_animation(blue_breathe) +engine.add(blue_breathe) print("āœ“ Animation added to engine successfully") # Validate key test results diff --git a/lib/libesp32/berry_animation/src/tests/comet_animation_test.be b/lib/libesp32/berry_animation/src/tests/comet_animation_test.be index 08a815481..71521cd95 100644 --- a/lib/libesp32/berry_animation/src/tests/comet_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/comet_animation_test.be @@ -285,7 +285,7 @@ engine_comet.tail_length = 5 engine_comet.speed = 2560 # Test adding to engine -engine.add_animation(engine_comet) +engine.add(engine_comet) assert_test(true, "Animation should be added to engine successfully") # Test strip length from engine diff --git a/lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be b/lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be index 5541dabe4..c176e4dd4 100644 --- a/lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be +++ b/lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be @@ -78,7 +78,7 @@ def test_on_tick_performance() # Add a test animation var anim = TestAnimation(engine) anim.priority = 1 - engine.add_animation(anim) + engine.add(anim) anim.start(tasmota.millis()) # Start the engine @@ -125,7 +125,7 @@ def test_animation_update_timing() # Add a test animation var anim = TestAnimation(engine) anim.priority = 1 - engine.add_animation(anim) + engine.add(anim) # Start the animation and engine var start_time = 2000 diff --git a/lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be b/lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be index 972e7425f..37ed2e46a 100644 --- a/lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be +++ b/lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be @@ -19,9 +19,9 @@ def test_multiple_sequence_managers() var seq_manager3 = animation.SequenceManager(engine) # Register all sequence managers with engine - engine.add_sequence_manager(seq_manager1) - engine.add_sequence_manager(seq_manager2) - engine.add_sequence_manager(seq_manager3) + engine.add(seq_manager1) + engine.add(seq_manager2) + engine.add(seq_manager3) assert(engine.sequence_managers.size() == 3, "Engine should have 3 sequence managers") @@ -93,8 +93,8 @@ def test_sequence_manager_coordination() var seq_manager1 = animation.SequenceManager(engine) var seq_manager2 = animation.SequenceManager(engine) - engine.add_sequence_manager(seq_manager1) - engine.add_sequence_manager(seq_manager2) + engine.add(seq_manager1) + engine.add(seq_manager2) # Create test animations using new parameterized API var provider1 = animation.static_color(engine) @@ -160,8 +160,8 @@ def test_sequence_manager_engine_integration() var seq_manager1 = animation.SequenceManager(engine) var seq_manager2 = animation.SequenceManager(engine) - engine.add_sequence_manager(seq_manager1) - engine.add_sequence_manager(seq_manager2) + engine.add(seq_manager1) + engine.add(seq_manager2) # Create test animations using new parameterized API var provider1 = animation.static_color(engine) @@ -221,9 +221,9 @@ def test_sequence_manager_removal() var seq_manager2 = animation.SequenceManager(engine) var seq_manager3 = animation.SequenceManager(engine) - engine.add_sequence_manager(seq_manager1) - engine.add_sequence_manager(seq_manager2) - engine.add_sequence_manager(seq_manager3) + engine.add(seq_manager1) + engine.add(seq_manager2) + engine.add(seq_manager3) assert(engine.sequence_managers.size() == 3, "Should have 3 sequence managers") @@ -262,8 +262,8 @@ def test_sequence_manager_clear_all() var seq_manager1 = animation.SequenceManager(engine) var seq_manager2 = animation.SequenceManager(engine) - engine.add_sequence_manager(seq_manager1) - engine.add_sequence_manager(seq_manager2) + engine.add(seq_manager1) + engine.add(seq_manager2) # Create test animations and sequences using new parameterized API var provider1 = animation.static_color(engine) @@ -321,7 +321,7 @@ def test_sequence_manager_stress() var seq_managers = [] for i : 0..9 # 10 sequence managers var seq_mgr = animation.SequenceManager(engine) - engine.add_sequence_manager(seq_mgr) + engine.add(seq_mgr) seq_managers.push(seq_mgr) end @@ -347,7 +347,7 @@ def test_sequence_manager_stress() seq_managers[i].push_play_step(test_anim, (i + 1) * 500) # Different durations .push_wait_step(200) - engine.add_sequence_manager(seq_managers[i]) + engine.add(seq_managers[i]) end # Verify all sequences are running diff --git a/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be b/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be index b69b97917..5929322c0 100644 --- a/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be +++ b/lib/libesp32/berry_animation/src/tests/sequence_manager_test.be @@ -145,7 +145,7 @@ def test_sequence_manager_timing() # Start sequence at time 20000 tasmota.set_millis(20000) - engine.add_sequence_manager(seq_manager) + engine.add(seq_manager) engine.start() # Start the engine engine.on_tick(20000) # Update engine time @@ -202,7 +202,7 @@ def test_sequence_manager_step_info() # Start sequence tasmota.set_millis(30000) - engine.add_sequence_manager(seq_manager) + engine.add(seq_manager) engine.start() # Start the engine engine.on_tick(30000) # Update engine time @@ -276,7 +276,7 @@ def test_sequence_manager_is_running() seq_manager.push_play_step(test_anim, 1000) tasmota.set_millis(50000) - engine.add_sequence_manager(seq_manager) + engine.add(seq_manager) engine.start() # Start the engine engine.on_tick(50000) # Update engine time assert(seq_manager.is_sequence_running() == true, "Sequence should be running after start") @@ -323,7 +323,7 @@ def test_sequence_manager_assignment_steps() # Start sequence tasmota.set_millis(80000) - engine.add_sequence_manager(seq_manager) + engine.add(seq_manager) engine.start() # Start the engine engine.on_tick(80000) # Update engine time @@ -393,7 +393,7 @@ def test_sequence_manager_complex_sequence() # Start sequence tasmota.set_millis(60000) - engine.add_sequence_manager(seq_manager) + engine.add(seq_manager) engine.start() # Start the engine engine.on_tick(60000) # Update engine time @@ -438,7 +438,7 @@ def test_sequence_manager_integration() # Test engine integration var seq_manager = animation.SequenceManager(engine) - engine.add_sequence_manager(seq_manager) + engine.add(seq_manager) # Create test sequence using new parameterized API var color_provider = animation.static_color(engine) @@ -632,7 +632,7 @@ def test_sequence_manager_dynamic_repeat_changes() # Start sequence tasmota.set_millis(120000) - engine.add_sequence_manager(seq_manager) + engine.add(seq_manager) engine.start() engine.on_tick(120000) seq_manager.start(120000) diff --git a/lib/libesp32/berry_animation/src/tests/test_all.be b/lib/libesp32/berry_animation/src/tests/test_all.be index 3647542d6..202155a71 100644 --- a/lib/libesp32/berry_animation/src/tests/test_all.be +++ b/lib/libesp32/berry_animation/src/tests/test_all.be @@ -90,6 +90,7 @@ def run_all_tests() # Sequence and timing tests "lib/libesp32/berry_animation/src/tests/sequence_manager_test.be", "lib/libesp32/berry_animation/src/tests/sequence_manager_layering_test.be", + "lib/libesp32/berry_animation/src/tests/black_frame_fix_test.be", # Value provider tests "lib/libesp32/berry_animation/src/tests/core_value_provider_test.be",