diff --git a/lib/libesp32/berry_animation/README.md b/lib/libesp32/berry_animation/README.md index 747ba8389..27ae4a166 100644 --- a/lib/libesp32/berry_animation/README.md +++ b/lib/libesp32/berry_animation/README.md @@ -63,6 +63,32 @@ animation sunset_glow = rich_palette( run sunset_glow ``` +### Reusable Templates + +Create parameterized animation patterns that can be reused with different settings: + +```berry +# Define a reusable template +template pulse_effect { + param color type color + param speed + param brightness + + animation pulse = pulsating_animation( + color=color + period=speed + opacity=brightness + ) + + run pulse +} + +# Use the template with different parameters +pulse_effect(red, 2s, 255) # Bright red pulse +pulse_effect(blue, 1s, 150) # Dimmer blue pulse +pulse_effect(0xFF69B4, 3s, 200) # Hot pink pulse +``` + ### Animation Sequences ```berry diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be new file mode 100644 index 000000000..454e5fd49 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/cylon_generic.be @@ -0,0 +1,64 @@ +# Generated Berry code from Animation DSL +# Source: cylon_generic.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() + +# Template function: cylon_effect +def cylon_effect_template(engine, eye_color_, back_color_, duration_) + var strip_len_ = animation.strip_length(engine) + var eye_animation_ = animation.beacon_animation(engine) + eye_animation_.color = eye_color_ + eye_animation_.back_color = back_color_ + eye_animation_.pos = (def (engine) + var provider = animation.cosine_osc(engine) + provider.min_value = (-1) + provider.max_value = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) - 2 end) + provider.duration = duration_ + return provider + end)(engine) + eye_animation_.beacon_size = 3 # small 3 pixels eye + eye_animation_.slew_size = 2 # with 2 pixel shading around + eye_animation_.priority = 5 + engine.add_animation(eye_animation_) +end + +animation.register_user_function('cylon_effect', cylon_effect_template) + +cylon_effect_template(engine, 0xFFFF0000, 0x00000000, 3000) +engine.start() + + +#- Original DSL source: +# Cylon Red Eye +# Automatically adapts to the length of the strip + +template cylon_effect { + param eye_color type color + param back_color type color + param duration + + set strip_len = strip_length() + + animation eye_animation = beacon_animation( + color = eye_color + back_color = back_color + pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = duration) + beacon_size = 3 # small 3 pixels eye + slew_size = 2 # with 2 pixel shading around + priority = 5 + ) + + run eye_animation +} + +cylon_effect(red, transparent, 3s) + +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be new file mode 100644 index 000000000..81bfa0419 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/import_demo.be @@ -0,0 +1,62 @@ +# Generated Berry code from Animation DSL +# Source: import_demo.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Import Demo - Demonstrates DSL import functionality +# This example shows how to import user functions and use them in animations +# Import user functions module +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +import user_functions +# Create animations that use imported user functions +var random_red_ = animation.solid(engine) +random_red_.color = 0xFFFF0000 +random_red_.opacity = animation.create_closure_value(engine, def (self) return animation.get_user_function('rand_demo')(self.engine) end) +var breathing_blue_ = animation.solid(engine) +breathing_blue_.color = 0xFF0000FF +breathing_blue_.opacity = animation.create_closure_value(engine, def (self) return self.max(50, self.min(255, animation.get_user_function('rand_demo')(self.engine) + 100)) end) +var dynamic_green_ = animation.solid(engine) +dynamic_green_.color = 0xFF008000 +dynamic_green_.opacity = animation.create_closure_value(engine, def (self) return self.abs(animation.get_user_function('rand_demo')(self.engine) - 128) + 64 end) +# Create a sequence that cycles through the animations +var import_demo_ = animation.SequenceManager(engine) + .push_play_step(random_red_, 3000) + .push_play_step(breathing_blue_, 3000) + .push_play_step(dynamic_green_, 3000) +# Run the demo +engine.add_sequence_manager(import_demo_) +engine.start() + + +#- Original DSL source: +# Import Demo - Demonstrates DSL import functionality +# This example shows how to import user functions and use them in animations + +# Import user functions module +import user_functions + +# Create animations that use imported user functions +animation random_red = solid(color=red) +random_red.opacity = user.rand_demo() + +animation breathing_blue = solid(color=blue) +breathing_blue.opacity = max(50, min(255, user.rand_demo() + 100)) + +animation dynamic_green = solid(color=green) +dynamic_green.opacity = abs(user.rand_demo() - 128) + 64 + +# Create a sequence that cycles through the animations +sequence import_demo { + play random_red for 3s + play breathing_blue for 3s + play dynamic_green for 3s +} + +# Run the demo +run import_demo +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/pattern_fire.be b/lib/libesp32/berry_animation/anim_examples/compiled/pattern_fire.be new file mode 100644 index 000000000..56f5dfdbb --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/pattern_fire.be @@ -0,0 +1,41 @@ +# Generated Berry code from Animation DSL +# Source: pattern_fire.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Pattern fire.anim +# Define fire palette from black to yellow +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +var fire_colors_ = bytes("FF800000" "FFFF0000" "FFFF4500" "FFFFFF00") +var strip_len_ = animation.strip_length(engine) +var fire_color_ = animation.rich_palette(engine) +fire_color_.palette = fire_colors_ +var fire_pattern_ = animation.palette_gradient_animation(engine) +fire_pattern_.color_source = fire_color_ +fire_pattern_.spatial_period = animation.create_closure_value(engine, def (self) return self.resolve(strip_len_) / 2 end) +engine.add_animation(fire_pattern_) +engine.start() + + +#- Original DSL source: +# Pattern fire.anim + +# Define fire palette from black to yellow +palette fire_colors = [ + 0x800000 # Dark red + 0xFF0000 # Red + 0xFF4500 # Orange red + 0xFFFF00 # Yellow +] + +set strip_len = strip_length() +color fire_color = rich_palette(palette=fire_colors) +animation fire_pattern = palette_gradient_animation(color_source=fire_color, spatial_period=strip_len/2) + +run fire_pattern +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be new file mode 100644 index 000000000..1c223a95d --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_complex_template.be @@ -0,0 +1,88 @@ +# Generated Berry code from Animation DSL +# Source: test_complex_template.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Complex template test +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +# Template function: rainbow_pulse +def rainbow_pulse_template(engine, pal1_, pal2_, duration_, back_color_) + var cycle_color_ = animation.color_cycle(engine) + cycle_color_.palette = pal1_ + cycle_color_.cycle_period = duration_ + # Create pulsing animation + var pulse_ = animation.pulsating_animation(engine) + pulse_.color = cycle_color_ + pulse_.period = duration_ + # Create background + var background_ = animation.solid(engine) + background_.color = back_color_ + background_.priority = 1 + # Set pulse priority higher + pulse_.priority = 10 + # Run both animations + engine.add_animation(background_) + engine.add_animation(pulse_) +end + +animation.register_user_function('rainbow_pulse', rainbow_pulse_template) + +# Create palettes +var fire_palette_ = bytes("00000000" "80FF0000" "FFFFFF00") +var ocean_palette_ = bytes("00000080" "800080FF" "FF00FFFF") +# Use the template +rainbow_pulse_template(engine, fire_palette_, ocean_palette_, 3000, 0xFF001100) +engine.start() + + +#- Original DSL source: +# Complex template test + +template rainbow_pulse { + param pal1 type palette + param pal2 type palette + param duration + param back_color type color + + # Create color cycle using first palette + color cycle_color = color_cycle(palette=pal1, cycle_period=duration) + + # Create pulsing animation + animation pulse = pulsating_animation( + color=cycle_color + period=duration + ) + + # Create background + animation background = solid(color=back_color) + background.priority = 1 + + # Set pulse priority higher + pulse.priority = 10 + + # Run both animations + run background + run pulse +} + +# Create palettes +palette fire_palette = [ + (0, 0x000000) + (128, 0xFF0000) + (255, 0xFFFF00) +] + +palette ocean_palette = [ + (0, 0x000080) + (128, 0x0080FF) + (255, 0x00FFFF) +] + +# Use the template +rainbow_pulse(fire_palette, ocean_palette, 3s, 0x001100) +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be new file mode 100644 index 000000000..017c676f2 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple.be @@ -0,0 +1,50 @@ +# Generated Berry code from Animation DSL +# Source: test_template_simple.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Test template functionality +# Define a simple template +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +# Template function: pulse_effect +def pulse_effect_template(engine, base_color_, duration_, brightness_) + var pulse_ = animation.pulsating_animation(engine) + pulse_.color = base_color_ + pulse_.period = duration_ + pulse_.opacity = brightness_ + engine.add_animation(pulse_) +end + +animation.register_user_function('pulse_effect', pulse_effect_template) + +# Use the template - templates add animations directly to engine and run them +pulse_effect_template(engine, 0xFFFF0000, 2000, 204) +engine.start() + + +#- Original DSL source: +# Test template functionality + +# Define a simple template +template pulse_effect { + param base_color type color + param duration + param brightness + + animation pulse = pulsating_animation( + color=base_color + period=duration + ) + pulse.opacity = brightness + + run pulse +} + +# Use the template - templates add animations directly to engine and run them +pulse_effect(red, 2s, 80%) +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be new file mode 100644 index 000000000..d8b718f81 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/compiled/test_template_simple_reusable.be @@ -0,0 +1,50 @@ +# Generated Berry code from Animation DSL +# Source: test_template_simple_reusable.anim +# +# This file was automatically generated by compile_all_examples.sh +# Do not edit manually - changes will be overwritten + +import animation + +# Test template functionality +# Define a simple template +# Auto-generated strip initialization (using Tasmota configuration) +var engine = animation.init_strip() + +# Template function: pulse_effect +def pulse_effect_template(engine, base_color_, duration_, brightness_) + var pulse_ = animation.pulsating_animation(engine) + pulse_.color = base_color_ + pulse_.period = duration_ + pulse_.opacity = brightness_ + engine.add_animation(pulse_) +end + +animation.register_user_function('pulse_effect', pulse_effect_template) + +# Use the template - templates add animations directly to engine and run them +pulse_effect_template(engine, 0xFFFF0000, 2000, 204) +engine.start() + + +#- Original DSL source: +# Test template functionality + +# Define a simple template +template pulse_effect { + param base_color type color + param duration + param brightness + + animation pulse = pulsating_animation( + color=base_color + period=duration + ) + pulse.opacity = brightness + + run pulse +} + +# Use the template - templates add animations directly to engine and run them +pulse_effect(red, 2s, 80%) +-# diff --git a/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be b/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be index cf6ab6de0..c1215045a 100644 --- a/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be +++ b/lib/libesp32/berry_animation/anim_examples/compiled/user_functions_demo.be @@ -8,10 +8,11 @@ import animation # User Functions Demo - Advanced Computed Parameters # Shows how to use user functions in computed parameters via property assignments -# Get the current strip length for calculations # Auto-generated strip initialization (using Tasmota configuration) var engine = animation.init_strip() +import user_functions +# Get the current strip length for calculations var strip_len_ = animation.strip_length(engine) # Example 1: Simple user function in computed parameter var random_base_ = animation.solid(engine) @@ -56,6 +57,8 @@ engine.start() # User Functions Demo - Advanced Computed Parameters # Shows how to use user functions in computed parameters via property assignments +import user_functions + # Get the current strip length for calculations set strip_len = strip_length() @@ -65,7 +68,7 @@ animation random_base = solid( priority=10 ) # Use user function in property assignment -random_base.opacity = rand_demo() +random_base.opacity = user.rand_demo() # Example 2: User function with mathematical operations animation random_bounded = solid( @@ -73,7 +76,7 @@ animation random_bounded = solid( priority=8 ) # User function with bounds using math functions -random_bounded.opacity = max(50, min(255, rand_demo() + 100)) +random_bounded.opacity = max(50, min(255, user.rand_demo() + 100)) # Example 3: User function in arithmetic expressions animation random_variation = solid( @@ -81,7 +84,7 @@ animation random_variation = solid( priority=15 ) # Mix user function with arithmetic operations -random_variation.opacity = abs(rand_demo() - 128) + 64 +random_variation.opacity = abs(user.rand_demo() - 128) + 64 # Example 4: User function affecting different properties animation random_multi = solid( @@ -89,7 +92,7 @@ animation random_multi = solid( priority=12 ) # Use user function for multiple properties -random_multi.opacity = max(100, rand_demo()) +random_multi.opacity = max(100, user.rand_demo()) # Example 5: Complex expression with user function animation random_complex = solid( @@ -97,7 +100,7 @@ animation random_complex = solid( priority=20 ) # Complex expression with user function and math operations -random_complex.opacity = round((rand_demo() + 128) / 2 + abs(rand_demo() - 100)) +random_complex.opacity = round((user.rand_demo() + 128) / 2 + abs(user.rand_demo() - 100)) # Run all animations to demonstrate the effects run random_base diff --git a/lib/libesp32/berry_animation/anim_examples/cylon_generic.anim b/lib/libesp32/berry_animation/anim_examples/cylon_generic.anim new file mode 100644 index 000000000..e3ee9e577 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/cylon_generic.anim @@ -0,0 +1,23 @@ +# Cylon Red Eye +# Automatically adapts to the length of the strip + +template cylon_effect { + param eye_color type color + param back_color type color + param duration + + set strip_len = strip_length() + + animation eye_animation = beacon_animation( + color = eye_color + back_color = back_color + pos = cosine_osc(min_value = -1, max_value = strip_len - 2, duration = duration) + beacon_size = 3 # small 3 pixels eye + slew_size = 2 # with 2 pixel shading around + priority = 5 + ) + + run eye_animation +} + +cylon_effect(red, transparent, 3s) diff --git a/lib/libesp32/berry_animation/anim_examples/cylon_red_green.anim b/lib/libesp32/berry_animation/anim_examples/cylon_red_green.anim deleted file mode 100644 index 8d9615622..000000000 --- a/lib/libesp32/berry_animation/anim_examples/cylon_red_green.anim +++ /dev/null @@ -1,23 +0,0 @@ -# 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/import_demo.anim b/lib/libesp32/berry_animation/anim_examples/import_demo.anim new file mode 100644 index 000000000..d1c581447 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/import_demo.anim @@ -0,0 +1,25 @@ +# Import Demo - Demonstrates DSL import functionality +# This example shows how to import user functions and use them in animations + +# Import user functions module +import user_functions + +# Create animations that use imported user functions +animation random_red = solid(color=red) +random_red.opacity = user.rand_demo() + +animation breathing_blue = solid(color=blue) +breathing_blue.opacity = max(50, min(255, user.rand_demo() + 100)) + +animation dynamic_green = solid(color=green) +dynamic_green.opacity = abs(user.rand_demo() - 128) + 64 + +# Create a sequence that cycles through the animations +sequence import_demo { + play random_red for 3s + play breathing_blue for 3s + play dynamic_green for 3s +} + +# Run the demo +run import_demo \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_examples/pattern_fire.anim b/lib/libesp32/berry_animation/anim_examples/pattern_fire.anim new file mode 100644 index 000000000..70e5b0268 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/pattern_fire.anim @@ -0,0 +1,15 @@ +# Pattern fire.anim + +# Define fire palette from black to yellow +palette fire_colors = [ + 0x800000 # Dark red + 0xFF0000 # Red + 0xFF4500 # Orange red + 0xFFFF00 # Yellow +] + +set strip_len = strip_length() +color fire_color = rich_palette(palette=fire_colors) +animation fire_pattern = palette_gradient_animation(color_source=fire_color, spatial_period=strip_len/2) + +run fire_pattern \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_examples/test_complex_template.anim b/lib/libesp32/berry_animation/anim_examples/test_complex_template.anim new file mode 100644 index 000000000..3d788c1b6 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/test_complex_template.anim @@ -0,0 +1,44 @@ +# Complex template test + +template rainbow_pulse { + param pal1 type palette + param pal2 type palette + param duration + param back_color type color + + # Create color cycle using first palette + color cycle_color = color_cycle(palette=pal1, cycle_period=duration) + + # Create pulsing animation + animation pulse = pulsating_animation( + color=cycle_color + period=duration + ) + + # Create background + animation background = solid(color=back_color) + background.priority = 1 + + # Set pulse priority higher + pulse.priority = 10 + + # Run both animations + run background + run pulse +} + +# Create palettes +palette fire_palette = [ + (0, 0x000000) + (128, 0xFF0000) + (255, 0xFFFF00) +] + +palette ocean_palette = [ + (0, 0x000080) + (128, 0x0080FF) + (255, 0x00FFFF) +] + +# Use the template +rainbow_pulse(fire_palette, ocean_palette, 3s, 0x001100) \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_examples/test_template_simple.anim b/lib/libesp32/berry_animation/anim_examples/test_template_simple.anim new file mode 100644 index 000000000..273d278b9 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/test_template_simple.anim @@ -0,0 +1,19 @@ +# Test template functionality + +# Define a simple template +template pulse_effect { + param base_color type color + param duration + param brightness + + animation pulse = pulsating_animation( + color=base_color + period=duration + ) + pulse.opacity = brightness + + run pulse +} + +# Use the template - templates add animations directly to engine and run them +pulse_effect(red, 2s, 80%) \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_examples/test_template_simple_reusable.anim b/lib/libesp32/berry_animation/anim_examples/test_template_simple_reusable.anim new file mode 100644 index 000000000..273d278b9 --- /dev/null +++ b/lib/libesp32/berry_animation/anim_examples/test_template_simple_reusable.anim @@ -0,0 +1,19 @@ +# Test template functionality + +# Define a simple template +template pulse_effect { + param base_color type color + param duration + param brightness + + animation pulse = pulsating_animation( + color=base_color + period=duration + ) + pulse.opacity = brightness + + run pulse +} + +# Use the template - templates add animations directly to engine and run them +pulse_effect(red, 2s, 80%) \ No newline at end of file diff --git a/lib/libesp32/berry_animation/anim_examples/user_functions_demo.anim b/lib/libesp32/berry_animation/anim_examples/user_functions_demo.anim index b83aac8cb..41c7baee6 100644 --- a/lib/libesp32/berry_animation/anim_examples/user_functions_demo.anim +++ b/lib/libesp32/berry_animation/anim_examples/user_functions_demo.anim @@ -1,6 +1,8 @@ # User Functions Demo - Advanced Computed Parameters # Shows how to use user functions in computed parameters via property assignments +import user_functions + # Get the current strip length for calculations set strip_len = strip_length() @@ -10,7 +12,7 @@ animation random_base = solid( priority=10 ) # Use user function in property assignment -random_base.opacity = rand_demo() +random_base.opacity = user.rand_demo() # Example 2: User function with mathematical operations animation random_bounded = solid( @@ -18,7 +20,7 @@ animation random_bounded = solid( priority=8 ) # User function with bounds using math functions -random_bounded.opacity = max(50, min(255, rand_demo() + 100)) +random_bounded.opacity = max(50, min(255, user.rand_demo() + 100)) # Example 3: User function in arithmetic expressions animation random_variation = solid( @@ -26,7 +28,7 @@ animation random_variation = solid( priority=15 ) # Mix user function with arithmetic operations -random_variation.opacity = abs(rand_demo() - 128) + 64 +random_variation.opacity = abs(user.rand_demo() - 128) + 64 # Example 4: User function affecting different properties animation random_multi = solid( @@ -34,7 +36,7 @@ animation random_multi = solid( priority=12 ) # Use user function for multiple properties -random_multi.opacity = max(100, rand_demo()) +random_multi.opacity = max(100, user.rand_demo()) # Example 5: Complex expression with user function animation random_complex = solid( @@ -42,7 +44,7 @@ animation random_complex = solid( priority=20 ) # Complex expression with user function and math operations -random_complex.opacity = round((rand_demo() + 128) / 2 + abs(rand_demo() - 100)) +random_complex.opacity = round((user.rand_demo() + 128) / 2 + abs(user.rand_demo() - 100)) # Run all animations to demonstrate the effects run random_base diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md index 0ca12a4bc..659251b90 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_CLASS_HIERARCHY.md @@ -73,8 +73,8 @@ Unified base class for all visual elements. Inherits from `ParameterizedObject`. | `is_running` | bool | false | - | Whether the animation is active | | `priority` | int | 10 | 0-255 | Rendering priority (higher = on top) | | `duration` | int | 0 | min: 0 | Animation duration in ms (0 = infinite) | -| `loop` | bool | true | - | Whether to loop when duration is reached | -| `opacity` | int | 255 | 0-255 | Animation opacity/brightness | +| `loop` | bool | false | - | Whether to loop when duration is reached | +| `opacity` | any | 255 | - | Animation opacity (number, FrameBuffer, or Animation) | | `color` | int | 0xFFFFFFFF | - | Base color in ARGB format | **Special Behavior**: Setting `is_running = true/false` starts/stops the animation. @@ -1213,14 +1213,20 @@ animation zoomed_sparkles = scale_animation( ### PalettePatternAnimation -Applies colors from a color provider to specific patterns. Inherits from `Animation`. +Applies colors from a color provider to specific patterns using an efficient bytes() buffer. Inherits from `Animation`. | Parameter | Type | Default | Constraints | Description | |-----------|------|---------|-------------|-------------| | `color_source` | instance | nil | - | Color provider for pattern mapping | -| `pattern_func` | function | nil | - | Function that generates pattern values | +| `pattern_func` | function | nil | - | Function that generates pattern values (0-255) for each pixel | | *(inherits all Animation parameters)* | | | | | +**Implementation Details:** +- Uses `bytes()` buffer for efficient storage of per-pixel values +- Pattern function should return values in 0-255 range +- Color source receives values in 0-255 range via `get_color_for_value(value, time_ms)` +- Buffer automatically resizes when strip length changes + **Factory**: `animation.palette_pattern_animation(engine)` ### PaletteWaveAnimation @@ -1233,6 +1239,11 @@ Creates sine wave patterns with palette colors. Inherits from `PalettePatternAni | `wave_length` | int | 10 | min: 1 | Wave length in pixels | | *(inherits all PalettePatternAnimation parameters)* | | | | | +**Pattern Generation:** +- Generates sine wave values in 0-255 range using `tasmota.sine_int()` +- Wave position advances based on `wave_period` timing +- Each pixel's value calculated as: `sine_value = tasmota.scale_int(sine_int(angle), -4096, 4096, 0, 255)` + **Factory**: `animation.palette_wave_animation(engine)` ### PaletteGradientAnimation @@ -1241,9 +1252,22 @@ Creates shifting gradient patterns with palette colors. Inherits from `PalettePa | Parameter | Type | Default | Constraints | Description | |-----------|------|---------|-------------|-------------| -| `shift_period` | int | 10000 | min: 1 | Gradient shift period in ms | +| `shift_period` | int | 10000 | min: 0 | Time for one complete shift cycle in ms (0 = static gradient) | +| `spatial_period` | int | 0 | min: 0 | Spatial period in pixels (0 = full strip length) | +| `phase_shift` | int | 0 | 0-100 | Phase shift as percentage of spatial period | | *(inherits all PalettePatternAnimation parameters)* | | | | | +**Pattern Generation:** +- Generates linear gradient values in 0-255 range across the specified spatial period +- **shift_period**: Controls temporal movement - how long it takes for the gradient to shift one full spatial period + - `0`: Static gradient (no movement) + - `> 0`: Moving gradient with specified period in milliseconds +- **spatial_period**: Controls spatial repetition - how many pixels before the gradient pattern repeats + - `0`: Gradient spans the full strip length (single gradient across entire strip) + - `> 0`: Gradient repeats every N pixels +- **phase_shift**: Shifts the gradient pattern spatially by a percentage of the spatial period +- Each pixel's value calculated as: `value = tasmota.scale_uint(spatial_position, 0, spatial_period-1, 0, 255)` + **Factory**: `animation.palette_gradient_animation(engine)` ### PaletteMeterAnimation @@ -1252,9 +1276,14 @@ Creates meter/bar patterns based on a value function. Inherits from `PalettePatt | Parameter | Type | Default | Constraints | Description | |-----------|------|---------|-------------|-------------| -| `value_func` | function | nil | - | Function that provides meter values | +| `value_func` | function | nil | - | Function that provides meter values (0-100 range) | | *(inherits all PalettePatternAnimation parameters)* | | | | | +**Pattern Generation:** +- Value function returns percentage (0-100) representing meter level +- Pixels within meter range get value 255, others get value 0 +- Meter position calculated as: `position = tasmota.scale_uint(value, 0, 100, 0, strip_length)` + **Factory**: `animation.palette_meter_animation(engine)` ## Motion Effects diff --git a/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md b/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md index 2e66e0ade..43655056f 100644 --- a/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md +++ b/lib/libesp32/berry_animation/docs/ANIMATION_DEVELOPMENT.md @@ -291,7 +291,7 @@ def render(frame, time_ms) frame.set_pixel_color(i, pixel_color) end - # Apply opacity if not full + # Apply opacity if not full (supports numbers, animations) if opacity < 255 frame.apply_opacity(opacity) end diff --git a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md index 0ff94fb9f..31a6edef4 100644 --- a/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md +++ b/lib/libesp32/berry_animation/docs/DSL_REFERENCE.md @@ -55,12 +55,16 @@ The following keywords are reserved and cannot be used as identifiers: **Configuration Keywords:** - `strip` - Strip configuration (temporarily disabled, reserved keyword) - `set` - Variable assignment +- `import` - Import Berry modules **Definition Keywords:** - `color` - Color definition - `palette` - Palette definition - `animation` - Animation definition - `sequence` - Sequence definition +- `template` - Template definition +- `param` - Template parameter declaration +- `type` - Parameter type annotation **Control Flow Keywords:** - `play` - Play animation in sequence @@ -207,6 +211,46 @@ set position_sweep = triangle(min_value=0, max_value=29, period=5s) set strip_len = strip_length() # Get current strip length ``` +### Import Statements + +The `import` keyword imports Berry modules for use in animations: + +```berry +import user_functions # Import user-defined functions +import my_custom_module # Import custom animation libraries +import math # Import standard Berry modules +import string # Import utility modules +``` + +**Import Behavior:** +- Module names should be valid identifiers (no quotes needed in DSL) +- Import statements are typically placed at the beginning of DSL files +- Transpiles to standard Berry `import "module_name"` statements +- Imported modules become available for the entire animation + +**Common Use Cases:** +```berry +# Import user functions for computed parameters +import user_functions + +animation dynamic = solid(color=blue) +dynamic.opacity = user.my_custom_function() + +# Import custom animation libraries +import fire_effects + +animation campfire = fire_effects.create_fire(intensity=200) +``` + +**Transpilation Example:** +```berry +# DSL Code +import user_functions + +# Transpiles to Berry Code +import "user_functions" +``` + ## Color Definitions The `color` keyword defines static colors or color providers: @@ -335,11 +379,15 @@ pulse_red.opacity = smooth(min_value=100, max_value=255, period=2s) set strip_len = strip_length() pulse_red.position = strip_len / 2 # Center position pulse_red.opacity = strip_len * 4 # Scale with strip size + +# Animation opacity (using another animation as opacity mask) +animation opacity_mask = pulsating_animation(period=2s) +pulse_red.opacity = opacity_mask # Dynamic opacity from animation ``` **Common Properties:** - `priority` - Animation priority (higher numbers have precedence) -- `opacity` - Opacity level (0-255) +- `opacity` - Opacity level (number, value provider, or animation) - `position` - Position on strip - `speed` - Speed multiplier - `phase` - Phase offset @@ -443,37 +491,37 @@ test.opacity = min(255, max(50, scale(sqrt(strip_len), 0, 16, 100, 255))) When the DSL detects arithmetic expressions containing value providers, variable references, or mathematical functions, it automatically creates closure functions that capture the computation. These closures are called with `(self, param_name, time_ms)` parameters, allowing the computation to be re-evaluated dynamically as needed. Mathematical functions are automatically prefixed with `self.` in the closure context to access the ClosureValueProvider's mathematical methods. **User Functions in Computed Parameters:** -User-defined functions can also be used in computed parameter expressions, providing powerful custom effects: +User-defined functions can also be used in computed parameter expressions, providing powerful custom effects. User functions must be called with the `user.` prefix: ```berry # Simple user function in computed parameter animation base = solid(color=blue) -base.opacity = rand_demo() +base.opacity = user.rand_demo() # User functions mixed with math operations animation dynamic = solid( color=purple - opacity=max(50, min(255, rand_demo() + 100)) + opacity=max(50, min(255, user.rand_demo() + 100)) ) ``` ### User Functions -User functions are custom Berry functions that can be called from computed parameters. They provide dynamic values that change over time. +User functions are custom Berry functions that can be called from computed parameters. They provide dynamic values that change over time. User functions must be called with the `user.` prefix. **Available User Functions:** -- `rand_demo()` - Returns random values for demonstration purposes +- `user.rand_demo()` - Returns random values for demonstration purposes **Usage in Computed Parameters:** ```berry # Simple user function -animation.opacity = rand_demo() +animation.opacity = user.rand_demo() # User function with math operations -animation.opacity = max(100, rand_demo()) +animation.opacity = max(100, user.rand_demo()) # User function in arithmetic expressions -animation.opacity = abs(rand_demo() - 128) + 64 +animation.opacity = abs(user.rand_demo() - 128) + 64 ``` **Available User Functions:** @@ -481,7 +529,7 @@ The following user functions are available by default (see [User Functions Guide | Function | Parameters | Description | |----------|------------|-------------| -| `rand_demo()` | none | Returns a random value (0-255) for demonstration | +| `user.rand_demo()` | none | Returns a random value (0-255) for demonstration | **User Function Behavior:** - User functions are automatically detected by the transpiler @@ -668,6 +716,167 @@ sequence cylon_eye { } ``` +## Templates + +Templates provide a powerful way to create reusable, parameterized animation patterns. They allow you to define animation blueprints that can be instantiated with different parameters, promoting code reuse and maintainability. + +### Template Definition + +Templates are defined using the `template` keyword followed by a parameter block and body: + +```berry +template template_name { + param parameter1 type color + param parameter2 + param parameter3 type number + + # Template body with DSL statements + animation my_anim = some_animation(color=parameter1, period=parameter2) + my_anim.opacity = parameter3 + run my_anim +} +``` + +### Template Parameters + +Template parameters are declared using the `param` keyword with optional type annotations: + +```berry +template pulse_effect { + param base_color type color # Parameter with type annotation + param duration # Parameter without type annotation + param brightness type number # Another typed parameter + + # Use parameters in template body + animation pulse = pulsating_animation( + color=base_color + period=duration + ) + pulse.opacity = brightness + run pulse +} +``` + +**Parameter Types:** +- `color` - Color values (hex, named colors, color providers) +- `palette` - Palette definitions +- `number` - Numeric values (integers, percentages, time values) +- `animation` - Animation instances +- Type annotations are optional but improve readability + +### Template Body + +The template body can contain any valid DSL statements: + +**Supported Statements:** +- Color definitions +- Palette definitions +- Animation definitions +- Property assignments +- Run statements +- Variable assignments (set statements) + +```berry +template rainbow_pulse { + param pal1 as palette + param pal2 as palette + param duration + param back_color as color + + # Create dynamic color cycling + color cycle_color = color_cycle( + palette=pal1 + cycle_period=duration + ) + + # Create animations + animation pulse = pulsating_animation( + color=cycle_color + period=duration + ) + + animation background = solid(color=back_color) + + # Set properties + background.priority = 1 + pulse.priority = 10 + + # Run both animations + run background + run pulse +} +``` + +### Template Usage + +Templates are called like functions with positional arguments: + +```berry +# Define the template +template blink_red { + param speed + + animation blink = pulsating_animation( + color=red + period=speed + ) + + run blink +} + +# Use the template +blink_red(1s) # Call with 1 second period +blink_red(500ms) # Call with 500ms period +``` + +**Complex Template Usage:** +```berry +# Create palettes for the template +palette fire_palette = [ + (0, black) + (128, red) + (255, yellow) +] + +palette ocean_palette = [ + (0, navy) + (128, cyan) + (255, white) +] + +# Use the complex template +rainbow_pulse(fire_palette, ocean_palette, 3s, black) +``` + +### Template Behavior + +**Code Generation:** +Templates generate Berry functions that are registered as user functions: + +```berry +# Template definition generates: +def pulse_effect_template(engine, base_color_, duration_, brightness_) + var pulse_ = animation.pulsating_animation(engine) + pulse_.color = base_color_ + pulse_.period = duration_ + pulse_.opacity = brightness_ + engine.add_animation(pulse_) +end + +animation.register_user_function('pulse_effect', pulse_effect_template) +``` + +**Parameter Handling:** +- Parameters get `_` suffix in generated code to avoid naming conflicts +- Templates receive `engine` as the first parameter automatically +- Template calls are converted to function calls with `engine` as first argument + +**Execution Model:** +- Templates don't return values - they add animations directly to the engine +- Multiple `run` statements in templates add multiple animations +- Templates can be called multiple times to create multiple instances +- `engine.start()` is automatically called when templates are used at the top level + ## Execution Statements Execute animations or sequences: @@ -936,22 +1145,26 @@ good.priority = 10 # OK: Valid parameter assignment program = { statement } ; -statement = config_stmt +statement = import_stmt + | config_stmt | definition | property_assignment | sequence + | template_def | execution_stmt ; -(* Configuration *) +(* Import and Configuration *) +import_stmt = "import" identifier ; config_stmt = variable_assignment ; (* strip_config = "strip" "length" number ; -- TEMPORARILY DISABLED *) variable_assignment = "set" identifier "=" expression ; (* Definitions *) -definition = color_def | palette_def | animation_def ; +definition = color_def | palette_def | animation_def | template_def ; color_def = "color" identifier "=" color_expression ; palette_def = "palette" identifier "=" palette_array ; animation_def = "animation" identifier "=" animation_expression ; +template_def = "template" identifier "{" template_body "}" ; (* Property Assignments *) property_assignment = identifier "." identifier "=" expression ; @@ -966,8 +1179,16 @@ wait_stmt = "wait" time_expression ; repeat_stmt = "repeat" ( number "times" | "forever" ) "{" sequence_body "}" ; sequence_assignment = identifier "." identifier "=" expression ; +(* Templates *) +template_def = "template" identifier "{" template_body "}" ; +template_body = { template_statement } ; +template_statement = param_decl | color_def | palette_def | animation_def | property_assignment | execution_stmt ; +param_decl = "param" identifier [ "type" identifier ] ; + (* Execution *) -execution_stmt = "run" identifier ; +execution_stmt = "run" identifier | template_call ; +template_call = identifier "(" [ argument_list ] ")" ; +argument_list = expression { "," expression } ; (* Expressions *) expression = logical_or_expr ; diff --git a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md index 33a4e15bf..3addc0c6f 100644 --- a/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md +++ b/lib/libesp32/berry_animation/docs/DSL_TRANSPILATION.md @@ -93,16 +93,21 @@ The Animation DSL uses a declarative syntax with named parameters. All animation ### Key Syntax Features +- **Import statements**: `import module_name` for loading Berry modules - **Named parameters**: All function calls use `name=value` syntax - **Time units**: `2s`, `500ms`, `1m`, `1h` - **Hex colors**: `#FF0000`, `#80FF0000` (ARGB) - **Named colors**: `red`, `blue`, `white`, etc. - **Comments**: `# This is a comment` - **Property assignment**: `animation.property = value` +- **User functions**: `user.function_name()` for custom functions ### Basic Structure ```berry +# Import statements (optional, for user functions or custom modules) +import user_functions + # Optional strip configuration strip length 60 @@ -114,8 +119,9 @@ color blue = #0000FF animation pulse_red = pulsating_animation(color=red, period=2s) animation comet_blue = comet_animation(color=blue, tail_length=10, speed=1500) -# Property assignments +# Property assignments with user functions pulse_red.priority = 10 +pulse_red.opacity = user.breathing_effect() comet_blue.direction = -1 # Execution @@ -180,8 +186,186 @@ my_animation.priority = 10 This intelligent resolution ensures optimal performance while maintaining clear separation between framework and user code. +## Import Statement Transpilation + +The DSL supports importing Berry modules using the `import` keyword, which provides a clean way to load user functions and custom modules. + +### Import Syntax + +```berry +# DSL Import Syntax +import user_functions +import my_custom_module +import math +``` + +### Transpilation Behavior + +Import statements are transpiled directly to Berry import statements with quoted module names: + +```berry +# DSL Code +import user_functions + +# Transpiles to Berry Code +import "user_functions" +``` + +### Import Processing + +1. **Early Processing**: Import statements are processed early in transpilation +2. **Module Loading**: Imported modules are loaded using standard Berry import mechanism +3. **Function Registration**: User function modules should register functions using `animation.register_user_function()` +4. **No Validation**: The DSL doesn't validate module existence at compile time + +### Example Import Workflow + +**Step 1: Create User Functions Module (`user_functions.be`)** +```berry +import animation + +def rand_demo(engine) + import math + return math.rand() % 256 +end + +# Register for DSL use +animation.register_user_function("rand_demo", rand_demo) +``` + +**Step 2: Use in DSL** +```berry +import user_functions + +animation test = solid(color=blue) +test.opacity = user.rand_demo() +run test +``` + +**Step 3: Generated Berry Code** +```berry +import animation +var engine = animation.init_strip() + +import "user_functions" +var test_ = animation.solid(engine) +test_.color = 0xFF0000FF +test_.opacity = animation.create_closure_value(engine, + def (self) return animation.get_user_function('rand_demo')(self.engine) end) +engine.add_animation(test_) +engine.start() +``` + ## Advanced DSL Features +### Templates + +Templates provide a DSL-native way to create reusable animation patterns with parameters. Templates are transpiled into Berry functions and automatically registered for use. + +#### Template Definition Transpilation + +```berry +# DSL Template +template pulse_effect { + param color type color + param speed + + animation pulse = pulsating_animation( + color=color + period=speed + ) + + run pulse +} +``` + +**Transpiles to:** + +```berry +def pulse_effect(engine, color, speed) + var pulse_ = animation.pulsating_animation(engine) + pulse_.color = color + pulse_.period = speed + engine.add_animation(pulse_) + engine.start_animation(pulse_) +end + +animation.register_user_function("pulse_effect", pulse_effect) +``` + +#### Template Transpilation Process + +1. **Function Generation**: Template becomes a Berry function with `engine` as first parameter +2. **Parameter Mapping**: Template parameters become function parameters (after `engine`) +3. **Body Transpilation**: Template body is transpiled using standard DSL rules +4. **Auto-Registration**: Generated function is automatically registered as a user function +5. **Type Annotations**: Optional `type` annotations are preserved as comments for documentation + +#### Template Call Transpilation + +```berry +# DSL Template Call +pulse_effect(red, 2s) +``` + +**Transpiles to:** + +```berry +pulse_effect(engine, animation.red, 2000) +``` + +Template calls are transpiled as regular user function calls with automatic `engine` parameter injection. + +#### Advanced Template Features + +**Multi-Animation Templates:** +```berry +template comet_chase { + param trail_color type color + param bg_color type color + param chase_speed + + animation background = solid_animation(color=bg_color) + animation comet = comet_animation(color=trail_color, speed=chase_speed) + + run background + run comet +} +``` + +**Transpiles to:** +```berry +def comet_chase(engine, trail_color, bg_color, chase_speed) + var background_ = animation.solid_animation(engine) + background_.color = bg_color + var comet_ = animation.comet_animation(engine) + comet_.color = trail_color + comet_.speed = chase_speed + engine.add_animation(background_) + engine.start_animation(background_) + engine.add_animation(comet_) + engine.start_animation(comet_) +end + +animation.register_user_function("comet_chase", comet_chase) +``` + +#### Template vs User Function Transpilation + +**Templates** (DSL-native): +- Defined within DSL files +- Use DSL syntax in body +- Automatically registered +- Type annotations supported +- Transpiled to Berry functions + +**User Functions** (Berry-native): +- Defined in Berry code +- Use Berry syntax +- Manually registered +- Full Berry language features +- Called from DSL + ### User-Defined Functions Register custom Berry functions for use in DSL. User functions must take `engine` as the first parameter, followed by any user-provided arguments: diff --git a/lib/libesp32/berry_animation/docs/EXAMPLES.md b/lib/libesp32/berry_animation/docs/EXAMPLES.md index d972f5722..bbe03f4c8 100644 --- a/lib/libesp32/berry_animation/docs/EXAMPLES.md +++ b/lib/libesp32/berry_animation/docs/EXAMPLES.md @@ -361,6 +361,95 @@ animation a1 = pulsating_animation(color=c1, period=4s) - Keep animation periods reasonable (>500ms) - Limit palette sizes for memory efficiency +## Template Examples + +Templates provide reusable, parameterized animation patterns that promote code reuse and maintainability. + +### 21. Simple Template +```berry +# Define a reusable blinking template +template blink_effect { + param color type color + param speed + param intensity + + animation blink = pulsating_animation( + color=color + period=speed + ) + blink.opacity = intensity + + run blink +} + +# Use the template with different parameters +blink_effect(red, 1s, 80%) +blink_effect(blue, 500ms, 100%) +``` + +### 22. Multi-Animation Template +```berry +# Template that creates a comet chase effect +template comet_chase { + param trail_color type color + param bg_color type color + param chase_speed + param tail_size + + # Background layer + animation background = solid(color=bg_color) + background.priority = 1 + + # Comet effect layer + animation comet = comet_animation( + color=trail_color + tail_length=tail_size + speed=chase_speed + ) + comet.priority = 10 + + run background + run comet +} + +# Create different comet effects +comet_chase(white, black, 1500ms, 8) +``` + +### 23. Template with Dynamic Colors +```berry +# Template using color cycling and breathing effects +template breathing_rainbow { + param cycle_time + param breath_time + param base_brightness + + # Create rainbow palette + palette rainbow = [ + (0, red), (42, orange), (85, yellow) + (128, green), (170, blue), (213, purple), (255, red) + ] + + # Create cycling rainbow color + color rainbow_cycle = color_cycle( + palette=rainbow + cycle_period=cycle_time + ) + + # Create breathing animation with rainbow colors + animation breath = pulsating_animation( + color=rainbow_cycle + period=breath_time + ) + breath.opacity = base_brightness + + run breath +} + +# Use the rainbow breathing template +breathing_rainbow(5s, 2s, 200) +``` + ## Next Steps - **[DSL Reference](DSL_REFERENCE.md)** - Complete language syntax diff --git a/lib/libesp32/berry_animation/docs/QUICK_START.md b/lib/libesp32/berry_animation/docs/QUICK_START.md index 621b54ee3..da347ac55 100644 --- a/lib/libesp32/berry_animation/docs/QUICK_START.md +++ b/lib/libesp32/berry_animation/docs/QUICK_START.md @@ -176,9 +176,68 @@ import animation var runtime = animation.load_dsl_file("my_animation.anim") ``` -## User-Defined Functions +## Templates - Reusable Animation Patterns -Create custom animation functions in Berry and use them in DSL: +Templates let you create reusable animation patterns with parameters: + +```berry +# Define a template for pulsing effects +template pulse_effect { + param color type color + param speed + + animation pulse = pulsating_animation( + color=color + period=speed + ) + + run pulse +} + +# Use the template with different parameters +pulse_effect(red, 2s) +pulse_effect(blue, 1s) +pulse_effect(0xFF69B4, 3s) # Hot pink +``` + +### Multi-Animation Templates + +Templates can contain multiple animations and sequences: + +```berry +template comet_chase { + param trail_color type color + param bg_color type color + param chase_speed + + # Background glow + animation background = solid_animation(color=bg_color) + + # Moving comet + animation comet = comet_animation( + color=trail_color + tail_length=6 + speed=chase_speed + ) + + run background + run comet +} + +# Create different comet effects +comet_chase(white, blue, 1500) +comet_chase(orange, black, 2000) +``` + +**Template Benefits:** +- **Reusable** - Define once, use many times +- **Type Safe** - Optional parameter type checking +- **Clean Syntax** - Pure DSL, no Berry code needed +- **Automatic Registration** - Available immediately after definition + +## User-Defined Functions (Advanced) + +For complex logic, create custom functions in Berry: ```berry # Define custom function - engine must be first parameter diff --git a/lib/libesp32/berry_animation/docs/TROUBLESHOOTING.md b/lib/libesp32/berry_animation/docs/TROUBLESHOOTING.md index d963b27ce..dc6811d13 100644 --- a/lib/libesp32/berry_animation/docs/TROUBLESHOOTING.md +++ b/lib/libesp32/berry_animation/docs/TROUBLESHOOTING.md @@ -268,6 +268,67 @@ end } ``` +7. **Template Definition Errors:** + ```berry + # Wrong - missing braces + template pulse_effect + param color type color + param speed + # Error: Expected '{' after template name + + # Wrong - invalid parameter syntax + template pulse_effect { + param color as color # Error: Use 'type' instead of 'as' + param speed + } + + # Wrong - missing template body + template pulse_effect { + param color type color + } + # Error: Template body cannot be empty + + # Correct - proper template syntax + template pulse_effect { + param color type color + param speed + + animation pulse = pulsating_animation( + color=color + period=speed + ) + + run pulse + } + ``` + +8. **Template Call Errors:** + ```berry + # Wrong - template not defined + pulse_effect(red, 2s) + # Error: "Undefined reference: 'pulse_effect'" + + # Wrong - incorrect parameter count + template pulse_effect { + param color type color + param speed + # ... template body ... + } + + pulse_effect(red) # Error: Expected 2 parameters, got 1 + + # Correct - define template first, call with correct parameters + template pulse_effect { + param color type color + param speed + + animation pulse = pulsating_animation(color=color, period=speed) + run pulse + } + + pulse_effect(red, 2s) # ✓ Correct usage + ``` + 6. **Parameter Constraint Violations:** ```berry # Wrong - negative period not allowed @@ -318,7 +379,147 @@ end } ``` -### DSL Runtime Errors +### Template Issues + +### Template Definition Problems + +**Problem:** Template definitions fail to compile + +**Common Template Errors:** + +1. **Missing Template Body:** + ```berry + # Wrong - empty template + template empty_template { + param color type color + } + # Error: "Template body cannot be empty" + + # Correct - template must have content + template pulse_effect { + param color type color + param speed + + animation pulse = pulsating_animation(color=color, period=speed) + run pulse + } + ``` + +2. **Invalid Parameter Syntax:** + ```berry + # Wrong - old 'as' syntax + template pulse_effect { + param color as color + } + # Error: Expected 'type' keyword, got 'as' + + # Correct - use 'type' keyword + template pulse_effect { + param color type color + param speed # Type annotation is optional + } + ``` + +3. **Template Name Conflicts:** + ```berry + # Wrong - template name conflicts with built-in function + template solid { # 'solid' is a built-in animation function + param color type color + # ... + } + # Error: "Template name 'solid' conflicts with built-in function" + + # Correct - use unique template names + template solid_effect { + param color type color + # ... + } + ``` + +### Template Usage Problems + +**Problem:** Template calls fail or behave unexpectedly + +**Common Issues:** + +1. **Undefined Template:** + ```berry + # Wrong - calling undefined template + my_effect(red, 2s) + # Error: "Undefined reference: 'my_effect'" + + # Correct - define template first + template my_effect { + param color type color + param speed + # ... template body ... + } + + my_effect(red, 2s) # Now works + ``` + +2. **Parameter Count Mismatch:** + ```berry + template pulse_effect { + param color type color + param speed + param brightness + } + + # Wrong - missing parameters + pulse_effect(red, 2s) # Error: Expected 3 parameters, got 2 + + # Correct - provide all parameters + pulse_effect(red, 2s, 200) + ``` + +3. **Parameter Type Issues:** + ```berry + template pulse_effect { + param color type color + param speed + } + + # Wrong - invalid color parameter + pulse_effect("not_a_color", 2s) + # Runtime error: Invalid color value + + # Correct - use valid color + pulse_effect(red, 2s) # Named color + pulse_effect(0xFF0000, 2s) # Hex color + ``` + +### Template vs User Function Confusion + +**Problem:** Mixing template and user function concepts + +**Key Differences:** + +```berry +# Template (DSL-native) - Recommended for most cases +template pulse_effect { + param color type color + param speed + + animation pulse = pulsating_animation(color=color, period=speed) + run pulse +} + +# User Function (Berry-native) - For complex logic +def create_pulse_effect(engine, color, speed) + var pulse = animation.pulsating_animation(engine) + pulse.color = color + pulse.period = speed + return pulse +end +animation.register_user_function("pulse_effect", create_pulse_effect) +``` + +**When to Use Each:** +- **Templates**: Simple to moderate effects, DSL syntax, type safety +- **User Functions**: Complex logic, Berry features, return values + +## DSL Runtime Errors **Problem:** DSL compiles but fails at runtime @@ -788,6 +989,22 @@ animation red_solid = solid(color=red) run red_solid ``` +### Templates +```berry +# Define reusable template +template pulse_effect { + param color type color + param speed + + animation pulse = pulsating_animation(color=color, period=speed) + run pulse +} + +# Use template multiple times +pulse_effect(red, 2s) +pulse_effect(blue, 1s) +``` + ### Animation with Parameters ```berry color blue = 0x0000FF diff --git a/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md b/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md index b4eee9d63..3e5b7b1e8 100644 --- a/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md +++ b/lib/libesp32/berry_animation/docs/USER_FUNCTIONS.md @@ -30,12 +30,18 @@ animation.register_user_function("breathing", my_breathing) ### 3. Use It in DSL -Call your function just like built-in animations: +First, import your user functions module, then call your function with the `user.` prefix in computed parameters: ```berry -# Use your custom function -animation calm = breathing(blue, 4s) -animation energetic = breathing(red, 1s) +# Import your user functions module +import user_functions + +# Use your custom function in computed parameters +animation calm = solid(color=blue) +calm.opacity = user.breathing_effect() + +animation energetic = solid(color=red) +energetic.opacity = user.breathing_effect() sequence demo { play calm for 10s @@ -45,6 +51,91 @@ sequence demo { run demo ``` +## Importing User Functions + +### DSL Import Statement + +The DSL supports importing Berry modules using the `import` keyword. This is the recommended way to make user functions available in your animations: + +```berry +# Import user functions at the beginning of your DSL file +import user_functions + +# Now user functions are available with the user. prefix +animation test = solid(color=blue) +test.opacity = user.my_function() +``` + +### Import Behavior + +- **Module Loading**: `import user_functions` transpiles to Berry `import "user_functions"` +- **Function Registration**: The imported module should register functions using `animation.register_user_function()` +- **Availability**: Once imported, functions are available throughout the DSL file +- **No Compile-Time Checking**: The DSL doesn't validate user function existence at compile time + +### Example User Functions Module + +Create a file called `user_functions.be`: + +```berry +import animation + +# Define your custom functions +def rand_demo(engine) + import math + return math.rand() % 256 # Random value 0-255 +end + +def breathing_effect(engine, base_value, amplitude) + import math + var time_factor = (engine.time_ms / 1000) % 4 # 4-second cycle + var breath = math.sin(time_factor * math.pi / 2) + return int(base_value + breath * amplitude) +end + +# Register functions for DSL use +animation.register_user_function("rand_demo", rand_demo) +animation.register_user_function("breathing", breathing_effect) + +print("User functions loaded!") +``` + +### Using Imported Functions in DSL + +```berry +import user_functions + +# Simple user function call +animation random_test = solid(color=red) +random_test.opacity = user.rand_demo() + +# User function with parameters +animation breathing_blue = solid(color=blue) +breathing_blue.opacity = user.breathing(128, 64) + +# User functions in mathematical expressions +animation complex = solid(color=green) +complex.opacity = max(50, min(255, user.rand_demo() + 100)) + +run random_test +``` + +### Multiple Module Imports + +You can import multiple modules in the same DSL file: + +```berry +import user_functions # Basic user functions +import fire_effects # Fire animation functions +import color_utilities # Color manipulation functions + +animation base = solid(color=user.random_color()) +base.opacity = user.breathing(200, 50) + +animation flames = solid(color=red) +flames.opacity = user.fire_intensity(180) +``` + ## Common Patterns ### Simple Color Effects @@ -61,8 +152,11 @@ animation.register_user_function("bright", solid_bright) ``` ```berry -animation bright_red = bright(red, 80%) -animation dim_blue = bright(blue, 30%) +animation bright_red = solid(color=red) +bright_red.opacity = user.bright(80) + +animation dim_blue = solid(color=blue) +dim_blue.opacity = user.bright(30) ``` ### Fire Effects @@ -83,8 +177,11 @@ animation.register_user_function("fire", custom_fire) ``` ```berry -animation campfire = fire(200, 2s) -animation torch = fire(255, 500ms) +animation campfire = solid(color=red) +campfire.opacity = user.fire(200, 2000) + +animation torch = solid(color=orange) +torch.opacity = user.fire(255, 500) ``` ### Sparkle Effects @@ -102,8 +199,11 @@ animation.register_user_function("sparkles", sparkles) ``` ```berry -animation stars = sparkles(white, 12, 300ms) -animation fairy_dust = sparkles(#FFD700, 8, 500ms) +animation stars = solid(color=white) +stars.opacity = user.sparkles(12, 300) + +animation fairy_dust = solid(color=#FFD700) +fairy_dust.opacity = user.sparkles(8, 500) ``` ### Position-Based Effects @@ -122,8 +222,11 @@ animation.register_user_function("pulse_at", pulse_at) ``` ```berry -animation left_pulse = pulse_at(green, 5, 3, 2s) -animation right_pulse = pulse_at(blue, 25, 3, 2s) +animation left_pulse = solid(color=green) +left_pulse.position = user.pulse_at(5, 3, 2000) + +animation right_pulse = solid(color=blue) +right_pulse.position = user.pulse_at(25, 3, 2000) ``` ## Advanced Examples @@ -175,9 +278,14 @@ animation.register_user_function("alert", gentle_alert) ``` ```berry -animation emergency = strobe() -animation notification = alert() -animation custom_police = police(500ms) +animation emergency = solid(color=red) +emergency.opacity = user.strobe() + +animation notification = solid(color=yellow) +notification.opacity = user.alert() + +animation custom_police = solid(color=blue) +custom_police.opacity = user.police(500) ``` ## Function Organization @@ -302,7 +410,7 @@ User functions can be used in computed parameter expressions alongside mathemati ```berry # Simple user function call in property assignment animation base = solid(color=blue, priority=10) -base.opacity = rand_demo() # User function as computed parameter +base.opacity = user.rand_demo() # User function as computed parameter ``` ### User Functions with Mathematical Operations @@ -314,7 +422,7 @@ set strip_len = strip_length() # Mix user functions with mathematical functions animation dynamic_solid = solid( color=purple - opacity=max(50, min(255, rand_demo() + 100)) # Random opacity with bounds + opacity=max(50, min(255, user.rand_demo() + 100)) # Random opacity with bounds priority=15 ) ``` @@ -325,7 +433,7 @@ animation dynamic_solid = solid( # Use user function in arithmetic expressions animation random_effect = solid( color=cyan - opacity=abs(rand_demo() - 128) + 64 # Random variation around middle value + opacity=abs(user.rand_demo() - 128) + 64 # Random variation around middle value priority=12 ) ``` @@ -342,7 +450,7 @@ When you use user functions in computed parameters: **Generated Code Example:** ```berry # DSL code -animation.opacity = max(100, breathing(red, 2000)) +animation.opacity = max(100, user.breathing(red, 2000)) ``` **Transpiles to:** @@ -359,7 +467,7 @@ The following user functions are available by default: | Function | Parameters | Description | |----------|------------|-------------| -| `rand_demo()` | none | Returns a random value (0-255) for demonstration | +| `user.rand_demo()` | none | Returns a random value (0-255) for demonstration | ### Best Practices for Computed Parameters @@ -378,16 +486,20 @@ import animation # Load your custom functions load("user_animations.be") -# Now they're available in DSL +# Now they're available in DSL with import var dsl_code = - "animation my_fire = fire(200, 1500ms)\n" - "animation my_sparkles = sparkle(white, 8, 400ms)\n" + "import user_functions\n" + "\n" + "animation my_fire = solid(color=red)\n" + "my_fire.opacity = user.fire(200, 1500)\n" + "animation my_sparkles = solid(color=white)\n" + "my_sparkles.opacity = user.sparkle(8, 400)\n" "\n" "sequence show {\n" " play my_fire for 10s\n" " play my_sparkles for 5s\n" "}\n" - "\n + "\n" "run show" animation_dsl.execute(dsl_code) @@ -398,8 +510,12 @@ animation_dsl.execute(dsl_code) ```berry # Save DSL with custom functions var my_show = - "animation campfire = fire(180, 2s)\n" - "animation stars = sparkle(#FFFFFF, 6, 600ms)\n" + "import user_functions\n" + "\n" + "animation campfire = solid(color=orange)\n" + "campfire.opacity = user.fire(180, 2000)\n" + "animation stars = solid(color=#FFFFFF)\n" + "stars.opacity = user.sparkle(6, 600)\n" "\n" "sequence night_scene {\n" " play campfire for 30s\n" diff --git a/lib/libesp32/berry_animation/src/animation.be b/lib/libesp32/berry_animation/src/animation.be index 279675fce..465840b57 100644 --- a/lib/libesp32/berry_animation/src/animation.be +++ b/lib/libesp32/berry_animation/src/animation.be @@ -87,12 +87,12 @@ import "core/user_functions" as user_functions register_to_animation(user_functions) # Import and register actual user functions -try - import "user_functions" as user_funcs # This registers the actual user functions -except .. as e, msg - # User functions are optional - continue without them if not available - print(f"Note: User functions not loaded: {msg}") -end +# try +# import "user_functions" as user_funcs # This registers the actual user functions +# except .. as e, msg +# # User functions are optional - continue without them if not available +# print(f"Note: User functions not loaded: {msg}") +# end # Import value providers import "providers/value_provider.be" as value_provider @@ -201,28 +201,6 @@ def animation_init_strip(*l) end animation.init_strip = animation_init_strip -# Global variable resolver with error checking -# Used by DSL-generated code to resolve variable names during execution -# First checks animation module, then global scope for user-defined variables -def animation_global(name, module_name) - import global - import introspect - import animation - - # First try to find in animation module (built-in functions/classes) - if (module_name != nil) && introspect.contains(animation, module_name) - return animation.(module_name) - end - - # Then try global scope (user-defined variables) - if global.contains(name) - return global.(name) - else - raise "syntax_error", f"'{name}' undeclared" - end -end -animation.global = animation_global - # This function is called from C++ code to set up the Berry animation environment # It creates a mutable 'animation' module on top of the immutable solidified # @@ -250,6 +228,9 @@ def animation_init(m) end end + # Create an empty map for user_functions + animation_new._user_functions = {} + return animation_new end animation.init = animation_init diff --git a/lib/libesp32/berry_animation/src/animations/fire.be b/lib/libesp32/berry_animation/src/animations/fire.be index d0b744faa..50872108b 100644 --- a/lib/libesp32/berry_animation/src/animations/fire.be +++ b/lib/libesp32/berry_animation/src/animations/fire.be @@ -184,7 +184,8 @@ class FireAnimation : animation.animation fire_provider.cycle_period = 0 # Use value-based color mapping, not time-based fire_provider.transition_type = 1 # Use sine transition (smooth) fire_provider.brightness = 255 - fire_provider.set_range(0, 255) + fire_provider.range_min = 0 + fire_provider.range_max = 255 resolved_color = fire_provider end diff --git a/lib/libesp32/berry_animation/src/animations/palette_pattern.be b/lib/libesp32/berry_animation/src/animations/palette_pattern.be index 42360340d..c1fd6ead3 100644 --- a/lib/libesp32/berry_animation/src/animations/palette_pattern.be +++ b/lib/libesp32/berry_animation/src/animations/palette_pattern.be @@ -8,7 +8,7 @@ #@ solidify:PalettePatternAnimation,weak class PalettePatternAnimation : animation.animation - var value_buffer # Buffer to store values for each pixel + var value_buffer # Buffer to store values for each pixel (bytes object) # Static definitions of parameters with constraints static var PARAMS = { @@ -25,7 +25,7 @@ class PalettePatternAnimation : animation.animation super(self).init(engine) # Initialize non-parameter instance variables only - self.value_buffer = [] + self.value_buffer = bytes() # Initialize value buffer with default frame width self._initialize_value_buffer() @@ -63,7 +63,12 @@ class PalettePatternAnimation : animation.animation # Calculate values for each pixel var i = 0 while i < strip_length - self.value_buffer[i] = pattern_func(i, time_ms, self) + var pattern_value = pattern_func(i, time_ms, self) + # Pattern function should return values in 0-255 range, clamp to byte range + var byte_value = int(pattern_value) + if byte_value < 0 byte_value = 0 end + if byte_value > 255 byte_value = 255 end + self.value_buffer[i] = byte_value i += 1 end end @@ -103,11 +108,16 @@ class PalettePatternAnimation : animation.animation end # Get current parameter values (cached for performance) - var color_source = self.color_source + var color_source = self.get_param('color_source') # use get_param to avoid resolving of color_provider if color_source == nil return false end + # Check if color_source has the required method (more flexible than isinstance check) + if color_source.get_color_for_value == nil + return false + end + # Calculate elapsed time since animation started var elapsed = time_ms - self.start_time @@ -115,17 +125,10 @@ class PalettePatternAnimation : animation.animation var strip_length = self.engine.get_strip_length() var i = 0 while i < strip_length && i < frame.width - var value = self.value_buffer[i] - var color + var byte_value = self.value_buffer[i] - # Check if color_source is a ColorProvider or an animation with get_color_for_value method - if color_source.get_color_for_value != nil - # It's a ColorProvider or compatible object - color = color_source.get_color_for_value(value, elapsed) - else - # Fallback to direct color access (for backward compatibility) - color = color_source.current_color - end + # Use the color_source to get color for the byte value (0-255) + var color = color_source.get_color_for_value(byte_value, elapsed) frame.set_pixel_color(i, color) i += 1 @@ -191,13 +194,14 @@ class PaletteWaveAnimation : PalettePatternAnimation # Calculate values for each pixel var i = 0 while i < strip_length - # Calculate the wave value (0-100) using scale_uint + # Calculate the wave value (0-255) using scale_uint var pos_in_wave = (i + offset) % wave_length var angle = tasmota.scale_uint(pos_in_wave, 0, wave_length, 0, 32767) # 0 to 2π in fixed-point var sine_value = tasmota.sine_int(angle) # -4096 to 4096 - # Map sine value from -4096..4096 to 0..100 - self.value_buffer[i] = tasmota.scale_int(sine_value, -4096, 4096, 0, 100) + # Map sine value from -4096..4096 to 0..255 + var byte_value = tasmota.scale_int(sine_value, -4096, 4096, 0, 255) + self.value_buffer[i] = byte_value i += 1 end end @@ -209,7 +213,9 @@ class PaletteGradientAnimation : PalettePatternAnimation # Static definitions of parameters with constraints static var PARAMS = { # Gradient-specific parameters only - "shift_period": {"min": 1, "default": 10000} + "shift_period": {"min": 0, "default": 0}, # Time for one complete shift cycle in ms (0 = static) + "spatial_period": {"min": 0, "default": 0}, # Spatial period in pixels (0 = full strip) + "phase_shift": {"min": 0, "max": 100, "default": 0} # Phase shift as percentage (0-100) } # Initialize a new gradient pattern animation @@ -227,6 +233,8 @@ class PaletteGradientAnimation : PalettePatternAnimation def _update_value_buffer(time_ms) # Cache parameter values for performance var shift_period = self.shift_period + var spatial_period = self.spatial_period + var phase_shift = self.phase_shift var strip_length = self.engine.get_strip_length() # Resize buffer if strip length changed @@ -234,16 +242,28 @@ class PaletteGradientAnimation : PalettePatternAnimation self.value_buffer.resize(strip_length) end - # Calculate the shift position using scale_uint for better precision - var position = tasmota.scale_uint(time_ms % shift_period, 0, shift_period, 0, 1000) / 1000.0 - var offset = int(position * strip_length) + # Determine effective spatial period (0 means full strip) + var effective_spatial_period = spatial_period > 0 ? spatial_period : strip_length + + # Calculate the temporal shift position (how much the pattern has moved over time) + var temporal_offset = 0 + if shift_period > 0 + var temporal_position = tasmota.scale_uint(time_ms % shift_period, 0, shift_period, 0, 1000) / 1000.0 + temporal_offset = temporal_position * effective_spatial_period + end + + # Calculate the phase shift offset in pixels + var phase_offset = tasmota.scale_uint(phase_shift, 0, 100, 0, effective_spatial_period) # Calculate values for each pixel var i = 0 while i < strip_length - # Calculate the gradient value (0-100) using scale_uint - var pos_in_frame = (i + offset) % strip_length - self.value_buffer[i] = tasmota.scale_uint(pos_in_frame, 0, strip_length - 1, 0, 100) + # Calculate position within the spatial period, including temporal and phase offsets + var spatial_pos = (i + temporal_offset + phase_offset) % effective_spatial_period + + # Map spatial position to gradient value (0-255) + var byte_value = tasmota.scale_uint(int(spatial_pos), 0, effective_spatial_period - 1, 0, 255) + self.value_buffer[i] = byte_value i += 1 end end @@ -293,8 +313,8 @@ class PaletteMeterAnimation : PalettePatternAnimation # Calculate values for each pixel var i = 0 while i < strip_length - # Return 100 if pixel is within the meter, 0 otherwise - self.value_buffer[i] = i < meter_position ? 100 : 0 + # Return 255 if pixel is within the meter, 0 otherwise + self.value_buffer[i] = i < meter_position ? 255 : 0 i += 1 end end diff --git a/lib/libesp32/berry_animation/src/animations/wave.be b/lib/libesp32/berry_animation/src/animations/wave.be index 677f0ff61..bc1b41954 100644 --- a/lib/libesp32/berry_animation/src/animations/wave.be +++ b/lib/libesp32/berry_animation/src/animations/wave.be @@ -243,7 +243,8 @@ def wave_rainbow_sine(engine) rainbow_provider.cycle_period = 5000 rainbow_provider.transition_type = 1 # sine transition rainbow_provider.brightness = 255 - rainbow_provider.set_range(0, 255) + rainbow_provider.range_min = 0 + rainbow_provider.range_max = 255 anim.color = rainbow_provider anim.wave_type = 0 # sine wave anim.frequency = 32 diff --git a/lib/libesp32/berry_animation/src/core/animation_base.be b/lib/libesp32/berry_animation/src/core/animation_base.be index 03b525421..f588ca159 100644 --- a/lib/libesp32/berry_animation/src/core/animation_base.be +++ b/lib/libesp32/berry_animation/src/core/animation_base.be @@ -11,16 +11,17 @@ class Animation : animation.parameterized_object # Non-parameter instance variables only var start_time # Time when animation started (ms) (int) var current_time # Current animation time (ms) (int) + var opacity_frame # Frame buffer for opacity animation rendering # Parameter definitions static var PARAMS = { - "name": {"type": "string", "default": "animation"}, # Optional name for the animation - "is_running": {"type": "bool", "default": false}, # Whether the animation is active - "priority": {"min": 0, "default": 10}, # Rendering priority (higher = on top, 0-255) - "duration": {"min": 0, "default": 0}, # Animation duration in ms (0 = infinite) - "loop": {"type": "bool", "default": true}, # Whether to loop when duration is reached - "opacity": {"min": 0, "max": 255, "default": 255}, # Animation opacity/brightness (0-255) - "color": {"default": 0xFFFFFFFF} # Base color in ARGB format (0xAARRGGBB) + "name": {"type": "string", "default": "animation"}, # Optional name for the animation + "is_running": {"type": "bool", "default": false}, # Whether the animation is active + "priority": {"min": 0, "default": 10}, # Rendering priority (higher = on top, 0-255) + "duration": {"min": 0, "default": 0}, # Animation duration in ms (0 = infinite) + "loop": {"type": "bool", "default": false}, # Whether to loop when duration is reached + "opacity": {"type": "any", "default": 255}, # Animation opacity (0-255 number or Animation instance) + "color": {"default": 0xFFFFFFFF} # Base color in ARGB format (0xAARRGGBB) } # Initialize a new animation @@ -33,6 +34,7 @@ class Animation : animation.parameterized_object # Initialize non-parameter instance variables self.start_time = 0 self.current_time = 0 + self.opacity_frame = nil # Will be created when needed end # Start/restart the animation (make it active and reset timing) @@ -140,6 +142,11 @@ class Animation : animation.parameterized_object return false end + # Use engine time if not provided + if time_ms == nil + time_ms = self.engine.time_ms + end + # Update animation state self.update(time_ms) @@ -147,17 +154,54 @@ class Animation : animation.parameterized_object var current_color = self.color var current_opacity = self.opacity - # Fill the entire frame with the current color - frame.fill_pixels(current_color) - - # Apply resolved opacity if not full - if current_opacity < 255 - frame.apply_brightness(current_opacity) + # Fill the entire frame with the current color if not transparent + if (current_color != 0x00000000) + frame.fill_pixels(current_color) end + # Handle opacity - can be number, frame buffer, or animation + self._apply_opacity(frame, current_opacity, time_ms) + return true end + # Apply opacity to frame buffer - handles numbers and animations + # + # @param frame: FrameBuffer - The frame buffer to apply opacity to + # @param opacity: int|Animation - Opacity value or animation + # @param time_ms: int - Current time in milliseconds + def _apply_opacity(frame, opacity, time_ms) + # Check if opacity is an animation instance + if isinstance(opacity, animation.animation) + # Animation mode: render opacity animation to frame buffer and use as mask + var opacity_animation = opacity + + # Ensure opacity frame buffer exists and has correct size + if self.opacity_frame == nil || self.opacity_frame.width != frame.width + self.opacity_frame = animation.frame_buffer(frame.width) + end + + # Clear and render opacity animation to frame buffer + self.opacity_frame.clear() + + # Start opacity animation if not running + if !opacity_animation.is_running + opacity_animation.start(self.start_time) + end + + # Update and render opacity animation + opacity_animation.update(time_ms) + opacity_animation.render(self.opacity_frame, time_ms) + + # Use rendered frame buffer as opacity mask + frame.apply_opacity(self.opacity_frame) + elif type(opacity) == 'int' && opacity < 255 + # Number mode: apply uniform opacity + frame.apply_opacity(opacity) + end + # If opacity is 255 (full opacity), do nothing + end + # Get a color for a specific pixel position and time # Default implementation returns the animation's color (solid color for all pixels) # diff --git a/lib/libesp32/berry_animation/src/core/frame_buffer.be b/lib/libesp32/berry_animation/src/core/frame_buffer.be index 321c5b90c..b5964233b 100644 --- a/lib/libesp32/berry_animation/src/core/frame_buffer.be +++ b/lib/libesp32/berry_animation/src/core/frame_buffer.be @@ -485,68 +485,92 @@ class FrameBuffer end # Apply an opacity adjustment to the frame buffer - # opacity: opacity factor (0-511, where 0 is fully transparent, 255 is original, 511 is maximum opaque) - # start_pos: start position (default: 0) - # end_pos: end position (default: width-1) - def apply_opacity(opacity, start_pos, end_pos) + # opacity: opacity factor (0-511) or another FrameBuffer to use as mask + # - Number: 0 is fully transparent, 255 is original, 511 is maximum opaque + # - FrameBuffer: uses alpha channel as opacity mask + def apply_opacity(opacity) if opacity == nil opacity = 255 end - if start_pos == nil - start_pos = 0 - end - - if end_pos == nil - end_pos = self.width - 1 - end - - # Validate parameters - if start_pos < 0 || start_pos >= self.width - raise "index_error", "start_pos out of range" - end - - if end_pos < start_pos || end_pos >= self.width - raise "index_error", "end_pos out of range" - end - - # Ensure opacity is in valid range (0-511) - opacity = opacity < 0 ? 0 : (opacity > 511 ? 511 : opacity) - - # Apply opacity adjustment - var i = start_pos - while i <= end_pos - var color = self.get_pixel_color(i) + # Check if opacity is a FrameBuffer (mask mode) + if isinstance(opacity, animation.frame_buffer) + # Mask mode: use another frame buffer as opacity mask + var mask_buffer = opacity - # Extract components (ARGB format - 0xAARRGGBB) - var a = (color >> 24) & 0xFF - var r = (color >> 16) & 0xFF - var g = (color >> 8) & 0xFF - var b = color & 0xFF - - # Adjust alpha using tasmota.scale_uint - # For opacity 0-255: scale down alpha - # For opacity 256-511: scale up alpha (but cap at 255) - if opacity <= 255 - a = tasmota.scale_uint(opacity, 0, 255, 0, a) - else - # Scale up alpha: map 256-511 to 1.0-2.0 multiplier - a = tasmota.scale_uint(a * opacity, 0, 255 * 255, 0, 255) - a = a > 255 ? 255 : a # Cap at maximum alpha + if self.width != mask_buffer.width + raise "value_error", "frame buffers must have the same width" end - # Combine components into a 32-bit value (ARGB format - 0xAARRGGBB) - color = (a << 24) | (r << 16) | (g << 8) | b + var i = 0 + while i < self.width + var color = self.get_pixel_color(i) + var mask_color = mask_buffer.get_pixel_color(i) + + # Extract alpha from mask as opacity factor (0-255) + var mask_opacity = (mask_color >> 24) & 0xFF + + # Extract components from color (ARGB format - 0xAARRGGBB) + var a = (color >> 24) & 0xFF + var r = (color >> 16) & 0xFF + var g = (color >> 8) & 0xFF + var b = color & 0xFF + + # Apply mask opacity to alpha channel using tasmota.scale_uint + a = tasmota.scale_uint(mask_opacity, 0, 255, 0, a) + + # Combine components into a 32-bit value (ARGB format - 0xAARRGGBB) + var new_color = (a << 24) | (r << 16) | (g << 8) | b + + # Update the pixel + self.set_pixel_color(i, new_color) + + i += 1 + end + else + # Number mode: uniform opacity adjustment + var opacity_value = int(opacity) - # Update the pixel - self.set_pixel_color(i, color) + # Ensure opacity is in valid range (0-511) + opacity_value = opacity_value < 0 ? 0 : (opacity_value > 511 ? 511 : opacity_value) - i += 1 + # Apply opacity adjustment + var i = 0 + while i < self.width + var color = self.get_pixel_color(i) + + # Extract components (ARGB format - 0xAARRGGBB) + var a = (color >> 24) & 0xFF + var r = (color >> 16) & 0xFF + var g = (color >> 8) & 0xFF + var b = color & 0xFF + + # Adjust alpha using tasmota.scale_uint + # For opacity 0-255: scale down alpha + # For opacity 256-511: scale up alpha (but cap at 255) + if opacity_value <= 255 + a = tasmota.scale_uint(opacity_value, 0, 255, 0, a) + else + # Scale up alpha: map 256-511 to 1.0-2.0 multiplier + a = tasmota.scale_uint(a * opacity_value, 0, 255 * 255, 0, 255) + a = a > 255 ? 255 : a # Cap at maximum alpha + end + + # Combine components into a 32-bit value (ARGB format - 0xAARRGGBB) + color = (a << 24) | (r << 16) | (g << 8) | b + + # Update the pixel + self.set_pixel_color(i, color) + + i += 1 + end end end # Apply a brightness adjustment to the frame buffer - # brightness: brightness factor (0-511, where 0 is black, 255 is original, and 511 is maximum bright) + # brightness: brightness factor (0-511) or another FrameBuffer to use as mask + # - Number: 0 is black, 255 is original, 511 is maximum bright + # - FrameBuffer: uses alpha channel as brightness mask # start_pos: start position (default: 0) # end_pos: end position (default: width-1) def apply_brightness(brightness, start_pos, end_pos) @@ -571,45 +595,86 @@ class FrameBuffer raise "index_error", "end_pos out of range" end - # Ensure brightness is in valid range (0-511) - brightness = brightness < 0 ? 0 : (brightness > 511 ? 511 : brightness) - - # Apply brightness adjustment - var i = start_pos - while i <= end_pos - var color = self.get_pixel_color(i) + # Check if brightness is a FrameBuffer (mask mode) + if isinstance(brightness, animation.frame_buffer) + # Mask mode: use another frame buffer as brightness mask + var mask_buffer = brightness - # Extract components (ARGB format - 0xAARRGGBB) - var a = (color >> 24) & 0xFF - var r = (color >> 16) & 0xFF - var g = (color >> 8) & 0xFF - var b = color & 0xFF - - # Adjust brightness using tasmota.scale_uint - # For brightness 0-255: scale down RGB - # For brightness 256-511: scale up RGB (but cap at 255) - if brightness <= 255 - r = tasmota.scale_uint(r, 0, 255, 0, brightness) - g = tasmota.scale_uint(g, 0, 255, 0, brightness) - b = tasmota.scale_uint(b, 0, 255, 0, brightness) - else - # Scale up RGB: map 256-511 to 1.0-2.0 multiplier - var multiplier = brightness - 255 # 0-256 range - r = r + tasmota.scale_uint(r * multiplier, 0, 255 * 256, 0, 255) - g = g + tasmota.scale_uint(g * multiplier, 0, 255 * 256, 0, 255) - b = b + tasmota.scale_uint(b * multiplier, 0, 255 * 256, 0, 255) - r = r > 255 ? 255 : r # Cap at maximum - g = g > 255 ? 255 : g # Cap at maximum - b = b > 255 ? 255 : b # Cap at maximum + if self.width != mask_buffer.width + raise "value_error", "frame buffers must have the same width" end - # Combine components into a 32-bit value (ARGB format - 0xAARRGGBB) - color = (a << 24) | (r << 16) | (g << 8) | b + var i = start_pos + while i <= end_pos + var color = self.get_pixel_color(i) + var mask_color = mask_buffer.get_pixel_color(i) + + # Extract alpha from mask as brightness factor (0-255) + var mask_brightness = (mask_color >> 24) & 0xFF + + # Extract components from color (ARGB format - 0xAARRGGBB) + var a = (color >> 24) & 0xFF + var r = (color >> 16) & 0xFF + var g = (color >> 8) & 0xFF + var b = color & 0xFF + + # Apply mask brightness to RGB channels using tasmota.scale_uint + r = tasmota.scale_uint(mask_brightness, 0, 255, 0, r) + g = tasmota.scale_uint(mask_brightness, 0, 255, 0, g) + b = tasmota.scale_uint(mask_brightness, 0, 255, 0, b) + + # Combine components into a 32-bit value (ARGB format - 0xAARRGGBB) + var new_color = (a << 24) | (r << 16) | (g << 8) | b + + # Update the pixel + self.set_pixel_color(i, new_color) + + i += 1 + end + else + # Number mode: uniform brightness adjustment + var brightness_value = int(brightness) - # Update the pixel - self.set_pixel_color(i, color) + # Ensure brightness is in valid range (0-511) + brightness_value = brightness_value < 0 ? 0 : (brightness_value > 511 ? 511 : brightness_value) - i += 1 + # Apply brightness adjustment + var i = start_pos + while i <= end_pos + var color = self.get_pixel_color(i) + + # Extract components (ARGB format - 0xAARRGGBB) + var a = (color >> 24) & 0xFF + var r = (color >> 16) & 0xFF + var g = (color >> 8) & 0xFF + var b = color & 0xFF + + # Adjust brightness using tasmota.scale_uint + # For brightness 0-255: scale down RGB + # For brightness 256-511: scale up RGB (but cap at 255) + if brightness_value <= 255 + r = tasmota.scale_uint(r, 0, 255, 0, brightness_value) + g = tasmota.scale_uint(g, 0, 255, 0, brightness_value) + b = tasmota.scale_uint(b, 0, 255, 0, brightness_value) + else + # Scale up RGB: map 256-511 to 1.0-2.0 multiplier + var multiplier = brightness_value - 255 # 0-256 range + r = r + tasmota.scale_uint(r * multiplier, 0, 255 * 256, 0, 255) + g = g + tasmota.scale_uint(g * multiplier, 0, 255 * 256, 0, 255) + b = b + tasmota.scale_uint(b * multiplier, 0, 255 * 256, 0, 255) + r = r > 255 ? 255 : r # Cap at maximum + g = g > 255 ? 255 : g # Cap at maximum + b = b > 255 ? 255 : b # Cap at maximum + end + + # Combine components into a 32-bit value (ARGB format - 0xAARRGGBB) + color = (a << 24) | (r << 16) | (g << 8) | b + + # Update the pixel + self.set_pixel_color(i, color) + + i += 1 + end end end diff --git a/lib/libesp32/berry_animation/src/core/user_functions.be b/lib/libesp32/berry_animation/src/core/user_functions.be index 678b92ab3..cfc085ddd 100644 --- a/lib/libesp32/berry_animation/src/core/user_functions.be +++ b/lib/libesp32/berry_animation/src/core/user_functions.be @@ -3,33 +3,25 @@ #@ solidify:animation_user_functions,weak -# Module-level storage for user-defined functions -import global -global._animation_user_functions = {} - # Register a Berry function for DSL use def register_user_function(name, func) - import global - global._animation_user_functions[name] = func + animation._user_functions[name] = func end # Retrieve a registered function by name def get_user_function(name) - import global - return global._animation_user_functions.find(name) + return animation._user_functions.find(name) end # Check if a function is registered def is_user_function(name) - import global - return global._animation_user_functions.contains(name) + return animation._user_functions.contains(name) end # List all registered function names def list_user_functions() - import global var names = [] - for name : global._animation_user_functions.keys() + for name : animation.user_functions.keys() names.push(name) end return names diff --git a/lib/libesp32/berry_animation/src/dsl/token.be b/lib/libesp32/berry_animation/src/dsl/token.be index 9ae1d5ca4..996b3ffa9 100644 --- a/lib/libesp32/berry_animation/src/dsl/token.be +++ b/lib/libesp32/berry_animation/src/dsl/token.be @@ -27,15 +27,15 @@ class Token static var statement_keywords = [ "strip", "set", "color", "palette", "animation", - "sequence", "function", "zone", "on", "run" + "sequence", "function", "zone", "on", "run", "template", "param", "import" ] static var keywords = [ # Configuration keywords - "strip", "set", + "strip", "set", "import", # Definition keywords - "color", "palette", "animation", "sequence", "function", "zone", + "color", "palette", "animation", "sequence", "function", "zone", "template", "param", "type", # Control flow keywords "play", "for", "with", "repeat", "times", "forever", "if", "else", "elif", diff --git a/lib/libesp32/berry_animation/src/dsl/transpiler.be b/lib/libesp32/berry_animation/src/dsl/transpiler.be index 1a5378334..ef2d49b0b 100644 --- a/lib/libesp32/berry_animation/src/dsl/transpiler.be +++ b/lib/libesp32/berry_animation/src/dsl/transpiler.be @@ -27,6 +27,8 @@ class SimpleDSLTranspiler var sequence_names # Track which names are sequences var symbol_table # Track created objects: name -> instance var indent_level # Track current indentation level for nested sequences + var template_definitions # Track template definitions: name -> {params, body} + var has_template_calls # Track if we have template calls to trigger engine.start() # Static color mapping for named colors (helps with solidification) static var named_colors = { @@ -56,17 +58,31 @@ class SimpleDSLTranspiler self.sequence_names = {} # Track which names are sequences self.symbol_table = {} # Track created objects: name -> instance self.indent_level = 0 # Track current indentation level + self.template_definitions = {} # Track template definitions + self.has_template_calls = false # Track if we have template calls end # Get current indentation string def get_indent() - # return " " * (self.indent_level + 1) # Base indentation is 2 spaces - string multiplication not supported - var indent = "" - var spaces_needed = (self.indent_level + 1) * 2 # Base indentation is 2 spaces - for i : 0..spaces_needed-1 - indent += " " + return " " * (self.indent_level + 1) # Base indentation is 2 spaces + end + + # Helper method to process user function calls (user.function_name()) + def _process_user_function_call(func_name) + # Check if this is a function call (user.function_name()) + if self.current() != nil && self.current().type == animation_dsl.Token.LEFT_PAREN + # This is a user function call: user.function_name() + # Don't check for existence during transpilation - trust that function will be available at runtime + + # 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 full_args = args != "" ? f"self.engine, {args}" : "self.engine" + return f"animation.get_user_function('{func_name}')({full_args})" + else + self.error("User functions must be called with parentheses: user.function_name()") + return "nil" end - return indent end # Main transpilation method - single pass @@ -90,6 +106,31 @@ class SimpleDSLTranspiler end end + # Transpile template body (similar to main transpile but without imports/engine start) + def transpile_template_body() + try + # Process all statements in template body + while !self.at_end() + self.process_statement() + end + + # For templates, process run statements immediately instead of collecting them + if size(self.run_statements) > 0 + for run_stmt : self.run_statements + var obj_name = run_stmt["name"] + var comment = run_stmt["comment"] + # In templates, use underscore suffix for local variables + self.add(f"engine.add_animation({obj_name}_){comment}") + end + end + + return size(self.errors) == 0 ? self.join_output() : nil + except .. as e, msg + self.error(f"Template body transpilation failed: {msg}") + return nil + end + end + # Process statements - simplified approach def process_statement() var tok = self.current() @@ -139,8 +180,12 @@ class SimpleDSLTranspiler self.process_set() elif tok.value == "sequence" self.process_sequence() + elif tok.value == "template" + self.process_template() elif tok.value == "run" self.process_run() + elif tok.value == "import" + self.process_import() elif tok.value == "on" self.process_event_handler() else @@ -188,12 +233,12 @@ class SimpleDSLTranspiler self.next() end - # Check if this is a user-defined function - if animation.is_user_function(func_name) - # User functions use positional parameters with engine as first argument + # 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 full_args = args != "" ? f"engine, {args}" : "engine" - self.add(f"var {name}_ = animation.get_user_function('{func_name}')({full_args}){inline_comment}") + self.add(f"{func_name}_template({full_args}){inline_comment}") else # Built-in functions use the new engine-first + named parameters pattern # Validate that the factory function exists at transpilation time @@ -382,12 +427,12 @@ class SimpleDSLTranspiler self.next() end - # Check if this is a user-defined function - if animation.is_user_function(func_name) - # User functions use positional parameters with engine as first argument + # 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 full_args = args != "" ? f"engine, {args}" : "engine" - self.add(f"var {name}_ = animation.get_user_function('{func_name}')({full_args}){inline_comment}") + self.add(f"{func_name}_template({full_args}){inline_comment}") else # Built-in functions use the new engine-first + named parameters pattern # Validate that the factory function creates an animation instance at transpile time @@ -430,8 +475,6 @@ class SimpleDSLTranspiler self.symbol_table[name] = ref_instance end end - - # Note: For identifier references, type checking happens at runtime via animation.global() end end @@ -469,6 +512,103 @@ class SimpleDSLTranspiler self.symbol_table[name] = "variable" end + # Process template definition: template name { param ... } + def process_template() + self.next() # skip 'template' + var name = self.expect_identifier() + + # Validate that the template name is not reserved + if !self.validate_user_name(name, "template") + self.skip_statement() + return + end + + self.expect_left_brace() + + # First pass: collect all parameters + var params = [] + var param_types = {} + + while !self.at_end() && !self.check_right_brace() + self.skip_whitespace_including_newlines() + + if self.check_right_brace() + break + end + + var tok = self.current() + + if tok != nil && tok.type == animation_dsl.Token.KEYWORD && tok.value == "param" + # Process parameter declaration + self.next() # skip 'param' + var param_name = self.expect_identifier() + + # Check for optional type annotation + var param_type = nil + if self.current() != nil && self.current().type == animation_dsl.Token.KEYWORD && self.current().value == "type" + self.next() # skip 'type' + param_type = self.expect_identifier() + end + + params.push(param_name) + if param_type != nil + param_types[param_name] = param_type + end + + # Skip optional newline after parameter + if self.current() != nil && self.current().type == animation_dsl.Token.NEWLINE + self.next() + end + else + # Found non-param statement, break to collect body + break + end + end + + # Second pass: collect body tokens (everything until closing brace) + var body_tokens = [] + var brace_depth = 0 + + while !self.at_end() && !self.check_right_brace() + var tok = self.current() + + if tok == nil || tok.type == animation_dsl.Token.EOF + break + end + + if tok.type == animation_dsl.Token.LEFT_BRACE + brace_depth += 1 + body_tokens.push(tok) + elif tok.type == animation_dsl.Token.RIGHT_BRACE + if brace_depth == 0 + break # This is our closing brace + else + brace_depth -= 1 + body_tokens.push(tok) + end + else + body_tokens.push(tok) + end + + self.next() + end + + self.expect_right_brace() + + # Store template definition + self.template_definitions[name] = { + 'params': params, + 'param_types': param_types, + 'body_tokens': body_tokens + } + + # Generate Berry function for this template + self.generate_template_function(name, params, param_types, body_tokens) + + # Add template to symbol table as a special marker + self.symbol_table[name] = "template" + end + # Process sequence definition: sequence demo { ... } or sequence demo repeat N times { ... } def process_sequence() self.next() # skip 'sequence' @@ -546,75 +686,6 @@ class SimpleDSLTranspiler self.expect_right_brace() end - # Process statements inside sequences using push_step() - def process_sequence_statement_for_manager(manager_name) - var tok = self.current() - if tok == nil || tok.type == animation_dsl.Token.EOF - return - end - - # Handle comments - preserve them in generated code with proper indentation - if tok.type == animation_dsl.Token.COMMENT - self.add(" " + tok.value) # Add comment with sequence indentation - self.next() - return - end - - # Skip whitespace (newlines) - if tok.type == animation_dsl.Token.NEWLINE - self.next() - return - end - - if tok.type == animation_dsl.Token.KEYWORD && tok.value == "play" - self.process_play_statement_for_manager(manager_name) - - elif tok.type == animation_dsl.Token.KEYWORD && tok.value == "wait" - self.process_wait_statement_for_manager(manager_name) - - elif tok.type == animation_dsl.Token.KEYWORD && tok.value == "repeat" - self.next() # skip 'repeat' - - # Parse repeat count: either number or "forever" - var repeat_count = "1" - var tok_after_repeat = self.current() - if tok_after_repeat != nil && tok_after_repeat.type == animation_dsl.Token.KEYWORD && tok_after_repeat.value == "forever" - self.next() # skip 'forever' - repeat_count = "-1" # -1 means forever - else - var count = self.expect_number() - self.expect_keyword("times") - repeat_count = str(count) - end - - self.expect_left_brace() - - # Create repeat sub-sequence - self.add(f" var repeat_seq = animation.SequenceManager(engine, {repeat_count})") - - # Process repeat body - add steps directly to repeat sequence - while !self.at_end() && !self.check_right_brace() - self.process_sequence_statement_for_manager("repeat_seq") - end - - self.expect_right_brace() - - # Add the repeat sub-sequence step to main sequence - self.add(f" {manager_name}.push_repeat_subsequence(repeat_seq.steps, {repeat_count})") - elif tok.type == animation_dsl.Token.IDENTIFIER - # Check if this is a property assignment (identifier.property = value) - if self.peek() != nil && self.peek().type == animation_dsl.Token.DOT - self.process_sequence_assignment_for_manager(" ", manager_name) # Pass indentation and manager name - else - self.skip_statement() - end - else - self.skip_statement() - end - end - - - # Process statements inside sequences using fluent interface def process_sequence_statement() var tok = self.current() @@ -799,89 +870,19 @@ class SimpleDSLTranspiler var inline_comment = self.collect_inline_comment() self.add(f"{self.get_indent()}.push_wait_step({duration}){inline_comment}") end - - # Helper method to process play statement with configurable target array (legacy) - def process_play_statement(target_array) - self.next() # skip 'play' - - # Check if this is a function call or an identifier - var anim_ref = "" - var current_tok = self.current() - if current_tok != nil && (current_tok.type == animation_dsl.Token.IDENTIFIER || current_tok.type == animation_dsl.Token.KEYWORD) && - self.peek() != nil && self.peek().type == animation_dsl.Token.LEFT_PAREN - # This is a function call - process it as a nested function call - anim_ref = self.process_nested_function_call() - else - # This is an identifier reference - sequences need runtime resolution - var anim_name = self.expect_identifier() - - # Validate that the referenced object exists - self._validate_object_reference(anim_name, "sequence play") - - anim_ref = f"animation.global('{anim_name}_')" - end - - # Handle optional 'for duration' - var duration = "0" - if self.current() != nil && self.current().type == animation_dsl.Token.KEYWORD && self.current().value == "for" - self.next() # skip 'for' - duration = str(self.process_time_value()) - end + + + # Process import statement: import user_functions or import module_name + def process_import() + self.next() # skip 'import' + var module_name = self.expect_identifier() var inline_comment = self.collect_inline_comment() - self.add(f" {target_array}.push(animation.create_play_step({anim_ref}, {duration})){inline_comment}") + + # Generate Berry import statement with quoted module name + self.add(f'import {module_name} {inline_comment}') end - # Helper method to process wait statement with configurable target array (legacy) - def process_wait_statement(target_array) - self.next() # skip 'wait' - var duration = self.process_time_value() - var inline_comment = self.collect_inline_comment() - self.add(f" {target_array}.push(animation.create_wait_step({duration})){inline_comment}") - end - - # Generic method to process sequence statements with configurable target array - def process_sequence_statement_generic(target_array) - var tok = self.current() - if tok == nil || tok.type == animation_dsl.Token.EOF - return - end - - # Handle comments - preserve them in generated code with proper indentation - if tok.type == animation_dsl.Token.COMMENT - self.add(" " + tok.value) # Add comment with sequence indentation - self.next() - return - end - - # Skip whitespace (newlines) - if tok.type == animation_dsl.Token.NEWLINE - self.next() - return - end - - if tok.type == animation_dsl.Token.KEYWORD && tok.value == "play" - self.process_play_statement(target_array) - - elif tok.type == animation_dsl.Token.KEYWORD && tok.value == "wait" - self.process_wait_statement(target_array) - - elif tok.type == animation_dsl.Token.IDENTIFIER - # Check if this is a property assignment (identifier.property = value) - if self.peek() != nil && self.peek().type == animation_dsl.Token.DOT - self.process_sequence_assignment_generic(" ", target_array) # Pass indentation and target array - else - self.skip_statement() - end - else - self.skip_statement() - end - end - - - - - # Process run statement: run demo def process_run() self.next() # skip 'run' @@ -899,11 +900,29 @@ class SimpleDSLTranspiler }) end - # Process property assignment: animation_name.property = value + # Process property assignment or standalone function call: animation_name.property = value OR template_call(args) def process_property_assignment() var object_name = self.expect_identifier() - # Check if next token is a dot + # Check if this is a function call (template call) + if self.current() != nil && self.current().type == animation_dsl.Token.LEFT_PAREN + # 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 full_args = args != "" ? f"engine, {args}" : "engine" + var inline_comment = self.collect_inline_comment() + self.add(f"{object_name}_template({full_args}){inline_comment}") + + # Track that we have template calls to trigger engine.start() + self.has_template_calls = true + else + self.error(f"Standalone function calls are only supported for templates. '{object_name}' is not a template.") + self.skip_statement() + end + return + end + + # Check if next token is a dot (property assignment) if self.current() != nil && self.current().type == animation_dsl.Token.DOT self.next() # skip '.' var property_name = self.expect_identifier() @@ -1097,6 +1116,11 @@ class SimpleDSLTranspiler 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] @@ -1222,7 +1246,6 @@ class SimpleDSLTranspiler # We're permissive here - any expression with these patterns gets a closure var has_dynamic_content = ( string.find(left, "(") >= 0 || string.find(right, "(") >= 0 || # Function calls - string.find(left, "animation.global") >= 0 || string.find(right, "animation.global") >= 0 || # Variable refs string.find(left, "animation.") >= 0 || string.find(right, "animation.") >= 0 || # Animation module calls string.find(left, "_") >= 0 || string.find(right, "_") >= 0 # User variables (might be ValueProviders) ) @@ -1468,10 +1491,11 @@ class SimpleDSLTranspiler var args = self.process_function_arguments() - # Check if it's a user-defined function first - if animation.is_user_function(func_name) + # Check if it's a template call first + if self.template_definitions.contains(func_name) + # This is a template call - treat like user function var full_args = args != "" ? f"engine, {args}" : "engine" - return f"animation.get_user_function('{func_name}')({full_args})" + return f"{func_name}_template({full_args})" else # All functions are resolved from the animation module and need engine as first parameter if args != "" @@ -1787,11 +1811,12 @@ class SimpleDSLTranspiler return f"self.{func_name}({args})" end - # Check if this is a user-defined function - if animation.is_user_function(func_name) + # 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"animation.get_user_function('{func_name}')({full_args})" + return f"{func_name}_template({full_args})" end # For other functions, this shouldn't happen in expression context @@ -1839,6 +1864,11 @@ class SimpleDSLTranspiler 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] @@ -1897,13 +1927,12 @@ class SimpleDSLTranspiler return f"self.{func_name}({args})" # Prefix with self. for closure context end - # Check if this is a user-defined function - if animation.is_user_function(func_name) - # User functions use positional parameters with engine as first argument - # In closure context, use self.engine to access the engine from the ClosureValueProvider + # 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"animation.get_user_function('{func_name}')({full_args})" + 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) @@ -2343,8 +2372,8 @@ class SimpleDSLTranspiler # Generate single engine.start() call for all run statements def generate_engine_start() - if size(self.run_statements) == 0 - return # No run statements, no need to start engine + if size(self.run_statements) == 0 && !self.has_template_calls + return # No run statements or template calls, no need to start engine end # Add all animations/sequences to the engine @@ -2445,6 +2474,55 @@ class SimpleDSLTranspiler self.strip_initialized = true end + # Generate Berry function for template definition + def generate_template_function(name, params, param_types, body_tokens) + import string + + # Generate function signature with engine as first parameter + var param_list = "engine" + for param : params + param_list += f", {param}_" + end + + self.add(f"# Template function: {name}") + self.add(f"def {name}_template({param_list})") + + # Create a new transpiler instance for the template body + var template_transpiler = animation_dsl.SimpleDSLTranspiler(body_tokens) + template_transpiler.symbol_table = {} # Fresh symbol table for template + template_transpiler.strip_initialized = true # Templates assume engine exists + + # Add parameters to template's symbol table + for param : params + template_transpiler.symbol_table[param] = "parameter" + end + + # Transpile the template body + var template_body = template_transpiler.transpile_template_body() + + if template_body != nil + # Add the transpiled body with proper indentation + var body_lines = string.split(template_body, "\n") + for line : body_lines + if size(line) > 0 + self.add(f" {line}") # Add 2-space indentation + end + end + else + # Error in template body transpilation + for error : template_transpiler.errors + self.error(f"Template '{name}' body error: {error}") + end + end + + self.add("end") + self.add("") + + # Register the template as a user function + self.add(f"animation.register_user_function('{name}', {name}_template)") + self.add("") + end + # Process named arguments for animation declarations with parameter validation # # @param var_name: string - Variable name to assign parameters to diff --git a/lib/libesp32/berry_animation/src/providers/rich_palette_color_provider.be b/lib/libesp32/berry_animation/src/providers/rich_palette_color_provider.be index df68747bc..2e9acb985 100644 --- a/lib/libesp32/berry_animation/src/providers/rich_palette_color_provider.be +++ b/lib/libesp32/berry_animation/src/providers/rich_palette_color_provider.be @@ -10,7 +10,8 @@ #@ solidify:RichPaletteColorProvider,weak class RichPaletteColorProvider : animation.color_provider # Non-parameter instance variables only - var slots_arr # Constructed array of timestamp slots + var slots_arr # Constructed array of timestamp slots, based on cycle_period + var value_arr # Constructed array of value slots, based on range_min/range_max var slots # Number of slots in the palette var current_color # Current interpolated color (calculated during update) var light_state # light_state instance for proper color calculations @@ -23,7 +24,7 @@ class RichPaletteColorProvider : animation.color_provider "transition_type": {"enum": [animation.LINEAR, animation.SINE], "default": animation.SINE}, "brightness": {"min": 0, "max": 255, "default": 255}, "range_min": {"default": 0}, - "range_max": {"default": 100} + "range_max": {"default": 255} } # Initialize a new RichPaletteColorProvider @@ -35,7 +36,6 @@ class RichPaletteColorProvider : animation.color_provider # Initialize non-parameter instance variables self.current_color = 0xFFFFFFFF self.cycle_start = self.engine.time_ms # Initialize cycle start time - self.slots_arr = nil self.slots = 0 # Create light_state instance for proper color calculations (reuse from Animate_palette) @@ -48,30 +48,10 @@ class RichPaletteColorProvider : animation.color_provider # @param name: string - Name of the parameter that changed # @param value: any - New value of the parameter def on_param_changed(name, value) - if name == "palette" - # When palette changes, recompute slots - self._recompute_palette() - elif name == "cycle_period" - # When cycle_period changes, recompute the palette slots array - if value == nil return end - if value < 0 raise "value_error", "cycle_period must be non-negative" end - - # Recompute palette with new cycle period (only if > 0 for time-based cycling) - if value > 0 && self._get_palette_bytes() != nil - self.slots_arr = self._parse_palette(0, value - 1) - end - elif name == "range_min" || name == "range_max" - # When range changes, recompute the palette slots array - var range_min = self.range_min - var range_max = self.range_max - - if (range_min != nil) && (range_max != nil) - if range_min >= range_max raise "value_error", "range_min must be lower than range_max" end - - # Recompute palette with new range - if self._get_palette_bytes() != nil - self.slots_arr = self._parse_palette(range_min, range_max) - end + if name == "range_min" || name == "range_max" || name == "cycle_period" || name == "palette" + if (self.slots_arr != nil) || (self.value_arr != nil) + # only if they were already computed + self._recompute_palette() end end end @@ -81,10 +61,11 @@ class RichPaletteColorProvider : animation.color_provider # @param time_ms: int - Time in milliseconds to set as cycle start (optional, uses engine time if nil) # @return self for method chaining def start(time_ms) - if time_ms == nil - time_ms = self.engine.time_ms + # Compute arrays if they were not yet initialized + if (self.slots_arr == nil) && (self.value_arr == nil) + self._recompute_palette() end - self.cycle_start = time_ms + self.cycle_start = (time_ms != nil) ? time_ms : self.engine.time_ms return self end @@ -106,18 +87,27 @@ class RichPaletteColorProvider : animation.color_provider # Recompute palette slots and metadata def _recompute_palette() + # Compute slots_arr based on 'cycle_period' + var cycle_period = self.cycle_period var palette_bytes = self._get_palette_bytes() self.slots = size(palette_bytes) / 4 - - # Recompute palette (from Animate_palette) - var cycle_period = self.cycle_period + + # Recompute palette with new cycle period (only if > 0 for time-based cycling) + if cycle_period > 0 && palette_bytes != nil + self.slots_arr = self._parse_palette(0, cycle_period - 1) + else + self.slots_arr = nil + end + + # Compute value_arr based on 'range_min' and 'range_max' var range_min = self.range_min var range_max = self.range_max - - if cycle_period != nil && cycle_period > 0 - self.slots_arr = self._parse_palette(0, cycle_period - 1) - elif (range_min != nil) && (range_max != nil) - self.slots_arr = self._parse_palette(range_min, range_max) + if range_min >= range_max raise "value_error", "range_min must be lower than range_max" end + # Recompute palette with new range + if self._get_palette_bytes() != nil + self.value_arr = self._parse_palette(range_min, range_max) + else + self.value_arr = nil end # Set initial color @@ -188,6 +178,9 @@ class RichPaletteColorProvider : animation.color_provider # @param time_ms: int - Current time in milliseconds # @return int - Color in ARGB format (0xAARRGGBB) def produce_value(name, time_ms) + if (self.slots_arr == nil) && (self.value_arr == nil) + self._recompute_palette() + end var palette_bytes = self._get_palette_bytes() if palette_bytes == nil || self.slots < 2 @@ -267,26 +260,15 @@ class RichPaletteColorProvider : animation.color_provider return final_color end - # Set the range for value mapping (reused from Animate_palette) - # - # @param min: int - Minimum value for the range - # @param max: int - Maximum value for the range - # @return self for method chaining - def set_range(min, max) - if min >= max raise "value_error", "min must be lower than max" end - self.range_min = min - self.range_max = max - - self.slots_arr = self._parse_palette(min, max) - return self - end - # Get color for a specific value (reused from Animate_palette.set_value) # # @param value: int/float - Value to map to a color # @param time_ms: int - Current time in milliseconds (ignored for value-based color) # @return int - Color in ARGB format def get_color_for_value(value, time_ms) + if (self.slots_arr == nil) && (self.value_arr == nil) + self._recompute_palette() + end var palette_bytes = self._get_palette_bytes() var range_min = self.range_min @@ -299,14 +281,14 @@ class RichPaletteColorProvider : animation.color_provider var slots = self.slots var idx = slots - 2 while idx > 0 - if value >= self.slots_arr[idx] break end + if value >= self.value_arr[idx] break end idx -= 1 end var bgrt0 = palette_bytes.get(idx * 4, 4) var bgrt1 = palette_bytes.get((idx + 1) * 4, 4) - var t0 = self.slots_arr[idx] - var t1 = self.slots_arr[idx + 1] + var t0 = self.value_arr[idx] + var t1 = self.value_arr[idx + 1] # Use tasmota.scale_uint for efficiency (from Animate_palette) var r = tasmota.scale_uint(value, t0, t1, (bgrt0 >> 8) & 0xFF, (bgrt1 >> 8) & 0xFF) diff --git a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h index c7c2ed83d..bf3f6af79 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation.h @@ -1072,51 +1072,6 @@ be_local_closure(shift_fast_scroll, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: bounce_basic -********************************************************************/ -be_local_closure(bounce_basic, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* 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(animation), - /* K1 */ be_nested_str_weak(bounce_animation), - /* K2 */ be_nested_str_weak(bounce_speed), - /* K3 */ be_nested_str_weak(bounce_range), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(damping), - /* K6 */ be_nested_str_weak(gravity), - /* K7 */ be_nested_str_weak(name), - /* K8 */ be_nested_str_weak(bounce_basic), - }), - be_str_weak(bounce_basic), - &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C040400, // 0003 CALL R1 2 - 0x540A007F, // 0004 LDINT R2 128 - 0x90060402, // 0005 SETMBR R1 K2 R2 - 0x90060704, // 0006 SETMBR R1 K3 K4 - 0x540A00F9, // 0007 LDINT R2 250 - 0x90060A02, // 0008 SETMBR R1 K5 R2 - 0x90060D04, // 0009 SETMBR R1 K6 K4 - 0x90060F08, // 000A SETMBR R1 K7 K8 - 0x80040200, // 000B RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: animation_init_strip ********************************************************************/ @@ -1426,7 +1381,7 @@ be_local_class(RichPaletteAnimation, { be_const_key_weak(range_max, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(100) }, + { be_const_key_weak(default, -1), be_const_int(255) }, })) ) } )) }, })) ) } )) }, { be_const_key_weak(init, 2), be_const_closure(class_RichPaletteAnimation_init_closure) }, @@ -1527,7 +1482,7 @@ be_local_closure(twinkle_solid, /* name */ ********************************************************************/ be_local_closure(get_user_function, /* name */ be_nested_proto( - 5, /* nstack */ + 4, /* nstack */ 1, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -1536,19 +1491,19 @@ be_local_closure(get_user_function, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_animation_user_functions), + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(_user_functions), /* K2 */ be_nested_str_weak(find), }), be_str_weak(get_user_function), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080301, // 0001 GETMBR R2 R1 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C080400, // 0004 CALL R2 2 - 0x80040400, // 0005 RET 1 R2 + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x8C040302, // 0002 GETMET R1 R1 K2 + 0x5C0C0000, // 0003 MOVE R3 R0 + 0x7C040400, // 0004 CALL R1 2 + 0x80040200, // 0005 RET 1 R1 }) ) ); @@ -3555,8 +3510,8 @@ be_local_class(CometAnimation, })), be_str_weak(CometAnimation) ); -// compact class 'FireAnimation' ktab size: 45, total: 73 (saved 224 bytes) -static const bvalue be_ktab_class_FireAnimation[45] = { +// compact class 'FireAnimation' ktab size: 46, total: 74 (saved 224 bytes) +static const bvalue be_ktab_class_FireAnimation[46] = { /* K0 */ be_nested_str_weak(init), /* K1 */ be_nested_str_weak(heat_map), /* K2 */ be_nested_str_weak(current_colors), @@ -3586,22 +3541,23 @@ static const bvalue be_ktab_class_FireAnimation[45] = { /* K26 */ be_nested_str_weak(cycle_period), /* K27 */ be_nested_str_weak(transition_type), /* K28 */ be_nested_str_weak(brightness), - /* K29 */ be_nested_str_weak(set_range), - /* K30 */ be_nested_str_weak(is_color_provider), - /* K31 */ be_nested_str_weak(get_color_for_value), - /* K32 */ be_const_int(1103515245), - /* K33 */ be_const_int(2147483647), - /* K34 */ be_nested_str_weak(start), - /* K35 */ be_nested_str_weak(resize), - /* K36 */ be_nested_str_weak(is_running), - /* K37 */ be_nested_str_weak(width), - /* K38 */ be_nested_str_weak(set_pixel_color), - /* K39 */ be_nested_str_weak(FireAnimation_X28intensity_X3D_X25s_X2C_X20flicker_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K40 */ be_nested_str_weak(flicker_speed), - /* K41 */ be_nested_str_weak(priority), - /* K42 */ be_nested_str_weak(_random), - /* K43 */ be_nested_str_weak(update), - /* K44 */ be_nested_str_weak(_update_fire_simulation), + /* K29 */ be_nested_str_weak(range_min), + /* K30 */ be_nested_str_weak(range_max), + /* K31 */ be_nested_str_weak(is_color_provider), + /* K32 */ be_nested_str_weak(get_color_for_value), + /* K33 */ be_const_int(1103515245), + /* K34 */ be_const_int(2147483647), + /* K35 */ be_nested_str_weak(start), + /* K36 */ be_nested_str_weak(resize), + /* K37 */ be_nested_str_weak(is_running), + /* K38 */ be_nested_str_weak(width), + /* K39 */ be_nested_str_weak(set_pixel_color), + /* K40 */ be_nested_str_weak(FireAnimation_X28intensity_X3D_X25s_X2C_X20flicker_speed_X3D_X25s_X2C_X20priority_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K41 */ be_nested_str_weak(flicker_speed), + /* K42 */ be_nested_str_weak(priority), + /* K43 */ be_nested_str_weak(_random), + /* K44 */ be_nested_str_weak(update), + /* K45 */ be_nested_str_weak(_update_fire_simulation), }; @@ -3665,7 +3621,7 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ &be_ktab_class_FireAnimation, /* shared constants */ be_str_weak(_update_fire_simulation), &be_const_str_solidified, - ( &(const binstruction[210]) { /* code */ + ( &(const binstruction[209]) { /* code */ 0x88080108, // 0000 GETMBR R2 R0 K8 0x880C0109, // 0001 GETMBR R3 R0 K9 0x8810010A, // 0002 GETMBR R4 R0 K10 @@ -3748,7 +3704,7 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x982C120A, // 004F SETIDX R11 R9 R10 0x58200004, // 0050 LDCONST R8 K4 0x14241007, // 0051 LT R9 R8 R7 - 0x7826007D, // 0052 JMPF R9 #00D1 + 0x7826007C, // 0052 JMPF R9 #00D0 0x88240101, // 0053 GETMBR R9 R0 K1 0x94241208, // 0054 GETIDX R9 R9 R8 0xB82A2000, // 0055 GETNGBL R10 K16 @@ -3783,11 +3739,11 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x542600FE, // 0072 LDINT R9 255 0x58280015, // 0073 LDCONST R10 K21 0x242C1304, // 0074 GT R11 R9 K4 - 0x782E0056, // 0075 JMPF R11 #00CD + 0x782E0055, // 0075 JMPF R11 #00CC 0x5C2C0C00, // 0076 MOVE R11 R6 0x4C300000, // 0077 LDNIL R12 0x1C30160C, // 0078 EQ R12 R11 R12 - 0x7832000F, // 0079 JMPF R12 #008A + 0x7832000E, // 0079 JMPF R12 #0089 0xB8322C00, // 007A GETNGBL R12 K22 0x8C301917, // 007B GETMET R12 R12 K23 0x88380106, // 007C GETMBR R14 R0 K6 @@ -3799,83 +3755,82 @@ be_local_closure(class_FireAnimation__update_fire_simulation, /* name */ 0x90323713, // 0082 SETMBR R12 K27 K19 0x543600FE, // 0083 LDINT R13 255 0x9032380D, // 0084 SETMBR R12 K28 R13 - 0x8C34191D, // 0085 GETMET R13 R12 K29 - 0x583C0004, // 0086 LDCONST R15 K4 - 0x544200FE, // 0087 LDINT R16 255 - 0x7C340600, // 0088 CALL R13 3 - 0x5C2C1800, // 0089 MOVE R11 R12 - 0xB8322C00, // 008A GETNGBL R12 K22 - 0x8C30191E, // 008B GETMET R12 R12 K30 - 0x5C381600, // 008C MOVE R14 R11 - 0x7C300400, // 008D CALL R12 2 - 0x78320009, // 008E JMPF R12 #0099 - 0x8830171F, // 008F GETMBR R12 R11 K31 - 0x4C340000, // 0090 LDNIL R13 - 0x2030180D, // 0091 NE R12 R12 R13 - 0x78320005, // 0092 JMPF R12 #0099 - 0x8C30171F, // 0093 GETMET R12 R11 K31 - 0x5C381200, // 0094 MOVE R14 R9 - 0x583C0004, // 0095 LDCONST R15 K4 - 0x7C300600, // 0096 CALL R12 3 - 0x5C281800, // 0097 MOVE R10 R12 - 0x70020033, // 0098 JMP #00CD - 0x5C281600, // 0099 MOVE R10 R11 - 0x54320017, // 009A LDINT R12 24 - 0x3C30140C, // 009B SHR R12 R10 R12 - 0x543600FE, // 009C LDINT R13 255 - 0x2C30180D, // 009D AND R12 R12 R13 - 0x5436000F, // 009E LDINT R13 16 - 0x3C34140D, // 009F SHR R13 R10 R13 - 0x543A00FE, // 00A0 LDINT R14 255 - 0x2C341A0E, // 00A1 AND R13 R13 R14 - 0x543A0007, // 00A2 LDINT R14 8 - 0x3C38140E, // 00A3 SHR R14 R10 R14 - 0x543E00FE, // 00A4 LDINT R15 255 - 0x2C381C0F, // 00A5 AND R14 R14 R15 - 0x543E00FE, // 00A6 LDINT R15 255 - 0x2C3C140F, // 00A7 AND R15 R10 R15 - 0xB8422000, // 00A8 GETNGBL R16 K16 - 0x8C402111, // 00A9 GETMET R16 R16 K17 - 0x5C481200, // 00AA MOVE R18 R9 - 0x584C0004, // 00AB LDCONST R19 K4 - 0x545200FE, // 00AC LDINT R20 255 - 0x58540004, // 00AD LDCONST R21 K4 - 0x5C581A00, // 00AE MOVE R22 R13 - 0x7C400C00, // 00AF CALL R16 6 - 0x5C342000, // 00B0 MOVE R13 R16 - 0xB8422000, // 00B1 GETNGBL R16 K16 - 0x8C402111, // 00B2 GETMET R16 R16 K17 - 0x5C481200, // 00B3 MOVE R18 R9 - 0x584C0004, // 00B4 LDCONST R19 K4 - 0x545200FE, // 00B5 LDINT R20 255 - 0x58540004, // 00B6 LDCONST R21 K4 - 0x5C581C00, // 00B7 MOVE R22 R14 - 0x7C400C00, // 00B8 CALL R16 6 - 0x5C382000, // 00B9 MOVE R14 R16 - 0xB8422000, // 00BA GETNGBL R16 K16 - 0x8C402111, // 00BB GETMET R16 R16 K17 - 0x5C481200, // 00BC MOVE R18 R9 - 0x584C0004, // 00BD LDCONST R19 K4 - 0x545200FE, // 00BE LDINT R20 255 - 0x58540004, // 00BF LDCONST R21 K4 - 0x5C581E00, // 00C0 MOVE R22 R15 - 0x7C400C00, // 00C1 CALL R16 6 - 0x5C3C2000, // 00C2 MOVE R15 R16 - 0x54420017, // 00C3 LDINT R16 24 - 0x38401810, // 00C4 SHL R16 R12 R16 - 0x5446000F, // 00C5 LDINT R17 16 - 0x38441A11, // 00C6 SHL R17 R13 R17 - 0x30402011, // 00C7 OR R16 R16 R17 - 0x54460007, // 00C8 LDINT R17 8 - 0x38441C11, // 00C9 SHL R17 R14 R17 - 0x30402011, // 00CA OR R16 R16 R17 - 0x3040200F, // 00CB OR R16 R16 R15 - 0x5C282000, // 00CC MOVE R10 R16 - 0x882C0102, // 00CD GETMBR R11 R0 K2 - 0x982C100A, // 00CE SETIDX R11 R8 R10 - 0x00201113, // 00CF ADD R8 R8 K19 - 0x7001FF7F, // 00D0 JMP #0051 - 0x80000000, // 00D1 RET 0 + 0x90323B04, // 0085 SETMBR R12 K29 K4 + 0x543600FE, // 0086 LDINT R13 255 + 0x90323C0D, // 0087 SETMBR R12 K30 R13 + 0x5C2C1800, // 0088 MOVE R11 R12 + 0xB8322C00, // 0089 GETNGBL R12 K22 + 0x8C30191F, // 008A GETMET R12 R12 K31 + 0x5C381600, // 008B MOVE R14 R11 + 0x7C300400, // 008C CALL R12 2 + 0x78320009, // 008D JMPF R12 #0098 + 0x88301720, // 008E GETMBR R12 R11 K32 + 0x4C340000, // 008F LDNIL R13 + 0x2030180D, // 0090 NE R12 R12 R13 + 0x78320005, // 0091 JMPF R12 #0098 + 0x8C301720, // 0092 GETMET R12 R11 K32 + 0x5C381200, // 0093 MOVE R14 R9 + 0x583C0004, // 0094 LDCONST R15 K4 + 0x7C300600, // 0095 CALL R12 3 + 0x5C281800, // 0096 MOVE R10 R12 + 0x70020033, // 0097 JMP #00CC + 0x5C281600, // 0098 MOVE R10 R11 + 0x54320017, // 0099 LDINT R12 24 + 0x3C30140C, // 009A SHR R12 R10 R12 + 0x543600FE, // 009B LDINT R13 255 + 0x2C30180D, // 009C AND R12 R12 R13 + 0x5436000F, // 009D LDINT R13 16 + 0x3C34140D, // 009E SHR R13 R10 R13 + 0x543A00FE, // 009F LDINT R14 255 + 0x2C341A0E, // 00A0 AND R13 R13 R14 + 0x543A0007, // 00A1 LDINT R14 8 + 0x3C38140E, // 00A2 SHR R14 R10 R14 + 0x543E00FE, // 00A3 LDINT R15 255 + 0x2C381C0F, // 00A4 AND R14 R14 R15 + 0x543E00FE, // 00A5 LDINT R15 255 + 0x2C3C140F, // 00A6 AND R15 R10 R15 + 0xB8422000, // 00A7 GETNGBL R16 K16 + 0x8C402111, // 00A8 GETMET R16 R16 K17 + 0x5C481200, // 00A9 MOVE R18 R9 + 0x584C0004, // 00AA LDCONST R19 K4 + 0x545200FE, // 00AB LDINT R20 255 + 0x58540004, // 00AC LDCONST R21 K4 + 0x5C581A00, // 00AD MOVE R22 R13 + 0x7C400C00, // 00AE CALL R16 6 + 0x5C342000, // 00AF MOVE R13 R16 + 0xB8422000, // 00B0 GETNGBL R16 K16 + 0x8C402111, // 00B1 GETMET R16 R16 K17 + 0x5C481200, // 00B2 MOVE R18 R9 + 0x584C0004, // 00B3 LDCONST R19 K4 + 0x545200FE, // 00B4 LDINT R20 255 + 0x58540004, // 00B5 LDCONST R21 K4 + 0x5C581C00, // 00B6 MOVE R22 R14 + 0x7C400C00, // 00B7 CALL R16 6 + 0x5C382000, // 00B8 MOVE R14 R16 + 0xB8422000, // 00B9 GETNGBL R16 K16 + 0x8C402111, // 00BA GETMET R16 R16 K17 + 0x5C481200, // 00BB MOVE R18 R9 + 0x584C0004, // 00BC LDCONST R19 K4 + 0x545200FE, // 00BD LDINT R20 255 + 0x58540004, // 00BE LDCONST R21 K4 + 0x5C581E00, // 00BF MOVE R22 R15 + 0x7C400C00, // 00C0 CALL R16 6 + 0x5C3C2000, // 00C1 MOVE R15 R16 + 0x54420017, // 00C2 LDINT R16 24 + 0x38401810, // 00C3 SHL R16 R12 R16 + 0x5446000F, // 00C4 LDINT R17 16 + 0x38441A11, // 00C5 SHL R17 R13 R17 + 0x30402011, // 00C6 OR R16 R16 R17 + 0x54460007, // 00C7 LDINT R17 8 + 0x38441C11, // 00C8 SHL R17 R14 R17 + 0x30402011, // 00C9 OR R16 R16 R17 + 0x3040200F, // 00CA OR R16 R16 R15 + 0x5C282000, // 00CB MOVE R10 R16 + 0x882C0102, // 00CC GETMBR R11 R0 K2 + 0x982C100A, // 00CD SETIDX R11 R8 R10 + 0x00201113, // 00CE ADD R8 R8 K19 + 0x7001FF80, // 00CF JMP #0051 + 0x80000000, // 00D0 RET 0 }) ) ); @@ -3900,10 +3855,10 @@ be_local_closure(class_FireAnimation__random, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x88040105, // 0000 GETMBR R1 R0 K5 - 0x08040320, // 0001 MUL R1 R1 K32 + 0x08040321, // 0001 MUL R1 R1 K33 0x540A3038, // 0002 LDINT R2 12345 0x00040202, // 0003 ADD R1 R1 R2 - 0x2C040321, // 0004 AND R1 R1 K33 + 0x2C040322, // 0004 AND R1 R1 K34 0x90020A01, // 0005 SETMBR R0 K5 R1 0x88040105, // 0006 GETMBR R1 R0 K5 0x80040200, // 0007 RET 1 R1 @@ -3933,7 +3888,7 @@ be_local_closure(class_FireAnimation_start, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C080522, // 0003 GETMET R2 R2 K34 + 0x8C080523, // 0003 GETMET R2 R2 K35 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x90020704, // 0006 SETMBR R0 K3 K4 @@ -3996,11 +3951,11 @@ be_local_closure(class_FireAnimation__initialize_buffers, /* name */ 0x8C04030D, // 0001 GETMET R1 R1 K13 0x7C040200, // 0002 CALL R1 1 0x88080101, // 0003 GETMBR R2 R0 K1 - 0x8C080523, // 0004 GETMET R2 R2 K35 + 0x8C080524, // 0004 GETMET R2 R2 K36 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 0x88080102, // 0007 GETMBR R2 R0 K2 - 0x8C080523, // 0008 GETMET R2 R2 K35 + 0x8C080524, // 0008 GETMET R2 R2 K36 0x5C100200, // 0009 MOVE R4 R1 0x7C080400, // 000A CALL R2 2 0x58080004, // 000B LDCONST R2 K4 @@ -4036,7 +3991,7 @@ be_local_closure(class_FireAnimation_render, /* name */ be_str_weak(render), &be_const_str_solidified, ( &(const binstruction[25]) { /* code */ - 0x880C0124, // 0000 GETMBR R3 R0 K36 + 0x880C0125, // 0000 GETMBR R3 R0 K37 0x780E0002, // 0001 JMPF R3 #0005 0x4C0C0000, // 0002 LDNIL R3 0x1C0C0203, // 0003 EQ R3 R1 R3 @@ -4049,10 +4004,10 @@ be_local_closure(class_FireAnimation_render, /* name */ 0x58100004, // 000A LDCONST R4 K4 0x14140803, // 000B LT R5 R4 R3 0x78160009, // 000C JMPF R5 #0017 - 0x88140325, // 000D GETMBR R5 R1 K37 + 0x88140326, // 000D GETMBR R5 R1 K38 0x14140805, // 000E LT R5 R4 R5 0x78160004, // 000F JMPF R5 #0015 - 0x8C140326, // 0010 GETMET R5 R1 K38 + 0x8C140327, // 0010 GETMET R5 R1 K39 0x5C1C0800, // 0011 MOVE R7 R4 0x88200102, // 0012 GETMBR R8 R0 K2 0x94201004, // 0013 GETIDX R8 R8 R4 @@ -4085,11 +4040,11 @@ be_local_closure(class_FireAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ 0x60040018, // 0000 GETGBL R1 G24 - 0x58080027, // 0001 LDCONST R2 K39 + 0x58080028, // 0001 LDCONST R2 K40 0x880C010A, // 0002 GETMBR R3 R0 K10 - 0x88100128, // 0003 GETMBR R4 R0 K40 - 0x88140129, // 0004 GETMBR R5 R0 K41 - 0x88180124, // 0005 GETMBR R6 R0 K36 + 0x88100129, // 0003 GETMBR R4 R0 K41 + 0x8814012A, // 0004 GETMBR R5 R0 K42 + 0x88180125, // 0005 GETMBR R6 R0 K37 0x7C040A00, // 0006 CALL R1 5 0x80040200, // 0007 RET 1 R1 }) @@ -4118,7 +4073,7 @@ be_local_closure(class_FireAnimation__random_range, /* name */ 0x18080304, // 0000 LE R2 R1 K4 0x780A0000, // 0001 JMPF R2 #0003 0x80060800, // 0002 RET 1 K4 - 0x8C08012A, // 0003 GETMET R2 R0 K42 + 0x8C08012B, // 0003 GETMET R2 R0 K43 0x7C080200, // 0004 CALL R2 1 0x10080401, // 0005 MOD R2 R2 R1 0x80040400, // 0006 RET 1 R2 @@ -4148,13 +4103,13 @@ be_local_closure(class_FireAnimation_update, /* name */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08052B, // 0003 GETMET R2 R2 K43 + 0x8C08052C, // 0003 GETMET R2 R2 K44 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x740A0001, // 0006 JMPT R2 #0009 0x50080000, // 0007 LDBOOL R2 0 0 0x80040400, // 0008 RET 1 R2 - 0x88080128, // 0009 GETMBR R2 R0 K40 + 0x88080129, // 0009 GETMBR R2 R0 K41 0x540E03E7, // 000A LDINT R3 1000 0x0C0C0602, // 000B DIV R3 R3 R2 0x88100103, // 000C GETMBR R4 R0 K3 @@ -4162,7 +4117,7 @@ be_local_closure(class_FireAnimation_update, /* name */ 0x28100803, // 000E GE R4 R4 R3 0x78120003, // 000F JMPF R4 #0014 0x90020601, // 0010 SETMBR R0 K3 R1 - 0x8C10012C, // 0011 GETMET R4 R0 K44 + 0x8C10012D, // 0011 GETMET R4 R0 K45 0x5C180200, // 0012 MOVE R6 R1 0x7C100400, // 0013 CALL R4 2 0x50100200, // 0014 LDBOOL R4 1 0 @@ -4249,7 +4204,7 @@ be_local_class(FireAnimation, ********************************************************************/ be_local_closure(list_user_functions, /* name */ be_nested_proto( - 7, /* nstack */ + 6, /* nstack */ 0, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -4258,8 +4213,8 @@ be_local_closure(list_user_functions, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_animation_user_functions), + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(user_functions), /* K2 */ be_nested_str_weak(keys), /* K3 */ be_nested_str_weak(push), /* K4 */ be_nested_str_weak(stop_iteration), @@ -4267,25 +4222,25 @@ be_local_closure(list_user_functions, /* name */ be_str_weak(list_user_functions), &be_const_str_solidified, ( &(const binstruction[19]) { /* code */ - 0xA4020000, // 0000 IMPORT R0 K0 - 0x60040012, // 0001 GETGBL R1 G18 - 0x7C040000, // 0002 CALL R1 0 - 0x60080010, // 0003 GETGBL R2 G16 - 0x880C0101, // 0004 GETMBR R3 R0 K1 - 0x8C0C0702, // 0005 GETMET R3 R3 K2 - 0x7C0C0200, // 0006 CALL R3 1 - 0x7C080200, // 0007 CALL R2 1 + 0x60000012, // 0000 GETGBL R0 G18 + 0x7C000000, // 0001 CALL R0 0 + 0x60040010, // 0002 GETGBL R1 G16 + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x88080501, // 0004 GETMBR R2 R2 K1 + 0x8C080502, // 0005 GETMET R2 R2 K2 + 0x7C080200, // 0006 CALL R2 1 + 0x7C040200, // 0007 CALL R1 1 0xA8020005, // 0008 EXBLK 0 #000F - 0x5C0C0400, // 0009 MOVE R3 R2 - 0x7C0C0000, // 000A CALL R3 0 - 0x8C100303, // 000B GETMET R4 R1 K3 - 0x5C180600, // 000C MOVE R6 R3 - 0x7C100400, // 000D CALL R4 2 + 0x5C080200, // 0009 MOVE R2 R1 + 0x7C080000, // 000A CALL R2 0 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x5C140400, // 000C MOVE R5 R2 + 0x7C0C0400, // 000D CALL R3 2 0x7001FFF9, // 000E JMP #0009 - 0x58080004, // 000F LDCONST R2 K4 - 0xAC080200, // 0010 CATCH R2 1 0 + 0x58040004, // 000F LDCONST R1 K4 + 0xAC040200, // 0010 CATCH R1 1 0 0xB0080000, // 0011 RAISE 2 R0 R0 - 0x80040200, // 0012 RET 1 R1 + 0x80040000, // 0012 RET 1 R0 }) ) ); @@ -5214,65 +5169,64 @@ be_local_class(JitterAnimation, })), be_str_weak(JitterAnimation) ); -// compact class 'RichPaletteColorProvider' ktab size: 46, total: 105 (saved 472 bytes) -static const bvalue be_ktab_class_RichPaletteColorProvider[46] = { - /* K0 */ be_nested_str_weak(value_error), - /* K1 */ be_nested_str_weak(min_X20must_X20be_X20lower_X20than_X20max), - /* K2 */ be_nested_str_weak(range_min), - /* K3 */ be_nested_str_weak(range_max), - /* K4 */ be_nested_str_weak(slots_arr), - /* K5 */ be_nested_str_weak(_parse_palette), - /* K6 */ be_nested_str_weak(RichPaletteColorProvider_X28slots_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X29), - /* K7 */ be_nested_str_weak(slots), - /* K8 */ be_nested_str_weak(cycle_period), - /* K9 */ be_nested_str_weak(RichPaletteColorProvider_X28uninitialized_X29), - /* K10 */ be_nested_str_weak(_get_palette_bytes), - /* K11 */ be_nested_str_weak(resize), - /* K12 */ be_nested_str_weak(get), - /* K13 */ be_const_int(0), - /* K14 */ be_const_int(1), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(scale_int), - /* K17 */ be_nested_str_weak(palette), - /* K18 */ be_nested_str_weak(_recompute_palette), - /* K19 */ be_nested_str_weak(cycle_period_X20must_X20be_X20non_X2Dnegative), - /* K20 */ be_nested_str_weak(range_min_X20must_X20be_X20lower_X20than_X20range_max), - /* K21 */ be_nested_str_weak(brightness), - /* K22 */ be_const_int(2), - /* K23 */ be_nested_str_weak(scale_uint), - /* K24 */ be_nested_str_weak(current_color), - /* K25 */ be_nested_str_weak(_get_color_at_index), - /* K26 */ be_nested_str_weak(init), - /* K27 */ be_nested_str_weak(cycle_start), - /* K28 */ be_nested_str_weak(engine), - /* K29 */ be_nested_str_weak(time_ms), - /* K30 */ be_nested_str_weak(global), - /* K31 */ be_nested_str_weak(light_state), - /* K32 */ be_nested_str_weak(RGB), - /* K33 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right_X2C_X20_X23000000_X29_X3B), - /* K34 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), - /* K35 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), - /* K36 */ be_const_real_hex(0x41200000), - /* K37 */ be_nested_str_weak(_X29_X3B), - /* K38 */ be_const_int(-16777216), - /* K39 */ be_nested_str_weak(_DEFAULT_PALETTE), - /* K40 */ be_nested_str_weak(set_rgb), - /* K41 */ be_nested_str_weak(bri), - /* K42 */ be_nested_str_weak(set_bri), - /* K43 */ be_nested_str_weak(r), - /* K44 */ be_nested_str_weak(g), - /* K45 */ be_nested_str_weak(b), +// compact class 'RichPaletteColorProvider' ktab size: 45, total: 102 (saved 456 bytes) +static const bvalue be_ktab_class_RichPaletteColorProvider[45] = { + /* K0 */ be_nested_str_weak(_get_palette_bytes), + /* K1 */ be_nested_str_weak(slots), + /* K2 */ be_nested_str_weak(resize), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_const_int(0), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(tasmota), + /* K7 */ be_nested_str_weak(scale_int), + /* K8 */ be_nested_str_weak(RichPaletteColorProvider_X28slots_X3D_X25s_X2C_X20cycle_period_X3D_X25s_X29), + /* K9 */ be_nested_str_weak(cycle_period), + /* K10 */ be_nested_str_weak(RichPaletteColorProvider_X28uninitialized_X29), + /* K11 */ be_nested_str_weak(range_min), + /* K12 */ be_nested_str_weak(range_max), + /* K13 */ be_nested_str_weak(palette), + /* K14 */ be_nested_str_weak(slots_arr), + /* K15 */ be_nested_str_weak(value_arr), + /* K16 */ be_nested_str_weak(_recompute_palette), + /* K17 */ be_nested_str_weak(brightness), + /* K18 */ be_const_int(2), + /* K19 */ be_nested_str_weak(scale_uint), + /* K20 */ be_nested_str_weak(_parse_palette), + /* K21 */ be_nested_str_weak(value_error), + /* K22 */ be_nested_str_weak(range_min_X20must_X20be_X20lower_X20than_X20range_max), + /* K23 */ be_nested_str_weak(current_color), + /* K24 */ be_nested_str_weak(_get_color_at_index), + /* K25 */ be_nested_str_weak(init), + /* K26 */ be_nested_str_weak(cycle_start), + /* K27 */ be_nested_str_weak(engine), + /* K28 */ be_nested_str_weak(time_ms), + /* K29 */ be_nested_str_weak(global), + /* K30 */ be_nested_str_weak(light_state), + /* K31 */ be_nested_str_weak(RGB), + /* K32 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right_X2C_X20_X23000000_X29_X3B), + /* K33 */ be_nested_str_weak(background_X3Alinear_X2Dgradient_X28to_X20right), + /* K34 */ be_nested_str_weak(_X2C_X23_X2502X_X2502X_X2502X_X20_X25_X2E1f_X25_X25), + /* K35 */ be_const_real_hex(0x41200000), + /* K36 */ be_nested_str_weak(_X29_X3B), + /* K37 */ be_const_int(-16777216), + /* K38 */ be_nested_str_weak(_DEFAULT_PALETTE), + /* K39 */ be_nested_str_weak(set_rgb), + /* K40 */ be_nested_str_weak(bri), + /* K41 */ be_nested_str_weak(set_bri), + /* K42 */ be_nested_str_weak(r), + /* K43 */ be_nested_str_weak(g), + /* K44 */ be_nested_str_weak(b), }; extern const bclass be_class_RichPaletteColorProvider; /******************************************************************** -** Solidified function: set_range +** Solidified function: _parse_palette ********************************************************************/ -be_local_closure(class_RichPaletteColorProvider_set_range, /* name */ +be_local_closure(class_RichPaletteColorProvider__parse_palette, /* name */ be_nested_proto( - 7, /* nstack */ + 16, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -5281,20 +5235,78 @@ be_local_closure(class_RichPaletteColorProvider_set_range, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_RichPaletteColorProvider, /* shared constants */ - be_str_weak(set_range), + be_str_weak(_parse_palette), &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x280C0202, // 0000 GE R3 R1 R2 - 0x780E0000, // 0001 JMPF R3 #0003 - 0xB0060101, // 0002 RAISE 1 K0 K1 - 0x90020401, // 0003 SETMBR R0 K2 R1 - 0x90020602, // 0004 SETMBR R0 K3 R2 - 0x8C0C0105, // 0005 GETMET R3 R0 K5 - 0x5C140200, // 0006 MOVE R5 R1 - 0x5C180400, // 0007 MOVE R6 R2 - 0x7C0C0600, // 0008 CALL R3 3 - 0x90020803, // 0009 SETMBR R0 K4 R3 - 0x80040000, // 000A RET 1 R0 + ( &(const binstruction[69]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x7C0C0200, // 0001 CALL R3 1 + 0x60100012, // 0002 GETGBL R4 G18 + 0x7C100000, // 0003 CALL R4 0 + 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x8C180902, // 0005 GETMET R6 R4 K2 + 0x5C200A00, // 0006 MOVE R8 R5 + 0x7C180400, // 0007 CALL R6 2 + 0x8C180703, // 0008 GETMET R6 R3 K3 + 0x58200004, // 0009 LDCONST R8 K4 + 0x58240005, // 000A LDCONST R9 K5 + 0x7C180600, // 000B CALL R6 3 + 0x20180D04, // 000C NE R6 R6 K4 + 0x781A0022, // 000D JMPF R6 #0031 + 0x58180004, // 000E LDCONST R6 K4 + 0x581C0004, // 000F LDCONST R7 K4 + 0x04200B05, // 0010 SUB R8 R5 K5 + 0x14200E08, // 0011 LT R8 R7 R8 + 0x78220007, // 0012 JMPF R8 #001B + 0x8C200703, // 0013 GETMET R8 R3 K3 + 0x542A0003, // 0014 LDINT R10 4 + 0x08280E0A, // 0015 MUL R10 R7 R10 + 0x582C0005, // 0016 LDCONST R11 K5 + 0x7C200600, // 0017 CALL R8 3 + 0x00180C08, // 0018 ADD R6 R6 R8 + 0x001C0F05, // 0019 ADD R7 R7 K5 + 0x7001FFF4, // 001A JMP #0010 + 0x58200004, // 001B LDCONST R8 K4 + 0x581C0004, // 001C LDCONST R7 K4 + 0x14240E05, // 001D LT R9 R7 R5 + 0x78260010, // 001E JMPF R9 #0030 + 0xB8260C00, // 001F GETNGBL R9 K6 + 0x8C241307, // 0020 GETMET R9 R9 K7 + 0x5C2C1000, // 0021 MOVE R11 R8 + 0x58300004, // 0022 LDCONST R12 K4 + 0x5C340C00, // 0023 MOVE R13 R6 + 0x5C380200, // 0024 MOVE R14 R1 + 0x5C3C0400, // 0025 MOVE R15 R2 + 0x7C240C00, // 0026 CALL R9 6 + 0x98100E09, // 0027 SETIDX R4 R7 R9 + 0x8C240703, // 0028 GETMET R9 R3 K3 + 0x542E0003, // 0029 LDINT R11 4 + 0x082C0E0B, // 002A MUL R11 R7 R11 + 0x58300005, // 002B LDCONST R12 K5 + 0x7C240600, // 002C CALL R9 3 + 0x00201009, // 002D ADD R8 R8 R9 + 0x001C0F05, // 002E ADD R7 R7 K5 + 0x7001FFEC, // 002F JMP #001D + 0x70020012, // 0030 JMP #0044 + 0x58180004, // 0031 LDCONST R6 K4 + 0x141C0C05, // 0032 LT R7 R6 R5 + 0x781E000F, // 0033 JMPF R7 #0044 + 0x8C1C0703, // 0034 GETMET R7 R3 K3 + 0x54260003, // 0035 LDINT R9 4 + 0x08240C09, // 0036 MUL R9 R6 R9 + 0x58280005, // 0037 LDCONST R10 K5 + 0x7C1C0600, // 0038 CALL R7 3 + 0xB8220C00, // 0039 GETNGBL R8 K6 + 0x8C201107, // 003A GETMET R8 R8 K7 + 0x5C280E00, // 003B MOVE R10 R7 + 0x582C0004, // 003C LDCONST R11 K4 + 0x543200FE, // 003D LDINT R12 255 + 0x5C340200, // 003E MOVE R13 R1 + 0x5C380400, // 003F MOVE R14 R2 + 0x7C200C00, // 0040 CALL R8 6 + 0x98100C08, // 0041 SETIDX R4 R6 R8 + 0x00180D05, // 0042 ADD R6 R6 K5 + 0x7001FFED, // 0043 JMP #0032 + 0x80040800, // 0044 RET 1 R4 }) ) ); @@ -5320,9 +5332,9 @@ be_local_closure(class_RichPaletteColorProvider_tostring, /* name */ ( &(const binstruction[16]) { /* code */ 0xA8020008, // 0000 EXBLK 0 #000A 0x60040018, // 0001 GETGBL R1 G24 - 0x58080006, // 0002 LDCONST R2 K6 - 0x880C0107, // 0003 GETMBR R3 R0 K7 - 0x88100108, // 0004 GETMBR R4 R0 K8 + 0x58080008, // 0002 LDCONST R2 K8 + 0x880C0101, // 0003 GETMBR R3 R0 K1 + 0x88100109, // 0004 GETMBR R4 R0 K9 0x7C040600, // 0005 CALL R1 3 0xA8040001, // 0006 EXBLK 1 1 0x80040200, // 0007 RET 1 R1 @@ -5330,7 +5342,7 @@ be_local_closure(class_RichPaletteColorProvider_tostring, /* name */ 0x70020004, // 0009 JMP #000F 0xAC040000, // 000A CATCH R1 0 0 0x70020001, // 000B JMP #000E - 0x80061200, // 000C RET 1 K9 + 0x80061400, // 000C RET 1 K10 0x70020000, // 000D JMP #000F 0xB0080000, // 000E RAISE 2 R0 R0 0x80000000, // 000F RET 0 @@ -5340,104 +5352,12 @@ be_local_closure(class_RichPaletteColorProvider_tostring, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: _parse_palette -********************************************************************/ -be_local_closure(class_RichPaletteColorProvider__parse_palette, /* name */ - be_nested_proto( - 16, /* 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_RichPaletteColorProvider, /* shared constants */ - be_str_weak(_parse_palette), - &be_const_str_solidified, - ( &(const binstruction[69]) { /* code */ - 0x8C0C010A, // 0000 GETMET R3 R0 K10 - 0x7C0C0200, // 0001 CALL R3 1 - 0x60100012, // 0002 GETGBL R4 G18 - 0x7C100000, // 0003 CALL R4 0 - 0x88140107, // 0004 GETMBR R5 R0 K7 - 0x8C18090B, // 0005 GETMET R6 R4 K11 - 0x5C200A00, // 0006 MOVE R8 R5 - 0x7C180400, // 0007 CALL R6 2 - 0x8C18070C, // 0008 GETMET R6 R3 K12 - 0x5820000D, // 0009 LDCONST R8 K13 - 0x5824000E, // 000A LDCONST R9 K14 - 0x7C180600, // 000B CALL R6 3 - 0x20180D0D, // 000C NE R6 R6 K13 - 0x781A0022, // 000D JMPF R6 #0031 - 0x5818000D, // 000E LDCONST R6 K13 - 0x581C000D, // 000F LDCONST R7 K13 - 0x04200B0E, // 0010 SUB R8 R5 K14 - 0x14200E08, // 0011 LT R8 R7 R8 - 0x78220007, // 0012 JMPF R8 #001B - 0x8C20070C, // 0013 GETMET R8 R3 K12 - 0x542A0003, // 0014 LDINT R10 4 - 0x08280E0A, // 0015 MUL R10 R7 R10 - 0x582C000E, // 0016 LDCONST R11 K14 - 0x7C200600, // 0017 CALL R8 3 - 0x00180C08, // 0018 ADD R6 R6 R8 - 0x001C0F0E, // 0019 ADD R7 R7 K14 - 0x7001FFF4, // 001A JMP #0010 - 0x5820000D, // 001B LDCONST R8 K13 - 0x581C000D, // 001C LDCONST R7 K13 - 0x14240E05, // 001D LT R9 R7 R5 - 0x78260010, // 001E JMPF R9 #0030 - 0xB8261E00, // 001F GETNGBL R9 K15 - 0x8C241310, // 0020 GETMET R9 R9 K16 - 0x5C2C1000, // 0021 MOVE R11 R8 - 0x5830000D, // 0022 LDCONST R12 K13 - 0x5C340C00, // 0023 MOVE R13 R6 - 0x5C380200, // 0024 MOVE R14 R1 - 0x5C3C0400, // 0025 MOVE R15 R2 - 0x7C240C00, // 0026 CALL R9 6 - 0x98100E09, // 0027 SETIDX R4 R7 R9 - 0x8C24070C, // 0028 GETMET R9 R3 K12 - 0x542E0003, // 0029 LDINT R11 4 - 0x082C0E0B, // 002A MUL R11 R7 R11 - 0x5830000E, // 002B LDCONST R12 K14 - 0x7C240600, // 002C CALL R9 3 - 0x00201009, // 002D ADD R8 R8 R9 - 0x001C0F0E, // 002E ADD R7 R7 K14 - 0x7001FFEC, // 002F JMP #001D - 0x70020012, // 0030 JMP #0044 - 0x5818000D, // 0031 LDCONST R6 K13 - 0x141C0C05, // 0032 LT R7 R6 R5 - 0x781E000F, // 0033 JMPF R7 #0044 - 0x8C1C070C, // 0034 GETMET R7 R3 K12 - 0x54260003, // 0035 LDINT R9 4 - 0x08240C09, // 0036 MUL R9 R6 R9 - 0x5828000E, // 0037 LDCONST R10 K14 - 0x7C1C0600, // 0038 CALL R7 3 - 0xB8221E00, // 0039 GETNGBL R8 K15 - 0x8C201110, // 003A GETMET R8 R8 K16 - 0x5C280E00, // 003B MOVE R10 R7 - 0x582C000D, // 003C LDCONST R11 K13 - 0x543200FE, // 003D LDINT R12 255 - 0x5C340200, // 003E MOVE R13 R1 - 0x5C380400, // 003F MOVE R14 R2 - 0x7C200C00, // 0040 CALL R8 6 - 0x98100C08, // 0041 SETIDX R4 R6 R8 - 0x00180D0E, // 0042 ADD R6 R6 K14 - 0x7001FFED, // 0043 JMP #0032 - 0x80040800, // 0044 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: on_param_changed ********************************************************************/ be_local_closure(class_RichPaletteColorProvider_on_param_changed, /* name */ be_nested_proto( - 9, /* nstack */ + 5, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -5448,60 +5368,26 @@ be_local_closure(class_RichPaletteColorProvider_on_param_changed, /* name */ &be_ktab_class_RichPaletteColorProvider, /* shared constants */ be_str_weak(on_param_changed), &be_const_str_solidified, - ( &(const binstruction[53]) { /* code */ - 0x1C0C0311, // 0000 EQ R3 R1 K17 - 0x780E0002, // 0001 JMPF R3 #0005 - 0x8C0C0112, // 0002 GETMET R3 R0 K18 - 0x7C0C0200, // 0003 CALL R3 1 - 0x7002002E, // 0004 JMP #0034 - 0x1C0C0308, // 0005 EQ R3 R1 K8 - 0x780E0013, // 0006 JMPF R3 #001B - 0x4C0C0000, // 0007 LDNIL R3 - 0x1C0C0403, // 0008 EQ R3 R2 R3 - 0x780E0000, // 0009 JMPF R3 #000B - 0x80000600, // 000A RET 0 - 0x140C050D, // 000B LT R3 R2 K13 - 0x780E0000, // 000C JMPF R3 #000E - 0xB0060113, // 000D RAISE 1 K0 K19 - 0x240C050D, // 000E GT R3 R2 K13 - 0x780E0009, // 000F JMPF R3 #001A - 0x8C0C010A, // 0010 GETMET R3 R0 K10 + ( &(const binstruction[19]) { /* code */ + 0x1C0C030B, // 0000 EQ R3 R1 K11 + 0x740E0005, // 0001 JMPT R3 #0008 + 0x1C0C030C, // 0002 EQ R3 R1 K12 + 0x740E0003, // 0003 JMPT R3 #0008 + 0x1C0C0309, // 0004 EQ R3 R1 K9 + 0x740E0001, // 0005 JMPT R3 #0008 + 0x1C0C030D, // 0006 EQ R3 R1 K13 + 0x780E0009, // 0007 JMPF R3 #0012 + 0x880C010E, // 0008 GETMBR R3 R0 K14 + 0x4C100000, // 0009 LDNIL R4 + 0x200C0604, // 000A NE R3 R3 R4 + 0x740E0003, // 000B JMPT R3 #0010 + 0x880C010F, // 000C GETMBR R3 R0 K15 + 0x4C100000, // 000D LDNIL R4 + 0x200C0604, // 000E NE R3 R3 R4 + 0x780E0001, // 000F JMPF R3 #0012 + 0x8C0C0110, // 0010 GETMET R3 R0 K16 0x7C0C0200, // 0011 CALL R3 1 - 0x4C100000, // 0012 LDNIL R4 - 0x200C0604, // 0013 NE R3 R3 R4 - 0x780E0004, // 0014 JMPF R3 #001A - 0x8C0C0105, // 0015 GETMET R3 R0 K5 - 0x5814000D, // 0016 LDCONST R5 K13 - 0x0418050E, // 0017 SUB R6 R2 K14 - 0x7C0C0600, // 0018 CALL R3 3 - 0x90020803, // 0019 SETMBR R0 K4 R3 - 0x70020018, // 001A JMP #0034 - 0x1C0C0302, // 001B EQ R3 R1 K2 - 0x740E0001, // 001C JMPT R3 #001F - 0x1C0C0303, // 001D EQ R3 R1 K3 - 0x780E0014, // 001E JMPF R3 #0034 - 0x880C0102, // 001F GETMBR R3 R0 K2 - 0x88100103, // 0020 GETMBR R4 R0 K3 - 0x4C140000, // 0021 LDNIL R5 - 0x20140605, // 0022 NE R5 R3 R5 - 0x7816000F, // 0023 JMPF R5 #0034 - 0x4C140000, // 0024 LDNIL R5 - 0x20140805, // 0025 NE R5 R4 R5 - 0x7816000C, // 0026 JMPF R5 #0034 - 0x28140604, // 0027 GE R5 R3 R4 - 0x78160000, // 0028 JMPF R5 #002A - 0xB0060114, // 0029 RAISE 1 K0 K20 - 0x8C14010A, // 002A GETMET R5 R0 K10 - 0x7C140200, // 002B CALL R5 1 - 0x4C180000, // 002C LDNIL R6 - 0x20140A06, // 002D NE R5 R5 R6 - 0x78160004, // 002E JMPF R5 #0034 - 0x8C140105, // 002F GETMET R5 R0 K5 - 0x5C1C0600, // 0030 MOVE R7 R3 - 0x5C200800, // 0031 MOVE R8 R4 - 0x7C140600, // 0032 CALL R5 3 - 0x90020805, // 0033 SETMBR R0 K4 R5 - 0x80000000, // 0034 RET 0 + 0x80000000, // 0012 RET 0 }) ) ); @@ -5524,130 +5410,140 @@ be_local_closure(class_RichPaletteColorProvider_get_color_for_value, /* name * &be_ktab_class_RichPaletteColorProvider, /* shared constants */ be_str_weak(get_color_for_value), &be_const_str_solidified, - ( &(const binstruction[123]) { /* code */ - 0x8C0C010A, // 0000 GETMET R3 R0 K10 - 0x7C0C0200, // 0001 CALL R3 1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x88140103, // 0003 GETMBR R5 R0 K3 - 0x88180115, // 0004 GETMBR R6 R0 K21 - 0x4C1C0000, // 0005 LDNIL R7 - 0x1C1C0807, // 0006 EQ R7 R4 R7 - 0x741E0002, // 0007 JMPT R7 #000B - 0x4C1C0000, // 0008 LDNIL R7 - 0x1C1C0A07, // 0009 EQ R7 R5 R7 - 0x781E0001, // 000A JMPF R7 #000D - 0x4C1C0000, // 000B LDNIL R7 - 0x80040E00, // 000C RET 1 R7 - 0x881C0107, // 000D GETMBR R7 R0 K7 - 0x04200F16, // 000E SUB R8 R7 K22 - 0x2424110D, // 000F GT R9 R8 K13 - 0x78260006, // 0010 JMPF R9 #0018 - 0x88240104, // 0011 GETMBR R9 R0 K4 - 0x94241208, // 0012 GETIDX R9 R9 R8 - 0x28240209, // 0013 GE R9 R1 R9 - 0x78260000, // 0014 JMPF R9 #0016 - 0x70020001, // 0015 JMP #0018 - 0x0420110E, // 0016 SUB R8 R8 K14 - 0x7001FFF6, // 0017 JMP #000F - 0x8C24070C, // 0018 GETMET R9 R3 K12 - 0x542E0003, // 0019 LDINT R11 4 - 0x082C100B, // 001A MUL R11 R8 R11 - 0x54320003, // 001B LDINT R12 4 - 0x7C240600, // 001C CALL R9 3 - 0x8C28070C, // 001D GETMET R10 R3 K12 - 0x0030110E, // 001E ADD R12 R8 K14 - 0x54360003, // 001F LDINT R13 4 - 0x0830180D, // 0020 MUL R12 R12 R13 - 0x54360003, // 0021 LDINT R13 4 - 0x7C280600, // 0022 CALL R10 3 - 0x882C0104, // 0023 GETMBR R11 R0 K4 - 0x942C1608, // 0024 GETIDX R11 R11 R8 - 0x0030110E, // 0025 ADD R12 R8 K14 - 0x88340104, // 0026 GETMBR R13 R0 K4 - 0x94301A0C, // 0027 GETIDX R12 R13 R12 - 0xB8361E00, // 0028 GETNGBL R13 K15 - 0x8C341B17, // 0029 GETMET R13 R13 K23 - 0x5C3C0200, // 002A MOVE R15 R1 - 0x5C401600, // 002B MOVE R16 R11 - 0x5C441800, // 002C MOVE R17 R12 - 0x544A0007, // 002D LDINT R18 8 - 0x3C481212, // 002E SHR R18 R9 R18 - 0x544E00FE, // 002F LDINT R19 255 - 0x2C482413, // 0030 AND R18 R18 R19 - 0x544E0007, // 0031 LDINT R19 8 - 0x3C4C1413, // 0032 SHR R19 R10 R19 - 0x545200FE, // 0033 LDINT R20 255 - 0x2C4C2614, // 0034 AND R19 R19 R20 - 0x7C340C00, // 0035 CALL R13 6 - 0xB83A1E00, // 0036 GETNGBL R14 K15 - 0x8C381D17, // 0037 GETMET R14 R14 K23 - 0x5C400200, // 0038 MOVE R16 R1 - 0x5C441600, // 0039 MOVE R17 R11 - 0x5C481800, // 003A MOVE R18 R12 - 0x544E000F, // 003B LDINT R19 16 - 0x3C4C1213, // 003C SHR R19 R9 R19 + ( &(const binstruction[133]) { /* code */ + 0x880C010E, // 0000 GETMBR R3 R0 K14 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0005, // 0003 JMPF R3 #000A + 0x880C010F, // 0004 GETMBR R3 R0 K15 + 0x4C100000, // 0005 LDNIL R4 + 0x1C0C0604, // 0006 EQ R3 R3 R4 + 0x780E0001, // 0007 JMPF R3 #000A + 0x8C0C0110, // 0008 GETMET R3 R0 K16 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C0100, // 000A GETMET R3 R0 K0 + 0x7C0C0200, // 000B CALL R3 1 + 0x8810010B, // 000C GETMBR R4 R0 K11 + 0x8814010C, // 000D GETMBR R5 R0 K12 + 0x88180111, // 000E GETMBR R6 R0 K17 + 0x4C1C0000, // 000F LDNIL R7 + 0x1C1C0807, // 0010 EQ R7 R4 R7 + 0x741E0002, // 0011 JMPT R7 #0015 + 0x4C1C0000, // 0012 LDNIL R7 + 0x1C1C0A07, // 0013 EQ R7 R5 R7 + 0x781E0001, // 0014 JMPF R7 #0017 + 0x4C1C0000, // 0015 LDNIL R7 + 0x80040E00, // 0016 RET 1 R7 + 0x881C0101, // 0017 GETMBR R7 R0 K1 + 0x04200F12, // 0018 SUB R8 R7 K18 + 0x24241104, // 0019 GT R9 R8 K4 + 0x78260006, // 001A JMPF R9 #0022 + 0x8824010F, // 001B GETMBR R9 R0 K15 + 0x94241208, // 001C GETIDX R9 R9 R8 + 0x28240209, // 001D GE R9 R1 R9 + 0x78260000, // 001E JMPF R9 #0020 + 0x70020001, // 001F JMP #0022 + 0x04201105, // 0020 SUB R8 R8 K5 + 0x7001FFF6, // 0021 JMP #0019 + 0x8C240703, // 0022 GETMET R9 R3 K3 + 0x542E0003, // 0023 LDINT R11 4 + 0x082C100B, // 0024 MUL R11 R8 R11 + 0x54320003, // 0025 LDINT R12 4 + 0x7C240600, // 0026 CALL R9 3 + 0x8C280703, // 0027 GETMET R10 R3 K3 + 0x00301105, // 0028 ADD R12 R8 K5 + 0x54360003, // 0029 LDINT R13 4 + 0x0830180D, // 002A MUL R12 R12 R13 + 0x54360003, // 002B LDINT R13 4 + 0x7C280600, // 002C CALL R10 3 + 0x882C010F, // 002D GETMBR R11 R0 K15 + 0x942C1608, // 002E GETIDX R11 R11 R8 + 0x00301105, // 002F ADD R12 R8 K5 + 0x8834010F, // 0030 GETMBR R13 R0 K15 + 0x94301A0C, // 0031 GETIDX R12 R13 R12 + 0xB8360C00, // 0032 GETNGBL R13 K6 + 0x8C341B13, // 0033 GETMET R13 R13 K19 + 0x5C3C0200, // 0034 MOVE R15 R1 + 0x5C401600, // 0035 MOVE R16 R11 + 0x5C441800, // 0036 MOVE R17 R12 + 0x544A0007, // 0037 LDINT R18 8 + 0x3C481212, // 0038 SHR R18 R9 R18 + 0x544E00FE, // 0039 LDINT R19 255 + 0x2C482413, // 003A AND R18 R18 R19 + 0x544E0007, // 003B LDINT R19 8 + 0x3C4C1413, // 003C SHR R19 R10 R19 0x545200FE, // 003D LDINT R20 255 0x2C4C2614, // 003E AND R19 R19 R20 - 0x5452000F, // 003F LDINT R20 16 - 0x3C501414, // 0040 SHR R20 R10 R20 - 0x545600FE, // 0041 LDINT R21 255 - 0x2C502815, // 0042 AND R20 R20 R21 - 0x7C380C00, // 0043 CALL R14 6 - 0xB83E1E00, // 0044 GETNGBL R15 K15 - 0x8C3C1F17, // 0045 GETMET R15 R15 K23 - 0x5C440200, // 0046 MOVE R17 R1 - 0x5C481600, // 0047 MOVE R18 R11 - 0x5C4C1800, // 0048 MOVE R19 R12 - 0x54520017, // 0049 LDINT R20 24 - 0x3C501214, // 004A SHR R20 R9 R20 + 0x7C340C00, // 003F CALL R13 6 + 0xB83A0C00, // 0040 GETNGBL R14 K6 + 0x8C381D13, // 0041 GETMET R14 R14 K19 + 0x5C400200, // 0042 MOVE R16 R1 + 0x5C441600, // 0043 MOVE R17 R11 + 0x5C481800, // 0044 MOVE R18 R12 + 0x544E000F, // 0045 LDINT R19 16 + 0x3C4C1213, // 0046 SHR R19 R9 R19 + 0x545200FE, // 0047 LDINT R20 255 + 0x2C4C2614, // 0048 AND R19 R19 R20 + 0x5452000F, // 0049 LDINT R20 16 + 0x3C501414, // 004A SHR R20 R10 R20 0x545600FE, // 004B LDINT R21 255 0x2C502815, // 004C AND R20 R20 R21 - 0x54560017, // 004D LDINT R21 24 - 0x3C541415, // 004E SHR R21 R10 R21 - 0x545A00FE, // 004F LDINT R22 255 - 0x2C542A16, // 0050 AND R21 R21 R22 - 0x7C3C0C00, // 0051 CALL R15 6 - 0x544200FE, // 0052 LDINT R16 255 - 0x20400C10, // 0053 NE R16 R6 R16 - 0x7842001A, // 0054 JMPF R16 #0070 - 0xB8421E00, // 0055 GETNGBL R16 K15 - 0x8C402117, // 0056 GETMET R16 R16 K23 - 0x5C481A00, // 0057 MOVE R18 R13 - 0x584C000D, // 0058 LDCONST R19 K13 - 0x545200FE, // 0059 LDINT R20 255 - 0x5854000D, // 005A LDCONST R21 K13 - 0x5C580C00, // 005B MOVE R22 R6 - 0x7C400C00, // 005C CALL R16 6 - 0x5C342000, // 005D MOVE R13 R16 - 0xB8421E00, // 005E GETNGBL R16 K15 - 0x8C402117, // 005F GETMET R16 R16 K23 - 0x5C481C00, // 0060 MOVE R18 R14 - 0x584C000D, // 0061 LDCONST R19 K13 - 0x545200FE, // 0062 LDINT R20 255 - 0x5854000D, // 0063 LDCONST R21 K13 - 0x5C580C00, // 0064 MOVE R22 R6 - 0x7C400C00, // 0065 CALL R16 6 - 0x5C382000, // 0066 MOVE R14 R16 - 0xB8421E00, // 0067 GETNGBL R16 K15 - 0x8C402117, // 0068 GETMET R16 R16 K23 - 0x5C481E00, // 0069 MOVE R18 R15 - 0x584C000D, // 006A LDCONST R19 K13 - 0x545200FE, // 006B LDINT R20 255 - 0x5854000D, // 006C LDCONST R21 K13 - 0x5C580C00, // 006D MOVE R22 R6 - 0x7C400C00, // 006E CALL R16 6 - 0x5C3C2000, // 006F MOVE R15 R16 - 0x544200FE, // 0070 LDINT R16 255 - 0x54460017, // 0071 LDINT R17 24 - 0x38402011, // 0072 SHL R16 R16 R17 - 0x5446000F, // 0073 LDINT R17 16 - 0x38441A11, // 0074 SHL R17 R13 R17 - 0x30402011, // 0075 OR R16 R16 R17 - 0x54460007, // 0076 LDINT R17 8 - 0x38441C11, // 0077 SHL R17 R14 R17 - 0x30402011, // 0078 OR R16 R16 R17 - 0x3040200F, // 0079 OR R16 R16 R15 - 0x80042000, // 007A RET 1 R16 + 0x7C380C00, // 004D CALL R14 6 + 0xB83E0C00, // 004E GETNGBL R15 K6 + 0x8C3C1F13, // 004F GETMET R15 R15 K19 + 0x5C440200, // 0050 MOVE R17 R1 + 0x5C481600, // 0051 MOVE R18 R11 + 0x5C4C1800, // 0052 MOVE R19 R12 + 0x54520017, // 0053 LDINT R20 24 + 0x3C501214, // 0054 SHR R20 R9 R20 + 0x545600FE, // 0055 LDINT R21 255 + 0x2C502815, // 0056 AND R20 R20 R21 + 0x54560017, // 0057 LDINT R21 24 + 0x3C541415, // 0058 SHR R21 R10 R21 + 0x545A00FE, // 0059 LDINT R22 255 + 0x2C542A16, // 005A AND R21 R21 R22 + 0x7C3C0C00, // 005B CALL R15 6 + 0x544200FE, // 005C LDINT R16 255 + 0x20400C10, // 005D NE R16 R6 R16 + 0x7842001A, // 005E JMPF R16 #007A + 0xB8420C00, // 005F GETNGBL R16 K6 + 0x8C402113, // 0060 GETMET R16 R16 K19 + 0x5C481A00, // 0061 MOVE R18 R13 + 0x584C0004, // 0062 LDCONST R19 K4 + 0x545200FE, // 0063 LDINT R20 255 + 0x58540004, // 0064 LDCONST R21 K4 + 0x5C580C00, // 0065 MOVE R22 R6 + 0x7C400C00, // 0066 CALL R16 6 + 0x5C342000, // 0067 MOVE R13 R16 + 0xB8420C00, // 0068 GETNGBL R16 K6 + 0x8C402113, // 0069 GETMET R16 R16 K19 + 0x5C481C00, // 006A MOVE R18 R14 + 0x584C0004, // 006B LDCONST R19 K4 + 0x545200FE, // 006C LDINT R20 255 + 0x58540004, // 006D LDCONST R21 K4 + 0x5C580C00, // 006E MOVE R22 R6 + 0x7C400C00, // 006F CALL R16 6 + 0x5C382000, // 0070 MOVE R14 R16 + 0xB8420C00, // 0071 GETNGBL R16 K6 + 0x8C402113, // 0072 GETMET R16 R16 K19 + 0x5C481E00, // 0073 MOVE R18 R15 + 0x584C0004, // 0074 LDCONST R19 K4 + 0x545200FE, // 0075 LDINT R20 255 + 0x58540004, // 0076 LDCONST R21 K4 + 0x5C580C00, // 0077 MOVE R22 R6 + 0x7C400C00, // 0078 CALL R16 6 + 0x5C3C2000, // 0079 MOVE R15 R16 + 0x544200FE, // 007A LDINT R16 255 + 0x54460017, // 007B LDINT R17 24 + 0x38402011, // 007C SHL R16 R16 R17 + 0x5446000F, // 007D LDINT R17 16 + 0x38441A11, // 007E SHL R17 R13 R17 + 0x30402011, // 007F OR R16 R16 R17 + 0x54460007, // 0080 LDINT R17 8 + 0x38441C11, // 0081 SHL R17 R14 R17 + 0x30402011, // 0082 OR R16 R16 R17 + 0x3040200F, // 0083 OR R16 R16 R15 + 0x80042000, // 0084 RET 1 R16 }) ) ); @@ -5670,48 +5566,55 @@ be_local_closure(class_RichPaletteColorProvider__recompute_palette, /* name */ &be_ktab_class_RichPaletteColorProvider, /* shared constants */ be_str_weak(_recompute_palette), &be_const_str_solidified, - ( &(const binstruction[41]) { /* code */ - 0x8C04010A, // 0000 GETMET R1 R0 K10 - 0x7C040200, // 0001 CALL R1 1 - 0x6008000C, // 0002 GETGBL R2 G12 - 0x5C0C0200, // 0003 MOVE R3 R1 - 0x7C080200, // 0004 CALL R2 1 - 0x540E0003, // 0005 LDINT R3 4 - 0x0C080403, // 0006 DIV R2 R2 R3 - 0x90020E02, // 0007 SETMBR R0 K7 R2 - 0x88080108, // 0008 GETMBR R2 R0 K8 - 0x880C0102, // 0009 GETMBR R3 R0 K2 - 0x88100103, // 000A GETMBR R4 R0 K3 - 0x4C140000, // 000B LDNIL R5 - 0x20140405, // 000C NE R5 R2 R5 - 0x78160007, // 000D JMPF R5 #0016 - 0x2414050D, // 000E GT R5 R2 K13 - 0x78160005, // 000F JMPF R5 #0016 - 0x8C140105, // 0010 GETMET R5 R0 K5 - 0x581C000D, // 0011 LDCONST R7 K13 - 0x0420050E, // 0012 SUB R8 R2 K14 - 0x7C140600, // 0013 CALL R5 3 - 0x90020805, // 0014 SETMBR R0 K4 R5 - 0x7002000A, // 0015 JMP #0021 - 0x4C140000, // 0016 LDNIL R5 - 0x20140605, // 0017 NE R5 R3 R5 - 0x78160007, // 0018 JMPF R5 #0021 - 0x4C140000, // 0019 LDNIL R5 - 0x20140805, // 001A NE R5 R4 R5 - 0x78160004, // 001B JMPF R5 #0021 - 0x8C140105, // 001C GETMET R5 R0 K5 - 0x5C1C0600, // 001D MOVE R7 R3 - 0x5C200800, // 001E MOVE R8 R4 - 0x7C140600, // 001F CALL R5 3 - 0x90020805, // 0020 SETMBR R0 K4 R5 - 0x88140107, // 0021 GETMBR R5 R0 K7 - 0x24140B0D, // 0022 GT R5 R5 K13 - 0x78160003, // 0023 JMPF R5 #0028 - 0x8C140119, // 0024 GETMET R5 R0 K25 - 0x581C000D, // 0025 LDCONST R7 K13 - 0x7C140400, // 0026 CALL R5 2 - 0x90023005, // 0027 SETMBR R0 K24 R5 - 0x80040000, // 0028 RET 1 R0 + ( &(const binstruction[48]) { /* code */ + 0x88040109, // 0000 GETMBR R1 R0 K9 + 0x8C080100, // 0001 GETMET R2 R0 K0 + 0x7C080200, // 0002 CALL R2 1 + 0x600C000C, // 0003 GETGBL R3 G12 + 0x5C100400, // 0004 MOVE R4 R2 + 0x7C0C0200, // 0005 CALL R3 1 + 0x54120003, // 0006 LDINT R4 4 + 0x0C0C0604, // 0007 DIV R3 R3 R4 + 0x90020203, // 0008 SETMBR R0 K1 R3 + 0x240C0304, // 0009 GT R3 R1 K4 + 0x780E0008, // 000A JMPF R3 #0014 + 0x4C0C0000, // 000B LDNIL R3 + 0x200C0403, // 000C NE R3 R2 R3 + 0x780E0005, // 000D JMPF R3 #0014 + 0x8C0C0114, // 000E GETMET R3 R0 K20 + 0x58140004, // 000F LDCONST R5 K4 + 0x04180305, // 0010 SUB R6 R1 K5 + 0x7C0C0600, // 0011 CALL R3 3 + 0x90021C03, // 0012 SETMBR R0 K14 R3 + 0x70020001, // 0013 JMP #0016 + 0x4C0C0000, // 0014 LDNIL R3 + 0x90021C03, // 0015 SETMBR R0 K14 R3 + 0x880C010B, // 0016 GETMBR R3 R0 K11 + 0x8810010C, // 0017 GETMBR R4 R0 K12 + 0x28140604, // 0018 GE R5 R3 R4 + 0x78160000, // 0019 JMPF R5 #001B + 0xB0062B16, // 001A RAISE 1 K21 K22 + 0x8C140100, // 001B GETMET R5 R0 K0 + 0x7C140200, // 001C CALL R5 1 + 0x4C180000, // 001D LDNIL R6 + 0x20140A06, // 001E NE R5 R5 R6 + 0x78160005, // 001F JMPF R5 #0026 + 0x8C140114, // 0020 GETMET R5 R0 K20 + 0x5C1C0600, // 0021 MOVE R7 R3 + 0x5C200800, // 0022 MOVE R8 R4 + 0x7C140600, // 0023 CALL R5 3 + 0x90021E05, // 0024 SETMBR R0 K15 R5 + 0x70020001, // 0025 JMP #0028 + 0x4C140000, // 0026 LDNIL R5 + 0x90021E05, // 0027 SETMBR R0 K15 R5 + 0x88140101, // 0028 GETMBR R5 R0 K1 + 0x24140B04, // 0029 GT R5 R5 K4 + 0x78160003, // 002A JMPF R5 #002F + 0x8C140118, // 002B GETMET R5 R0 K24 + 0x581C0004, // 002C LDCONST R7 K4 + 0x7C140400, // 002D CALL R5 2 + 0x90022E05, // 002E SETMBR R0 K23 R5 + 0x80040000, // 002F RET 1 R0 }) ) ); @@ -5734,28 +5637,26 @@ be_local_closure(class_RichPaletteColorProvider_init, /* name */ &be_ktab_class_RichPaletteColorProvider, /* shared constants */ be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ + ( &(const binstruction[19]) { /* code */ 0x60080003, // 0000 GETGBL R2 G3 0x5C0C0000, // 0001 MOVE R3 R0 0x7C080200, // 0002 CALL R2 1 - 0x8C08051A, // 0003 GETMET R2 R2 K26 + 0x8C080519, // 0003 GETMET R2 R2 K25 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 0x5409FFFE, // 0006 LDINT R2 -1 - 0x90023002, // 0007 SETMBR R0 K24 R2 - 0x8808011C, // 0008 GETMBR R2 R0 K28 - 0x8808051D, // 0009 GETMBR R2 R2 K29 - 0x90023602, // 000A SETMBR R0 K27 R2 - 0x4C080000, // 000B LDNIL R2 - 0x90020802, // 000C SETMBR R0 K4 R2 - 0x90020F0D, // 000D SETMBR R0 K7 K13 - 0xA40A3C00, // 000E IMPORT R2 K30 - 0x8C0C051F, // 000F GETMET R3 R2 K31 - 0x8814051F, // 0010 GETMBR R5 R2 K31 - 0x88140B20, // 0011 GETMBR R5 R5 K32 - 0x7C0C0400, // 0012 CALL R3 2 - 0x90023E03, // 0013 SETMBR R0 K31 R3 - 0x80000000, // 0014 RET 0 + 0x90022E02, // 0007 SETMBR R0 K23 R2 + 0x8808011B, // 0008 GETMBR R2 R0 K27 + 0x8808051C, // 0009 GETMBR R2 R2 K28 + 0x90023402, // 000A SETMBR R0 K26 R2 + 0x90020304, // 000B SETMBR R0 K1 K4 + 0xA40A3A00, // 000C IMPORT R2 K29 + 0x8C0C051E, // 000D GETMET R3 R2 K30 + 0x8814051E, // 000E GETMBR R5 R2 K30 + 0x88140B1F, // 000F GETMBR R5 R5 K31 + 0x7C0C0400, // 0010 CALL R3 2 + 0x90023C03, // 0011 SETMBR R0 K30 R3 + 0x80000000, // 0012 RET 0 }) ) ); @@ -5779,25 +5680,25 @@ be_local_closure(class_RichPaletteColorProvider_to_css_gradient, /* name */ be_str_weak(to_css_gradient), &be_const_str_solidified, ( &(const binstruction[47]) { /* code */ - 0x8C04010A, // 0000 GETMET R1 R0 K10 + 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 0x4C080000, // 0002 LDNIL R2 0x1C080202, // 0003 EQ R2 R1 R2 0x780A0000, // 0004 JMPF R2 #0006 - 0x80064200, // 0005 RET 1 K33 - 0x8C080105, // 0006 GETMET R2 R0 K5 - 0x5810000D, // 0007 LDCONST R4 K13 + 0x80064000, // 0005 RET 1 K32 + 0x8C080114, // 0006 GETMET R2 R0 K20 + 0x58100004, // 0007 LDCONST R4 K4 0x541603E7, // 0008 LDINT R5 1000 0x7C080600, // 0009 CALL R2 3 - 0x580C0022, // 000A LDCONST R3 K34 - 0x5810000D, // 000B LDCONST R4 K13 + 0x580C0021, // 000A LDCONST R3 K33 + 0x58100004, // 000B LDCONST R4 K4 0x6014000C, // 000C GETGBL R5 G12 0x5C180400, // 000D MOVE R6 R2 0x7C140200, // 000E CALL R5 1 0x14140805, // 000F LT R5 R4 R5 0x7816001B, // 0010 JMPF R5 #002D 0x94140404, // 0011 GETIDX R5 R2 R4 - 0x8C18030C, // 0012 GETMET R6 R1 K12 + 0x8C180303, // 0012 GETMET R6 R1 K3 0x54220003, // 0013 LDINT R8 4 0x08200808, // 0014 MUL R8 R4 R8 0x54260003, // 0015 LDINT R9 4 @@ -5815,16 +5716,16 @@ be_local_closure(class_RichPaletteColorProvider_to_css_gradient, /* name */ 0x542A00FE, // 0021 LDINT R10 255 0x2C24120A, // 0022 AND R9 R9 R10 0x60280018, // 0023 GETGBL R10 G24 - 0x582C0023, // 0024 LDCONST R11 K35 + 0x582C0022, // 0024 LDCONST R11 K34 0x5C300E00, // 0025 MOVE R12 R7 0x5C341000, // 0026 MOVE R13 R8 0x5C381200, // 0027 MOVE R14 R9 - 0x0C3C0B24, // 0028 DIV R15 R5 K36 + 0x0C3C0B23, // 0028 DIV R15 R5 K35 0x7C280A00, // 0029 CALL R10 5 0x000C060A, // 002A ADD R3 R3 R10 - 0x0010090E, // 002B ADD R4 R4 K14 + 0x00100905, // 002B ADD R4 R4 K5 0x7001FFDE, // 002C JMP #000C - 0x000C0725, // 002D ADD R3 R3 K37 + 0x000C0724, // 002D ADD R3 R3 K36 0x80040600, // 002E RET 1 R3 }) ) @@ -5832,36 +5733,6 @@ be_local_closure(class_RichPaletteColorProvider_to_css_gradient, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: start -********************************************************************/ -be_local_closure(class_RichPaletteColorProvider_start, /* name */ - be_nested_proto( - 3, /* 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_RichPaletteColorProvider, /* shared constants */ - be_str_weak(start), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x8808011C, // 0003 GETMBR R2 R0 K28 - 0x8804051D, // 0004 GETMBR R1 R2 K29 - 0x90023601, // 0005 SETMBR R0 K27 R1 - 0x80040000, // 0006 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: _get_color_at_index ********************************************************************/ @@ -5879,21 +5750,21 @@ be_local_closure(class_RichPaletteColorProvider__get_color_at_index, /* name * be_str_weak(_get_color_at_index), &be_const_str_solidified, ( &(const binstruction[16]) { /* code */ - 0x1408030D, // 0000 LT R2 R1 K13 + 0x14080304, // 0000 LT R2 R1 K4 0x740A0002, // 0001 JMPT R2 #0005 - 0x88080107, // 0002 GETMBR R2 R0 K7 + 0x88080101, // 0002 GETMBR R2 R0 K1 0x28080202, // 0003 GE R2 R1 R2 0x780A0001, // 0004 JMPF R2 #0007 0x5409FFFE, // 0005 LDINT R2 -1 0x80040400, // 0006 RET 1 R2 - 0x8C08010A, // 0007 GETMET R2 R0 K10 + 0x8C080100, // 0007 GETMET R2 R0 K0 0x7C080200, // 0008 CALL R2 1 - 0x8C0C050C, // 0009 GETMET R3 R2 K12 + 0x8C0C0503, // 0009 GETMET R3 R2 K3 0x54160003, // 000A LDINT R5 4 0x08140205, // 000B MUL R5 R1 R5 0x5419FFFB, // 000C LDINT R6 -4 0x7C0C0600, // 000D CALL R3 3 - 0x300C0726, // 000E OR R3 R3 K38 + 0x300C0725, // 000E OR R3 R3 K37 0x80040600, // 000F RET 1 R3 }) ) @@ -5901,6 +5772,48 @@ be_local_closure(class_RichPaletteColorProvider__get_color_at_index, /* name * /*******************************************************************/ +/******************************************************************** +** Solidified function: start +********************************************************************/ +be_local_closure(class_RichPaletteColorProvider_start, /* 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_RichPaletteColorProvider, /* shared constants */ + be_str_weak(start), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0x8808010E, // 0000 GETMBR R2 R0 K14 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x780A0005, // 0003 JMPF R2 #000A + 0x8808010F, // 0004 GETMBR R2 R0 K15 + 0x4C0C0000, // 0005 LDNIL R3 + 0x1C080403, // 0006 EQ R2 R2 R3 + 0x780A0001, // 0007 JMPF R2 #000A + 0x8C080110, // 0008 GETMET R2 R0 K16 + 0x7C080200, // 0009 CALL R2 1 + 0x4C080000, // 000A LDNIL R2 + 0x20080202, // 000B NE R2 R1 R2 + 0x780A0001, // 000C JMPF R2 #000F + 0x5C080200, // 000D MOVE R2 R1 + 0x70020001, // 000E JMP #0011 + 0x8808011B, // 000F GETMBR R2 R0 K27 + 0x8808051C, // 0010 GETMBR R2 R2 K28 + 0x90023402, // 0011 SETMBR R0 K26 R2 + 0x80040000, // 0012 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: _get_palette_bytes ********************************************************************/ @@ -5918,13 +5831,13 @@ be_local_closure(class_RichPaletteColorProvider__get_palette_bytes, /* name */ be_str_weak(_get_palette_bytes), &be_const_str_solidified, ( &(const binstruction[ 8]) { /* code */ - 0x88040111, // 0000 GETMBR R1 R0 K17 + 0x8804010D, // 0000 GETMBR R1 R0 K13 0x4C080000, // 0001 LDNIL R2 0x20080202, // 0002 NE R2 R1 R2 0x780A0001, // 0003 JMPF R2 #0006 0x5C080200, // 0004 MOVE R2 R1 0x70020000, // 0005 JMP #0007 - 0x88080127, // 0006 GETMBR R2 R0 K39 + 0x88080126, // 0006 GETMBR R2 R0 K38 0x80040400, // 0007 RET 1 R2 }) ) @@ -5948,243 +5861,253 @@ be_local_closure(class_RichPaletteColorProvider_produce_value, /* name */ &be_ktab_class_RichPaletteColorProvider, /* shared constants */ be_str_weak(produce_value), &be_const_str_solidified, - ( &(const binstruction[236]) { /* code */ - 0x8C0C010A, // 0000 GETMET R3 R0 K10 - 0x7C0C0200, // 0001 CALL R3 1 - 0x4C100000, // 0002 LDNIL R4 - 0x1C100604, // 0003 EQ R4 R3 R4 - 0x74120002, // 0004 JMPT R4 #0008 - 0x88100107, // 0005 GETMBR R4 R0 K7 - 0x14100916, // 0006 LT R4 R4 K22 - 0x78120001, // 0007 JMPF R4 #000A - 0x5411FFFE, // 0008 LDINT R4 -1 - 0x80040800, // 0009 RET 1 R4 - 0x88100108, // 000A GETMBR R4 R0 K8 - 0x88140115, // 000B GETMBR R5 R0 K21 - 0x1C18090D, // 000C EQ R6 R4 K13 - 0x781A0039, // 000D JMPF R6 #0048 - 0x8C18070C, // 000E GETMET R6 R3 K12 - 0x5820000D, // 000F LDCONST R8 K13 - 0x54260003, // 0010 LDINT R9 4 - 0x7C180600, // 0011 CALL R6 3 - 0x541E0007, // 0012 LDINT R7 8 - 0x3C1C0C07, // 0013 SHR R7 R6 R7 - 0x542200FE, // 0014 LDINT R8 255 - 0x2C1C0E08, // 0015 AND R7 R7 R8 - 0x5422000F, // 0016 LDINT R8 16 - 0x3C200C08, // 0017 SHR R8 R6 R8 - 0x542600FE, // 0018 LDINT R9 255 - 0x2C201009, // 0019 AND R8 R8 R9 - 0x54260017, // 001A LDINT R9 24 - 0x3C240C09, // 001B SHR R9 R6 R9 - 0x542A00FE, // 001C LDINT R10 255 - 0x2C24120A, // 001D AND R9 R9 R10 - 0x542A00FE, // 001E LDINT R10 255 - 0x20280A0A, // 001F NE R10 R5 R10 - 0x782A001A, // 0020 JMPF R10 #003C - 0xB82A1E00, // 0021 GETNGBL R10 K15 - 0x8C281517, // 0022 GETMET R10 R10 K23 - 0x5C300E00, // 0023 MOVE R12 R7 - 0x5834000D, // 0024 LDCONST R13 K13 - 0x543A00FE, // 0025 LDINT R14 255 - 0x583C000D, // 0026 LDCONST R15 K13 - 0x5C400A00, // 0027 MOVE R16 R5 - 0x7C280C00, // 0028 CALL R10 6 - 0x5C1C1400, // 0029 MOVE R7 R10 - 0xB82A1E00, // 002A GETNGBL R10 K15 - 0x8C281517, // 002B GETMET R10 R10 K23 - 0x5C301000, // 002C MOVE R12 R8 - 0x5834000D, // 002D LDCONST R13 K13 - 0x543A00FE, // 002E LDINT R14 255 - 0x583C000D, // 002F LDCONST R15 K13 - 0x5C400A00, // 0030 MOVE R16 R5 - 0x7C280C00, // 0031 CALL R10 6 - 0x5C201400, // 0032 MOVE R8 R10 - 0xB82A1E00, // 0033 GETNGBL R10 K15 - 0x8C281517, // 0034 GETMET R10 R10 K23 - 0x5C301200, // 0035 MOVE R12 R9 - 0x5834000D, // 0036 LDCONST R13 K13 - 0x543A00FE, // 0037 LDINT R14 255 - 0x583C000D, // 0038 LDCONST R15 K13 - 0x5C400A00, // 0039 MOVE R16 R5 - 0x7C280C00, // 003A CALL R10 6 - 0x5C241400, // 003B MOVE R9 R10 - 0x542A00FE, // 003C LDINT R10 255 - 0x542E0017, // 003D LDINT R11 24 - 0x3828140B, // 003E SHL R10 R10 R11 - 0x542E000F, // 003F LDINT R11 16 - 0x382C0E0B, // 0040 SHL R11 R7 R11 - 0x3028140B, // 0041 OR R10 R10 R11 - 0x542E0007, // 0042 LDINT R11 8 - 0x382C100B, // 0043 SHL R11 R8 R11 - 0x3028140B, // 0044 OR R10 R10 R11 - 0x30281409, // 0045 OR R10 R10 R9 - 0x9002300A, // 0046 SETMBR R0 K24 R10 - 0x80041400, // 0047 RET 1 R10 - 0x8818011B, // 0048 GETMBR R6 R0 K27 - 0x04180406, // 0049 SUB R6 R2 R6 - 0x101C0C04, // 004A MOD R7 R6 R4 - 0x88200107, // 004B GETMBR R8 R0 K7 - 0x04241116, // 004C SUB R9 R8 K22 - 0x2428130D, // 004D GT R10 R9 K13 - 0x782A0006, // 004E JMPF R10 #0056 - 0x88280104, // 004F GETMBR R10 R0 K4 - 0x94281409, // 0050 GETIDX R10 R10 R9 - 0x28280E0A, // 0051 GE R10 R7 R10 - 0x782A0000, // 0052 JMPF R10 #0054 - 0x70020001, // 0053 JMP #0056 - 0x0424130E, // 0054 SUB R9 R9 K14 - 0x7001FFF6, // 0055 JMP #004D - 0x8C28070C, // 0056 GETMET R10 R3 K12 - 0x54320003, // 0057 LDINT R12 4 - 0x0830120C, // 0058 MUL R12 R9 R12 - 0x54360003, // 0059 LDINT R13 4 - 0x7C280600, // 005A CALL R10 3 - 0x8C2C070C, // 005B GETMET R11 R3 K12 - 0x0034130E, // 005C ADD R13 R9 K14 - 0x543A0003, // 005D LDINT R14 4 - 0x08341A0E, // 005E MUL R13 R13 R14 - 0x543A0003, // 005F LDINT R14 4 - 0x7C2C0600, // 0060 CALL R11 3 - 0x88300104, // 0061 GETMBR R12 R0 K4 - 0x94301809, // 0062 GETIDX R12 R12 R9 - 0x0034130E, // 0063 ADD R13 R9 K14 - 0x88380104, // 0064 GETMBR R14 R0 K4 - 0x94341C0D, // 0065 GETIDX R13 R14 R13 - 0xB83A1E00, // 0066 GETNGBL R14 K15 - 0x8C381D17, // 0067 GETMET R14 R14 K23 - 0x5C400E00, // 0068 MOVE R16 R7 - 0x5C441800, // 0069 MOVE R17 R12 - 0x5C481A00, // 006A MOVE R18 R13 - 0x544E0007, // 006B LDINT R19 8 - 0x3C4C1413, // 006C SHR R19 R10 R19 - 0x545200FE, // 006D LDINT R20 255 - 0x2C4C2614, // 006E AND R19 R19 R20 - 0x54520007, // 006F LDINT R20 8 - 0x3C501614, // 0070 SHR R20 R11 R20 - 0x545600FE, // 0071 LDINT R21 255 - 0x2C502815, // 0072 AND R20 R20 R21 - 0x7C380C00, // 0073 CALL R14 6 - 0xB83E1E00, // 0074 GETNGBL R15 K15 - 0x8C3C1F17, // 0075 GETMET R15 R15 K23 - 0x5C440E00, // 0076 MOVE R17 R7 - 0x5C481800, // 0077 MOVE R18 R12 - 0x5C4C1A00, // 0078 MOVE R19 R13 - 0x5452000F, // 0079 LDINT R20 16 - 0x3C501414, // 007A SHR R20 R10 R20 + ( &(const binstruction[246]) { /* code */ + 0x880C010E, // 0000 GETMBR R3 R0 K14 + 0x4C100000, // 0001 LDNIL R4 + 0x1C0C0604, // 0002 EQ R3 R3 R4 + 0x780E0005, // 0003 JMPF R3 #000A + 0x880C010F, // 0004 GETMBR R3 R0 K15 + 0x4C100000, // 0005 LDNIL R4 + 0x1C0C0604, // 0006 EQ R3 R3 R4 + 0x780E0001, // 0007 JMPF R3 #000A + 0x8C0C0110, // 0008 GETMET R3 R0 K16 + 0x7C0C0200, // 0009 CALL R3 1 + 0x8C0C0100, // 000A GETMET R3 R0 K0 + 0x7C0C0200, // 000B CALL R3 1 + 0x4C100000, // 000C LDNIL R4 + 0x1C100604, // 000D EQ R4 R3 R4 + 0x74120002, // 000E JMPT R4 #0012 + 0x88100101, // 000F GETMBR R4 R0 K1 + 0x14100912, // 0010 LT R4 R4 K18 + 0x78120001, // 0011 JMPF R4 #0014 + 0x5411FFFE, // 0012 LDINT R4 -1 + 0x80040800, // 0013 RET 1 R4 + 0x88100109, // 0014 GETMBR R4 R0 K9 + 0x88140111, // 0015 GETMBR R5 R0 K17 + 0x1C180904, // 0016 EQ R6 R4 K4 + 0x781A0039, // 0017 JMPF R6 #0052 + 0x8C180703, // 0018 GETMET R6 R3 K3 + 0x58200004, // 0019 LDCONST R8 K4 + 0x54260003, // 001A LDINT R9 4 + 0x7C180600, // 001B CALL R6 3 + 0x541E0007, // 001C LDINT R7 8 + 0x3C1C0C07, // 001D SHR R7 R6 R7 + 0x542200FE, // 001E LDINT R8 255 + 0x2C1C0E08, // 001F AND R7 R7 R8 + 0x5422000F, // 0020 LDINT R8 16 + 0x3C200C08, // 0021 SHR R8 R6 R8 + 0x542600FE, // 0022 LDINT R9 255 + 0x2C201009, // 0023 AND R8 R8 R9 + 0x54260017, // 0024 LDINT R9 24 + 0x3C240C09, // 0025 SHR R9 R6 R9 + 0x542A00FE, // 0026 LDINT R10 255 + 0x2C24120A, // 0027 AND R9 R9 R10 + 0x542A00FE, // 0028 LDINT R10 255 + 0x20280A0A, // 0029 NE R10 R5 R10 + 0x782A001A, // 002A JMPF R10 #0046 + 0xB82A0C00, // 002B GETNGBL R10 K6 + 0x8C281513, // 002C GETMET R10 R10 K19 + 0x5C300E00, // 002D MOVE R12 R7 + 0x58340004, // 002E LDCONST R13 K4 + 0x543A00FE, // 002F LDINT R14 255 + 0x583C0004, // 0030 LDCONST R15 K4 + 0x5C400A00, // 0031 MOVE R16 R5 + 0x7C280C00, // 0032 CALL R10 6 + 0x5C1C1400, // 0033 MOVE R7 R10 + 0xB82A0C00, // 0034 GETNGBL R10 K6 + 0x8C281513, // 0035 GETMET R10 R10 K19 + 0x5C301000, // 0036 MOVE R12 R8 + 0x58340004, // 0037 LDCONST R13 K4 + 0x543A00FE, // 0038 LDINT R14 255 + 0x583C0004, // 0039 LDCONST R15 K4 + 0x5C400A00, // 003A MOVE R16 R5 + 0x7C280C00, // 003B CALL R10 6 + 0x5C201400, // 003C MOVE R8 R10 + 0xB82A0C00, // 003D GETNGBL R10 K6 + 0x8C281513, // 003E GETMET R10 R10 K19 + 0x5C301200, // 003F MOVE R12 R9 + 0x58340004, // 0040 LDCONST R13 K4 + 0x543A00FE, // 0041 LDINT R14 255 + 0x583C0004, // 0042 LDCONST R15 K4 + 0x5C400A00, // 0043 MOVE R16 R5 + 0x7C280C00, // 0044 CALL R10 6 + 0x5C241400, // 0045 MOVE R9 R10 + 0x542A00FE, // 0046 LDINT R10 255 + 0x542E0017, // 0047 LDINT R11 24 + 0x3828140B, // 0048 SHL R10 R10 R11 + 0x542E000F, // 0049 LDINT R11 16 + 0x382C0E0B, // 004A SHL R11 R7 R11 + 0x3028140B, // 004B OR R10 R10 R11 + 0x542E0007, // 004C LDINT R11 8 + 0x382C100B, // 004D SHL R11 R8 R11 + 0x3028140B, // 004E OR R10 R10 R11 + 0x30281409, // 004F OR R10 R10 R9 + 0x90022E0A, // 0050 SETMBR R0 K23 R10 + 0x80041400, // 0051 RET 1 R10 + 0x8818011A, // 0052 GETMBR R6 R0 K26 + 0x04180406, // 0053 SUB R6 R2 R6 + 0x101C0C04, // 0054 MOD R7 R6 R4 + 0x88200101, // 0055 GETMBR R8 R0 K1 + 0x04241112, // 0056 SUB R9 R8 K18 + 0x24281304, // 0057 GT R10 R9 K4 + 0x782A0006, // 0058 JMPF R10 #0060 + 0x8828010E, // 0059 GETMBR R10 R0 K14 + 0x94281409, // 005A GETIDX R10 R10 R9 + 0x28280E0A, // 005B GE R10 R7 R10 + 0x782A0000, // 005C JMPF R10 #005E + 0x70020001, // 005D JMP #0060 + 0x04241305, // 005E SUB R9 R9 K5 + 0x7001FFF6, // 005F JMP #0057 + 0x8C280703, // 0060 GETMET R10 R3 K3 + 0x54320003, // 0061 LDINT R12 4 + 0x0830120C, // 0062 MUL R12 R9 R12 + 0x54360003, // 0063 LDINT R13 4 + 0x7C280600, // 0064 CALL R10 3 + 0x8C2C0703, // 0065 GETMET R11 R3 K3 + 0x00341305, // 0066 ADD R13 R9 K5 + 0x543A0003, // 0067 LDINT R14 4 + 0x08341A0E, // 0068 MUL R13 R13 R14 + 0x543A0003, // 0069 LDINT R14 4 + 0x7C2C0600, // 006A CALL R11 3 + 0x8830010E, // 006B GETMBR R12 R0 K14 + 0x94301809, // 006C GETIDX R12 R12 R9 + 0x00341305, // 006D ADD R13 R9 K5 + 0x8838010E, // 006E GETMBR R14 R0 K14 + 0x94341C0D, // 006F GETIDX R13 R14 R13 + 0xB83A0C00, // 0070 GETNGBL R14 K6 + 0x8C381D13, // 0071 GETMET R14 R14 K19 + 0x5C400E00, // 0072 MOVE R16 R7 + 0x5C441800, // 0073 MOVE R17 R12 + 0x5C481A00, // 0074 MOVE R18 R13 + 0x544E0007, // 0075 LDINT R19 8 + 0x3C4C1413, // 0076 SHR R19 R10 R19 + 0x545200FE, // 0077 LDINT R20 255 + 0x2C4C2614, // 0078 AND R19 R19 R20 + 0x54520007, // 0079 LDINT R20 8 + 0x3C501614, // 007A SHR R20 R11 R20 0x545600FE, // 007B LDINT R21 255 0x2C502815, // 007C AND R20 R20 R21 - 0x5456000F, // 007D LDINT R21 16 - 0x3C541615, // 007E SHR R21 R11 R21 - 0x545A00FE, // 007F LDINT R22 255 - 0x2C542A16, // 0080 AND R21 R21 R22 - 0x7C3C0C00, // 0081 CALL R15 6 - 0xB8421E00, // 0082 GETNGBL R16 K15 - 0x8C402117, // 0083 GETMET R16 R16 K23 - 0x5C480E00, // 0084 MOVE R18 R7 - 0x5C4C1800, // 0085 MOVE R19 R12 - 0x5C501A00, // 0086 MOVE R20 R13 - 0x54560017, // 0087 LDINT R21 24 - 0x3C541415, // 0088 SHR R21 R10 R21 + 0x7C380C00, // 007D CALL R14 6 + 0xB83E0C00, // 007E GETNGBL R15 K6 + 0x8C3C1F13, // 007F GETMET R15 R15 K19 + 0x5C440E00, // 0080 MOVE R17 R7 + 0x5C481800, // 0081 MOVE R18 R12 + 0x5C4C1A00, // 0082 MOVE R19 R13 + 0x5452000F, // 0083 LDINT R20 16 + 0x3C501414, // 0084 SHR R20 R10 R20 + 0x545600FE, // 0085 LDINT R21 255 + 0x2C502815, // 0086 AND R20 R20 R21 + 0x5456000F, // 0087 LDINT R21 16 + 0x3C541615, // 0088 SHR R21 R11 R21 0x545A00FE, // 0089 LDINT R22 255 0x2C542A16, // 008A AND R21 R21 R22 - 0x545A0017, // 008B LDINT R22 24 - 0x3C581616, // 008C SHR R22 R11 R22 - 0x545E00FE, // 008D LDINT R23 255 - 0x2C582C17, // 008E AND R22 R22 R23 - 0x7C400C00, // 008F CALL R16 6 - 0x8844011F, // 0090 GETMBR R17 R0 K31 - 0x8C482328, // 0091 GETMET R18 R17 K40 - 0x54520007, // 0092 LDINT R20 8 - 0x3C501414, // 0093 SHR R20 R10 R20 - 0x545600FE, // 0094 LDINT R21 255 - 0x2C502815, // 0095 AND R20 R20 R21 - 0x5456000F, // 0096 LDINT R21 16 - 0x3C541415, // 0097 SHR R21 R10 R21 - 0x545A00FE, // 0098 LDINT R22 255 - 0x2C542A16, // 0099 AND R21 R21 R22 - 0x545A0017, // 009A LDINT R22 24 - 0x3C581416, // 009B SHR R22 R10 R22 - 0x545E00FE, // 009C LDINT R23 255 - 0x2C582C17, // 009D AND R22 R22 R23 - 0x7C480800, // 009E CALL R18 4 - 0x88482329, // 009F GETMBR R18 R17 K41 - 0x8C4C2328, // 00A0 GETMET R19 R17 K40 - 0x54560007, // 00A1 LDINT R21 8 - 0x3C541615, // 00A2 SHR R21 R11 R21 - 0x545A00FE, // 00A3 LDINT R22 255 - 0x2C542A16, // 00A4 AND R21 R21 R22 - 0x545A000F, // 00A5 LDINT R22 16 - 0x3C581616, // 00A6 SHR R22 R11 R22 - 0x545E00FE, // 00A7 LDINT R23 255 - 0x2C582C17, // 00A8 AND R22 R22 R23 - 0x545E0017, // 00A9 LDINT R23 24 - 0x3C5C1617, // 00AA SHR R23 R11 R23 - 0x546200FE, // 00AB LDINT R24 255 - 0x2C5C2E18, // 00AC AND R23 R23 R24 - 0x7C4C0800, // 00AD CALL R19 4 - 0x884C2329, // 00AE GETMBR R19 R17 K41 - 0xB8521E00, // 00AF GETNGBL R20 K15 - 0x8C502917, // 00B0 GETMET R20 R20 K23 - 0x5C580E00, // 00B1 MOVE R22 R7 - 0x5C5C1800, // 00B2 MOVE R23 R12 - 0x5C601A00, // 00B3 MOVE R24 R13 - 0x5C642400, // 00B4 MOVE R25 R18 - 0x5C682600, // 00B5 MOVE R26 R19 - 0x7C500C00, // 00B6 CALL R20 6 - 0x8C542328, // 00B7 GETMET R21 R17 K40 - 0x5C5C1C00, // 00B8 MOVE R23 R14 - 0x5C601E00, // 00B9 MOVE R24 R15 - 0x5C642000, // 00BA MOVE R25 R16 - 0x7C540800, // 00BB CALL R21 4 - 0x8C54232A, // 00BC GETMET R21 R17 K42 - 0x5C5C2800, // 00BD MOVE R23 R20 - 0x7C540400, // 00BE CALL R21 2 - 0x8838232B, // 00BF GETMBR R14 R17 K43 - 0x883C232C, // 00C0 GETMBR R15 R17 K44 - 0x8840232D, // 00C1 GETMBR R16 R17 K45 - 0x545600FE, // 00C2 LDINT R21 255 - 0x20540A15, // 00C3 NE R21 R5 R21 - 0x7856001A, // 00C4 JMPF R21 #00E0 - 0xB8561E00, // 00C5 GETNGBL R21 K15 - 0x8C542B17, // 00C6 GETMET R21 R21 K23 - 0x5C5C1C00, // 00C7 MOVE R23 R14 - 0x5860000D, // 00C8 LDCONST R24 K13 - 0x546600FE, // 00C9 LDINT R25 255 - 0x5868000D, // 00CA LDCONST R26 K13 - 0x5C6C0A00, // 00CB MOVE R27 R5 - 0x7C540C00, // 00CC CALL R21 6 - 0x5C382A00, // 00CD MOVE R14 R21 - 0xB8561E00, // 00CE GETNGBL R21 K15 - 0x8C542B17, // 00CF GETMET R21 R21 K23 - 0x5C5C1E00, // 00D0 MOVE R23 R15 - 0x5860000D, // 00D1 LDCONST R24 K13 - 0x546600FE, // 00D2 LDINT R25 255 - 0x5868000D, // 00D3 LDCONST R26 K13 - 0x5C6C0A00, // 00D4 MOVE R27 R5 - 0x7C540C00, // 00D5 CALL R21 6 - 0x5C3C2A00, // 00D6 MOVE R15 R21 - 0xB8561E00, // 00D7 GETNGBL R21 K15 - 0x8C542B17, // 00D8 GETMET R21 R21 K23 - 0x5C5C2000, // 00D9 MOVE R23 R16 - 0x5860000D, // 00DA LDCONST R24 K13 - 0x546600FE, // 00DB LDINT R25 255 - 0x5868000D, // 00DC LDCONST R26 K13 - 0x5C6C0A00, // 00DD MOVE R27 R5 - 0x7C540C00, // 00DE CALL R21 6 - 0x5C402A00, // 00DF MOVE R16 R21 - 0x545600FE, // 00E0 LDINT R21 255 - 0x545A0017, // 00E1 LDINT R22 24 - 0x38542A16, // 00E2 SHL R21 R21 R22 - 0x545A000F, // 00E3 LDINT R22 16 - 0x38581C16, // 00E4 SHL R22 R14 R22 - 0x30542A16, // 00E5 OR R21 R21 R22 - 0x545A0007, // 00E6 LDINT R22 8 - 0x38581E16, // 00E7 SHL R22 R15 R22 - 0x30542A16, // 00E8 OR R21 R21 R22 - 0x30542A10, // 00E9 OR R21 R21 R16 - 0x90023015, // 00EA SETMBR R0 K24 R21 - 0x80042A00, // 00EB RET 1 R21 + 0x7C3C0C00, // 008B CALL R15 6 + 0xB8420C00, // 008C GETNGBL R16 K6 + 0x8C402113, // 008D GETMET R16 R16 K19 + 0x5C480E00, // 008E MOVE R18 R7 + 0x5C4C1800, // 008F MOVE R19 R12 + 0x5C501A00, // 0090 MOVE R20 R13 + 0x54560017, // 0091 LDINT R21 24 + 0x3C541415, // 0092 SHR R21 R10 R21 + 0x545A00FE, // 0093 LDINT R22 255 + 0x2C542A16, // 0094 AND R21 R21 R22 + 0x545A0017, // 0095 LDINT R22 24 + 0x3C581616, // 0096 SHR R22 R11 R22 + 0x545E00FE, // 0097 LDINT R23 255 + 0x2C582C17, // 0098 AND R22 R22 R23 + 0x7C400C00, // 0099 CALL R16 6 + 0x8844011E, // 009A GETMBR R17 R0 K30 + 0x8C482327, // 009B GETMET R18 R17 K39 + 0x54520007, // 009C LDINT R20 8 + 0x3C501414, // 009D SHR R20 R10 R20 + 0x545600FE, // 009E LDINT R21 255 + 0x2C502815, // 009F AND R20 R20 R21 + 0x5456000F, // 00A0 LDINT R21 16 + 0x3C541415, // 00A1 SHR R21 R10 R21 + 0x545A00FE, // 00A2 LDINT R22 255 + 0x2C542A16, // 00A3 AND R21 R21 R22 + 0x545A0017, // 00A4 LDINT R22 24 + 0x3C581416, // 00A5 SHR R22 R10 R22 + 0x545E00FE, // 00A6 LDINT R23 255 + 0x2C582C17, // 00A7 AND R22 R22 R23 + 0x7C480800, // 00A8 CALL R18 4 + 0x88482328, // 00A9 GETMBR R18 R17 K40 + 0x8C4C2327, // 00AA GETMET R19 R17 K39 + 0x54560007, // 00AB LDINT R21 8 + 0x3C541615, // 00AC SHR R21 R11 R21 + 0x545A00FE, // 00AD LDINT R22 255 + 0x2C542A16, // 00AE AND R21 R21 R22 + 0x545A000F, // 00AF LDINT R22 16 + 0x3C581616, // 00B0 SHR R22 R11 R22 + 0x545E00FE, // 00B1 LDINT R23 255 + 0x2C582C17, // 00B2 AND R22 R22 R23 + 0x545E0017, // 00B3 LDINT R23 24 + 0x3C5C1617, // 00B4 SHR R23 R11 R23 + 0x546200FE, // 00B5 LDINT R24 255 + 0x2C5C2E18, // 00B6 AND R23 R23 R24 + 0x7C4C0800, // 00B7 CALL R19 4 + 0x884C2328, // 00B8 GETMBR R19 R17 K40 + 0xB8520C00, // 00B9 GETNGBL R20 K6 + 0x8C502913, // 00BA GETMET R20 R20 K19 + 0x5C580E00, // 00BB MOVE R22 R7 + 0x5C5C1800, // 00BC MOVE R23 R12 + 0x5C601A00, // 00BD MOVE R24 R13 + 0x5C642400, // 00BE MOVE R25 R18 + 0x5C682600, // 00BF MOVE R26 R19 + 0x7C500C00, // 00C0 CALL R20 6 + 0x8C542327, // 00C1 GETMET R21 R17 K39 + 0x5C5C1C00, // 00C2 MOVE R23 R14 + 0x5C601E00, // 00C3 MOVE R24 R15 + 0x5C642000, // 00C4 MOVE R25 R16 + 0x7C540800, // 00C5 CALL R21 4 + 0x8C542329, // 00C6 GETMET R21 R17 K41 + 0x5C5C2800, // 00C7 MOVE R23 R20 + 0x7C540400, // 00C8 CALL R21 2 + 0x8838232A, // 00C9 GETMBR R14 R17 K42 + 0x883C232B, // 00CA GETMBR R15 R17 K43 + 0x8840232C, // 00CB GETMBR R16 R17 K44 + 0x545600FE, // 00CC LDINT R21 255 + 0x20540A15, // 00CD NE R21 R5 R21 + 0x7856001A, // 00CE JMPF R21 #00EA + 0xB8560C00, // 00CF GETNGBL R21 K6 + 0x8C542B13, // 00D0 GETMET R21 R21 K19 + 0x5C5C1C00, // 00D1 MOVE R23 R14 + 0x58600004, // 00D2 LDCONST R24 K4 + 0x546600FE, // 00D3 LDINT R25 255 + 0x58680004, // 00D4 LDCONST R26 K4 + 0x5C6C0A00, // 00D5 MOVE R27 R5 + 0x7C540C00, // 00D6 CALL R21 6 + 0x5C382A00, // 00D7 MOVE R14 R21 + 0xB8560C00, // 00D8 GETNGBL R21 K6 + 0x8C542B13, // 00D9 GETMET R21 R21 K19 + 0x5C5C1E00, // 00DA MOVE R23 R15 + 0x58600004, // 00DB LDCONST R24 K4 + 0x546600FE, // 00DC LDINT R25 255 + 0x58680004, // 00DD LDCONST R26 K4 + 0x5C6C0A00, // 00DE MOVE R27 R5 + 0x7C540C00, // 00DF CALL R21 6 + 0x5C3C2A00, // 00E0 MOVE R15 R21 + 0xB8560C00, // 00E1 GETNGBL R21 K6 + 0x8C542B13, // 00E2 GETMET R21 R21 K19 + 0x5C5C2000, // 00E3 MOVE R23 R16 + 0x58600004, // 00E4 LDCONST R24 K4 + 0x546600FE, // 00E5 LDINT R25 255 + 0x58680004, // 00E6 LDCONST R26 K4 + 0x5C6C0A00, // 00E7 MOVE R27 R5 + 0x7C540C00, // 00E8 CALL R21 6 + 0x5C402A00, // 00E9 MOVE R16 R21 + 0x545600FE, // 00EA LDINT R21 255 + 0x545A0017, // 00EB LDINT R22 24 + 0x38542A16, // 00EC SHL R21 R21 R22 + 0x545A000F, // 00ED LDINT R22 16 + 0x38581C16, // 00EE SHL R22 R14 R22 + 0x30542A16, // 00EF OR R21 R21 R22 + 0x545A0007, // 00F0 LDINT R22 8 + 0x38581E16, // 00F1 SHL R22 R15 R22 + 0x30542A16, // 00F2 OR R21 R21 R22 + 0x30542A10, // 00F3 OR R21 R21 R16 + 0x90022E15, // 00F4 SETMBR R0 K23 R21 + 0x80042A00, // 00F5 RET 1 R21 }) ) ); @@ -6196,14 +6119,14 @@ be_local_closure(class_RichPaletteColorProvider_produce_value, /* name */ ********************************************************************/ extern const bclass be_class_ColorProvider; be_local_class(RichPaletteColorProvider, - 5, + 6, &be_class_ColorProvider, be_nested_map(19, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(light_state, -1), be_const_var(3) }, - { be_const_key_weak(_parse_palette, -1), be_const_closure(class_RichPaletteColorProvider__parse_palette_closure) }, + { be_const_key_weak(light_state, -1), be_const_var(4) }, + { be_const_key_weak(value_arr, 5), be_const_var(1) }, { be_const_key_weak(tostring, -1), be_const_closure(class_RichPaletteColorProvider_tostring_closure) }, - { be_const_key_weak(PARAMS, 15), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + { be_const_key_weak(PARAMS, 9), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(range_min, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { @@ -6244,22 +6167,22 @@ be_local_class(RichPaletteColorProvider, { be_const_key_weak(range_max, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(1, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(100) }, + { be_const_key_weak(default, -1), be_const_int(255) }, })) ) } )) }, })) ) } )) }, - { be_const_key_weak(slots_arr, 1), be_const_var(0) }, - { be_const_key_weak(_get_palette_bytes, -1), be_const_closure(class_RichPaletteColorProvider__get_palette_bytes_closure) }, - { be_const_key_weak(get_color_for_value, 9), be_const_closure(class_RichPaletteColorProvider_get_color_for_value_closure) }, + { be_const_key_weak(_parse_palette, 1), be_const_closure(class_RichPaletteColorProvider__parse_palette_closure) }, + { be_const_key_weak(slots_arr, -1), be_const_var(0) }, + { be_const_key_weak(get_color_for_value, 15), be_const_closure(class_RichPaletteColorProvider_get_color_for_value_closure) }, { be_const_key_weak(_DEFAULT_PALETTE, -1), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, { be_const_key_weak(_recompute_palette, -1), be_const_closure(class_RichPaletteColorProvider__recompute_palette_closure) }, - { be_const_key_weak(current_color, -1), be_const_var(2) }, + { be_const_key_weak(start, -1), be_const_closure(class_RichPaletteColorProvider_start_closure) }, { be_const_key_weak(_get_color_at_index, -1), be_const_closure(class_RichPaletteColorProvider__get_color_at_index_closure) }, { be_const_key_weak(to_css_gradient, -1), be_const_closure(class_RichPaletteColorProvider_to_css_gradient_closure) }, - { be_const_key_weak(slots, -1), be_const_var(1) }, + { be_const_key_weak(slots, -1), be_const_var(2) }, { be_const_key_weak(init, 12), be_const_closure(class_RichPaletteColorProvider_init_closure) }, - { be_const_key_weak(cycle_start, 10), be_const_var(4) }, - { be_const_key_weak(start, -1), be_const_closure(class_RichPaletteColorProvider_start_closure) }, - { be_const_key_weak(set_range, 5), be_const_closure(class_RichPaletteColorProvider_set_range_closure) }, + { be_const_key_weak(cycle_start, 10), be_const_var(5) }, + { be_const_key_weak(current_color, -1), be_const_var(3) }, + { be_const_key_weak(_get_palette_bytes, -1), be_const_closure(class_RichPaletteColorProvider__get_palette_bytes_closure) }, { be_const_key_weak(produce_value, -1), be_const_closure(class_RichPaletteColorProvider_produce_value_closure) }, { be_const_key_weak(on_param_changed, 0), be_const_closure(class_RichPaletteColorProvider_on_param_changed_closure) }, })), @@ -6308,7 +6231,7 @@ be_local_closure(scale_oscillate, /* name */ ********************************************************************/ be_local_closure(wave_rainbow_sine, /* name */ be_nested_proto( - 7, /* nstack */ + 5, /* nstack */ 1, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -6316,7 +6239,7 @@ be_local_closure(wave_rainbow_sine, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ + ( &(const bvalue[16]) { /* constants */ /* K0 */ be_nested_str_weak(animation), /* K1 */ be_nested_str_weak(wave_animation), /* K2 */ be_nested_str_weak(rich_palette), @@ -6326,16 +6249,17 @@ be_local_closure(wave_rainbow_sine, /* name */ /* K6 */ be_nested_str_weak(transition_type), /* K7 */ be_const_int(1), /* K8 */ be_nested_str_weak(brightness), - /* K9 */ be_nested_str_weak(set_range), + /* K9 */ be_nested_str_weak(range_min), /* K10 */ be_const_int(0), - /* K11 */ be_nested_str_weak(color), - /* K12 */ be_nested_str_weak(wave_type), - /* K13 */ be_nested_str_weak(frequency), - /* K14 */ be_nested_str_weak(wave_speed), + /* K11 */ be_nested_str_weak(range_max), + /* K12 */ be_nested_str_weak(color), + /* K13 */ be_nested_str_weak(wave_type), + /* K14 */ be_nested_str_weak(frequency), + /* K15 */ be_nested_str_weak(wave_speed), }), be_str_weak(wave_rainbow_sine), &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ + ( &(const binstruction[26]) { /* code */ 0xB8060000, // 0000 GETNGBL R1 K0 0x8C040301, // 0001 GETMET R1 R1 K1 0x5C0C0000, // 0002 MOVE R3 R0 @@ -6352,17 +6276,16 @@ be_local_closure(wave_rainbow_sine, /* name */ 0x900A0D07, // 000D SETMBR R2 K6 K7 0x540E00FE, // 000E LDINT R3 255 0x900A1003, // 000F SETMBR R2 K8 R3 - 0x8C0C0509, // 0010 GETMET R3 R2 K9 - 0x5814000A, // 0011 LDCONST R5 K10 - 0x541A00FE, // 0012 LDINT R6 255 - 0x7C0C0600, // 0013 CALL R3 3 - 0x90061602, // 0014 SETMBR R1 K11 R2 - 0x9006190A, // 0015 SETMBR R1 K12 K10 - 0x540E001F, // 0016 LDINT R3 32 - 0x90061A03, // 0017 SETMBR R1 K13 R3 - 0x540E0031, // 0018 LDINT R3 50 - 0x90061C03, // 0019 SETMBR R1 K14 R3 - 0x80040200, // 001A RET 1 R1 + 0x900A130A, // 0010 SETMBR R2 K9 K10 + 0x540E00FE, // 0011 LDINT R3 255 + 0x900A1603, // 0012 SETMBR R2 K11 R3 + 0x90061802, // 0013 SETMBR R1 K12 R2 + 0x90061B0A, // 0014 SETMBR R1 K13 K10 + 0x540E001F, // 0015 LDINT R3 32 + 0x90061C03, // 0016 SETMBR R1 K14 R3 + 0x540E0031, // 0017 LDINT R3 50 + 0x90061E03, // 0018 SETMBR R1 K15 R3 + 0x80040200, // 0019 RET 1 R1 }) ) ); @@ -7190,55 +7113,44 @@ be_local_class(ScaleAnimation, ); /******************************************************************** -** Solidified function: animation_global +** Solidified function: bounce_basic ********************************************************************/ -be_local_closure(animation_global, /* name */ +be_local_closure(bounce_basic, /* name */ be_nested_proto( - 9, /* nstack */ - 2, /* argc */ + 4, /* nstack */ + 1, /* argc */ 0, /* 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(global), - /* K1 */ be_nested_str_weak(introspect), - /* K2 */ be_nested_str_weak(animation), - /* K3 */ be_nested_str_weak(contains), - /* K4 */ be_nested_str_weak(_X27_X25s_X27_X20undeclared), - /* K5 */ be_nested_str_weak(syntax_error), + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(bounce_animation), + /* K2 */ be_nested_str_weak(bounce_speed), + /* K3 */ be_nested_str_weak(bounce_range), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(damping), + /* K6 */ be_nested_str_weak(gravity), + /* K7 */ be_nested_str_weak(name), + /* K8 */ be_nested_str_weak(bounce_basic), }), - be_str_weak(animation_global), + be_str_weak(bounce_basic), &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0xA4120400, // 0002 IMPORT R4 K2 - 0x4C140000, // 0003 LDNIL R5 - 0x20140205, // 0004 NE R5 R1 R5 - 0x78160006, // 0005 JMPF R5 #000D - 0x8C140703, // 0006 GETMET R5 R3 K3 - 0x5C1C0800, // 0007 MOVE R7 R4 - 0x5C200200, // 0008 MOVE R8 R1 - 0x7C140600, // 0009 CALL R5 3 - 0x78160001, // 000A JMPF R5 #000D - 0x88140801, // 000B GETMBR R5 R4 R1 - 0x80040A00, // 000C RET 1 R5 - 0x8C140503, // 000D GETMET R5 R2 K3 - 0x5C1C0000, // 000E MOVE R7 R0 - 0x7C140400, // 000F CALL R5 2 - 0x78160002, // 0010 JMPF R5 #0014 - 0x88140400, // 0011 GETMBR R5 R2 R0 - 0x80040A00, // 0012 RET 1 R5 - 0x70020004, // 0013 JMP #0019 - 0x60140018, // 0014 GETGBL R5 G24 - 0x58180004, // 0015 LDCONST R6 K4 - 0x5C1C0000, // 0016 MOVE R7 R0 - 0x7C140400, // 0017 CALL R5 2 - 0xB0060A05, // 0018 RAISE 1 K5 R5 - 0x80000000, // 0019 RET 0 + ( &(const binstruction[12]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x540A007F, // 0004 LDINT R2 128 + 0x90060402, // 0005 SETMBR R1 K2 R2 + 0x90060704, // 0006 SETMBR R1 K3 K4 + 0x540A00F9, // 0007 LDINT R2 250 + 0x90060A02, // 0008 SETMBR R1 K5 R2 + 0x90060D04, // 0009 SETMBR R1 K6 K4 + 0x90060F08, // 000A SETMBR R1 K7 K8 + 0x80040200, // 000B RET 1 R1 }) ) ); @@ -7366,7 +7278,7 @@ be_local_closure(class_PaletteWaveAnimation_init, /* name */ ********************************************************************/ be_local_closure(class_PaletteWaveAnimation__update_value_buffer, /* name */ be_nested_proto( - 19, /* nstack */ + 18, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -7435,16 +7347,16 @@ be_local_closure(class_PaletteWaveAnimation__update_value_buffer, /* name */ 0x8C28150A, // 0028 GETMET R10 R10 K10 0x5C301200, // 0029 MOVE R12 R9 0x7C280400, // 002A CALL R10 2 - 0x882C0104, // 002B GETMBR R11 R0 K4 - 0xB8320C00, // 002C GETNGBL R12 K6 - 0x8C30190B, // 002D GETMET R12 R12 K11 - 0x5C381400, // 002E MOVE R14 R10 - 0x543DEFFF, // 002F LDINT R15 -4096 - 0x54420FFF, // 0030 LDINT R16 4096 - 0x58440008, // 0031 LDCONST R17 K8 - 0x544A0063, // 0032 LDINT R18 100 - 0x7C300C00, // 0033 CALL R12 6 - 0x982C0E0C, // 0034 SETIDX R11 R7 R12 + 0xB82E0C00, // 002B GETNGBL R11 K6 + 0x8C2C170B, // 002C GETMET R11 R11 K11 + 0x5C341400, // 002D MOVE R13 R10 + 0x5439EFFF, // 002E LDINT R14 -4096 + 0x543E0FFF, // 002F LDINT R15 4096 + 0x58400008, // 0030 LDCONST R16 K8 + 0x544600FE, // 0031 LDINT R17 255 + 0x7C2C0C00, // 0032 CALL R11 6 + 0x88300104, // 0033 GETMBR R12 R0 K4 + 0x98300E0B, // 0034 SETIDX R12 R7 R11 0x001C0F0C, // 0035 ADD R7 R7 K12 0x7001FFE3, // 0036 JMP #001B 0x80000000, // 0037 RET 0 @@ -9026,13 +8938,13 @@ static const bvalue be_ktab_class_PalettePatternAnimation[21] = { /* K3 */ be_nested_str_weak(is_running), /* K4 */ be_nested_str_weak(engine), /* K5 */ be_nested_str_weak(time_ms), - /* K6 */ be_nested_str_weak(start_time), - /* K7 */ be_nested_str_weak(get_strip_length), - /* K8 */ be_const_int(0), - /* K9 */ be_nested_str_weak(width), - /* K10 */ be_nested_str_weak(value_buffer), - /* K11 */ be_nested_str_weak(get_color_for_value), - /* K12 */ be_nested_str_weak(current_color), + /* K6 */ be_nested_str_weak(get_param), + /* K7 */ be_nested_str_weak(get_color_for_value), + /* K8 */ be_nested_str_weak(start_time), + /* K9 */ be_nested_str_weak(get_strip_length), + /* K10 */ be_const_int(0), + /* K11 */ be_nested_str_weak(width), + /* K12 */ be_nested_str_weak(value_buffer), /* K13 */ be_nested_str_weak(set_pixel_color), /* K14 */ be_const_int(1), /* K15 */ be_nested_str_weak(resize), @@ -9105,43 +9017,43 @@ be_local_closure(class_PalettePatternAnimation_render, /* name */ 0x780E0001, // 0009 JMPF R3 #000C 0x880C0104, // 000A GETMBR R3 R0 K4 0x88080705, // 000B GETMBR R2 R3 K5 - 0x880C0101, // 000C GETMBR R3 R0 K1 - 0x4C100000, // 000D LDNIL R4 - 0x1C100604, // 000E EQ R4 R3 R4 - 0x78120001, // 000F JMPF R4 #0012 - 0x50100000, // 0010 LDBOOL R4 0 0 - 0x80040800, // 0011 RET 1 R4 - 0x88100106, // 0012 GETMBR R4 R0 K6 - 0x04100404, // 0013 SUB R4 R2 R4 - 0x88140104, // 0014 GETMBR R5 R0 K4 - 0x8C140B07, // 0015 GETMET R5 R5 K7 - 0x7C140200, // 0016 CALL R5 1 - 0x58180008, // 0017 LDCONST R6 K8 - 0x141C0C05, // 0018 LT R7 R6 R5 - 0x781E0016, // 0019 JMPF R7 #0031 - 0x881C0309, // 001A GETMBR R7 R1 K9 - 0x141C0C07, // 001B LT R7 R6 R7 - 0x781E0013, // 001C JMPF R7 #0031 - 0x881C010A, // 001D GETMBR R7 R0 K10 - 0x941C0E06, // 001E GETIDX R7 R7 R6 - 0x4C200000, // 001F LDNIL R8 - 0x8824070B, // 0020 GETMBR R9 R3 K11 - 0x4C280000, // 0021 LDNIL R10 - 0x2024120A, // 0022 NE R9 R9 R10 - 0x78260005, // 0023 JMPF R9 #002A - 0x8C24070B, // 0024 GETMET R9 R3 K11 - 0x5C2C0E00, // 0025 MOVE R11 R7 - 0x5C300800, // 0026 MOVE R12 R4 - 0x7C240600, // 0027 CALL R9 3 - 0x5C201200, // 0028 MOVE R8 R9 - 0x70020000, // 0029 JMP #002B - 0x8820070C, // 002A GETMBR R8 R3 K12 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x58140001, // 000D LDCONST R5 K1 + 0x7C0C0400, // 000E CALL R3 2 + 0x4C100000, // 000F LDNIL R4 + 0x1C100604, // 0010 EQ R4 R3 R4 + 0x78120001, // 0011 JMPF R4 #0014 + 0x50100000, // 0012 LDBOOL R4 0 0 + 0x80040800, // 0013 RET 1 R4 + 0x88100707, // 0014 GETMBR R4 R3 K7 + 0x4C140000, // 0015 LDNIL R5 + 0x1C100805, // 0016 EQ R4 R4 R5 + 0x78120001, // 0017 JMPF R4 #001A + 0x50100000, // 0018 LDBOOL R4 0 0 + 0x80040800, // 0019 RET 1 R4 + 0x88100108, // 001A GETMBR R4 R0 K8 + 0x04100404, // 001B SUB R4 R2 R4 + 0x88140104, // 001C GETMBR R5 R0 K4 + 0x8C140B09, // 001D GETMET R5 R5 K9 + 0x7C140200, // 001E CALL R5 1 + 0x5818000A, // 001F LDCONST R6 K10 + 0x141C0C05, // 0020 LT R7 R6 R5 + 0x781E000E, // 0021 JMPF R7 #0031 + 0x881C030B, // 0022 GETMBR R7 R1 K11 + 0x141C0C07, // 0023 LT R7 R6 R7 + 0x781E000B, // 0024 JMPF R7 #0031 + 0x881C010C, // 0025 GETMBR R7 R0 K12 + 0x941C0E06, // 0026 GETIDX R7 R7 R6 + 0x8C200707, // 0027 GETMET R8 R3 K7 + 0x5C280E00, // 0028 MOVE R10 R7 + 0x5C2C0800, // 0029 MOVE R11 R4 + 0x7C200600, // 002A CALL R8 3 0x8C24030D, // 002B GETMET R9 R1 K13 0x5C2C0C00, // 002C MOVE R11 R6 0x5C301000, // 002D MOVE R12 R8 0x7C240600, // 002E CALL R9 3 0x00180D0E, // 002F ADD R6 R6 K14 - 0x7001FFE6, // 0030 JMP #0018 + 0x7001FFEE, // 0030 JMP #0020 0x501C0200, // 0031 LDBOOL R7 1 0 0x80040E00, // 0032 RET 1 R7 }) @@ -9155,7 +9067,7 @@ be_local_closure(class_PalettePatternAnimation_render, /* name */ ********************************************************************/ be_local_closure(class_PalettePatternAnimation__update_value_buffer, /* name */ be_nested_proto( - 10, /* nstack */ + 9, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -9166,37 +9078,47 @@ be_local_closure(class_PalettePatternAnimation__update_value_buffer, /* name * &be_ktab_class_PalettePatternAnimation, /* shared constants */ be_str_weak(_update_value_buffer), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ + ( &(const binstruction[40]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x4C0C0000, // 0001 LDNIL R3 0x1C0C0403, // 0002 EQ R3 R2 R3 0x780E0000, // 0003 JMPF R3 #0005 0x80000600, // 0004 RET 0 0x880C0104, // 0005 GETMBR R3 R0 K4 - 0x8C0C0707, // 0006 GETMET R3 R3 K7 + 0x8C0C0709, // 0006 GETMET R3 R3 K9 0x7C0C0200, // 0007 CALL R3 1 0x6010000C, // 0008 GETGBL R4 G12 - 0x8814010A, // 0009 GETMBR R5 R0 K10 + 0x8814010C, // 0009 GETMBR R5 R0 K12 0x7C100200, // 000A CALL R4 1 0x20100803, // 000B NE R4 R4 R3 0x78120003, // 000C JMPF R4 #0011 - 0x8810010A, // 000D GETMBR R4 R0 K10 + 0x8810010C, // 000D GETMBR R4 R0 K12 0x8C10090F, // 000E GETMET R4 R4 K15 0x5C180600, // 000F MOVE R6 R3 0x7C100400, // 0010 CALL R4 2 - 0x58100008, // 0011 LDCONST R4 K8 + 0x5810000A, // 0011 LDCONST R4 K10 0x14140803, // 0012 LT R5 R4 R3 - 0x78160008, // 0013 JMPF R5 #001D - 0x8814010A, // 0014 GETMBR R5 R0 K10 - 0x5C180400, // 0015 MOVE R6 R2 - 0x5C1C0800, // 0016 MOVE R7 R4 - 0x5C200200, // 0017 MOVE R8 R1 - 0x5C240000, // 0018 MOVE R9 R0 - 0x7C180600, // 0019 CALL R6 3 - 0x98140806, // 001A SETIDX R5 R4 R6 - 0x0010090E, // 001B ADD R4 R4 K14 - 0x7001FFF4, // 001C JMP #0012 - 0x80000000, // 001D RET 0 + 0x78160012, // 0013 JMPF R5 #0027 + 0x5C140400, // 0014 MOVE R5 R2 + 0x5C180800, // 0015 MOVE R6 R4 + 0x5C1C0200, // 0016 MOVE R7 R1 + 0x5C200000, // 0017 MOVE R8 R0 + 0x7C140600, // 0018 CALL R5 3 + 0x60180009, // 0019 GETGBL R6 G9 + 0x5C1C0A00, // 001A MOVE R7 R5 + 0x7C180200, // 001B CALL R6 1 + 0x141C0D0A, // 001C LT R7 R6 K10 + 0x781E0000, // 001D JMPF R7 #001F + 0x5818000A, // 001E LDCONST R6 K10 + 0x541E00FE, // 001F LDINT R7 255 + 0x241C0C07, // 0020 GT R7 R6 R7 + 0x781E0000, // 0021 JMPF R7 #0023 + 0x541A00FE, // 0022 LDINT R6 255 + 0x881C010C, // 0023 GETMBR R7 R0 K12 + 0x981C0806, // 0024 SETIDX R7 R4 R6 + 0x0010090E, // 0025 ADD R4 R4 K14 + 0x7001FFEA, // 0026 JMP #0012 + 0x80000000, // 0027 RET 0 }) ) ); @@ -9221,17 +9143,17 @@ be_local_closure(class_PalettePatternAnimation__initialize_value_buffer, /* na &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C040307, // 0001 GETMET R1 R1 K7 + 0x8C040309, // 0001 GETMET R1 R1 K9 0x7C040200, // 0002 CALL R1 1 - 0x8808010A, // 0003 GETMBR R2 R0 K10 + 0x8808010C, // 0003 GETMBR R2 R0 K12 0x8C08050F, // 0004 GETMET R2 R2 K15 0x5C100200, // 0005 MOVE R4 R1 0x7C080400, // 0006 CALL R2 2 - 0x58080008, // 0007 LDCONST R2 K8 + 0x5808000A, // 0007 LDCONST R2 K10 0x140C0401, // 0008 LT R3 R2 R1 0x780E0003, // 0009 JMPF R3 #000E - 0x880C010A, // 000A GETMBR R3 R0 K10 - 0x980C0508, // 000B SETIDX R3 R2 K8 + 0x880C010C, // 000A GETMBR R3 R0 K12 + 0x980C050A, // 000B SETIDX R3 R2 K10 0x0008050E, // 000C ADD R2 R2 K14 0x7001FFF9, // 000D JMP #0008 0x80000000, // 000E RET 0 @@ -9264,9 +9186,9 @@ be_local_closure(class_PalettePatternAnimation_init, /* name */ 0x8C080510, // 0003 GETMET R2 R2 K16 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 + 0x60080015, // 0006 GETGBL R2 G21 0x7C080000, // 0007 CALL R2 0 - 0x90021402, // 0008 SETMBR R0 K10 R2 + 0x90021802, // 0008 SETMBR R0 K12 R2 0x8C080102, // 0009 GETMET R2 R0 K2 0x7C080200, // 000A CALL R2 1 0x80000000, // 000B RET 0 @@ -9294,7 +9216,7 @@ be_local_closure(class_PalettePatternAnimation_tostring, /* name */ &be_const_str_solidified, ( &(const binstruction[10]) { /* code */ 0x88040104, // 0000 GETMBR R1 R0 K4 - 0x8C040307, // 0001 GETMET R1 R1 K7 + 0x8C040309, // 0001 GETMET R1 R1 K9 0x7C040200, // 0002 CALL R1 1 0x60080018, // 0003 GETGBL R2 G24 0x580C0011, // 0004 LDCONST R3 K17 @@ -9335,7 +9257,7 @@ be_local_closure(class_PalettePatternAnimation_update, /* name */ 0x740A0001, // 0006 JMPT R2 #0009 0x50080000, // 0007 LDBOOL R2 0 0 0x80040400, // 0008 RET 1 R2 - 0x88080106, // 0009 GETMBR R2 R0 K6 + 0x88080108, // 0009 GETMBR R2 R0 K8 0x04080202, // 000A SUB R2 R1 R2 0x8C0C0114, // 000B GETMET R3 R0 K20 0x5C140400, // 000C MOVE R5 R2 @@ -13041,7 +12963,7 @@ be_local_closure(class_PaletteGradientAnimation_init, /* name */ ********************************************************************/ be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name */ be_nested_proto( - 16, /* nstack */ + 18, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -13049,64 +12971,86 @@ be_local_closure(class_PaletteGradientAnimation__update_value_buffer, /* name 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ + ( &(const bvalue[12]) { /* constants */ /* K0 */ be_nested_str_weak(shift_period), - /* K1 */ be_nested_str_weak(engine), - /* K2 */ be_nested_str_weak(get_strip_length), - /* K3 */ be_nested_str_weak(value_buffer), - /* K4 */ be_nested_str_weak(resize), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(scale_uint), + /* K1 */ be_nested_str_weak(spatial_period), + /* K2 */ be_nested_str_weak(phase_shift), + /* K3 */ be_nested_str_weak(engine), + /* K4 */ be_nested_str_weak(get_strip_length), + /* K5 */ be_nested_str_weak(value_buffer), + /* K6 */ be_nested_str_weak(resize), /* K7 */ be_const_int(0), - /* K8 */ be_const_real_hex(0x447A0000), - /* K9 */ be_const_int(1), + /* K8 */ be_nested_str_weak(tasmota), + /* K9 */ be_nested_str_weak(scale_uint), + /* K10 */ be_const_real_hex(0x447A0000), + /* K11 */ be_const_int(1), }), be_str_weak(_update_value_buffer), &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ + ( &(const binstruction[63]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x8C0C0702, // 0002 GETMET R3 R3 K2 - 0x7C0C0200, // 0003 CALL R3 1 - 0x6010000C, // 0004 GETGBL R4 G12 - 0x88140103, // 0005 GETMBR R5 R0 K3 - 0x7C100200, // 0006 CALL R4 1 - 0x20100803, // 0007 NE R4 R4 R3 - 0x78120003, // 0008 JMPF R4 #000D - 0x88100103, // 0009 GETMBR R4 R0 K3 - 0x8C100904, // 000A GETMET R4 R4 K4 - 0x5C180600, // 000B MOVE R6 R3 - 0x7C100400, // 000C CALL R4 2 - 0xB8120A00, // 000D GETNGBL R4 K5 - 0x8C100906, // 000E GETMET R4 R4 K6 - 0x10180202, // 000F MOD R6 R1 R2 - 0x581C0007, // 0010 LDCONST R7 K7 - 0x5C200400, // 0011 MOVE R8 R2 - 0x58240007, // 0012 LDCONST R9 K7 - 0x542A03E7, // 0013 LDINT R10 1000 - 0x7C100C00, // 0014 CALL R4 6 - 0x0C100908, // 0015 DIV R4 R4 K8 - 0x60140009, // 0016 GETGBL R5 G9 - 0x08180803, // 0017 MUL R6 R4 R3 - 0x7C140200, // 0018 CALL R5 1 - 0x58180007, // 0019 LDCONST R6 K7 - 0x141C0C03, // 001A LT R7 R6 R3 - 0x781E000D, // 001B JMPF R7 #002A - 0x001C0C05, // 001C ADD R7 R6 R5 - 0x101C0E03, // 001D MOD R7 R7 R3 - 0x88200103, // 001E GETMBR R8 R0 K3 - 0xB8260A00, // 001F GETNGBL R9 K5 - 0x8C241306, // 0020 GETMET R9 R9 K6 - 0x5C2C0E00, // 0021 MOVE R11 R7 - 0x58300007, // 0022 LDCONST R12 K7 - 0x04340709, // 0023 SUB R13 R3 K9 - 0x58380007, // 0024 LDCONST R14 K7 - 0x543E0063, // 0025 LDINT R15 100 - 0x7C240C00, // 0026 CALL R9 6 - 0x98200C09, // 0027 SETIDX R8 R6 R9 - 0x00180D09, // 0028 ADD R6 R6 K9 - 0x7001FFEF, // 0029 JMP #001A - 0x80000000, // 002A RET 0 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x88140103, // 0003 GETMBR R5 R0 K3 + 0x8C140B04, // 0004 GETMET R5 R5 K4 + 0x7C140200, // 0005 CALL R5 1 + 0x6018000C, // 0006 GETGBL R6 G12 + 0x881C0105, // 0007 GETMBR R7 R0 K5 + 0x7C180200, // 0008 CALL R6 1 + 0x20180C05, // 0009 NE R6 R6 R5 + 0x781A0003, // 000A JMPF R6 #000F + 0x88180105, // 000B GETMBR R6 R0 K5 + 0x8C180D06, // 000C GETMET R6 R6 K6 + 0x5C200A00, // 000D MOVE R8 R5 + 0x7C180400, // 000E CALL R6 2 + 0x24180707, // 000F GT R6 R3 K7 + 0x781A0001, // 0010 JMPF R6 #0013 + 0x5C180600, // 0011 MOVE R6 R3 + 0x70020000, // 0012 JMP #0014 + 0x5C180A00, // 0013 MOVE R6 R5 + 0x581C0007, // 0014 LDCONST R7 K7 + 0x24200507, // 0015 GT R8 R2 K7 + 0x7822000A, // 0016 JMPF R8 #0022 + 0xB8221000, // 0017 GETNGBL R8 K8 + 0x8C201109, // 0018 GETMET R8 R8 K9 + 0x10280202, // 0019 MOD R10 R1 R2 + 0x582C0007, // 001A LDCONST R11 K7 + 0x5C300400, // 001B MOVE R12 R2 + 0x58340007, // 001C LDCONST R13 K7 + 0x543A03E7, // 001D LDINT R14 1000 + 0x7C200C00, // 001E CALL R8 6 + 0x0C20110A, // 001F DIV R8 R8 K10 + 0x08241006, // 0020 MUL R9 R8 R6 + 0x5C1C1200, // 0021 MOVE R7 R9 + 0xB8221000, // 0022 GETNGBL R8 K8 + 0x8C201109, // 0023 GETMET R8 R8 K9 + 0x5C280800, // 0024 MOVE R10 R4 + 0x582C0007, // 0025 LDCONST R11 K7 + 0x54320063, // 0026 LDINT R12 100 + 0x58340007, // 0027 LDCONST R13 K7 + 0x5C380C00, // 0028 MOVE R14 R6 + 0x7C200C00, // 0029 CALL R8 6 + 0x58240007, // 002A LDCONST R9 K7 + 0x14281205, // 002B LT R10 R9 R5 + 0x782A0010, // 002C JMPF R10 #003E + 0x00281207, // 002D ADD R10 R9 R7 + 0x00281408, // 002E ADD R10 R10 R8 + 0x10281406, // 002F MOD R10 R10 R6 + 0xB82E1000, // 0030 GETNGBL R11 K8 + 0x8C2C1709, // 0031 GETMET R11 R11 K9 + 0x60340009, // 0032 GETGBL R13 G9 + 0x5C381400, // 0033 MOVE R14 R10 + 0x7C340200, // 0034 CALL R13 1 + 0x58380007, // 0035 LDCONST R14 K7 + 0x043C0D0B, // 0036 SUB R15 R6 K11 + 0x58400007, // 0037 LDCONST R16 K7 + 0x544600FE, // 0038 LDINT R17 255 + 0x7C2C0C00, // 0039 CALL R11 6 + 0x88300105, // 003A GETMBR R12 R0 K5 + 0x9830120B, // 003B SETIDX R12 R9 R11 + 0x0024130B, // 003C ADD R9 R9 K11 + 0x7001FFEC, // 003D JMP #002B + 0x80000000, // 003E RET 0 }) ) ); @@ -13123,13 +13067,26 @@ be_local_class(PaletteGradientAnimation, be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(PARAMS, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(1, + be_const_map( * be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(shift_period, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_int(10000) }, - { be_const_key_weak(min, -1), be_const_int(1) }, + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(spatial_period, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(2, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + })) ) } )) }, + { be_const_key_weak(phase_shift, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(default, -1), be_const_int(0) }, + { be_const_key_weak(min, -1), be_const_int(0) }, + { be_const_key_weak(max, 1), be_const_int(100) }, })) ) } )) }, })) ) } )) }, { be_const_key_weak(init, -1), be_const_closure(class_PaletteGradientAnimation_init_closure) }, @@ -13138,7 +13095,7 @@ be_local_class(PaletteGradientAnimation, be_str_weak(PaletteGradientAnimation) ); extern const bclass be_class_FrameBuffer; -// compact class 'FrameBuffer' ktab size: 34, total: 122 (saved 704 bytes) +// compact class 'FrameBuffer' ktab size: 34, total: 127 (saved 744 bytes) static const bvalue be_ktab_class_FrameBuffer[34] = { /* K0 */ be_const_int(0), /* K1 */ be_nested_str_weak(value_error), @@ -13872,7 +13829,7 @@ be_local_closure(class_FrameBuffer_to_color, /* name */ ********************************************************************/ be_local_closure(class_FrameBuffer_apply_brightness, /* name */ be_nested_proto( - 18, /* nstack */ + 20, /* nstack */ 4, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -13883,7 +13840,7 @@ be_local_closure(class_FrameBuffer_apply_brightness, /* name */ &be_ktab_class_FrameBuffer, /* shared constants */ be_str_weak(apply_brightness), &be_const_str_solidified, - ( &(const binstruction[161]) { /* code */ + ( &(const binstruction[246]) { /* code */ 0x4C100000, // 0000 LDNIL R4 0x1C100204, // 0001 EQ R4 R1 R4 0x78120000, // 0002 JMPF R4 #0004 @@ -13910,141 +13867,226 @@ be_local_closure(class_FrameBuffer_apply_brightness, /* name */ 0x28100604, // 0017 GE R4 R3 R4 0x78120000, // 0018 JMPF R4 #001A 0xB0062319, // 0019 RAISE 1 K17 K25 - 0x14100300, // 001A LT R4 R1 K0 - 0x78120001, // 001B JMPF R4 #001E - 0x58100000, // 001C LDCONST R4 K0 - 0x70020005, // 001D JMP #0024 - 0x541201FE, // 001E LDINT R4 511 - 0x24100204, // 001F GT R4 R1 R4 - 0x78120001, // 0020 JMPF R4 #0023 - 0x541201FE, // 0021 LDINT R4 511 - 0x70020000, // 0022 JMP #0024 - 0x5C100200, // 0023 MOVE R4 R1 - 0x5C040800, // 0024 MOVE R1 R4 - 0x5C100400, // 0025 MOVE R4 R2 - 0x18140803, // 0026 LE R5 R4 R3 - 0x78160077, // 0027 JMPF R5 #00A0 - 0x8C14010C, // 0028 GETMET R5 R0 K12 - 0x5C1C0800, // 0029 MOVE R7 R4 - 0x7C140400, // 002A CALL R5 2 - 0x541A0017, // 002B LDINT R6 24 - 0x3C180A06, // 002C SHR R6 R5 R6 - 0x541E00FE, // 002D LDINT R7 255 - 0x2C180C07, // 002E AND R6 R6 R7 - 0x541E000F, // 002F LDINT R7 16 - 0x3C1C0A07, // 0030 SHR R7 R5 R7 - 0x542200FE, // 0031 LDINT R8 255 - 0x2C1C0E08, // 0032 AND R7 R7 R8 - 0x54220007, // 0033 LDINT R8 8 - 0x3C200A08, // 0034 SHR R8 R5 R8 - 0x542600FE, // 0035 LDINT R9 255 - 0x2C201009, // 0036 AND R8 R8 R9 - 0x542600FE, // 0037 LDINT R9 255 - 0x2C240A09, // 0038 AND R9 R5 R9 - 0x542A00FE, // 0039 LDINT R10 255 - 0x1828020A, // 003A LE R10 R1 R10 - 0x782A001B, // 003B JMPF R10 #0058 - 0xB82A1A00, // 003C GETNGBL R10 K13 - 0x8C28150E, // 003D GETMET R10 R10 K14 - 0x5C300E00, // 003E MOVE R12 R7 - 0x58340000, // 003F LDCONST R13 K0 - 0x543A00FE, // 0040 LDINT R14 255 - 0x583C0000, // 0041 LDCONST R15 K0 - 0x5C400200, // 0042 MOVE R16 R1 - 0x7C280C00, // 0043 CALL R10 6 - 0x5C1C1400, // 0044 MOVE R7 R10 - 0xB82A1A00, // 0045 GETNGBL R10 K13 - 0x8C28150E, // 0046 GETMET R10 R10 K14 - 0x5C301000, // 0047 MOVE R12 R8 - 0x58340000, // 0048 LDCONST R13 K0 - 0x543A00FE, // 0049 LDINT R14 255 - 0x583C0000, // 004A LDCONST R15 K0 - 0x5C400200, // 004B MOVE R16 R1 - 0x7C280C00, // 004C CALL R10 6 - 0x5C201400, // 004D MOVE R8 R10 - 0xB82A1A00, // 004E GETNGBL R10 K13 - 0x8C28150E, // 004F GETMET R10 R10 K14 - 0x5C301200, // 0050 MOVE R12 R9 - 0x58340000, // 0051 LDCONST R13 K0 - 0x543A00FE, // 0052 LDINT R14 255 - 0x583C0000, // 0053 LDCONST R15 K0 - 0x5C400200, // 0054 MOVE R16 R1 - 0x7C280C00, // 0055 CALL R10 6 - 0x5C241400, // 0056 MOVE R9 R10 - 0x70020037, // 0057 JMP #0090 - 0x542A00FE, // 0058 LDINT R10 255 - 0x0428020A, // 0059 SUB R10 R1 R10 - 0xB82E1A00, // 005A GETNGBL R11 K13 - 0x8C2C170E, // 005B GETMET R11 R11 K14 - 0x08340E0A, // 005C MUL R13 R7 R10 - 0x58380000, // 005D LDCONST R14 K0 - 0x543E00FE, // 005E LDINT R15 255 - 0x544200FF, // 005F LDINT R16 256 - 0x083C1E10, // 0060 MUL R15 R15 R16 - 0x58400000, // 0061 LDCONST R16 K0 - 0x544600FE, // 0062 LDINT R17 255 - 0x7C2C0C00, // 0063 CALL R11 6 - 0x001C0E0B, // 0064 ADD R7 R7 R11 - 0xB82E1A00, // 0065 GETNGBL R11 K13 - 0x8C2C170E, // 0066 GETMET R11 R11 K14 - 0x0834100A, // 0067 MUL R13 R8 R10 - 0x58380000, // 0068 LDCONST R14 K0 - 0x543E00FE, // 0069 LDINT R15 255 - 0x544200FF, // 006A LDINT R16 256 - 0x083C1E10, // 006B MUL R15 R15 R16 - 0x58400000, // 006C LDCONST R16 K0 - 0x544600FE, // 006D LDINT R17 255 - 0x7C2C0C00, // 006E CALL R11 6 - 0x0020100B, // 006F ADD R8 R8 R11 - 0xB82E1A00, // 0070 GETNGBL R11 K13 - 0x8C2C170E, // 0071 GETMET R11 R11 K14 - 0x0834120A, // 0072 MUL R13 R9 R10 - 0x58380000, // 0073 LDCONST R14 K0 - 0x543E00FE, // 0074 LDINT R15 255 - 0x544200FF, // 0075 LDINT R16 256 - 0x083C1E10, // 0076 MUL R15 R15 R16 - 0x58400000, // 0077 LDCONST R16 K0 - 0x544600FE, // 0078 LDINT R17 255 - 0x7C2C0C00, // 0079 CALL R11 6 - 0x0024120B, // 007A ADD R9 R9 R11 - 0x542E00FE, // 007B LDINT R11 255 - 0x242C0E0B, // 007C GT R11 R7 R11 - 0x782E0001, // 007D JMPF R11 #0080 - 0x542E00FE, // 007E LDINT R11 255 - 0x70020000, // 007F JMP #0081 - 0x5C2C0E00, // 0080 MOVE R11 R7 - 0x5C1C1600, // 0081 MOVE R7 R11 - 0x542E00FE, // 0082 LDINT R11 255 - 0x242C100B, // 0083 GT R11 R8 R11 - 0x782E0001, // 0084 JMPF R11 #0087 - 0x542E00FE, // 0085 LDINT R11 255 - 0x70020000, // 0086 JMP #0088 - 0x5C2C1000, // 0087 MOVE R11 R8 - 0x5C201600, // 0088 MOVE R8 R11 - 0x542E00FE, // 0089 LDINT R11 255 - 0x242C120B, // 008A GT R11 R9 R11 - 0x782E0001, // 008B JMPF R11 #008E - 0x542E00FE, // 008C LDINT R11 255 - 0x70020000, // 008D JMP #008F - 0x5C2C1200, // 008E MOVE R11 R9 - 0x5C241600, // 008F MOVE R9 R11 - 0x542A0017, // 0090 LDINT R10 24 - 0x38280C0A, // 0091 SHL R10 R6 R10 - 0x542E000F, // 0092 LDINT R11 16 - 0x382C0E0B, // 0093 SHL R11 R7 R11 - 0x3028140B, // 0094 OR R10 R10 R11 - 0x542E0007, // 0095 LDINT R11 8 - 0x382C100B, // 0096 SHL R11 R8 R11 - 0x3028140B, // 0097 OR R10 R10 R11 - 0x30281409, // 0098 OR R10 R10 R9 - 0x5C141400, // 0099 MOVE R5 R10 - 0x8C28010F, // 009A GETMET R10 R0 K15 - 0x5C300800, // 009B MOVE R12 R4 - 0x5C340A00, // 009C MOVE R13 R5 - 0x7C280600, // 009D CALL R10 3 - 0x00100910, // 009E ADD R4 R4 K16 - 0x7001FF85, // 009F JMP #0026 - 0x80000000, // 00A0 RET 0 + 0x6010000F, // 001A GETGBL R4 G15 + 0x5C140200, // 001B MOVE R5 R1 + 0xB81A2A00, // 001C GETNGBL R6 K21 + 0x88180D16, // 001D GETMBR R6 R6 K22 + 0x7C100400, // 001E CALL R4 2 + 0x7812004B, // 001F JMPF R4 #006C + 0x5C100200, // 0020 MOVE R4 R1 + 0x88140103, // 0021 GETMBR R5 R0 K3 + 0x88180903, // 0022 GETMBR R6 R4 K3 + 0x20140A06, // 0023 NE R5 R5 R6 + 0x78160000, // 0024 JMPF R5 #0026 + 0xB006030B, // 0025 RAISE 1 K1 K11 + 0x5C140400, // 0026 MOVE R5 R2 + 0x18180A03, // 0027 LE R6 R5 R3 + 0x781A0041, // 0028 JMPF R6 #006B + 0x8C18010C, // 0029 GETMET R6 R0 K12 + 0x5C200A00, // 002A MOVE R8 R5 + 0x7C180400, // 002B CALL R6 2 + 0x8C1C090C, // 002C GETMET R7 R4 K12 + 0x5C240A00, // 002D MOVE R9 R5 + 0x7C1C0400, // 002E CALL R7 2 + 0x54220017, // 002F LDINT R8 24 + 0x3C200E08, // 0030 SHR R8 R7 R8 + 0x542600FE, // 0031 LDINT R9 255 + 0x2C201009, // 0032 AND R8 R8 R9 + 0x54260017, // 0033 LDINT R9 24 + 0x3C240C09, // 0034 SHR R9 R6 R9 + 0x542A00FE, // 0035 LDINT R10 255 + 0x2C24120A, // 0036 AND R9 R9 R10 + 0x542A000F, // 0037 LDINT R10 16 + 0x3C280C0A, // 0038 SHR R10 R6 R10 + 0x542E00FE, // 0039 LDINT R11 255 + 0x2C28140B, // 003A AND R10 R10 R11 + 0x542E0007, // 003B LDINT R11 8 + 0x3C2C0C0B, // 003C SHR R11 R6 R11 + 0x543200FE, // 003D LDINT R12 255 + 0x2C2C160C, // 003E AND R11 R11 R12 + 0x543200FE, // 003F LDINT R12 255 + 0x2C300C0C, // 0040 AND R12 R6 R12 + 0xB8361A00, // 0041 GETNGBL R13 K13 + 0x8C341B0E, // 0042 GETMET R13 R13 K14 + 0x5C3C1000, // 0043 MOVE R15 R8 + 0x58400000, // 0044 LDCONST R16 K0 + 0x544600FE, // 0045 LDINT R17 255 + 0x58480000, // 0046 LDCONST R18 K0 + 0x5C4C1400, // 0047 MOVE R19 R10 + 0x7C340C00, // 0048 CALL R13 6 + 0x5C281A00, // 0049 MOVE R10 R13 + 0xB8361A00, // 004A GETNGBL R13 K13 + 0x8C341B0E, // 004B GETMET R13 R13 K14 + 0x5C3C1000, // 004C MOVE R15 R8 + 0x58400000, // 004D LDCONST R16 K0 + 0x544600FE, // 004E LDINT R17 255 + 0x58480000, // 004F LDCONST R18 K0 + 0x5C4C1600, // 0050 MOVE R19 R11 + 0x7C340C00, // 0051 CALL R13 6 + 0x5C2C1A00, // 0052 MOVE R11 R13 + 0xB8361A00, // 0053 GETNGBL R13 K13 + 0x8C341B0E, // 0054 GETMET R13 R13 K14 + 0x5C3C1000, // 0055 MOVE R15 R8 + 0x58400000, // 0056 LDCONST R16 K0 + 0x544600FE, // 0057 LDINT R17 255 + 0x58480000, // 0058 LDCONST R18 K0 + 0x5C4C1800, // 0059 MOVE R19 R12 + 0x7C340C00, // 005A CALL R13 6 + 0x5C301A00, // 005B MOVE R12 R13 + 0x54360017, // 005C LDINT R13 24 + 0x3834120D, // 005D SHL R13 R9 R13 + 0x543A000F, // 005E LDINT R14 16 + 0x3838140E, // 005F SHL R14 R10 R14 + 0x30341A0E, // 0060 OR R13 R13 R14 + 0x543A0007, // 0061 LDINT R14 8 + 0x3838160E, // 0062 SHL R14 R11 R14 + 0x30341A0E, // 0063 OR R13 R13 R14 + 0x30341A0C, // 0064 OR R13 R13 R12 + 0x8C38010F, // 0065 GETMET R14 R0 K15 + 0x5C400A00, // 0066 MOVE R16 R5 + 0x5C441A00, // 0067 MOVE R17 R13 + 0x7C380600, // 0068 CALL R14 3 + 0x00140B10, // 0069 ADD R5 R5 K16 + 0x7001FFBB, // 006A JMP #0027 + 0x70020088, // 006B JMP #00F5 + 0x60100009, // 006C GETGBL R4 G9 + 0x5C140200, // 006D MOVE R5 R1 + 0x7C100200, // 006E CALL R4 1 + 0x14140900, // 006F LT R5 R4 K0 + 0x78160001, // 0070 JMPF R5 #0073 + 0x58140000, // 0071 LDCONST R5 K0 + 0x70020005, // 0072 JMP #0079 + 0x541601FE, // 0073 LDINT R5 511 + 0x24140805, // 0074 GT R5 R4 R5 + 0x78160001, // 0075 JMPF R5 #0078 + 0x541601FE, // 0076 LDINT R5 511 + 0x70020000, // 0077 JMP #0079 + 0x5C140800, // 0078 MOVE R5 R4 + 0x5C100A00, // 0079 MOVE R4 R5 + 0x5C140400, // 007A MOVE R5 R2 + 0x18180A03, // 007B LE R6 R5 R3 + 0x781A0077, // 007C JMPF R6 #00F5 + 0x8C18010C, // 007D GETMET R6 R0 K12 + 0x5C200A00, // 007E MOVE R8 R5 + 0x7C180400, // 007F CALL R6 2 + 0x541E0017, // 0080 LDINT R7 24 + 0x3C1C0C07, // 0081 SHR R7 R6 R7 + 0x542200FE, // 0082 LDINT R8 255 + 0x2C1C0E08, // 0083 AND R7 R7 R8 + 0x5422000F, // 0084 LDINT R8 16 + 0x3C200C08, // 0085 SHR R8 R6 R8 + 0x542600FE, // 0086 LDINT R9 255 + 0x2C201009, // 0087 AND R8 R8 R9 + 0x54260007, // 0088 LDINT R9 8 + 0x3C240C09, // 0089 SHR R9 R6 R9 + 0x542A00FE, // 008A LDINT R10 255 + 0x2C24120A, // 008B AND R9 R9 R10 + 0x542A00FE, // 008C LDINT R10 255 + 0x2C280C0A, // 008D AND R10 R6 R10 + 0x542E00FE, // 008E LDINT R11 255 + 0x182C080B, // 008F LE R11 R4 R11 + 0x782E001B, // 0090 JMPF R11 #00AD + 0xB82E1A00, // 0091 GETNGBL R11 K13 + 0x8C2C170E, // 0092 GETMET R11 R11 K14 + 0x5C341000, // 0093 MOVE R13 R8 + 0x58380000, // 0094 LDCONST R14 K0 + 0x543E00FE, // 0095 LDINT R15 255 + 0x58400000, // 0096 LDCONST R16 K0 + 0x5C440800, // 0097 MOVE R17 R4 + 0x7C2C0C00, // 0098 CALL R11 6 + 0x5C201600, // 0099 MOVE R8 R11 + 0xB82E1A00, // 009A GETNGBL R11 K13 + 0x8C2C170E, // 009B GETMET R11 R11 K14 + 0x5C341200, // 009C MOVE R13 R9 + 0x58380000, // 009D LDCONST R14 K0 + 0x543E00FE, // 009E LDINT R15 255 + 0x58400000, // 009F LDCONST R16 K0 + 0x5C440800, // 00A0 MOVE R17 R4 + 0x7C2C0C00, // 00A1 CALL R11 6 + 0x5C241600, // 00A2 MOVE R9 R11 + 0xB82E1A00, // 00A3 GETNGBL R11 K13 + 0x8C2C170E, // 00A4 GETMET R11 R11 K14 + 0x5C341400, // 00A5 MOVE R13 R10 + 0x58380000, // 00A6 LDCONST R14 K0 + 0x543E00FE, // 00A7 LDINT R15 255 + 0x58400000, // 00A8 LDCONST R16 K0 + 0x5C440800, // 00A9 MOVE R17 R4 + 0x7C2C0C00, // 00AA CALL R11 6 + 0x5C281600, // 00AB MOVE R10 R11 + 0x70020037, // 00AC JMP #00E5 + 0x542E00FE, // 00AD LDINT R11 255 + 0x042C080B, // 00AE SUB R11 R4 R11 + 0xB8321A00, // 00AF GETNGBL R12 K13 + 0x8C30190E, // 00B0 GETMET R12 R12 K14 + 0x0838100B, // 00B1 MUL R14 R8 R11 + 0x583C0000, // 00B2 LDCONST R15 K0 + 0x544200FE, // 00B3 LDINT R16 255 + 0x544600FF, // 00B4 LDINT R17 256 + 0x08402011, // 00B5 MUL R16 R16 R17 + 0x58440000, // 00B6 LDCONST R17 K0 + 0x544A00FE, // 00B7 LDINT R18 255 + 0x7C300C00, // 00B8 CALL R12 6 + 0x0020100C, // 00B9 ADD R8 R8 R12 + 0xB8321A00, // 00BA GETNGBL R12 K13 + 0x8C30190E, // 00BB GETMET R12 R12 K14 + 0x0838120B, // 00BC MUL R14 R9 R11 + 0x583C0000, // 00BD LDCONST R15 K0 + 0x544200FE, // 00BE LDINT R16 255 + 0x544600FF, // 00BF LDINT R17 256 + 0x08402011, // 00C0 MUL R16 R16 R17 + 0x58440000, // 00C1 LDCONST R17 K0 + 0x544A00FE, // 00C2 LDINT R18 255 + 0x7C300C00, // 00C3 CALL R12 6 + 0x0024120C, // 00C4 ADD R9 R9 R12 + 0xB8321A00, // 00C5 GETNGBL R12 K13 + 0x8C30190E, // 00C6 GETMET R12 R12 K14 + 0x0838140B, // 00C7 MUL R14 R10 R11 + 0x583C0000, // 00C8 LDCONST R15 K0 + 0x544200FE, // 00C9 LDINT R16 255 + 0x544600FF, // 00CA LDINT R17 256 + 0x08402011, // 00CB MUL R16 R16 R17 + 0x58440000, // 00CC LDCONST R17 K0 + 0x544A00FE, // 00CD LDINT R18 255 + 0x7C300C00, // 00CE CALL R12 6 + 0x0028140C, // 00CF ADD R10 R10 R12 + 0x543200FE, // 00D0 LDINT R12 255 + 0x2430100C, // 00D1 GT R12 R8 R12 + 0x78320001, // 00D2 JMPF R12 #00D5 + 0x543200FE, // 00D3 LDINT R12 255 + 0x70020000, // 00D4 JMP #00D6 + 0x5C301000, // 00D5 MOVE R12 R8 + 0x5C201800, // 00D6 MOVE R8 R12 + 0x543200FE, // 00D7 LDINT R12 255 + 0x2430120C, // 00D8 GT R12 R9 R12 + 0x78320001, // 00D9 JMPF R12 #00DC + 0x543200FE, // 00DA LDINT R12 255 + 0x70020000, // 00DB JMP #00DD + 0x5C301200, // 00DC MOVE R12 R9 + 0x5C241800, // 00DD MOVE R9 R12 + 0x543200FE, // 00DE LDINT R12 255 + 0x2430140C, // 00DF GT R12 R10 R12 + 0x78320001, // 00E0 JMPF R12 #00E3 + 0x543200FE, // 00E1 LDINT R12 255 + 0x70020000, // 00E2 JMP #00E4 + 0x5C301400, // 00E3 MOVE R12 R10 + 0x5C281800, // 00E4 MOVE R10 R12 + 0x542E0017, // 00E5 LDINT R11 24 + 0x382C0E0B, // 00E6 SHL R11 R7 R11 + 0x5432000F, // 00E7 LDINT R12 16 + 0x3830100C, // 00E8 SHL R12 R8 R12 + 0x302C160C, // 00E9 OR R11 R11 R12 + 0x54320007, // 00EA LDINT R12 8 + 0x3830120C, // 00EB SHL R12 R9 R12 + 0x302C160C, // 00EC OR R11 R11 R12 + 0x302C160A, // 00ED OR R11 R11 R10 + 0x5C181600, // 00EE MOVE R6 R11 + 0x8C2C010F, // 00EF GETMET R11 R0 K15 + 0x5C340A00, // 00F0 MOVE R13 R5 + 0x5C380C00, // 00F1 MOVE R14 R6 + 0x7C2C0600, // 00F2 CALL R11 3 + 0x00140B10, // 00F3 ADD R5 R5 K16 + 0x7001FF85, // 00F4 JMP #007B + 0x80000000, // 00F5 RET 0 }) ) ); @@ -14234,8 +14276,8 @@ be_local_closure(class_FrameBuffer_blend_color, /* name */ ********************************************************************/ be_local_closure(class_FrameBuffer_apply_opacity, /* name */ be_nested_proto( - 17, /* nstack */ - 4, /* argc */ + 18, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -14245,112 +14287,159 @@ be_local_closure(class_FrameBuffer_apply_opacity, /* name */ &be_ktab_class_FrameBuffer, /* shared constants */ be_str_weak(apply_opacity), &be_const_str_solidified, - ( &(const binstruction[105]) { /* code */ - 0x4C100000, // 0000 LDNIL R4 - 0x1C100204, // 0001 EQ R4 R1 R4 - 0x78120000, // 0002 JMPF R4 #0004 + ( &(const binstruction[152]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0000, // 0002 JMPF R2 #0004 0x540600FE, // 0003 LDINT R1 255 - 0x4C100000, // 0004 LDNIL R4 - 0x1C100404, // 0005 EQ R4 R2 R4 - 0x78120000, // 0006 JMPF R4 #0008 - 0x58080000, // 0007 LDCONST R2 K0 - 0x4C100000, // 0008 LDNIL R4 - 0x1C100604, // 0009 EQ R4 R3 R4 - 0x78120002, // 000A JMPF R4 #000E - 0x88100103, // 000B GETMBR R4 R0 K3 - 0x04100910, // 000C SUB R4 R4 K16 - 0x5C0C0800, // 000D MOVE R3 R4 - 0x14100500, // 000E LT R4 R2 K0 - 0x74120002, // 000F JMPT R4 #0013 - 0x88100103, // 0010 GETMBR R4 R0 K3 - 0x28100404, // 0011 GE R4 R2 R4 - 0x78120000, // 0012 JMPF R4 #0014 - 0xB0062318, // 0013 RAISE 1 K17 K24 - 0x14100602, // 0014 LT R4 R3 R2 - 0x74120002, // 0015 JMPT R4 #0019 - 0x88100103, // 0016 GETMBR R4 R0 K3 - 0x28100604, // 0017 GE R4 R3 R4 - 0x78120000, // 0018 JMPF R4 #001A - 0xB0062319, // 0019 RAISE 1 K17 K25 - 0x14100300, // 001A LT R4 R1 K0 - 0x78120001, // 001B JMPF R4 #001E - 0x58100000, // 001C LDCONST R4 K0 - 0x70020005, // 001D JMP #0024 - 0x541201FE, // 001E LDINT R4 511 - 0x24100204, // 001F GT R4 R1 R4 - 0x78120001, // 0020 JMPF R4 #0023 - 0x541201FE, // 0021 LDINT R4 511 - 0x70020000, // 0022 JMP #0024 - 0x5C100200, // 0023 MOVE R4 R1 - 0x5C040800, // 0024 MOVE R1 R4 - 0x5C100400, // 0025 MOVE R4 R2 - 0x18140803, // 0026 LE R5 R4 R3 - 0x7816003F, // 0027 JMPF R5 #0068 - 0x8C14010C, // 0028 GETMET R5 R0 K12 - 0x5C1C0800, // 0029 MOVE R7 R4 - 0x7C140400, // 002A CALL R5 2 - 0x541A0017, // 002B LDINT R6 24 - 0x3C180A06, // 002C SHR R6 R5 R6 - 0x541E00FE, // 002D LDINT R7 255 - 0x2C180C07, // 002E AND R6 R6 R7 - 0x541E000F, // 002F LDINT R7 16 - 0x3C1C0A07, // 0030 SHR R7 R5 R7 - 0x542200FE, // 0031 LDINT R8 255 - 0x2C1C0E08, // 0032 AND R7 R7 R8 - 0x54220007, // 0033 LDINT R8 8 - 0x3C200A08, // 0034 SHR R8 R5 R8 - 0x542600FE, // 0035 LDINT R9 255 - 0x2C201009, // 0036 AND R8 R8 R9 - 0x542600FE, // 0037 LDINT R9 255 - 0x2C240A09, // 0038 AND R9 R5 R9 - 0x542A00FE, // 0039 LDINT R10 255 - 0x1828020A, // 003A LE R10 R1 R10 - 0x782A0009, // 003B JMPF R10 #0046 - 0xB82A1A00, // 003C GETNGBL R10 K13 - 0x8C28150E, // 003D GETMET R10 R10 K14 - 0x5C300200, // 003E MOVE R12 R1 - 0x58340000, // 003F LDCONST R13 K0 - 0x543A00FE, // 0040 LDINT R14 255 - 0x583C0000, // 0041 LDCONST R15 K0 - 0x5C400C00, // 0042 MOVE R16 R6 - 0x7C280C00, // 0043 CALL R10 6 - 0x5C181400, // 0044 MOVE R6 R10 - 0x70020011, // 0045 JMP #0058 - 0xB82A1A00, // 0046 GETNGBL R10 K13 - 0x8C28150E, // 0047 GETMET R10 R10 K14 - 0x08300C01, // 0048 MUL R12 R6 R1 - 0x58340000, // 0049 LDCONST R13 K0 - 0x543A00FE, // 004A LDINT R14 255 - 0x543E00FE, // 004B LDINT R15 255 - 0x08381C0F, // 004C MUL R14 R14 R15 - 0x583C0000, // 004D LDCONST R15 K0 - 0x544200FE, // 004E LDINT R16 255 - 0x7C280C00, // 004F CALL R10 6 - 0x5C181400, // 0050 MOVE R6 R10 - 0x542A00FE, // 0051 LDINT R10 255 - 0x24280C0A, // 0052 GT R10 R6 R10 - 0x782A0001, // 0053 JMPF R10 #0056 - 0x542A00FE, // 0054 LDINT R10 255 - 0x70020000, // 0055 JMP #0057 - 0x5C280C00, // 0056 MOVE R10 R6 - 0x5C181400, // 0057 MOVE R6 R10 - 0x542A0017, // 0058 LDINT R10 24 - 0x38280C0A, // 0059 SHL R10 R6 R10 - 0x542E000F, // 005A LDINT R11 16 - 0x382C0E0B, // 005B SHL R11 R7 R11 - 0x3028140B, // 005C OR R10 R10 R11 - 0x542E0007, // 005D LDINT R11 8 - 0x382C100B, // 005E SHL R11 R8 R11 - 0x3028140B, // 005F OR R10 R10 R11 - 0x30281409, // 0060 OR R10 R10 R9 - 0x5C141400, // 0061 MOVE R5 R10 - 0x8C28010F, // 0062 GETMET R10 R0 K15 - 0x5C300800, // 0063 MOVE R12 R4 - 0x5C340A00, // 0064 MOVE R13 R5 - 0x7C280600, // 0065 CALL R10 3 - 0x00100910, // 0066 ADD R4 R4 K16 - 0x7001FFBD, // 0067 JMP #0026 - 0x80000000, // 0068 RET 0 + 0x6008000F, // 0004 GETGBL R2 G15 + 0x5C0C0200, // 0005 MOVE R3 R1 + 0xB8122A00, // 0006 GETNGBL R4 K21 + 0x88100916, // 0007 GETMBR R4 R4 K22 + 0x7C080400, // 0008 CALL R2 2 + 0x780A003A, // 0009 JMPF R2 #0045 + 0x5C080200, // 000A MOVE R2 R1 + 0x880C0103, // 000B GETMBR R3 R0 K3 + 0x88100503, // 000C GETMBR R4 R2 K3 + 0x200C0604, // 000D NE R3 R3 R4 + 0x780E0000, // 000E JMPF R3 #0010 + 0xB006030B, // 000F RAISE 1 K1 K11 + 0x580C0000, // 0010 LDCONST R3 K0 + 0x88100103, // 0011 GETMBR R4 R0 K3 + 0x14100604, // 0012 LT R4 R3 R4 + 0x7812002F, // 0013 JMPF R4 #0044 + 0x8C10010C, // 0014 GETMET R4 R0 K12 + 0x5C180600, // 0015 MOVE R6 R3 + 0x7C100400, // 0016 CALL R4 2 + 0x8C14050C, // 0017 GETMET R5 R2 K12 + 0x5C1C0600, // 0018 MOVE R7 R3 + 0x7C140400, // 0019 CALL R5 2 + 0x541A0017, // 001A LDINT R6 24 + 0x3C180A06, // 001B SHR R6 R5 R6 + 0x541E00FE, // 001C LDINT R7 255 + 0x2C180C07, // 001D AND R6 R6 R7 + 0x541E0017, // 001E LDINT R7 24 + 0x3C1C0807, // 001F SHR R7 R4 R7 + 0x542200FE, // 0020 LDINT R8 255 + 0x2C1C0E08, // 0021 AND R7 R7 R8 + 0x5422000F, // 0022 LDINT R8 16 + 0x3C200808, // 0023 SHR R8 R4 R8 + 0x542600FE, // 0024 LDINT R9 255 + 0x2C201009, // 0025 AND R8 R8 R9 + 0x54260007, // 0026 LDINT R9 8 + 0x3C240809, // 0027 SHR R9 R4 R9 + 0x542A00FE, // 0028 LDINT R10 255 + 0x2C24120A, // 0029 AND R9 R9 R10 + 0x542A00FE, // 002A LDINT R10 255 + 0x2C28080A, // 002B AND R10 R4 R10 + 0xB82E1A00, // 002C GETNGBL R11 K13 + 0x8C2C170E, // 002D GETMET R11 R11 K14 + 0x5C340C00, // 002E MOVE R13 R6 + 0x58380000, // 002F LDCONST R14 K0 + 0x543E00FE, // 0030 LDINT R15 255 + 0x58400000, // 0031 LDCONST R16 K0 + 0x5C440E00, // 0032 MOVE R17 R7 + 0x7C2C0C00, // 0033 CALL R11 6 + 0x5C1C1600, // 0034 MOVE R7 R11 + 0x542E0017, // 0035 LDINT R11 24 + 0x382C0E0B, // 0036 SHL R11 R7 R11 + 0x5432000F, // 0037 LDINT R12 16 + 0x3830100C, // 0038 SHL R12 R8 R12 + 0x302C160C, // 0039 OR R11 R11 R12 + 0x54320007, // 003A LDINT R12 8 + 0x3830120C, // 003B SHL R12 R9 R12 + 0x302C160C, // 003C OR R11 R11 R12 + 0x302C160A, // 003D OR R11 R11 R10 + 0x8C30010F, // 003E GETMET R12 R0 K15 + 0x5C380600, // 003F MOVE R14 R3 + 0x5C3C1600, // 0040 MOVE R15 R11 + 0x7C300600, // 0041 CALL R12 3 + 0x000C0710, // 0042 ADD R3 R3 K16 + 0x7001FFCC, // 0043 JMP #0011 + 0x70020051, // 0044 JMP #0097 + 0x60080009, // 0045 GETGBL R2 G9 + 0x5C0C0200, // 0046 MOVE R3 R1 + 0x7C080200, // 0047 CALL R2 1 + 0x140C0500, // 0048 LT R3 R2 K0 + 0x780E0001, // 0049 JMPF R3 #004C + 0x580C0000, // 004A LDCONST R3 K0 + 0x70020005, // 004B JMP #0052 + 0x540E01FE, // 004C LDINT R3 511 + 0x240C0403, // 004D GT R3 R2 R3 + 0x780E0001, // 004E JMPF R3 #0051 + 0x540E01FE, // 004F LDINT R3 511 + 0x70020000, // 0050 JMP #0052 + 0x5C0C0400, // 0051 MOVE R3 R2 + 0x5C080600, // 0052 MOVE R2 R3 + 0x580C0000, // 0053 LDCONST R3 K0 + 0x88100103, // 0054 GETMBR R4 R0 K3 + 0x14100604, // 0055 LT R4 R3 R4 + 0x7812003F, // 0056 JMPF R4 #0097 + 0x8C10010C, // 0057 GETMET R4 R0 K12 + 0x5C180600, // 0058 MOVE R6 R3 + 0x7C100400, // 0059 CALL R4 2 + 0x54160017, // 005A LDINT R5 24 + 0x3C140805, // 005B SHR R5 R4 R5 + 0x541A00FE, // 005C LDINT R6 255 + 0x2C140A06, // 005D AND R5 R5 R6 + 0x541A000F, // 005E LDINT R6 16 + 0x3C180806, // 005F SHR R6 R4 R6 + 0x541E00FE, // 0060 LDINT R7 255 + 0x2C180C07, // 0061 AND R6 R6 R7 + 0x541E0007, // 0062 LDINT R7 8 + 0x3C1C0807, // 0063 SHR R7 R4 R7 + 0x542200FE, // 0064 LDINT R8 255 + 0x2C1C0E08, // 0065 AND R7 R7 R8 + 0x542200FE, // 0066 LDINT R8 255 + 0x2C200808, // 0067 AND R8 R4 R8 + 0x542600FE, // 0068 LDINT R9 255 + 0x18240409, // 0069 LE R9 R2 R9 + 0x78260009, // 006A JMPF R9 #0075 + 0xB8261A00, // 006B GETNGBL R9 K13 + 0x8C24130E, // 006C GETMET R9 R9 K14 + 0x5C2C0400, // 006D MOVE R11 R2 + 0x58300000, // 006E LDCONST R12 K0 + 0x543600FE, // 006F LDINT R13 255 + 0x58380000, // 0070 LDCONST R14 K0 + 0x5C3C0A00, // 0071 MOVE R15 R5 + 0x7C240C00, // 0072 CALL R9 6 + 0x5C141200, // 0073 MOVE R5 R9 + 0x70020011, // 0074 JMP #0087 + 0xB8261A00, // 0075 GETNGBL R9 K13 + 0x8C24130E, // 0076 GETMET R9 R9 K14 + 0x082C0A02, // 0077 MUL R11 R5 R2 + 0x58300000, // 0078 LDCONST R12 K0 + 0x543600FE, // 0079 LDINT R13 255 + 0x543A00FE, // 007A LDINT R14 255 + 0x08341A0E, // 007B MUL R13 R13 R14 + 0x58380000, // 007C LDCONST R14 K0 + 0x543E00FE, // 007D LDINT R15 255 + 0x7C240C00, // 007E CALL R9 6 + 0x5C141200, // 007F MOVE R5 R9 + 0x542600FE, // 0080 LDINT R9 255 + 0x24240A09, // 0081 GT R9 R5 R9 + 0x78260001, // 0082 JMPF R9 #0085 + 0x542600FE, // 0083 LDINT R9 255 + 0x70020000, // 0084 JMP #0086 + 0x5C240A00, // 0085 MOVE R9 R5 + 0x5C141200, // 0086 MOVE R5 R9 + 0x54260017, // 0087 LDINT R9 24 + 0x38240A09, // 0088 SHL R9 R5 R9 + 0x542A000F, // 0089 LDINT R10 16 + 0x38280C0A, // 008A SHL R10 R6 R10 + 0x3024120A, // 008B OR R9 R9 R10 + 0x542A0007, // 008C LDINT R10 8 + 0x38280E0A, // 008D SHL R10 R7 R10 + 0x3024120A, // 008E OR R9 R9 R10 + 0x30241208, // 008F OR R9 R9 R8 + 0x5C101200, // 0090 MOVE R4 R9 + 0x8C24010F, // 0091 GETMET R9 R0 K15 + 0x5C2C0600, // 0092 MOVE R11 R3 + 0x5C300800, // 0093 MOVE R12 R4 + 0x7C240600, // 0094 CALL R9 3 + 0x000C0710, // 0095 ADD R3 R3 K16 + 0x7001FFBC, // 0096 JMP #0054 + 0x80000000, // 0097 RET 0 }) ) ); @@ -16783,47 +16872,54 @@ be_local_class(EventHandler, })), be_str_weak(EventHandler) ); -// compact class 'Animation' ktab size: 27, total: 52 (saved 200 bytes) -static const bvalue be_ktab_class_Animation[27] = { - /* K0 */ be_nested_str_weak(Animation_X28_X25s_X2C_X20priority_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20loop_X3D_X25s_X2C_X20running_X3D_X25s_X29), - /* K1 */ be_nested_str_weak(name), - /* K2 */ be_nested_str_weak(priority), - /* K3 */ be_nested_str_weak(duration), - /* K4 */ be_nested_str_weak(loop), - /* K5 */ be_nested_str_weak(is_running), - /* K6 */ be_nested_str_weak(get_color_at), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(get_param_value), - /* K9 */ be_nested_str_weak(color), - /* K10 */ be_nested_str_weak(update), - /* K11 */ be_nested_str_weak(opacity), - /* K12 */ be_nested_str_weak(fill_pixels), - /* K13 */ be_nested_str_weak(apply_brightness), - /* K14 */ be_nested_str_weak(current_time), - /* K15 */ be_nested_str_weak(start_time), - /* K16 */ be_nested_str_weak(tasmota), - /* K17 */ be_nested_str_weak(scale_uint), - /* K18 */ be_nested_str_weak(engine), - /* K19 */ be_nested_str_weak(time_ms), - /* K20 */ be_nested_str_weak(_start_value_providers), - /* K21 */ be_nested_str_weak(init), - /* K22 */ be_nested_str_weak(values), - /* K23 */ be_nested_str_weak(animation), - /* K24 */ be_nested_str_weak(is_value_provider), - /* K25 */ be_nested_str_weak(start), - /* K26 */ be_nested_str_weak(stop_iteration), +// compact class 'Animation' ktab size: 34, total: 68 (saved 272 bytes) +static const bvalue be_ktab_class_Animation[34] = { + /* K0 */ be_nested_str_weak(get_param_value), + /* K1 */ be_nested_str_weak(color), + /* K2 */ be_nested_str_weak(get_color_at), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(is_running), + /* K5 */ be_nested_str_weak(current_time), + /* K6 */ be_nested_str_weak(start_time), + /* K7 */ be_nested_str_weak(duration), + /* K8 */ be_nested_str_weak(loop), + /* K9 */ be_nested_str_weak(values), + /* K10 */ be_nested_str_weak(engine), + /* K11 */ be_nested_str_weak(time_ms), + /* K12 */ be_nested_str_weak(update), + /* K13 */ be_nested_str_weak(opacity), + /* K14 */ be_nested_str_weak(fill_pixels), + /* K15 */ be_nested_str_weak(_apply_opacity), + /* K16 */ be_nested_str_weak(animation), + /* K17 */ be_nested_str_weak(opacity_frame), + /* K18 */ be_nested_str_weak(width), + /* K19 */ be_nested_str_weak(frame_buffer), + /* K20 */ be_nested_str_weak(clear), + /* K21 */ be_nested_str_weak(start), + /* K22 */ be_nested_str_weak(render), + /* K23 */ be_nested_str_weak(apply_opacity), + /* K24 */ be_nested_str_weak(int), + /* K25 */ be_nested_str_weak(_start_value_providers), + /* K26 */ be_nested_str_weak(tasmota), + /* K27 */ be_nested_str_weak(scale_uint), + /* K28 */ be_nested_str_weak(Animation_X28_X25s_X2C_X20priority_X3D_X25s_X2C_X20duration_X3D_X25s_X2C_X20loop_X3D_X25s_X2C_X20running_X3D_X25s_X29), + /* K29 */ be_nested_str_weak(name), + /* K30 */ be_nested_str_weak(priority), + /* K31 */ be_nested_str_weak(is_value_provider), + /* K32 */ be_nested_str_weak(stop_iteration), + /* K33 */ be_nested_str_weak(init), }; extern const bclass be_class_Animation; /******************************************************************** -** Solidified function: tostring +** Solidified function: get_color_at ********************************************************************/ -be_local_closure(class_Animation_tostring, /* name */ +be_local_closure(class_Animation_get_color_at, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ + 7, /* nstack */ + 3, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -16831,18 +16927,14 @@ be_local_closure(class_Animation_tostring, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Animation, /* shared constants */ - be_str_weak(tostring), + be_str_weak(get_color_at), &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x60040018, // 0000 GETGBL R1 G24 - 0x58080000, // 0001 LDCONST R2 K0 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x88100102, // 0003 GETMBR R4 R0 K2 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x88180104, // 0005 GETMBR R6 R0 K4 - 0x881C0105, // 0006 GETMBR R7 R0 K5 - 0x7C040C00, // 0007 CALL R1 6 - 0x80040200, // 0008 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x58140001, // 0001 LDCONST R5 K1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C0C0600, // 0003 CALL R3 3 + 0x80040600, // 0004 RET 1 R3 }) ) ); @@ -16866,8 +16958,8 @@ be_local_closure(class_Animation_get_color, /* name */ be_str_weak(get_color), &be_const_str_solidified, ( &(const binstruction[ 5]) { /* code */ - 0x8C080106, // 0000 GETMET R2 R0 K6 - 0x58100007, // 0001 LDCONST R4 K7 + 0x8C080102, // 0000 GETMET R2 R0 K2 + 0x58100003, // 0001 LDCONST R4 K3 0x5C140200, // 0002 MOVE R5 R1 0x7C080600, // 0003 CALL R2 3 0x80040400, // 0004 RET 1 R2 @@ -16878,12 +16970,12 @@ be_local_closure(class_Animation_get_color, /* name */ /******************************************************************** -** Solidified function: get_color_at +** Solidified function: update ********************************************************************/ -be_local_closure(class_Animation_get_color_at, /* name */ +be_local_closure(class_Animation_update, /* name */ be_nested_proto( - 7, /* nstack */ - 3, /* argc */ + 9, /* nstack */ + 2, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -16891,14 +16983,38 @@ be_local_closure(class_Animation_get_color_at, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Animation, /* shared constants */ - be_str_weak(get_color_at), + be_str_weak(update), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C0C0108, // 0000 GETMET R3 R0 K8 - 0x58140009, // 0001 LDCONST R5 K9 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C0C0600, // 0003 CALL R3 3 + ( &(const binstruction[29]) { /* code */ + 0x88080104, // 0000 GETMBR R2 R0 K4 + 0x5C0C0400, // 0001 MOVE R3 R2 + 0x740E0001, // 0002 JMPT R3 #0005 + 0x500C0000, // 0003 LDBOOL R3 0 0 0x80040600, // 0004 RET 1 R3 + 0x90020A01, // 0005 SETMBR R0 K5 R1 + 0x880C0105, // 0006 GETMBR R3 R0 K5 + 0x88100106, // 0007 GETMBR R4 R0 K6 + 0x040C0604, // 0008 SUB R3 R3 R4 + 0x88100107, // 0009 GETMBR R4 R0 K7 + 0x88140108, // 000A GETMBR R5 R0 K8 + 0x24180903, // 000B GT R6 R4 K3 + 0x781A000D, // 000C JMPF R6 #001B + 0x28180604, // 000D GE R6 R3 R4 + 0x781A000B, // 000E JMPF R6 #001B + 0x78160005, // 000F JMPF R5 #0016 + 0x0C180604, // 0010 DIV R6 R3 R4 + 0x881C0106, // 0011 GETMBR R7 R0 K6 + 0x08200C04, // 0012 MUL R8 R6 R4 + 0x001C0E08, // 0013 ADD R7 R7 R8 + 0x90020C07, // 0014 SETMBR R0 K6 R7 + 0x70020004, // 0015 JMP #001B + 0x88180109, // 0016 GETMBR R6 R0 K9 + 0x501C0000, // 0017 LDBOOL R7 0 0 + 0x981A0807, // 0018 SETIDX R6 K4 R7 + 0x50180000, // 0019 LDBOOL R6 0 0 + 0x80040C00, // 001A RET 1 R6 + 0x50180200, // 001B LDBOOL R6 1 0 + 0x80040C00, // 001C RET 1 R6 }) ) ); @@ -16910,7 +17026,7 @@ be_local_closure(class_Animation_get_color_at, /* name */ ********************************************************************/ be_local_closure(class_Animation_render, /* name */ be_nested_proto( - 9, /* nstack */ + 11, /* nstack */ 3, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -16921,8 +17037,8 @@ be_local_closure(class_Animation_render, /* name */ &be_ktab_class_Animation, /* shared constants */ be_str_weak(render), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x880C0105, // 0000 GETMBR R3 R0 K5 + ( &(const binstruction[30]) { /* code */ + 0x880C0104, // 0000 GETMBR R3 R0 K4 0x5C100600, // 0001 MOVE R4 R3 0x78120002, // 0002 JMPF R4 #0006 0x4C100000, // 0003 LDNIL R4 @@ -16930,22 +17046,28 @@ be_local_closure(class_Animation_render, /* name */ 0x78120001, // 0005 JMPF R4 #0008 0x50100000, // 0006 LDBOOL R4 0 0 0x80040800, // 0007 RET 1 R4 - 0x8C10010A, // 0008 GETMET R4 R0 K10 - 0x5C180400, // 0009 MOVE R6 R2 - 0x7C100400, // 000A CALL R4 2 - 0x88100109, // 000B GETMBR R4 R0 K9 - 0x8814010B, // 000C GETMBR R5 R0 K11 - 0x8C18030C, // 000D GETMET R6 R1 K12 - 0x5C200800, // 000E MOVE R8 R4 - 0x7C180400, // 000F CALL R6 2 - 0x541A00FE, // 0010 LDINT R6 255 - 0x14180A06, // 0011 LT R6 R5 R6 - 0x781A0002, // 0012 JMPF R6 #0016 - 0x8C18030D, // 0013 GETMET R6 R1 K13 - 0x5C200A00, // 0014 MOVE R8 R5 - 0x7C180400, // 0015 CALL R6 2 - 0x50180200, // 0016 LDBOOL R6 1 0 - 0x80040C00, // 0017 RET 1 R6 + 0x4C100000, // 0008 LDNIL R4 + 0x1C100404, // 0009 EQ R4 R2 R4 + 0x78120001, // 000A JMPF R4 #000D + 0x8810010A, // 000B GETMBR R4 R0 K10 + 0x8808090B, // 000C GETMBR R2 R4 K11 + 0x8C10010C, // 000D GETMET R4 R0 K12 + 0x5C180400, // 000E MOVE R6 R2 + 0x7C100400, // 000F CALL R4 2 + 0x88100101, // 0010 GETMBR R4 R0 K1 + 0x8814010D, // 0011 GETMBR R5 R0 K13 + 0x20180903, // 0012 NE R6 R4 K3 + 0x781A0002, // 0013 JMPF R6 #0017 + 0x8C18030E, // 0014 GETMET R6 R1 K14 + 0x5C200800, // 0015 MOVE R8 R4 + 0x7C180400, // 0016 CALL R6 2 + 0x8C18010F, // 0017 GETMET R6 R0 K15 + 0x5C200200, // 0018 MOVE R8 R1 + 0x5C240A00, // 0019 MOVE R9 R5 + 0x5C280400, // 001A MOVE R10 R2 + 0x7C180800, // 001B CALL R6 4 + 0x50180200, // 001C LDBOOL R6 1 0 + 0x80040C00, // 001D RET 1 R6 }) ) ); @@ -16953,12 +17075,12 @@ be_local_closure(class_Animation_render, /* name */ /******************************************************************** -** Solidified function: get_progress +** Solidified function: _apply_opacity ********************************************************************/ -be_local_closure(class_Animation_get_progress, /* name */ +be_local_closure(class_Animation__apply_opacity, /* name */ be_nested_proto( - 12, /* nstack */ - 1, /* argc */ + 9, /* nstack */ + 4, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -16966,33 +17088,61 @@ be_local_closure(class_Animation_get_progress, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Animation, /* shared constants */ - be_str_weak(get_progress), + be_str_weak(_apply_opacity), &be_const_str_solidified, - ( &(const binstruction[24]) { /* code */ - 0x88040103, // 0000 GETMBR R1 R0 K3 - 0x18080307, // 0001 LE R2 R1 K7 - 0x780A0000, // 0002 JMPF R2 #0004 - 0x80060E00, // 0003 RET 1 K7 - 0x8808010E, // 0004 GETMBR R2 R0 K14 - 0x880C010F, // 0005 GETMBR R3 R0 K15 - 0x04080403, // 0006 SUB R2 R2 R3 - 0x100C0401, // 0007 MOD R3 R2 R1 - 0x88100104, // 0008 GETMBR R4 R0 K4 - 0x5C140800, // 0009 MOVE R5 R4 - 0x74160003, // 000A JMPT R5 #000F - 0x28140401, // 000B GE R5 R2 R1 - 0x78160001, // 000C JMPF R5 #000F - 0x541600FE, // 000D LDINT R5 255 - 0x80040A00, // 000E RET 1 R5 - 0xB8162000, // 000F GETNGBL R5 K16 - 0x8C140B11, // 0010 GETMET R5 R5 K17 - 0x5C1C0600, // 0011 MOVE R7 R3 - 0x58200007, // 0012 LDCONST R8 K7 - 0x5C240200, // 0013 MOVE R9 R1 - 0x58280007, // 0014 LDCONST R10 K7 - 0x542E00FE, // 0015 LDINT R11 255 - 0x7C140C00, // 0016 CALL R5 6 - 0x80040A00, // 0017 RET 1 R5 + ( &(const binstruction[52]) { /* code */ + 0x6010000F, // 0000 GETGBL R4 G15 + 0x5C140400, // 0001 MOVE R5 R2 + 0xB81A2000, // 0002 GETNGBL R6 K16 + 0x88180D10, // 0003 GETMBR R6 R6 K16 + 0x7C100400, // 0004 CALL R4 2 + 0x78120021, // 0005 JMPF R4 #0028 + 0x5C100400, // 0006 MOVE R4 R2 + 0x88140111, // 0007 GETMBR R5 R0 K17 + 0x4C180000, // 0008 LDNIL R6 + 0x1C140A06, // 0009 EQ R5 R5 R6 + 0x74160004, // 000A JMPT R5 #0010 + 0x88140111, // 000B GETMBR R5 R0 K17 + 0x88140B12, // 000C GETMBR R5 R5 K18 + 0x88180312, // 000D GETMBR R6 R1 K18 + 0x20140A06, // 000E NE R5 R5 R6 + 0x78160004, // 000F JMPF R5 #0015 + 0xB8162000, // 0010 GETNGBL R5 K16 + 0x8C140B13, // 0011 GETMET R5 R5 K19 + 0x881C0312, // 0012 GETMBR R7 R1 K18 + 0x7C140400, // 0013 CALL R5 2 + 0x90022205, // 0014 SETMBR R0 K17 R5 + 0x88140111, // 0015 GETMBR R5 R0 K17 + 0x8C140B14, // 0016 GETMET R5 R5 K20 + 0x7C140200, // 0017 CALL R5 1 + 0x88140904, // 0018 GETMBR R5 R4 K4 + 0x74160002, // 0019 JMPT R5 #001D + 0x8C140915, // 001A GETMET R5 R4 K21 + 0x881C0106, // 001B GETMBR R7 R0 K6 + 0x7C140400, // 001C CALL R5 2 + 0x8C14090C, // 001D GETMET R5 R4 K12 + 0x5C1C0600, // 001E MOVE R7 R3 + 0x7C140400, // 001F CALL R5 2 + 0x8C140916, // 0020 GETMET R5 R4 K22 + 0x881C0111, // 0021 GETMBR R7 R0 K17 + 0x5C200600, // 0022 MOVE R8 R3 + 0x7C140600, // 0023 CALL R5 3 + 0x8C140317, // 0024 GETMET R5 R1 K23 + 0x881C0111, // 0025 GETMBR R7 R0 K17 + 0x7C140400, // 0026 CALL R5 2 + 0x7002000A, // 0027 JMP #0033 + 0x60100004, // 0028 GETGBL R4 G4 + 0x5C140400, // 0029 MOVE R5 R2 + 0x7C100200, // 002A CALL R4 1 + 0x1C100918, // 002B EQ R4 R4 K24 + 0x78120005, // 002C JMPF R4 #0033 + 0x541200FE, // 002D LDINT R4 255 + 0x14100404, // 002E LT R4 R2 R4 + 0x78120002, // 002F JMPF R4 #0033 + 0x8C100317, // 0030 GETMET R4 R1 K23 + 0x5C180400, // 0031 MOVE R6 R2 + 0x7C100400, // 0032 CALL R4 2 + 0x80000000, // 0033 RET 0 }) ) ); @@ -17016,17 +17166,17 @@ be_local_closure(class_Animation_on_param_changed, /* name */ be_str_weak(on_param_changed), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ - 0x1C0C0305, // 0000 EQ R3 R1 K5 + 0x1C0C0304, // 0000 EQ R3 R1 K4 0x780E000E, // 0001 JMPF R3 #0011 0x500C0200, // 0002 LDBOOL R3 1 0 0x1C0C0403, // 0003 EQ R3 R2 R3 0x780E0008, // 0004 JMPF R3 #000E - 0x880C0112, // 0005 GETMBR R3 R0 K18 - 0x880C0713, // 0006 GETMBR R3 R3 K19 - 0x90021E03, // 0007 SETMBR R0 K15 R3 - 0x8810010F, // 0008 GETMBR R4 R0 K15 - 0x90021C04, // 0009 SETMBR R0 K14 R4 - 0x8C100114, // 000A GETMET R4 R0 K20 + 0x880C010A, // 0005 GETMBR R3 R0 K10 + 0x880C070B, // 0006 GETMBR R3 R3 K11 + 0x90020C03, // 0007 SETMBR R0 K6 R3 + 0x88100106, // 0008 GETMBR R4 R0 K6 + 0x90020A04, // 0009 SETMBR R0 K5 R4 + 0x8C100119, // 000A GETMET R4 R0 K25 0x5C180600, // 000B MOVE R6 R3 0x7C100400, // 000C CALL R4 2 0x70020002, // 000D JMP #0011 @@ -17041,12 +17191,12 @@ be_local_closure(class_Animation_on_param_changed, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: get_progress ********************************************************************/ -be_local_closure(class_Animation_init, /* name */ +be_local_closure(class_Animation_get_progress, /* name */ be_nested_proto( - 5, /* nstack */ - 2, /* argc */ + 12, /* nstack */ + 1, /* argc */ 10, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -17054,18 +17204,65 @@ be_local_closure(class_Animation_init, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Animation, /* shared constants */ - be_str_weak(init), + be_str_weak(get_progress), + &be_const_str_solidified, + ( &(const binstruction[24]) { /* code */ + 0x88040107, // 0000 GETMBR R1 R0 K7 + 0x18080303, // 0001 LE R2 R1 K3 + 0x780A0000, // 0002 JMPF R2 #0004 + 0x80060600, // 0003 RET 1 K3 + 0x88080105, // 0004 GETMBR R2 R0 K5 + 0x880C0106, // 0005 GETMBR R3 R0 K6 + 0x04080403, // 0006 SUB R2 R2 R3 + 0x100C0401, // 0007 MOD R3 R2 R1 + 0x88100108, // 0008 GETMBR R4 R0 K8 + 0x5C140800, // 0009 MOVE R5 R4 + 0x74160003, // 000A JMPT R5 #000F + 0x28140401, // 000B GE R5 R2 R1 + 0x78160001, // 000C JMPF R5 #000F + 0x541600FE, // 000D LDINT R5 255 + 0x80040A00, // 000E RET 1 R5 + 0xB8163400, // 000F GETNGBL R5 K26 + 0x8C140B1B, // 0010 GETMET R5 R5 K27 + 0x5C1C0600, // 0011 MOVE R7 R3 + 0x58200003, // 0012 LDCONST R8 K3 + 0x5C240200, // 0013 MOVE R9 R1 + 0x58280003, // 0014 LDCONST R10 K3 + 0x542E00FE, // 0015 LDINT R11 255 + 0x7C140C00, // 0016 CALL R5 6 + 0x80040A00, // 0017 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(class_Animation_tostring, /* 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_Animation, /* shared constants */ + be_str_weak(tostring), &be_const_str_solidified, ( &(const binstruction[ 9]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080515, // 0003 GETMET R2 R2 K21 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x90021F07, // 0006 SETMBR R0 K15 K7 - 0x90021D07, // 0007 SETMBR R0 K14 K7 - 0x80000000, // 0008 RET 0 + 0x60040018, // 0000 GETGBL R1 G24 + 0x5808001C, // 0001 LDCONST R2 K28 + 0x880C011D, // 0002 GETMBR R3 R0 K29 + 0x8810011E, // 0003 GETMBR R4 R0 K30 + 0x88140107, // 0004 GETMBR R5 R0 K7 + 0x88180108, // 0005 GETMBR R6 R0 K8 + 0x881C0104, // 0006 GETMBR R7 R0 K4 + 0x7C040C00, // 0007 CALL R1 6 + 0x80040200, // 0008 RET 1 R1 }) ) ); @@ -17089,20 +17286,20 @@ be_local_closure(class_Animation_start, /* name */ be_str_weak(start), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0x88080116, // 0000 GETMBR R2 R0 K22 + 0x88080109, // 0000 GETMBR R2 R0 K9 0x500C0200, // 0001 LDBOOL R3 1 0 - 0x980A0A03, // 0002 SETIDX R2 K5 R3 + 0x980A0803, // 0002 SETIDX R2 K4 R3 0x4C080000, // 0003 LDNIL R2 0x20080202, // 0004 NE R2 R1 R2 0x780A0001, // 0005 JMPF R2 #0008 0x5C080200, // 0006 MOVE R2 R1 0x70020001, // 0007 JMP #000A - 0x88080112, // 0008 GETMBR R2 R0 K18 - 0x88080513, // 0009 GETMBR R2 R2 K19 - 0x90021E02, // 000A SETMBR R0 K15 R2 - 0x880C010F, // 000B GETMBR R3 R0 K15 - 0x90021C03, // 000C SETMBR R0 K14 R3 - 0x8C0C0114, // 000D GETMET R3 R0 K20 + 0x8808010A, // 0008 GETMBR R2 R0 K10 + 0x8808050B, // 0009 GETMBR R2 R2 K11 + 0x90020C02, // 000A SETMBR R0 K6 R2 + 0x880C0106, // 000B GETMBR R3 R0 K6 + 0x90020A03, // 000C SETMBR R0 K5 R3 + 0x8C0C0119, // 000D GETMET R3 R0 K25 0x5C140400, // 000E MOVE R5 R2 0x7C0C0400, // 000F CALL R3 2 0x80040000, // 0010 RET 1 R0 @@ -17130,18 +17327,18 @@ be_local_closure(class_Animation__start_value_providers, /* name */ &be_const_str_solidified, ( &(const binstruction[26]) { /* code */ 0x60080010, // 0000 GETGBL R2 G16 - 0x880C0116, // 0001 GETMBR R3 R0 K22 + 0x880C0109, // 0001 GETMBR R3 R0 K9 0x7C080200, // 0002 CALL R2 1 0xA8020011, // 0003 EXBLK 0 #0016 0x5C0C0400, // 0004 MOVE R3 R2 0x7C0C0000, // 0005 CALL R3 0 - 0xB8122E00, // 0006 GETNGBL R4 K23 - 0x8C100918, // 0007 GETMET R4 R4 K24 + 0xB8122000, // 0006 GETNGBL R4 K16 + 0x8C10091F, // 0007 GETMET R4 R4 K31 0x5C180600, // 0008 MOVE R6 R3 0x7C100400, // 0009 CALL R4 2 0x78120009, // 000A JMPF R4 #0015 0xA8020004, // 000B EXBLK 0 #0011 - 0x8C100719, // 000C GETMET R4 R3 K25 + 0x8C100715, // 000C GETMET R4 R3 K21 0x5C180200, // 000D MOVE R6 R1 0x7C100400, // 000E CALL R4 2 0xA8040001, // 000F EXBLK 1 1 @@ -17151,7 +17348,7 @@ be_local_closure(class_Animation__start_value_providers, /* name */ 0x70020000, // 0013 JMP #0015 0xB0080000, // 0014 RAISE 2 R0 R0 0x7001FFED, // 0015 JMP #0004 - 0x5808001A, // 0016 LDCONST R2 K26 + 0x58080020, // 0016 LDCONST R2 K32 0xAC080200, // 0017 CATCH R2 1 0 0xB0080000, // 0018 RAISE 2 R0 R0 0x80000000, // 0019 RET 0 @@ -17162,11 +17359,11 @@ be_local_closure(class_Animation__start_value_providers, /* name */ /******************************************************************** -** Solidified function: update +** Solidified function: init ********************************************************************/ -be_local_closure(class_Animation_update, /* name */ +be_local_closure(class_Animation_init, /* name */ be_nested_proto( - 9, /* nstack */ + 5, /* nstack */ 2, /* argc */ 10, /* varg */ 0, /* has upvals */ @@ -17175,38 +17372,20 @@ be_local_closure(class_Animation_update, /* name */ NULL, /* no sub protos */ 1, /* has constants */ &be_ktab_class_Animation, /* shared constants */ - be_str_weak(update), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[29]) { /* code */ - 0x88080105, // 0000 GETMBR R2 R0 K5 - 0x5C0C0400, // 0001 MOVE R3 R2 - 0x740E0001, // 0002 JMPT R3 #0005 - 0x500C0000, // 0003 LDBOOL R3 0 0 - 0x80040600, // 0004 RET 1 R3 - 0x90021C01, // 0005 SETMBR R0 K14 R1 - 0x880C010E, // 0006 GETMBR R3 R0 K14 - 0x8810010F, // 0007 GETMBR R4 R0 K15 - 0x040C0604, // 0008 SUB R3 R3 R4 - 0x88100103, // 0009 GETMBR R4 R0 K3 - 0x88140104, // 000A GETMBR R5 R0 K4 - 0x24180907, // 000B GT R6 R4 K7 - 0x781A000D, // 000C JMPF R6 #001B - 0x28180604, // 000D GE R6 R3 R4 - 0x781A000B, // 000E JMPF R6 #001B - 0x78160005, // 000F JMPF R5 #0016 - 0x0C180604, // 0010 DIV R6 R3 R4 - 0x881C010F, // 0011 GETMBR R7 R0 K15 - 0x08200C04, // 0012 MUL R8 R6 R4 - 0x001C0E08, // 0013 ADD R7 R7 R8 - 0x90021E07, // 0014 SETMBR R0 K15 R7 - 0x70020004, // 0015 JMP #001B - 0x88180116, // 0016 GETMBR R6 R0 K22 - 0x501C0000, // 0017 LDBOOL R7 0 0 - 0x981A0A07, // 0018 SETIDX R6 K5 R7 - 0x50180000, // 0019 LDBOOL R6 0 0 - 0x80040C00, // 001A RET 1 R6 - 0x50180200, // 001B LDBOOL R6 1 0 - 0x80040C00, // 001C RET 1 R6 + ( &(const binstruction[11]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080521, // 0003 GETMET R2 R2 K33 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x90020D03, // 0006 SETMBR R0 K6 K3 + 0x90020B03, // 0007 SETMBR R0 K5 K3 + 0x4C080000, // 0008 LDNIL R2 + 0x90022202, // 0009 SETMBR R0 K17 R2 + 0x80000000, // 000A RET 0 }) ) ); @@ -17218,21 +17397,13 @@ be_local_closure(class_Animation_update, /* name */ ********************************************************************/ extern const bclass be_class_ParameterizedObject; be_local_class(Animation, - 2, + 3, &be_class_ParameterizedObject, - be_nested_map(13, + be_nested_map(15, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(tostring, -1), be_const_closure(class_Animation_tostring_closure) }, - { be_const_key_weak(get_color, -1), be_const_closure(class_Animation_get_color_closure) }, - { be_const_key_weak(update, -1), be_const_closure(class_Animation_update_closure) }, - { be_const_key_weak(render, -1), be_const_closure(class_Animation_render_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_Animation_init_closure) }, - { be_const_key_weak(current_time, -1), be_const_var(1) }, - { be_const_key_weak(on_param_changed, 4), be_const_closure(class_Animation_on_param_changed_closure) }, - { be_const_key_weak(get_progress, 5), be_const_closure(class_Animation_get_progress_closure) }, - { be_const_key_weak(start, -1), be_const_closure(class_Animation_start_closure) }, - { be_const_key_weak(_start_value_providers, -1), be_const_closure(class_Animation__start_value_providers_closure) }, - { be_const_key_weak(start_time, -1), be_const_var(0) }, + { be_const_key_weak(opacity_frame, 2), be_const_var(2) }, + { be_const_key_weak(get_color_at, 6), be_const_closure(class_Animation_get_color_at_closure) }, + { be_const_key_weak(init, 5), be_const_closure(class_Animation_init_closure) }, { be_const_key_weak(PARAMS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(7, ( (struct bmapnode*) &(const bmapnode[]) { @@ -17260,16 +17431,15 @@ be_local_class(Animation, { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, })) ) } )) }, { be_const_key_weak(opacity, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { - be_const_map( * be_nested_map(3, + be_const_map( * be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(default, -1), be_const_int(255) }, - { be_const_key_weak(min, -1), be_const_int(0) }, - { be_const_key_weak(max, 1), be_const_int(255) }, + { be_const_key_weak(type, -1), be_nested_str_weak(any) }, })) ) } )) }, { be_const_key_weak(loop, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { be_const_map( * be_nested_map(2, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(default, -1), be_const_bool(1) }, + { be_const_key_weak(default, -1), be_const_bool(0) }, { be_const_key_weak(type, -1), be_nested_str_weak(bool) }, })) ) } )) }, { be_const_key_weak(duration, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { @@ -17279,7 +17449,17 @@ be_local_class(Animation, { be_const_key_weak(min, -1), be_const_int(0) }, })) ) } )) }, })) ) } )) }, - { be_const_key_weak(get_color_at, 2), be_const_closure(class_Animation_get_color_at_closure) }, + { be_const_key_weak(update, -1), be_const_closure(class_Animation_update_closure) }, + { be_const_key_weak(_start_value_providers, -1), be_const_closure(class_Animation__start_value_providers_closure) }, + { be_const_key_weak(get_progress, -1), be_const_closure(class_Animation_get_progress_closure) }, + { be_const_key_weak(render, 13), be_const_closure(class_Animation_render_closure) }, + { be_const_key_weak(start, -1), be_const_closure(class_Animation_start_closure) }, + { be_const_key_weak(tostring, -1), be_const_closure(class_Animation_tostring_closure) }, + { be_const_key_weak(current_time, 9), be_const_var(1) }, + { be_const_key_weak(get_color, 8), be_const_closure(class_Animation_get_color_closure) }, + { be_const_key_weak(start_time, -1), be_const_var(0) }, + { be_const_key_weak(on_param_changed, 14), be_const_closure(class_Animation_on_param_changed_closure) }, + { be_const_key_weak(_apply_opacity, -1), be_const_closure(class_Animation__apply_opacity_closure) }, })), be_str_weak(Animation) ); @@ -17289,7 +17469,7 @@ be_local_class(Animation, ********************************************************************/ be_local_closure(is_user_function, /* name */ be_nested_proto( - 5, /* nstack */ + 4, /* nstack */ 1, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -17298,19 +17478,19 @@ be_local_closure(is_user_function, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_animation_user_functions), + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(_user_functions), /* K2 */ be_nested_str_weak(contains), }), be_str_weak(is_user_function), &be_const_str_solidified, ( &(const binstruction[ 6]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080301, // 0001 GETMBR R2 R1 K1 - 0x8C080502, // 0002 GETMET R2 R2 K2 - 0x5C100000, // 0003 MOVE R4 R0 - 0x7C080400, // 0004 CALL R2 2 - 0x80040400, // 0005 RET 1 R2 + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x88040301, // 0001 GETMBR R1 R1 K1 + 0x8C040302, // 0002 GETMET R1 R1 K2 + 0x5C0C0000, // 0003 MOVE R3 R0 + 0x7C040400, // 0004 CALL R1 2 + 0x80040200, // 0005 RET 1 R1 }) ) ); @@ -17322,7 +17502,7 @@ be_local_closure(is_user_function, /* name */ ********************************************************************/ be_local_closure(register_user_function, /* name */ be_nested_proto( - 4, /* nstack */ + 3, /* nstack */ 2, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -17331,15 +17511,15 @@ be_local_closure(register_user_function, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(global), - /* K1 */ be_nested_str_weak(_animation_user_functions), + /* K0 */ be_nested_str_weak(animation), + /* K1 */ be_nested_str_weak(_user_functions), }), be_str_weak(register_user_function), &be_const_str_solidified, ( &(const binstruction[ 4]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x880C0501, // 0001 GETMBR R3 R2 K1 - 0x980C0001, // 0002 SETIDX R3 R0 R1 + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x88080501, // 0001 GETMBR R2 R2 K1 + 0x98080001, // 0002 SETIDX R2 R0 R1 0x80000000, // 0003 RET 0 }) ) @@ -17648,7 +17828,7 @@ be_local_closure(class_PaletteMeterAnimation__update_value_buffer, /* name */ 0x881C0103, // 0020 GETMBR R7 R0 K3 0x14200C05, // 0021 LT R8 R6 R5 0x78220001, // 0022 JMPF R8 #0025 - 0x54220063, // 0023 LDINT R8 100 + 0x542200FE, // 0023 LDINT R8 255 0x70020000, // 0024 JMP #0026 0x58200007, // 0025 LDCONST R8 K7 0x981C0C08, // 0026 SETIDX R7 R6 R8 @@ -19659,16 +19839,17 @@ be_local_closure(animation_init, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ + ( &(const bvalue[ 6]) { /* constants */ /* K0 */ be_nested_str_weak(animation), /* K1 */ be_nested_str_weak(_ntv), /* K2 */ be_nested_str_weak(event_manager), /* K3 */ be_nested_str_weak(EventManager), /* K4 */ be_nested_str_weak(member), + /* K5 */ be_nested_str_weak(_user_functions), }), be_str_weak(animation_init), &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ + ( &(const binstruction[13]) { /* code */ 0x6004000B, // 0000 GETGBL R1 G11 0x58080000, // 0001 LDCONST R2 K0 0x7C040200, // 0002 CALL R1 1 @@ -19678,7 +19859,10 @@ be_local_closure(animation_init, /* name */ 0x90060402, // 0006 SETMBR R1 K2 R2 0x84080000, // 0007 CLOSURE R2 P0 0x90060802, // 0008 SETMBR R1 K4 R2 - 0x80040200, // 0009 RET 1 R1 + 0x60080013, // 0009 GETGBL R2 G19 + 0x7C080000, // 000A CALL R2 0 + 0x90060A02, // 000B SETMBR R1 K5 R2 + 0x80040200, // 000C RET 1 R1 }) ) ); @@ -22496,129 +22680,128 @@ be_local_class(ValueProvider, ********************************************************************/ be_local_module(animation, "animation", - be_nested_map(121, + be_nested_map(120, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(static_color, 21), be_const_class(be_class_StaticColorProvider) }, - { be_const_key_weak(rich_palette_animation, 79), be_const_class(be_class_RichPaletteAnimation) }, - { be_const_key_weak(scale_animation, 64), be_const_class(be_class_ScaleAnimation) }, - { be_const_key_weak(rich_palette, 15), be_const_class(be_class_RichPaletteColorProvider) }, - { be_const_key_weak(color_cycle, -1), be_const_class(be_class_ColorCycleColorProvider) }, - { be_const_key_weak(value_provider, -1), be_const_class(be_class_ValueProvider) }, - { be_const_key_weak(palette_gradient_animation, -1), be_const_class(be_class_PaletteGradientAnimation) }, - { be_const_key_weak(set_event_active, -1), be_const_closure(set_event_active_closure) }, - { be_const_key_weak(sparkle_rainbow, -1), be_const_closure(sparkle_rainbow_closure) }, - { be_const_key_weak(animation_engine, -1), be_const_class(be_class_AnimationEngine) }, - { be_const_key_weak(gradient_animation, 66), be_const_class(be_class_GradientAnimation) }, - { be_const_key_weak(twinkle_gentle, -1), be_const_closure(twinkle_gentle_closure) }, - { be_const_key_weak(pulsating_animation, -1), be_const_closure(pulsating_animation_closure) }, - { be_const_key_weak(TRIANGLE, -1), be_const_int(2) }, - { be_const_key_weak(sparkle_animation, -1), be_const_class(be_class_SparkleAnimation) }, - { be_const_key_weak(jitter_position, -1), be_const_closure(jitter_position_closure) }, - { be_const_key_weak(pulsating_color, -1), be_const_closure(pulsating_color_provider_closure) }, + { be_const_key_weak(SINE, 5), be_const_int(5) }, + { be_const_key_weak(PALETTE_OCEAN, 109), be_const_bytes_instance(00000080400000FF8000FFFFC000FF80FF008000) }, + { be_const_key_weak(PALETTE_SUNSET_TICKS, 23), be_const_bytes_instance(28FF450028FF8C0028FFD70028FF69B4288000802819197000000080) }, { be_const_key_weak(sparkle_white, -1), be_const_closure(sparkle_white_closure) }, - { be_const_key_weak(twinkle_intense, 43), be_const_closure(twinkle_intense_closure) }, - { be_const_key_weak(twinkle_classic, 16), be_const_closure(twinkle_classic_closure) }, - { be_const_key_weak(beacon_animation, -1), be_const_class(be_class_BeaconAnimation) }, - { be_const_key_weak(PALETTE_FOREST, -1), be_const_bytes_instance(0000640040228B228032CD32C09AFF9AFF90EE90) }, - { be_const_key_weak(strip_length, -1), be_const_class(be_class_StripLengthProvider) }, - { be_const_key_weak(is_color_provider, 30), be_const_closure(is_color_provider_closure) }, - { be_const_key_weak(ease_out, -1), be_const_closure(ease_out_closure) }, - { be_const_key_weak(COSINE, -1), be_const_int(4) }, - { be_const_key_weak(twinkle_animation, -1), be_const_class(be_class_TwinkleAnimation) }, - { be_const_key_weak(cosine_osc, -1), be_const_closure(cosine_osc_closure) }, - { be_const_key_weak(comet_animation, 103), be_const_class(be_class_CometAnimation) }, - { be_const_key_weak(noise_single_color, -1), be_const_closure(noise_single_color_closure) }, - { be_const_key_weak(parameterized_object, -1), be_const_class(be_class_ParameterizedObject) }, - { be_const_key_weak(elastic, 36), be_const_closure(elastic_closure) }, - { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, - { be_const_key_weak(bounce_constrained, -1), be_const_closure(bounce_constrained_closure) }, - { be_const_key_weak(jitter_animation, -1), be_const_class(be_class_JitterAnimation) }, - { be_const_key_weak(register_event_handler, 112), be_const_closure(register_event_handler_closure) }, - { be_const_key_weak(shift_scroll_left, -1), be_const_closure(shift_scroll_left_closure) }, - { be_const_key_weak(breathe_color, 78), be_const_class(be_class_BreatheColorProvider) }, - { be_const_key_weak(composite_color, -1), be_const_class(be_class_CompositeColorProvider) }, - { be_const_key_weak(BOUNCE, -1), be_const_int(9) }, - { be_const_key_weak(plasma_animation, -1), be_const_class(be_class_PlasmaAnimation) }, - { be_const_key_weak(EASE_OUT, 48), be_const_int(7) }, - { be_const_key_weak(SQUARE, 89), be_const_int(3) }, - { be_const_key_weak(ease_in, 40), be_const_closure(ease_in_closure) }, - { be_const_key_weak(jitter_brightness, -1), be_const_closure(jitter_brightness_closure) }, - { be_const_key_weak(sine_osc, -1), be_const_closure(sine_osc_closure) }, - { be_const_key_weak(twinkle_rainbow, 68), be_const_closure(twinkle_rainbow_closure) }, - { be_const_key_weak(clear_all_event_handlers, -1), be_const_closure(clear_all_event_handlers_closure) }, - { be_const_key_weak(ramp, -1), be_const_closure(ramp_closure) }, - { be_const_key_weak(breathe_animation, -1), be_const_class(be_class_BreatheAnimation) }, - { be_const_key_weak(palette_pattern_animation, 84), be_const_class(be_class_PalettePatternAnimation) }, - { be_const_key_weak(PALETTE_RGB, -1), be_const_bytes_instance(00FF00008000FF00FF0000FF) }, - { be_const_key_weak(crenel_position_animation, -1), be_const_class(be_class_CrenelPositionAnimation) }, - { be_const_key_weak(create_closure_value, -1), be_const_closure(create_closure_value_closure) }, - { be_const_key_weak(init_strip, 34), be_const_closure(animation_init_strip_closure) }, - { be_const_key_weak(square, -1), be_const_closure(square_closure) }, - { be_const_key_weak(bounce_gravity, -1), be_const_closure(bounce_gravity_closure) }, - { be_const_key_weak(shift_fast_scroll, 75), be_const_closure(shift_fast_scroll_closure) }, - { be_const_key_weak(gradient_rainbow_linear, -1), be_const_closure(gradient_rainbow_linear_closure) }, - { be_const_key_weak(smooth, 29), be_const_closure(smooth_closure) }, - { be_const_key_weak(bounce_animation, -1), be_const_class(be_class_BounceAnimation) }, - { be_const_key_weak(gradient_two_color_linear, -1), be_const_closure(gradient_two_color_linear_closure) }, - { be_const_key_weak(get_user_function, 5), be_const_closure(get_user_function_closure) }, - { be_const_key_weak(is_value_provider, 114), be_const_closure(is_value_provider_closure) }, - { be_const_key_weak(version_string, -1), be_const_closure(animation_version_string_closure) }, - { be_const_key_weak(ELASTIC, -1), be_const_int(8) }, - { be_const_key_weak(shift_scroll_right, -1), be_const_closure(shift_scroll_right_closure) }, - { be_const_key_weak(color_provider, 71), be_const_class(be_class_ColorProvider) }, - { be_const_key_weak(register_user_function, 81), be_const_closure(register_user_function_closure) }, - { be_const_key_weak(SequenceManager, -1), be_const_class(be_class_SequenceManager) }, - { be_const_key_weak(is_user_function, -1), be_const_closure(is_user_function_closure) }, - { be_const_key_weak(animation, -1), be_const_class(be_class_Animation) }, - { be_const_key_weak(gradient_rainbow_radial, -1), be_const_closure(gradient_rainbow_radial_closure) }, - { be_const_key_weak(palette_wave_animation, 47), be_const_class(be_class_PaletteWaveAnimation) }, - { be_const_key_weak(LINEAR, 107), be_const_int(1) }, - { be_const_key_weak(event_handler, -1), be_const_class(be_class_EventHandler) }, - { be_const_key_weak(PALETTE_FIRE, 111), be_const_bytes_instance(000000004080000080FF0000C0FF8000FFFFFF00) }, - { be_const_key_weak(EventManager, 63), be_const_class(be_class_EventManager) }, - { be_const_key_weak(noise_rainbow, -1), be_const_closure(noise_rainbow_closure) }, - { be_const_key_weak(wave_animation, 94), be_const_class(be_class_WaveAnimation) }, - { be_const_key_weak(get_event_handlers, -1), be_const_closure(get_event_handlers_closure) }, - { be_const_key_weak(create_engine, -1), be_const_closure(create_engine_closure) }, - { be_const_key_weak(scale_grow, 80), be_const_closure(scale_grow_closure) }, - { be_const_key_weak(wave_custom, -1), be_const_closure(wave_custom_closure) }, - { be_const_key_weak(shift_animation, -1), be_const_class(be_class_ShiftAnimation) }, - { be_const_key_weak(bounce_basic, -1), be_const_closure(bounce_basic_closure) }, - { be_const_key_weak(sawtooth, -1), be_const_closure(sawtooth_closure) }, - { be_const_key_weak(PALETTE_OCEAN, -1), be_const_bytes_instance(00000080400000FF8000FFFFC000FF80FF008000) }, - { be_const_key_weak(static_value, -1), be_const_class(be_class_StaticValueProvider) }, - { be_const_key_weak(plasma_fast, 120), be_const_closure(plasma_fast_closure) }, - { be_const_key_weak(plasma_rainbow, -1), be_const_closure(plasma_rainbow_closure) }, - { be_const_key_weak(solid, 26), be_const_closure(solid_closure) }, - { be_const_key_weak(twinkle_solid, 20), be_const_closure(twinkle_solid_closure) }, - { be_const_key_weak(linear, -1), be_const_closure(linear_closure) }, - { be_const_key_weak(jitter_color, -1), be_const_closure(jitter_color_closure) }, - { be_const_key_weak(noise_animation, -1), be_const_class(be_class_NoiseAnimation) }, - { be_const_key_weak(jitter_all, -1), be_const_closure(jitter_all_closure) }, - { be_const_key_weak(unregister_event_handler, 9), be_const_closure(unregister_event_handler_closure) }, - { be_const_key_weak(palette_meter_animation, -1), be_const_class(be_class_PaletteMeterAnimation) }, - { be_const_key_weak(trigger_event, 35), be_const_closure(trigger_event_closure) }, - { be_const_key_weak(SAWTOOTH, -1), be_const_int(1) }, - { be_const_key_weak(frame_buffer, -1), be_const_class(be_class_FrameBuffer) }, - { be_const_key_weak(global, -1), be_const_closure(animation_global_closure) }, - { be_const_key_weak(bounce, 118), be_const_closure(bounce_closure) }, - { be_const_key_weak(list_user_functions, 70), be_const_closure(list_user_functions_closure) }, - { be_const_key_weak(PALETTE_SUNSET_TICKS, -1), be_const_bytes_instance(28FF450028FF8C0028FFD70028FF69B4288000802819197000000080) }, - { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, - { be_const_key_weak(oscillator_value, -1), be_const_class(be_class_OscillatorValueProvider) }, - { be_const_key_weak(scale_static, -1), be_const_closure(scale_static_closure) }, - { be_const_key_weak(wave_rainbow_sine, -1), be_const_closure(wave_rainbow_sine_closure) }, - { be_const_key_weak(wave_single_sine, 10), be_const_closure(wave_single_sine_closure) }, - { be_const_key_weak(SINE, -1), be_const_int(5) }, - { be_const_key_weak(VERSION, -1), be_const_int(65536) }, - { be_const_key_weak(closure_value, -1), be_const_class(be_class_ClosureValueProvider) }, - { be_const_key_weak(scale_oscillate, 3), be_const_closure(scale_oscillate_closure) }, - { be_const_key_weak(rich_palette_rainbow, 95), be_const_closure(rich_palette_rainbow_closure) }, { be_const_key_weak(get_registered_events, -1), be_const_closure(get_registered_events_closure) }, + { be_const_key_weak(elastic, -1), be_const_closure(elastic_closure) }, + { be_const_key_weak(plasma_animation, -1), be_const_class(be_class_PlasmaAnimation) }, + { be_const_key_weak(jitter_position, 82), be_const_closure(jitter_position_closure) }, + { be_const_key_weak(noise_animation, 18), be_const_class(be_class_NoiseAnimation) }, + { be_const_key_weak(PALETTE_FOREST, 105), be_const_bytes_instance(0000640040228B228032CD32C09AFF9AFF90EE90) }, + { be_const_key_weak(gradient_animation, 25), be_const_class(be_class_GradientAnimation) }, + { be_const_key_weak(is_value_provider, -1), be_const_closure(is_value_provider_closure) }, + { be_const_key_weak(trigger_event, 95), be_const_closure(trigger_event_closure) }, + { be_const_key_weak(bounce, 11), be_const_closure(bounce_closure) }, + { be_const_key_weak(pulsating_color, -1), be_const_closure(pulsating_color_provider_closure) }, + { be_const_key_weak(ease_in, -1), be_const_closure(ease_in_closure) }, + { be_const_key_weak(fire_animation, 9), be_const_class(be_class_FireAnimation) }, + { be_const_key_weak(color_cycle, 32), be_const_class(be_class_ColorCycleColorProvider) }, + { be_const_key_weak(beacon_animation, -1), be_const_class(be_class_BeaconAnimation) }, + { be_const_key_weak(pulsating_animation, -1), be_const_closure(pulsating_animation_closure) }, + { be_const_key_weak(bounce_animation, -1), be_const_class(be_class_BounceAnimation) }, + { be_const_key_weak(BOUNCE, -1), be_const_int(9) }, + { be_const_key_weak(twinkle_classic, 83), be_const_closure(twinkle_classic_closure) }, + { be_const_key_weak(twinkle_animation, -1), be_const_class(be_class_TwinkleAnimation) }, + { be_const_key_weak(create_closure_value, -1), be_const_closure(create_closure_value_closure) }, + { be_const_key_weak(parameterized_object, -1), be_const_class(be_class_ParameterizedObject) }, + { be_const_key_weak(rich_palette_rainbow, 14), be_const_closure(rich_palette_rainbow_closure) }, + { be_const_key_weak(init, -1), be_const_closure(animation_init_closure) }, + { be_const_key_weak(composite_color, -1), be_const_class(be_class_CompositeColorProvider) }, + { be_const_key_weak(plasma_rainbow, -1), be_const_closure(plasma_rainbow_closure) }, + { be_const_key_weak(gradient_rainbow_radial, 58), be_const_closure(gradient_rainbow_radial_closure) }, + { be_const_key_weak(VERSION, -1), be_const_int(65536) }, + { be_const_key_weak(crenel_position_animation, 90), be_const_class(be_class_CrenelPositionAnimation) }, + { be_const_key_weak(PALETTE_RAINBOW, 106), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, + { be_const_key_weak(bounce_gravity, -1), be_const_closure(bounce_gravity_closure) }, + { be_const_key_weak(set_event_active, 118), be_const_closure(set_event_active_closure) }, + { be_const_key_weak(bounce_basic, 41), be_const_closure(bounce_basic_closure) }, + { be_const_key_weak(shift_scroll_left, -1), be_const_closure(shift_scroll_left_closure) }, + { be_const_key_weak(EventManager, -1), be_const_class(be_class_EventManager) }, + { be_const_key_weak(strip_length, 6), be_const_class(be_class_StripLengthProvider) }, + { be_const_key_weak(animation_engine, -1), be_const_class(be_class_AnimationEngine) }, + { be_const_key_weak(SAWTOOTH, 70), be_const_int(1) }, + { be_const_key_weak(init_strip, 45), be_const_closure(animation_init_strip_closure) }, + { be_const_key_weak(jitter_brightness, -1), be_const_closure(jitter_brightness_closure) }, + { be_const_key_weak(sawtooth, 10), be_const_closure(sawtooth_closure) }, + { be_const_key_weak(wave_custom, 119), be_const_closure(wave_custom_closure) }, + { be_const_key_weak(comet_animation, -1), be_const_class(be_class_CometAnimation) }, + { be_const_key_weak(register_user_function, -1), be_const_closure(register_user_function_closure) }, + { be_const_key_weak(scale_static, -1), be_const_closure(scale_static_closure) }, + { be_const_key_weak(ramp, -1), be_const_closure(ramp_closure) }, + { be_const_key_weak(shift_fast_scroll, -1), be_const_closure(shift_fast_scroll_closure) }, + { be_const_key_weak(noise_single_color, -1), be_const_closure(noise_single_color_closure) }, + { be_const_key_weak(color_provider, 22), be_const_class(be_class_ColorProvider) }, + { be_const_key_weak(scale_grow, -1), be_const_closure(scale_grow_closure) }, + { be_const_key_weak(rich_palette_animation, -1), be_const_class(be_class_RichPaletteAnimation) }, + { be_const_key_weak(palette_meter_animation, -1), be_const_class(be_class_PaletteMeterAnimation) }, + { be_const_key_weak(shift_scroll_right, -1), be_const_closure(shift_scroll_right_closure) }, + { be_const_key_weak(palette_gradient_animation, -1), be_const_class(be_class_PaletteGradientAnimation) }, + { be_const_key_weak(square, -1), be_const_closure(square_closure) }, + { be_const_key_weak(jitter_color, -1), be_const_closure(jitter_color_closure) }, + { be_const_key_weak(ease_out, 101), be_const_closure(ease_out_closure) }, + { be_const_key_weak(static_value, -1), be_const_class(be_class_StaticValueProvider) }, + { be_const_key_weak(is_user_function, 51), be_const_closure(is_user_function_closure) }, + { be_const_key_weak(EASE_IN, -1), be_const_int(6) }, + { be_const_key_weak(gradient_rainbow_linear, -1), be_const_closure(gradient_rainbow_linear_closure) }, + { be_const_key_weak(frame_buffer, 68), be_const_class(be_class_FrameBuffer) }, + { be_const_key_weak(bounce_constrained, -1), be_const_closure(bounce_constrained_closure) }, { be_const_key_weak(noise_fractal, -1), be_const_closure(noise_fractal_closure) }, - { be_const_key_weak(fire_animation, -1), be_const_class(be_class_FireAnimation) }, - { be_const_key_weak(triangle, 32), be_const_closure(triangle_closure) }, - { be_const_key_weak(PALETTE_RAINBOW, -1), be_const_bytes_instance(00FF000024FFA50049FFFF006E00FF00920000FFB74B0082DBEE82EEFFFF0000) }, + { be_const_key_weak(version_string, -1), be_const_closure(animation_version_string_closure) }, + { be_const_key_weak(animation, -1), be_const_class(be_class_Animation) }, + { be_const_key_weak(event_handler, -1), be_const_class(be_class_EventHandler) }, + { be_const_key_weak(is_color_provider, -1), be_const_closure(is_color_provider_closure) }, + { be_const_key_weak(LINEAR, 80), be_const_int(1) }, + { be_const_key_weak(PALETTE_FIRE, 24), be_const_bytes_instance(000000004080000080FF0000C0FF8000FFFFFF00) }, + { be_const_key_weak(noise_rainbow, -1), be_const_closure(noise_rainbow_closure) }, + { be_const_key_weak(breathe_animation, 27), be_const_class(be_class_BreatheAnimation) }, + { be_const_key_weak(PALETTE_RGB, 74), be_const_bytes_instance(00FF00008000FF00FF0000FF) }, + { be_const_key_weak(breathe_color, -1), be_const_class(be_class_BreatheColorProvider) }, + { be_const_key_weak(shift_animation, 97), be_const_class(be_class_ShiftAnimation) }, + { be_const_key_weak(scale_animation, -1), be_const_class(be_class_ScaleAnimation) }, + { be_const_key_weak(get_event_handlers, 79), be_const_closure(get_event_handlers_closure) }, + { be_const_key_weak(unregister_event_handler, -1), be_const_closure(unregister_event_handler_closure) }, + { be_const_key_weak(jitter_all, -1), be_const_closure(jitter_all_closure) }, + { be_const_key_weak(create_engine, 89), be_const_closure(create_engine_closure) }, + { be_const_key_weak(register_event_handler, -1), be_const_closure(register_event_handler_closure) }, + { be_const_key_weak(triangle, 69), be_const_closure(triangle_closure) }, + { be_const_key_weak(SQUARE, 39), be_const_int(3) }, + { be_const_key_weak(rich_palette, 96), be_const_class(be_class_RichPaletteColorProvider) }, + { be_const_key_weak(linear, -1), be_const_closure(linear_closure) }, + { be_const_key_weak(solid, -1), be_const_closure(solid_closure) }, + { be_const_key_weak(twinkle_gentle, -1), be_const_closure(twinkle_gentle_closure) }, + { be_const_key_weak(list_user_functions, -1), be_const_closure(list_user_functions_closure) }, + { be_const_key_weak(get_user_function, 40), be_const_closure(get_user_function_closure) }, + { be_const_key_weak(TRIANGLE, -1), be_const_int(2) }, + { be_const_key_weak(value_provider, -1), be_const_class(be_class_ValueProvider) }, + { be_const_key_weak(closure_value, -1), be_const_class(be_class_ClosureValueProvider) }, + { be_const_key_weak(clear_all_event_handlers, 81), be_const_closure(clear_all_event_handlers_closure) }, + { be_const_key_weak(twinkle_rainbow, -1), be_const_closure(twinkle_rainbow_closure) }, + { be_const_key_weak(jitter_animation, 77), be_const_class(be_class_JitterAnimation) }, + { be_const_key_weak(wave_rainbow_sine, -1), be_const_closure(wave_rainbow_sine_closure) }, + { be_const_key_weak(EASE_OUT, -1), be_const_int(7) }, + { be_const_key_weak(scale_oscillate, 117), be_const_closure(scale_oscillate_closure) }, + { be_const_key_weak(plasma_fast, -1), be_const_closure(plasma_fast_closure) }, + { be_const_key_weak(smooth, 37), be_const_closure(smooth_closure) }, + { be_const_key_weak(sparkle_rainbow, -1), be_const_closure(sparkle_rainbow_closure) }, + { be_const_key_weak(palette_pattern_animation, -1), be_const_class(be_class_PalettePatternAnimation) }, + { be_const_key_weak(oscillator_value, -1), be_const_class(be_class_OscillatorValueProvider) }, + { be_const_key_weak(static_color, -1), be_const_class(be_class_StaticColorProvider) }, + { be_const_key_weak(sine_osc, 57), be_const_closure(sine_osc_closure) }, + { be_const_key_weak(palette_wave_animation, -1), be_const_class(be_class_PaletteWaveAnimation) }, + { be_const_key_weak(cosine_osc, -1), be_const_closure(cosine_osc_closure) }, + { be_const_key_weak(SequenceManager, -1), be_const_class(be_class_SequenceManager) }, + { be_const_key_weak(ELASTIC, -1), be_const_int(8) }, + { be_const_key_weak(wave_animation, 49), be_const_class(be_class_WaveAnimation) }, + { be_const_key_weak(COSINE, 29), be_const_int(4) }, + { be_const_key_weak(twinkle_solid, -1), be_const_closure(twinkle_solid_closure) }, + { be_const_key_weak(sparkle_animation, 34), be_const_class(be_class_SparkleAnimation) }, + { be_const_key_weak(gradient_two_color_linear, -1), be_const_closure(gradient_two_color_linear_closure) }, + { be_const_key_weak(wave_single_sine, -1), be_const_closure(wave_single_sine_closure) }, + { be_const_key_weak(twinkle_intense, -1), be_const_closure(twinkle_intense_closure) }, })) ); BE_EXPORT_VARIABLE be_define_const_native_module(animation); 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 ead1413eb..4f3ef8213 100644 --- a/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h +++ b/lib/libesp32/berry_animation/src/solidify/solidified_animation_dsl.h @@ -1954,16 +1954,20 @@ be_local_class(Token, { be_const_key_weak(is_separator, -1), be_const_closure(class_Token_is_separator_closure) }, { be_const_key_weak(NUMBER, -1), be_const_int(2) }, { be_const_key_weak(keywords, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(66, + be_const_list( * be_nested_list(70, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(strip), be_nested_str_weak(set), + be_nested_str_weak(import), be_nested_str_weak(color), be_nested_str_weak(palette), be_nested_str_weak(animation), be_nested_str_weak(sequence), be_nested_str_weak(function), be_nested_str_weak(zone), + be_nested_str_weak(template), + be_nested_str_weak(param), + be_nested_str_weak(type), be_nested_str_weak(play), be_nested_str_weak(for), be_nested_str_weak(with), @@ -2092,7 +2096,7 @@ be_local_class(Token, { be_const_key_weak(EVENT_ON, -1), be_const_int(40) }, { be_const_key_weak(EVENT_AFTER, -1), be_const_int(43) }, { be_const_key_weak(statement_keywords, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { - be_const_list( * be_nested_list(10, + be_const_list( * be_nested_list(13, ( (struct bvalue*) &(const bvalue[]) { be_nested_str_weak(strip), be_nested_str_weak(set), @@ -2104,6 +2108,9 @@ be_local_class(Token, be_nested_str_weak(zone), be_nested_str_weak(on), be_nested_str_weak(run), + be_nested_str_weak(template), + be_nested_str_weak(param), + be_nested_str_weak(import), })) ) } )) }, { be_const_key_weak(EVENT_RESUME, -1), be_const_int(42) }, })), @@ -2352,6 +2359,79 @@ be_local_closure(create_eof_token, /* name */ extern const bclass be_class_SimpleDSLTranspiler; +/******************************************************************** +** Solidified function: process_multiplicative_expression_raw +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw, /* 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: process_named_arguments_for_variable ********************************************************************/ @@ -2543,11 +2623,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable, /******************************************************************** -** Solidified function: process_multiplicative_expression +** Solidified function: process_unary_expression ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* name */ be_nested_proto( - 12, /* nstack */ + 8, /* nstack */ 3, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2555,64 +2635,262 @@ be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression, 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), + ( &(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_multiplicative_expression), + be_str_weak(process_unary_expression), + &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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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: 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 */ - 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 + 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 }) ) ); @@ -2693,6 +2971,956 @@ be_local_closure(class_SimpleDSLTranspiler_expect_identifier, /* name */ /*******************************************************************/ +/******************************************************************** +** 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_primary_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* 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[55]) { /* 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), + /* 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_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(self_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), + /* K48 */ be_nested_str_weak(startswith), + /* K49 */ be_nested_str_weak(PALETTE_), + /* K50 */ be_nested_str_weak(is_color_name), + /* K51 */ be_nested_str_weak(get_named_color_value), + /* K52 */ be_nested_str_weak(true), + /* K53 */ be_nested_str_weak(false), + /* K54 */ be_nested_str_weak(Unexpected_X20value_X3A_X20_X25s), + }), + be_str_weak(process_primary_expression), + &be_const_str_solidified, + ( &(const binstruction[304]) { /* 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 + 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 + 0x78120072, // 0095 JMPF R4 #0109 + 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 + 0x78160045, // 009D JMPF R5 #00E4 + 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 + 0x7816003D, // 00A5 JMPF R5 #00E4 + 0x8C140108, // 00A6 GETMET R5 R0 K8 + 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 + 0x60200018, // 00DE GETGBL R8 G24 + 0x5824002F, // 00DF LDCONST R9 K47 + 0x5C280E00, // 00E0 MOVE R10 R7 + 0x5C2C0A00, // 00E1 MOVE R11 R5 + 0x7C200600, // 00E2 CALL R8 3 + 0x80041000, // 00E3 RET 1 R8 + 0xA4164E00, // 00E4 IMPORT R5 K39 + 0x8C180B30, // 00E5 GETMET R6 R5 K48 + 0x5C200800, // 00E6 MOVE R8 R4 + 0x58240031, // 00E7 LDCONST R9 K49 + 0x7C180600, // 00E8 CALL R6 3 + 0x781A0004, // 00E9 JMPF R6 #00EF + 0x60180018, // 00EA GETGBL R6 G24 + 0x581C002D, // 00EB LDCONST R7 K45 + 0x5C200800, // 00EC MOVE R8 R4 + 0x7C180400, // 00ED CALL R6 2 + 0x80040C00, // 00EE RET 1 R6 + 0xB81A0A00, // 00EF GETNGBL R6 K5 + 0x8C180D32, // 00F0 GETMET R6 R6 K50 + 0x5C200800, // 00F1 MOVE R8 R4 + 0x7C180400, // 00F2 CALL R6 2 + 0x781A0003, // 00F3 JMPF R6 #00F8 + 0x8C180133, // 00F4 GETMET R6 R0 K51 + 0x5C200800, // 00F5 MOVE R8 R4 + 0x7C180400, // 00F6 CALL R6 2 + 0x80040C00, // 00F7 RET 1 R6 + 0xA41A5400, // 00F8 IMPORT R6 K42 + 0x8C1C0D26, // 00F9 GETMET R7 R6 K38 + 0xB8265800, // 00FA GETNGBL R9 K44 + 0x5C280800, // 00FB MOVE R10 R4 + 0x7C1C0600, // 00FC CALL R7 3 + 0x781E0005, // 00FD JMPF R7 #0104 + 0x601C0018, // 00FE GETGBL R7 G24 + 0x5820002D, // 00FF LDCONST R8 K45 + 0x5C240800, // 0100 MOVE R9 R4 + 0x7C1C0400, // 0101 CALL R7 2 + 0x80040E00, // 0102 RET 1 R7 + 0x70020004, // 0103 JMP #0109 + 0x601C0018, // 0104 GETGBL R7 G24 + 0x5820002E, // 0105 LDCONST R8 K46 + 0x5C240800, // 0106 MOVE R9 R4 + 0x7C1C0400, // 0107 CALL R7 2 + 0x80040E00, // 0108 RET 1 R7 + 0x88100704, // 0109 GETMBR R4 R3 K4 + 0xB8160A00, // 010A GETNGBL R5 K5 + 0x88140B06, // 010B GETMBR R5 R5 K6 + 0x88140B0C, // 010C GETMBR R5 R5 K12 + 0x1C100805, // 010D EQ R4 R4 R5 + 0x78120009, // 010E JMPF R4 #0119 + 0x8810070F, // 010F GETMBR R4 R3 K15 + 0x1C100934, // 0110 EQ R4 R4 K52 + 0x74120002, // 0111 JMPT R4 #0115 + 0x8810070F, // 0112 GETMBR R4 R3 K15 + 0x1C100935, // 0113 EQ R4 R4 K53 + 0x78120003, // 0114 JMPF R4 #0119 + 0x8810070F, // 0115 GETMBR R4 R3 K15 + 0x8C140108, // 0116 GETMET R5 R0 K8 + 0x7C140200, // 0117 CALL R5 1 + 0x80040800, // 0118 RET 1 R4 + 0x88100704, // 0119 GETMBR R4 R3 K4 + 0xB8160A00, // 011A GETNGBL R5 K5 + 0x88140B06, // 011B GETMBR R5 R5 K6 + 0x88140B0C, // 011C GETMBR R5 R5 K12 + 0x1C100805, // 011D EQ R4 R4 R5 + 0x78120007, // 011E JMPF R4 #0127 + 0x8810070F, // 011F GETMBR R4 R3 K15 + 0x8C140108, // 0120 GETMET R5 R0 K8 + 0x7C140200, // 0121 CALL R5 1 + 0x60140018, // 0122 GETGBL R5 G24 + 0x5818002D, // 0123 LDCONST R6 K45 + 0x5C1C0800, // 0124 MOVE R7 R4 + 0x7C140400, // 0125 CALL R5 2 + 0x80040A00, // 0126 RET 1 R5 + 0x8C100101, // 0127 GETMET R4 R0 K1 + 0x60180018, // 0128 GETGBL R6 G24 + 0x581C0036, // 0129 LDCONST R7 K54 + 0x8820070F, // 012A GETMBR R8 R3 K15 + 0x7C180400, // 012B CALL R6 2 + 0x7C100400, // 012C CALL R4 2 + 0x8C100108, // 012D GETMET R4 R0 K8 + 0x7C100200, // 012E CALL R4 1 + 0x80060600, // 012F RET 1 K3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_time_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* 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(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_function_arguments_for_expression +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expression, /* 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[20]) { /* 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_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), + }), + be_str_weak(process_function_arguments_for_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: 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: 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: 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: expect_colon +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* 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(COLON), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X3A_X27), + }), + be_str_weak(expect_colon), + &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: get_named_color_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_get_named_color_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[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(animation_dsl), + /* K1 */ be_nested_str_weak(SimpleDSLTranspiler), + /* K2 */ be_nested_str_weak(named_colors), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(0xFFFFFFFF), + }), + be_str_weak(get_named_color_value), + &be_const_str_solidified, + ( &(const binstruction[ 8]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x88080501, // 0001 GETMBR R2 R2 K1 + 0x88080502, // 0002 GETMBR R2 R2 K2 + 0x8C080503, // 0003 GETMET R2 R2 K3 + 0x5C100200, // 0004 MOVE R4 R1 + 0x58140004, // 0005 LDCONST R5 K4 + 0x7C080600, // 0006 CALL R2 3 + 0x80040400, // 0007 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: skip_whitespace_including_newlines +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /* 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(COMMENT), + /* K6 */ be_nested_str_weak(NEWLINE), + /* K7 */ be_nested_str_weak(next), + }), + be_str_weak(skip_whitespace_including_newlines), + &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: join_output ********************************************************************/ @@ -2735,6 +3963,2362 @@ be_local_closure(class_SimpleDSLTranspiler_join_output, /* name */ /*******************************************************************/ +/******************************************************************** +** 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 */ + 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_right_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* 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_BRACE), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X7D_X27), + }), + be_str_weak(expect_right_brace), + &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_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[50]) { /* 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(template_definitions), + /* K20 */ be_nested_str_weak(contains), + /* K21 */ be_nested_str_weak(), + /* K22 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), + /* K23 */ be_nested_str_weak(self_X2Eengine), + /* K24 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K25 */ be_nested_str_weak(Function_X20_X27_X25s_X27_X20not_X20supported_X20in_X20expression_X20context), + /* K26 */ be_nested_str_weak(COLOR), + /* K27 */ be_nested_str_weak(convert_color), + /* K28 */ be_nested_str_weak(TIME), + /* K29 */ be_nested_str_weak(process_time_value), + /* K30 */ be_nested_str_weak(PERCENTAGE), + /* K31 */ be_nested_str_weak(process_percentage_value), + /* K32 */ be_nested_str_weak(NUMBER), + /* K33 */ be_nested_str_weak(STRING), + /* K34 */ be_nested_str_weak(_X22_X25s_X22), + /* K35 */ be_nested_str_weak(DOT), + /* K36 */ be_nested_str_weak(expect_identifier), + /* K37 */ be_nested_str_weak(user), + /* K38 */ be_nested_str_weak(_process_user_function_call), + /* K39 */ be_nested_str_weak(symbol_table), + /* K40 */ be_nested_str_weak(string), + /* K41 */ be_nested_str_weak(_validate_single_parameter), + /* K42 */ 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), + /* K43 */ be_nested_str_weak(introspect), + /* 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(self_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), + /* K48 */ be_nested_str_weak(self_X2Eresolve_X28_X25s__X29), + /* K49 */ be_nested_str_weak(Unexpected_X20token_X20in_X20expression_X3A_X20_X25s), + }), + be_str_weak(process_primary_expression_raw), + &be_const_str_solidified, + ( &(const binstruction[248]) { /* 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 + 0x780A0037, // 0025 JMPF R2 #005E + 0x8C08010E, // 0026 GETMET R2 R0 K14 + 0x7C080200, // 0027 CALL R2 1 + 0x4C0C0000, // 0028 LDNIL R3 + 0x20080403, // 0029 NE R2 R2 R3 + 0x780A0032, // 002A JMPF R2 #005E + 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 + 0x780A002A, // 0032 JMPF R2 #005E + 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 + 0x880C0113, // 0042 GETMBR R3 R0 K19 + 0x8C0C0714, // 0043 GETMET R3 R3 K20 + 0x5C140400, // 0044 MOVE R5 R2 + 0x7C0C0400, // 0045 CALL R3 2 + 0x780E000F, // 0046 JMPF R3 #0057 + 0x8C0C0111, // 0047 GETMET R3 R0 K17 + 0x7C0C0200, // 0048 CALL R3 1 + 0x20100715, // 0049 NE R4 R3 K21 + 0x78120004, // 004A JMPF R4 #0050 + 0x60100018, // 004B GETGBL R4 G24 + 0x58140016, // 004C LDCONST R5 K22 + 0x5C180600, // 004D MOVE R6 R3 + 0x7C100400, // 004E CALL R4 2 + 0x70020000, // 004F JMP #0051 + 0x58100017, // 0050 LDCONST R4 K23 + 0x60140018, // 0051 GETGBL R5 G24 + 0x58180018, // 0052 LDCONST R6 K24 + 0x5C1C0400, // 0053 MOVE R7 R2 + 0x5C200800, // 0054 MOVE R8 R4 + 0x7C140600, // 0055 CALL R5 3 + 0x80040A00, // 0056 RET 1 R5 + 0x8C0C0101, // 0057 GETMET R3 R0 K1 + 0x60140018, // 0058 GETGBL R5 G24 + 0x58180019, // 0059 LDCONST R6 K25 + 0x5C1C0400, // 005A MOVE R7 R2 + 0x7C140400, // 005B CALL R5 2 + 0x7C0C0400, // 005C CALL R3 2 + 0x80060600, // 005D RET 1 K3 + 0x88080304, // 005E GETMBR R2 R1 K4 + 0xB80E0A00, // 005F GETNGBL R3 K5 + 0x880C0706, // 0060 GETMBR R3 R3 K6 + 0x880C071A, // 0061 GETMBR R3 R3 K26 + 0x1C080403, // 0062 EQ R2 R2 R3 + 0x780A0005, // 0063 JMPF R2 #006A + 0x8C080108, // 0064 GETMET R2 R0 K8 + 0x7C080200, // 0065 CALL R2 1 + 0x8C08011B, // 0066 GETMET R2 R0 K27 + 0x8810030F, // 0067 GETMBR R4 R1 K15 + 0x7C080400, // 0068 CALL R2 2 + 0x80040400, // 0069 RET 1 R2 + 0x88080304, // 006A GETMBR R2 R1 K4 + 0xB80E0A00, // 006B GETNGBL R3 K5 + 0x880C0706, // 006C GETMBR R3 R3 K6 + 0x880C071C, // 006D GETMBR R3 R3 K28 + 0x1C080403, // 006E EQ R2 R2 R3 + 0x780A0004, // 006F JMPF R2 #0075 + 0x60080008, // 0070 GETGBL R2 G8 + 0x8C0C011D, // 0071 GETMET R3 R0 K29 + 0x7C0C0200, // 0072 CALL R3 1 + 0x7C080200, // 0073 CALL R2 1 + 0x80040400, // 0074 RET 1 R2 + 0x88080304, // 0075 GETMBR R2 R1 K4 + 0xB80E0A00, // 0076 GETNGBL R3 K5 + 0x880C0706, // 0077 GETMBR R3 R3 K6 + 0x880C071E, // 0078 GETMBR R3 R3 K30 + 0x1C080403, // 0079 EQ R2 R2 R3 + 0x780A0004, // 007A JMPF R2 #0080 + 0x60080008, // 007B GETGBL R2 G8 + 0x8C0C011F, // 007C GETMET R3 R0 K31 + 0x7C0C0200, // 007D CALL R3 1 + 0x7C080200, // 007E CALL R2 1 + 0x80040400, // 007F RET 1 R2 + 0x88080304, // 0080 GETMBR R2 R1 K4 + 0xB80E0A00, // 0081 GETNGBL R3 K5 + 0x880C0706, // 0082 GETMBR R3 R3 K6 + 0x880C0720, // 0083 GETMBR R3 R3 K32 + 0x1C080403, // 0084 EQ R2 R2 R3 + 0x780A0003, // 0085 JMPF R2 #008A + 0x8808030F, // 0086 GETMBR R2 R1 K15 + 0x8C0C0108, // 0087 GETMET R3 R0 K8 + 0x7C0C0200, // 0088 CALL R3 1 + 0x80040400, // 0089 RET 1 R2 + 0x88080304, // 008A GETMBR R2 R1 K4 + 0xB80E0A00, // 008B GETNGBL R3 K5 + 0x880C0706, // 008C GETMBR R3 R3 K6 + 0x880C0721, // 008D GETMBR R3 R3 K33 + 0x1C080403, // 008E EQ R2 R2 R3 + 0x780A0007, // 008F JMPF R2 #0098 + 0x8808030F, // 0090 GETMBR R2 R1 K15 + 0x8C0C0108, // 0091 GETMET R3 R0 K8 + 0x7C0C0200, // 0092 CALL R3 1 + 0x600C0018, // 0093 GETGBL R3 G24 + 0x58100022, // 0094 LDCONST R4 K34 + 0x5C140400, // 0095 MOVE R5 R2 + 0x7C0C0400, // 0096 CALL R3 2 + 0x80040600, // 0097 RET 1 R3 + 0x88080304, // 0098 GETMBR R2 R1 K4 + 0xB80E0A00, // 0099 GETNGBL R3 K5 + 0x880C0706, // 009A GETMBR R3 R3 K6 + 0x880C070D, // 009B GETMBR R3 R3 K13 + 0x1C080403, // 009C EQ R2 R2 R3 + 0x780A0052, // 009D JMPF R2 #00F1 + 0x8808030F, // 009E GETMBR R2 R1 K15 + 0x8C0C0108, // 009F GETMET R3 R0 K8 + 0x7C0C0200, // 00A0 CALL R3 1 + 0x8C0C0100, // 00A1 GETMET R3 R0 K0 + 0x7C0C0200, // 00A2 CALL R3 1 + 0x4C100000, // 00A3 LDNIL R4 + 0x200C0604, // 00A4 NE R3 R3 R4 + 0x780E0045, // 00A5 JMPF R3 #00EC + 0x8C0C0100, // 00A6 GETMET R3 R0 K0 + 0x7C0C0200, // 00A7 CALL R3 1 + 0x880C0704, // 00A8 GETMBR R3 R3 K4 + 0xB8120A00, // 00A9 GETNGBL R4 K5 + 0x88100906, // 00AA GETMBR R4 R4 K6 + 0x88100923, // 00AB GETMBR R4 R4 K35 + 0x1C0C0604, // 00AC EQ R3 R3 R4 + 0x780E003D, // 00AD JMPF R3 #00EC + 0x8C0C0108, // 00AE GETMET R3 R0 K8 + 0x7C0C0200, // 00AF CALL R3 1 + 0x8C0C0124, // 00B0 GETMET R3 R0 K36 + 0x7C0C0200, // 00B1 CALL R3 1 + 0x1C100525, // 00B2 EQ R4 R2 K37 + 0x78120003, // 00B3 JMPF R4 #00B8 + 0x8C100126, // 00B4 GETMET R4 R0 K38 + 0x5C180600, // 00B5 MOVE R6 R3 + 0x7C100400, // 00B6 CALL R4 2 + 0x80040800, // 00B7 RET 1 R4 + 0x88100127, // 00B8 GETMBR R4 R0 K39 + 0x8C100914, // 00B9 GETMET R4 R4 K20 + 0x5C180400, // 00BA MOVE R6 R2 + 0x7C100400, // 00BB CALL R4 2 + 0x78120016, // 00BC JMPF R4 #00D4 + 0x88100127, // 00BD GETMBR R4 R0 K39 + 0x94100802, // 00BE GETIDX R4 R4 R2 + 0x60140004, // 00BF GETGBL R5 G4 + 0x5C180800, // 00C0 MOVE R6 R4 + 0x7C140200, // 00C1 CALL R5 1 + 0x20140B28, // 00C2 NE R5 R5 K40 + 0x78160008, // 00C3 JMPF R5 #00CD + 0x60140005, // 00C4 GETGBL R5 G5 + 0x5C180800, // 00C5 MOVE R6 R4 + 0x7C140200, // 00C6 CALL R5 1 + 0x8C180129, // 00C7 GETMET R6 R0 K41 + 0x5C200A00, // 00C8 MOVE R8 R5 + 0x5C240600, // 00C9 MOVE R9 R3 + 0x5C280800, // 00CA MOVE R10 R4 + 0x7C180800, // 00CB CALL R6 4 + 0x70020006, // 00CC JMP #00D4 + 0x8C140101, // 00CD GETMET R5 R0 K1 + 0x601C0018, // 00CE GETGBL R7 G24 + 0x5820002A, // 00CF LDCONST R8 K42 + 0x5C240400, // 00D0 MOVE R9 R2 + 0x7C1C0400, // 00D1 CALL R7 2 + 0x7C140400, // 00D2 CALL R5 2 + 0x80060600, // 00D3 RET 1 K3 + 0xA4125600, // 00D4 IMPORT R4 K43 + 0x58140015, // 00D5 LDCONST R5 K21 + 0x8C180914, // 00D6 GETMET R6 R4 K20 + 0xB8225800, // 00D7 GETNGBL R8 K44 + 0x5C240400, // 00D8 MOVE R9 R2 + 0x7C180600, // 00D9 CALL R6 3 + 0x781A0005, // 00DA JMPF R6 #00E1 + 0x60180018, // 00DB GETGBL R6 G24 + 0x581C002D, // 00DC LDCONST R7 K45 + 0x5C200400, // 00DD MOVE R8 R2 + 0x7C180400, // 00DE CALL R6 2 + 0x5C140C00, // 00DF MOVE R5 R6 + 0x70020004, // 00E0 JMP #00E6 + 0x60180018, // 00E1 GETGBL R6 G24 + 0x581C002E, // 00E2 LDCONST R7 K46 + 0x5C200400, // 00E3 MOVE R8 R2 + 0x7C180400, // 00E4 CALL R6 2 + 0x5C140C00, // 00E5 MOVE R5 R6 + 0x60180018, // 00E6 GETGBL R6 G24 + 0x581C002F, // 00E7 LDCONST R7 K47 + 0x5C200A00, // 00E8 MOVE R8 R5 + 0x5C240600, // 00E9 MOVE R9 R3 + 0x7C180600, // 00EA CALL R6 3 + 0x80040C00, // 00EB RET 1 R6 + 0x600C0018, // 00EC GETGBL R3 G24 + 0x58100030, // 00ED LDCONST R4 K48 + 0x5C140400, // 00EE MOVE R5 R2 + 0x7C0C0400, // 00EF CALL R3 2 + 0x80040600, // 00F0 RET 1 R3 + 0x8C080101, // 00F1 GETMET R2 R0 K1 + 0x60100018, // 00F2 GETGBL R4 G24 + 0x58140031, // 00F3 LDCONST R5 K49 + 0x8818030F, // 00F4 GETMBR R6 R1 K15 + 0x7C100400, // 00F5 CALL R4 2 + 0x7C080400, // 00F6 CALL R2 2 + 0x80060600, // 00F7 RET 1 K3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: convert_color +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ + be_nested_proto( + 17, /* nstack */ + 2, /* 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(string), + /* K1 */ be_nested_str_weak(startswith), + /* K2 */ be_nested_str_weak(0x), + /* K3 */ be_nested_str_weak(0xFF_X25s), + /* K4 */ be_const_int(2), + /* K5 */ be_const_int(2147483647), + /* K6 */ be_nested_str_weak(_X23), + /* K7 */ be_nested_str_weak(0x_X25s), + /* K8 */ be_const_int(1), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(0x_X25s_X25s_X25s_X25s_X25s_X25s_X25s_X25s), + /* K11 */ be_nested_str_weak(0xFF_X25s_X25s_X25s_X25s_X25s_X25s), + /* K12 */ be_nested_str_weak(animation_dsl), + /* K13 */ be_nested_str_weak(is_color_name), + /* K14 */ be_nested_str_weak(get_named_color_value), + /* K15 */ be_nested_str_weak(0xFFFFFFFF), + }), + be_str_weak(convert_color), + &be_const_str_solidified, + ( &(const binstruction[110]) { /* 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 + 0x780E0013, // 0005 JMPF R3 #001A + 0x600C000C, // 0006 GETGBL R3 G12 + 0x5C100200, // 0007 MOVE R4 R1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x54120009, // 0009 LDINT R4 10 + 0x1C0C0604, // 000A EQ R3 R3 R4 + 0x780E0001, // 000B JMPF R3 #000E + 0x80040200, // 000C RET 1 R1 + 0x7002000B, // 000D JMP #001A + 0x600C000C, // 000E GETGBL R3 G12 + 0x5C100200, // 000F MOVE R4 R1 + 0x7C0C0200, // 0010 CALL R3 1 + 0x54120007, // 0011 LDINT R4 8 + 0x1C0C0604, // 0012 EQ R3 R3 R4 + 0x780E0005, // 0013 JMPF R3 #001A + 0x600C0018, // 0014 GETGBL R3 G24 + 0x58100003, // 0015 LDCONST R4 K3 + 0x40160905, // 0016 CONNECT R5 K4 K5 + 0x94140205, // 0017 GETIDX R5 R1 R5 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80040600, // 0019 RET 1 R3 + 0x8C0C0501, // 001A GETMET R3 R2 K1 + 0x5C140200, // 001B MOVE R5 R1 + 0x58180006, // 001C LDCONST R6 K6 + 0x7C0C0600, // 001D CALL R3 3 + 0x780E0044, // 001E JMPF R3 #0064 + 0x600C000C, // 001F GETGBL R3 G12 + 0x5C100200, // 0020 MOVE R4 R1 + 0x7C0C0200, // 0021 CALL R3 1 + 0x54120008, // 0022 LDINT R4 9 + 0x1C0C0604, // 0023 EQ R3 R3 R4 + 0x780E0006, // 0024 JMPF R3 #002C + 0x600C0018, // 0025 GETGBL R3 G24 + 0x58100007, // 0026 LDCONST R4 K7 + 0x40161105, // 0027 CONNECT R5 K8 K5 + 0x94140205, // 0028 GETIDX R5 R1 R5 + 0x7C0C0400, // 0029 CALL R3 2 + 0x80040600, // 002A RET 1 R3 + 0x70020037, // 002B JMP #0064 + 0x600C000C, // 002C GETGBL R3 G12 + 0x5C100200, // 002D MOVE R4 R1 + 0x7C0C0200, // 002E CALL R3 1 + 0x54120006, // 002F LDINT R4 7 + 0x1C0C0604, // 0030 EQ R3 R3 R4 + 0x780E0006, // 0031 JMPF R3 #0039 + 0x600C0018, // 0032 GETGBL R3 G24 + 0x58100003, // 0033 LDCONST R4 K3 + 0x40161105, // 0034 CONNECT R5 K8 K5 + 0x94140205, // 0035 GETIDX R5 R1 R5 + 0x7C0C0400, // 0036 CALL R3 2 + 0x80040600, // 0037 RET 1 R3 + 0x7002002A, // 0038 JMP #0064 + 0x600C000C, // 0039 GETGBL R3 G12 + 0x5C100200, // 003A MOVE R4 R1 + 0x7C0C0200, // 003B CALL R3 1 + 0x54120004, // 003C LDINT R4 5 + 0x1C0C0604, // 003D EQ R3 R3 R4 + 0x780E0011, // 003E JMPF R3 #0051 + 0x940C0308, // 003F GETIDX R3 R1 K8 + 0x94100304, // 0040 GETIDX R4 R1 K4 + 0x94140309, // 0041 GETIDX R5 R1 K9 + 0x541A0003, // 0042 LDINT R6 4 + 0x94180206, // 0043 GETIDX R6 R1 R6 + 0x601C0018, // 0044 GETGBL R7 G24 + 0x5820000A, // 0045 LDCONST R8 K10 + 0x5C240600, // 0046 MOVE R9 R3 + 0x5C280600, // 0047 MOVE R10 R3 + 0x5C2C0800, // 0048 MOVE R11 R4 + 0x5C300800, // 0049 MOVE R12 R4 + 0x5C340A00, // 004A MOVE R13 R5 + 0x5C380A00, // 004B MOVE R14 R5 + 0x5C3C0C00, // 004C MOVE R15 R6 + 0x5C400C00, // 004D MOVE R16 R6 + 0x7C1C1200, // 004E CALL R7 9 + 0x80040E00, // 004F RET 1 R7 + 0x70020012, // 0050 JMP #0064 + 0x600C000C, // 0051 GETGBL R3 G12 + 0x5C100200, // 0052 MOVE R4 R1 + 0x7C0C0200, // 0053 CALL R3 1 + 0x54120003, // 0054 LDINT R4 4 + 0x1C0C0604, // 0055 EQ R3 R3 R4 + 0x780E000C, // 0056 JMPF R3 #0064 + 0x940C0308, // 0057 GETIDX R3 R1 K8 + 0x94100304, // 0058 GETIDX R4 R1 K4 + 0x94140309, // 0059 GETIDX R5 R1 K9 + 0x60180018, // 005A GETGBL R6 G24 + 0x581C000B, // 005B LDCONST R7 K11 + 0x5C200600, // 005C MOVE R8 R3 + 0x5C240600, // 005D MOVE R9 R3 + 0x5C280800, // 005E MOVE R10 R4 + 0x5C2C0800, // 005F MOVE R11 R4 + 0x5C300A00, // 0060 MOVE R12 R5 + 0x5C340A00, // 0061 MOVE R13 R5 + 0x7C180E00, // 0062 CALL R6 7 + 0x80040C00, // 0063 RET 1 R6 + 0xB80E1800, // 0064 GETNGBL R3 K12 + 0x8C0C070D, // 0065 GETMET R3 R3 K13 + 0x5C140200, // 0066 MOVE R5 R1 + 0x7C0C0400, // 0067 CALL R3 2 + 0x780E0003, // 0068 JMPF R3 #006D + 0x8C0C010E, // 0069 GETMET R3 R0 K14 + 0x5C140200, // 006A MOVE R5 R1 + 0x7C0C0400, // 006B CALL R3 2 + 0x80040600, // 006C RET 1 R3 + 0x80061E00, // 006D RET 1 K15 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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[188]) { /* 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 + 0x7002003C, // 007D JMP #00BB + 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 + 0x78120010, // 00A9 JMPF R4 #00BB + 0x4C200000, // 00AA LDNIL R8 + 0x20200A08, // 00AB NE R8 R5 R8 + 0x7822000D, // 00AC JMPF R8 #00BB + 0x8820011E, // 00AD GETMBR R8 R0 K30 + 0x8C201113, // 00AE GETMET R8 R8 K19 + 0x5C280A00, // 00AF MOVE R10 R5 + 0x7C200400, // 00B0 CALL R8 2 + 0x78220008, // 00B1 JMPF R8 #00BB + 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 + 0x80000000, // 00BB RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _validate_animation_factory_creates_animation +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* 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(_validate_factory_function), + /* K1 */ be_nested_str_weak(animation), + }), + be_str_weak(_validate_animation_factory_creates_animation), + &be_const_str_solidified, + ( &(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: _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: 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: 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: 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_assign_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: 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_set +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_set, /* 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[11]) { /* 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(process_value), + /* K7 */ be_nested_str_weak(collect_inline_comment), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), + /* K10 */ be_nested_str_weak(symbol_table), + }), + be_str_weak(process_set), + &be_const_str_solidified, + ( &(const binstruction[30]) { /* 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 + 0x58100003, // 000F LDCONST R4 K3 + 0x7C080400, // 0010 CALL R2 2 + 0x8C0C0107, // 0011 GETMET R3 R0 K7 + 0x7C0C0200, // 0012 CALL R3 1 + 0x8C100108, // 0013 GETMET R4 R0 K8 + 0x60180018, // 0014 GETGBL R6 G24 + 0x581C0009, // 0015 LDCONST R7 K9 + 0x5C200200, // 0016 MOVE R8 R1 + 0x5C240400, // 0017 MOVE R9 R2 + 0x5C280600, // 0018 MOVE R10 R3 + 0x7C180800, // 0019 CALL R6 4 + 0x7C100400, // 001A CALL R4 2 + 0x8810010A, // 001B GETMBR R4 R0 K10 + 0x98100303, // 001C SETIDX R4 R1 K3 + 0x80000000, // 001D RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_number +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_number, /* 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(NUMBER), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_nested_str_weak(error), + /* K8 */ be_nested_str_weak(Expected_X20number), + /* K9 */ be_nested_str_weak(0), + }), + be_str_weak(expect_number), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* 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 + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x7C0C0200, // 000D CALL R3 1 + 0x80040400, // 000E RET 1 R2 + 0x70020003, // 000F JMP #0014 + 0x8C080107, // 0010 GETMET R2 R0 K7 + 0x58100008, // 0011 LDCONST R4 K8 + 0x7C080400, // 0012 CALL R2 2 + 0x80061200, // 0013 RET 1 K9 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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: 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: 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: 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: 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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_init, /* 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[13]) { /* constants */ + /* K0 */ be_nested_str_weak(tokens), + /* K1 */ be_nested_str_weak(pos), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(output), + /* K4 */ be_nested_str_weak(errors), + /* K5 */ be_nested_str_weak(run_statements), + /* K6 */ be_nested_str_weak(first_statement), + /* K7 */ be_nested_str_weak(strip_initialized), + /* K8 */ be_nested_str_weak(sequence_names), + /* K9 */ be_nested_str_weak(symbol_table), + /* K10 */ be_nested_str_weak(indent_level), + /* K11 */ be_nested_str_weak(template_definitions), + /* K12 */ be_nested_str_weak(has_template_calls), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x20080202, // 0001 NE R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x5C080200, // 0003 MOVE R2 R1 + 0x70020001, // 0004 JMP #0007 + 0x60080012, // 0005 GETGBL R2 G18 + 0x7C080000, // 0006 CALL R2 0 + 0x90020002, // 0007 SETMBR R0 K0 R2 + 0x90020302, // 0008 SETMBR R0 K1 K2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90020602, // 000B SETMBR R0 K3 R2 + 0x60080012, // 000C GETGBL R2 G18 + 0x7C080000, // 000D CALL R2 0 + 0x90020802, // 000E SETMBR R0 K4 R2 + 0x60080012, // 000F GETGBL R2 G18 + 0x7C080000, // 0010 CALL R2 0 + 0x90020A02, // 0011 SETMBR R0 K5 R2 + 0x50080200, // 0012 LDBOOL R2 1 0 + 0x90020C02, // 0013 SETMBR R0 K6 R2 + 0x50080000, // 0014 LDBOOL R2 0 0 + 0x90020E02, // 0015 SETMBR R0 K7 R2 + 0x60080013, // 0016 GETGBL R2 G19 + 0x7C080000, // 0017 CALL R2 0 + 0x90021002, // 0018 SETMBR R0 K8 R2 + 0x60080013, // 0019 GETGBL R2 G19 + 0x7C080000, // 001A CALL R2 0 + 0x90021202, // 001B SETMBR R0 K9 R2 + 0x90021502, // 001C SETMBR R0 K10 K2 + 0x60080013, // 001D GETGBL R2 G19 + 0x7C080000, // 001E CALL R2 0 + 0x90021602, // 001F SETMBR R0 K11 R2 + 0x50080000, // 0020 LDBOOL R2 0 0 + 0x90021802, // 0021 SETMBR R0 K12 R2 + 0x80000000, // 0022 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 */ + 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: _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: expect_left_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* 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(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(expect_left_bracket), + &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_percentage_value +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* 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[11]) { /* 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(PERCENTAGE), + /* K5 */ be_nested_str_weak(value), + /* K6 */ be_nested_str_weak(next), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(NUMBER), + /* K9 */ be_nested_str_weak(error), + /* K10 */ be_nested_str_weak(Expected_X20percentage_X20value), + }), + be_str_weak(process_percentage_value), + &be_const_str_solidified, + ( &(const binstruction[52]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x4C080000, // 0002 LDNIL R2 + 0x20080202, // 0003 NE R2 R1 R2 + 0x780A0015, // 0004 JMPF R2 #001B + 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 + 0x780A000F, // 000A JMPF R2 #001B + 0x88080305, // 000B GETMBR R2 R1 K5 + 0x8C0C0106, // 000C GETMET R3 R0 K6 + 0x7C0C0200, // 000D CALL R3 1 + 0x600C000A, // 000E GETGBL R3 G10 + 0x5411FFFD, // 000F LDINT R4 -2 + 0x40120E04, // 0010 CONNECT R4 K7 R4 + 0x94100404, // 0011 GETIDX R4 R2 R4 + 0x7C0C0200, // 0012 CALL R3 1 + 0x60100009, // 0013 GETGBL R4 G9 + 0x541600FE, // 0014 LDINT R5 255 + 0x08140605, // 0015 MUL R5 R3 R5 + 0x541A0063, // 0016 LDINT R6 100 + 0x0C140A06, // 0017 DIV R5 R5 R6 + 0x7C100200, // 0018 CALL R4 1 + 0x80040800, // 0019 RET 1 R4 + 0x70020017, // 001A JMP #0033 + 0x4C080000, // 001B LDNIL R2 + 0x20080202, // 001C NE R2 R1 R2 + 0x780A000F, // 001D JMPF R2 #002E + 0x88080301, // 001E GETMBR R2 R1 K1 + 0xB80E0400, // 001F GETNGBL R3 K2 + 0x880C0703, // 0020 GETMBR R3 R3 K3 + 0x880C0708, // 0021 GETMBR R3 R3 K8 + 0x1C080403, // 0022 EQ R2 R2 R3 + 0x780A0009, // 0023 JMPF R2 #002E + 0x88080305, // 0024 GETMBR R2 R1 K5 + 0x8C0C0106, // 0025 GETMET R3 R0 K6 + 0x7C0C0200, // 0026 CALL R3 1 + 0x600C0009, // 0027 GETGBL R3 G9 + 0x6010000A, // 0028 GETGBL R4 G10 + 0x5C140400, // 0029 MOVE R5 R2 + 0x7C100200, // 002A CALL R4 1 + 0x7C0C0200, // 002B CALL R3 1 + 0x80040600, // 002C RET 1 R3 + 0x70020004, // 002D JMP #0033 + 0x8C080109, // 002E GETMET R2 R0 K9 + 0x5810000A, // 002F LDCONST R4 K10 + 0x7C080400, // 0030 CALL R2 2 + 0x540A00FE, // 0031 LDINT R2 255 + 0x80040400, // 0032 RET 1 R2 + 0x80000000, // 0033 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_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: expect_right_bracket +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* 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_BRACKET), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), + }), + be_str_weak(expect_right_bracket), + &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: transform_expression_for_closure ********************************************************************/ @@ -2997,9 +6581,9 @@ be_local_closure(class_SimpleDSLTranspiler_transform_expression_for_closure, / /******************************************************************** -** Solidified function: _validate_animation_factory_exists +** Solidified function: process_value ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_value, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -3009,109 +6593,17 @@ be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists, 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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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: 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), + /* K0 */ be_nested_str_weak(process_additive_expression), }), - be_str_weak(get_errors), + be_str_weak(process_value), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(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 }) ) ); @@ -3119,168 +6611,11 @@ be_local_closure(class_SimpleDSLTranspiler_get_errors, /* name */ /******************************************************************** -** Solidified function: _process_named_arguments_generic +** Solidified function: process_additive_expression_raw ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_additive_expression_raw, /* 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: expect_right_brace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ - be_nested_proto( - 5, /* nstack */ + 10, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -3288,498 +6623,60 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_brace, /* name */ 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_BRACE), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X7D_X27), - }), - be_str_weak(expect_right_brace), - &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: get_named_color_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_named_color_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[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(animation_dsl), - /* K1 */ be_nested_str_weak(SimpleDSLTranspiler), - /* K2 */ be_nested_str_weak(named_colors), - /* K3 */ be_nested_str_weak(find), - /* K4 */ be_nested_str_weak(0xFFFFFFFF), - }), - be_str_weak(get_named_color_value), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x88080501, // 0001 GETMBR R2 R2 K1 - 0x88080502, // 0002 GETMBR R2 R2 K2 - 0x8C080503, // 0003 GETMET R2 R2 K3 - 0x5C100200, // 0004 MOVE R4 R1 - 0x58140004, // 0005 LDCONST R5 K4 - 0x7C080600, // 0006 CALL R2 3 - 0x80040400, // 0007 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_colon -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_colon, /* 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(COLON), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X3A_X27), - }), - be_str_weak(expect_colon), - &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_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_assign_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: skip_whitespace_including_newlines -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines, /* 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(COMMENT), - /* K6 */ be_nested_str_weak(NEWLINE), - /* K7 */ be_nested_str_weak(next), - }), - be_str_weak(skip_whitespace_including_newlines), - &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: process_play_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_play_statement, /* 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[22]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(), + ( &(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(IDENTIFIER), - /* K7 */ be_nested_str_weak(KEYWORD), - /* K8 */ be_nested_str_weak(peek), - /* K9 */ be_nested_str_weak(LEFT_PAREN), - /* K10 */ be_nested_str_weak(process_nested_function_call), - /* K11 */ be_nested_str_weak(expect_identifier), - /* K12 */ be_nested_str_weak(_validate_object_reference), - /* K13 */ be_nested_str_weak(sequence_X20play), - /* K14 */ be_nested_str_weak(animation_X2Eglobal_X28_X27_X25s__X27_X29), - /* K15 */ be_nested_str_weak(0), - /* K16 */ be_nested_str_weak(value), - /* K17 */ be_nested_str_weak(for), - /* K18 */ be_nested_str_weak(process_time_value), - /* K19 */ be_nested_str_weak(collect_inline_comment), - /* K20 */ be_nested_str_weak(add), - /* K21 */ be_nested_str_weak(_X20_X20_X25s_X2Epush_X28animation_X2Ecreate_play_step_X28_X25s_X2C_X20_X25s_X29_X29_X25s), + /* 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_play_statement), + be_str_weak(process_additive_expression_raw), &be_const_str_solidified, - ( &(const binstruction[86]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x58080001, // 0002 LDCONST R2 K1 - 0x8C0C0102, // 0003 GETMET R3 R0 K2 - 0x7C0C0200, // 0004 CALL R3 1 - 0x4C100000, // 0005 LDNIL R4 - 0x20100604, // 0006 NE R4 R3 R4 - 0x7812001C, // 0007 JMPF R4 #0025 - 0x88100703, // 0008 GETMBR R4 R3 K3 - 0xB8160800, // 0009 GETNGBL R5 K4 - 0x88140B05, // 000A GETMBR R5 R5 K5 - 0x88140B06, // 000B GETMBR R5 R5 K6 - 0x1C100805, // 000C EQ R4 R4 R5 - 0x74120005, // 000D JMPT R4 #0014 - 0x88100703, // 000E GETMBR R4 R3 K3 - 0xB8160800, // 000F GETNGBL R5 K4 - 0x88140B05, // 0010 GETMBR R5 R5 K5 - 0x88140B07, // 0011 GETMBR R5 R5 K7 - 0x1C100805, // 0012 EQ R4 R4 R5 - 0x78120010, // 0013 JMPF R4 #0025 - 0x8C100108, // 0014 GETMET R4 R0 K8 - 0x7C100200, // 0015 CALL R4 1 - 0x4C140000, // 0016 LDNIL R5 - 0x20100805, // 0017 NE R4 R4 R5 - 0x7812000B, // 0018 JMPF R4 #0025 - 0x8C100108, // 0019 GETMET R4 R0 K8 + ( &(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 - 0x88100903, // 001B GETMBR R4 R4 K3 - 0xB8160800, // 001C GETNGBL R5 K4 - 0x88140B05, // 001D GETMBR R5 R5 K5 - 0x88140B09, // 001E GETMBR R5 R5 K9 - 0x1C100805, // 001F EQ R4 R4 R5 - 0x78120003, // 0020 JMPF R4 #0025 - 0x8C10010A, // 0021 GETMET R4 R0 K10 - 0x7C100200, // 0022 CALL R4 1 - 0x5C080800, // 0023 MOVE R2 R4 - 0x7002000A, // 0024 JMP #0030 - 0x8C10010B, // 0025 GETMET R4 R0 K11 - 0x7C100200, // 0026 CALL R4 1 - 0x8C14010C, // 0027 GETMET R5 R0 K12 - 0x5C1C0800, // 0028 MOVE R7 R4 - 0x5820000D, // 0029 LDCONST R8 K13 - 0x7C140600, // 002A CALL R5 3 - 0x60140018, // 002B GETGBL R5 G24 - 0x5818000E, // 002C LDCONST R6 K14 - 0x5C1C0800, // 002D MOVE R7 R4 - 0x7C140400, // 002E CALL R5 2 - 0x5C080A00, // 002F MOVE R2 R5 - 0x5810000F, // 0030 LDCONST R4 K15 - 0x8C140102, // 0031 GETMET R5 R0 K2 - 0x7C140200, // 0032 CALL R5 1 - 0x4C180000, // 0033 LDNIL R6 - 0x20140A06, // 0034 NE R5 R5 R6 - 0x78160013, // 0035 JMPF R5 #004A - 0x8C140102, // 0036 GETMET R5 R0 K2 - 0x7C140200, // 0037 CALL R5 1 - 0x88140B03, // 0038 GETMBR R5 R5 K3 - 0xB81A0800, // 0039 GETNGBL R6 K4 - 0x88180D05, // 003A GETMBR R6 R6 K5 - 0x88180D07, // 003B GETMBR R6 R6 K7 - 0x1C140A06, // 003C EQ R5 R5 R6 - 0x7816000B, // 003D JMPF R5 #004A - 0x8C140102, // 003E GETMET R5 R0 K2 - 0x7C140200, // 003F CALL R5 1 - 0x88140B10, // 0040 GETMBR R5 R5 K16 - 0x1C140B11, // 0041 EQ R5 R5 K17 - 0x78160006, // 0042 JMPF R5 #004A - 0x8C140100, // 0043 GETMET R5 R0 K0 - 0x7C140200, // 0044 CALL R5 1 - 0x60140008, // 0045 GETGBL R5 G8 - 0x8C180112, // 0046 GETMET R6 R0 K18 - 0x7C180200, // 0047 CALL R6 1 - 0x7C140200, // 0048 CALL R5 1 - 0x5C100A00, // 0049 MOVE R4 R5 - 0x8C140113, // 004A GETMET R5 R0 K19 - 0x7C140200, // 004B CALL R5 1 - 0x8C180114, // 004C GETMET R6 R0 K20 - 0x60200018, // 004D GETGBL R8 G24 - 0x58240015, // 004E LDCONST R9 K21 - 0x5C280200, // 004F MOVE R10 R1 - 0x5C2C0400, // 0050 MOVE R11 R2 - 0x5C300800, // 0051 MOVE R12 R4 - 0x5C340A00, // 0052 MOVE R13 R5 - 0x7C200A00, // 0053 CALL R8 5 - 0x7C180400, // 0054 CALL R6 2 - 0x80000000, // 0055 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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[22]) { /* 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(animation), - /* K16 */ be_nested_str_weak(is_user_function), - /* K17 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K18 */ be_nested_str_weak(engine), - /* K19 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), - /* K20 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), - /* K21 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - }), - be_str_weak(process_function_call), - &be_const_str_solidified, - ( &(const binstruction[75]) { /* 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 - 0x8C10010D, // 0026 GETMET R4 R0 K13 - 0x7C100200, // 0027 CALL R4 1 - 0xB8161E00, // 0028 GETNGBL R5 K15 - 0x8C140B10, // 0029 GETMET R5 R5 K16 - 0x5C1C0600, // 002A MOVE R7 R3 - 0x7C140400, // 002B CALL R5 2 - 0x7816000E, // 002C JMPF R5 #003C - 0x20140901, // 002D NE R5 R4 K1 - 0x78160004, // 002E JMPF R5 #0034 - 0x60140018, // 002F GETGBL R5 G24 - 0x58180011, // 0030 LDCONST R6 K17 - 0x5C1C0800, // 0031 MOVE R7 R4 - 0x7C140400, // 0032 CALL R5 2 - 0x70020000, // 0033 JMP #0035 - 0x58140012, // 0034 LDCONST R5 K18 - 0x60180018, // 0035 GETGBL R6 G24 - 0x581C0013, // 0036 LDCONST R7 K19 - 0x5C200600, // 0037 MOVE R8 R3 - 0x5C240A00, // 0038 MOVE R9 R5 - 0x7C180600, // 0039 CALL R6 3 - 0x80040C00, // 003A RET 1 R6 - 0x7002000D, // 003B JMP #004A - 0x20140901, // 003C NE R5 R4 K1 - 0x78160006, // 003D JMPF R5 #0045 - 0x60140018, // 003E GETGBL R5 G24 - 0x58180014, // 003F LDCONST R6 K20 - 0x5C1C0600, // 0040 MOVE R7 R3 - 0x5C200800, // 0041 MOVE R8 R4 - 0x7C140600, // 0042 CALL R5 3 - 0x80040A00, // 0043 RET 1 R5 - 0x70020004, // 0044 JMP #004A - 0x60140018, // 0045 GETGBL R5 G24 - 0x58180015, // 0046 LDCONST R6 K21 - 0x5C1C0600, // 0047 MOVE R7 R3 - 0x7C140400, // 0048 CALL R5 2 - 0x80040A00, // 0049 RET 1 R5 - 0x80000000, // 004A RET 0 + 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 }) ) ); @@ -3989,216 +6886,69 @@ be_local_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call, /******************************************************************** -** Solidified function: process_sequence_statement_for_manager +** Solidified function: _validate_single_parameter ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement_for_manager, /* name */ +be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ be_nested_proto( - 11, /* nstack */ - 2, /* argc */ + 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[36]) { /* 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(_X20_X20), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(NEWLINE), - /* K11 */ be_nested_str_weak(KEYWORD), - /* K12 */ be_nested_str_weak(play), - /* K13 */ be_nested_str_weak(process_play_statement_for_manager), - /* K14 */ be_nested_str_weak(wait), - /* K15 */ be_nested_str_weak(process_wait_statement_for_manager), - /* K16 */ be_nested_str_weak(repeat), - /* K17 */ be_nested_str_weak(1), - /* K18 */ be_nested_str_weak(forever), - /* K19 */ be_nested_str_weak(_X2D1), - /* K20 */ be_nested_str_weak(expect_number), - /* K21 */ be_nested_str_weak(expect_keyword), - /* K22 */ be_nested_str_weak(times), - /* K23 */ be_nested_str_weak(expect_left_brace), - /* K24 */ be_nested_str_weak(_X20_X20var_X20repeat_seq_X20_X3D_X20animation_X2ESequenceManager_X28engine_X2C_X20_X25s_X29), - /* K25 */ be_nested_str_weak(at_end), - /* K26 */ be_nested_str_weak(check_right_brace), - /* K27 */ be_nested_str_weak(process_sequence_statement_for_manager), - /* K28 */ be_nested_str_weak(repeat_seq), - /* K29 */ be_nested_str_weak(expect_right_brace), - /* K30 */ be_nested_str_weak(_X20_X20_X25s_X2Epush_repeat_subsequence_X28repeat_seq_X2Esteps_X2C_X20_X25s_X29), - /* K31 */ be_nested_str_weak(IDENTIFIER), - /* K32 */ be_nested_str_weak(peek), - /* K33 */ be_nested_str_weak(DOT), - /* K34 */ be_nested_str_weak(process_sequence_assignment_for_manager), - /* K35 */ be_nested_str_weak(skip_statement), + ( &(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(process_sequence_statement_for_manager), + be_str_weak(_validate_single_parameter), &be_const_str_solidified, - ( &(const binstruction[157]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0403, // 0003 EQ R3 R2 R3 - 0x740E0005, // 0004 JMPT R3 #000B - 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 - 0x780E0000, // 000A JMPF R3 #000C - 0x80000600, // 000B RET 0 - 0x880C0501, // 000C GETMBR R3 R2 K1 - 0xB8120400, // 000D GETNGBL R4 K2 - 0x88100903, // 000E GETMBR R4 R4 K3 - 0x88100905, // 000F GETMBR R4 R4 K5 - 0x1C0C0604, // 0010 EQ R3 R3 R4 - 0x780E0006, // 0011 JMPF R3 #0019 - 0x8C0C0106, // 0012 GETMET R3 R0 K6 - 0x88140508, // 0013 GETMBR R5 R2 K8 - 0x00160E05, // 0014 ADD R5 K7 R5 - 0x7C0C0400, // 0015 CALL R3 2 - 0x8C0C0109, // 0016 GETMET R3 R0 K9 - 0x7C0C0200, // 0017 CALL R3 1 - 0x80000600, // 0018 RET 0 - 0x880C0501, // 0019 GETMBR R3 R2 K1 - 0xB8120400, // 001A GETNGBL R4 K2 - 0x88100903, // 001B GETMBR R4 R4 K3 - 0x8810090A, // 001C GETMBR R4 R4 K10 - 0x1C0C0604, // 001D EQ R3 R3 R4 - 0x780E0002, // 001E JMPF R3 #0022 - 0x8C0C0109, // 001F GETMET R3 R0 K9 - 0x7C0C0200, // 0020 CALL R3 1 - 0x80000600, // 0021 RET 0 - 0x880C0501, // 0022 GETMBR R3 R2 K1 - 0xB8120400, // 0023 GETNGBL R4 K2 - 0x88100903, // 0024 GETMBR R4 R4 K3 - 0x8810090B, // 0025 GETMBR R4 R4 K11 - 0x1C0C0604, // 0026 EQ R3 R3 R4 - 0x780E0006, // 0027 JMPF R3 #002F - 0x880C0508, // 0028 GETMBR R3 R2 K8 - 0x1C0C070C, // 0029 EQ R3 R3 K12 - 0x780E0003, // 002A JMPF R3 #002F - 0x8C0C010D, // 002B GETMET R3 R0 K13 - 0x5C140200, // 002C MOVE R5 R1 - 0x7C0C0400, // 002D CALL R3 2 - 0x7002006C, // 002E JMP #009C - 0x880C0501, // 002F GETMBR R3 R2 K1 - 0xB8120400, // 0030 GETNGBL R4 K2 - 0x88100903, // 0031 GETMBR R4 R4 K3 - 0x8810090B, // 0032 GETMBR R4 R4 K11 - 0x1C0C0604, // 0033 EQ R3 R3 R4 - 0x780E0006, // 0034 JMPF R3 #003C - 0x880C0508, // 0035 GETMBR R3 R2 K8 - 0x1C0C070E, // 0036 EQ R3 R3 K14 - 0x780E0003, // 0037 JMPF R3 #003C - 0x8C0C010F, // 0038 GETMET R3 R0 K15 - 0x5C140200, // 0039 MOVE R5 R1 - 0x7C0C0400, // 003A CALL R3 2 - 0x7002005F, // 003B JMP #009C - 0x880C0501, // 003C GETMBR R3 R2 K1 - 0xB8120400, // 003D GETNGBL R4 K2 - 0x88100903, // 003E GETMBR R4 R4 K3 - 0x8810090B, // 003F GETMBR R4 R4 K11 - 0x1C0C0604, // 0040 EQ R3 R3 R4 - 0x780E003C, // 0041 JMPF R3 #007F - 0x880C0508, // 0042 GETMBR R3 R2 K8 - 0x1C0C0710, // 0043 EQ R3 R3 K16 - 0x780E0039, // 0044 JMPF R3 #007F - 0x8C0C0109, // 0045 GETMET R3 R0 K9 - 0x7C0C0200, // 0046 CALL R3 1 - 0x580C0011, // 0047 LDCONST R3 K17 - 0x8C100100, // 0048 GETMET R4 R0 K0 - 0x7C100200, // 0049 CALL R4 1 - 0x4C140000, // 004A LDNIL R5 - 0x20140805, // 004B NE R5 R4 R5 - 0x7816000C, // 004C JMPF R5 #005A - 0x88140901, // 004D GETMBR R5 R4 K1 - 0xB81A0400, // 004E GETNGBL R6 K2 - 0x88180D03, // 004F GETMBR R6 R6 K3 - 0x88180D0B, // 0050 GETMBR R6 R6 K11 - 0x1C140A06, // 0051 EQ R5 R5 R6 - 0x78160006, // 0052 JMPF R5 #005A - 0x88140908, // 0053 GETMBR R5 R4 K8 - 0x1C140B12, // 0054 EQ R5 R5 K18 - 0x78160003, // 0055 JMPF R5 #005A - 0x8C140109, // 0056 GETMET R5 R0 K9 - 0x7C140200, // 0057 CALL R5 1 - 0x580C0013, // 0058 LDCONST R3 K19 - 0x70020008, // 0059 JMP #0063 - 0x8C140114, // 005A GETMET R5 R0 K20 - 0x7C140200, // 005B CALL R5 1 - 0x8C180115, // 005C GETMET R6 R0 K21 - 0x58200016, // 005D LDCONST R8 K22 - 0x7C180400, // 005E CALL R6 2 - 0x60180008, // 005F GETGBL R6 G8 - 0x5C1C0A00, // 0060 MOVE R7 R5 - 0x7C180200, // 0061 CALL R6 1 - 0x5C0C0C00, // 0062 MOVE R3 R6 - 0x8C140117, // 0063 GETMET R5 R0 K23 - 0x7C140200, // 0064 CALL R5 1 - 0x8C140106, // 0065 GETMET R5 R0 K6 - 0x601C0018, // 0066 GETGBL R7 G24 - 0x58200018, // 0067 LDCONST R8 K24 - 0x5C240600, // 0068 MOVE R9 R3 - 0x7C1C0400, // 0069 CALL R7 2 - 0x7C140400, // 006A CALL R5 2 - 0x8C140119, // 006B GETMET R5 R0 K25 - 0x7C140200, // 006C CALL R5 1 - 0x74160006, // 006D JMPT R5 #0075 - 0x8C14011A, // 006E GETMET R5 R0 K26 - 0x7C140200, // 006F CALL R5 1 - 0x74160003, // 0070 JMPT R5 #0075 - 0x8C14011B, // 0071 GETMET R5 R0 K27 - 0x581C001C, // 0072 LDCONST R7 K28 - 0x7C140400, // 0073 CALL R5 2 - 0x7001FFF5, // 0074 JMP #006B - 0x8C14011D, // 0075 GETMET R5 R0 K29 - 0x7C140200, // 0076 CALL R5 1 - 0x8C140106, // 0077 GETMET R5 R0 K6 - 0x601C0018, // 0078 GETGBL R7 G24 - 0x5820001E, // 0079 LDCONST R8 K30 - 0x5C240200, // 007A MOVE R9 R1 - 0x5C280600, // 007B MOVE R10 R3 - 0x7C1C0600, // 007C CALL R7 3 - 0x7C140400, // 007D CALL R5 2 - 0x7002001C, // 007E JMP #009C - 0x880C0501, // 007F GETMBR R3 R2 K1 - 0xB8120400, // 0080 GETNGBL R4 K2 - 0x88100903, // 0081 GETMBR R4 R4 K3 - 0x8810091F, // 0082 GETMBR R4 R4 K31 - 0x1C0C0604, // 0083 EQ R3 R3 R4 - 0x780E0014, // 0084 JMPF R3 #009A - 0x8C0C0120, // 0085 GETMET R3 R0 K32 - 0x7C0C0200, // 0086 CALL R3 1 - 0x4C100000, // 0087 LDNIL R4 - 0x200C0604, // 0088 NE R3 R3 R4 - 0x780E000C, // 0089 JMPF R3 #0097 - 0x8C0C0120, // 008A GETMET R3 R0 K32 - 0x7C0C0200, // 008B CALL R3 1 - 0x880C0701, // 008C GETMBR R3 R3 K1 - 0xB8120400, // 008D GETNGBL R4 K2 - 0x88100903, // 008E GETMBR R4 R4 K3 - 0x88100921, // 008F GETMBR R4 R4 K33 - 0x1C0C0604, // 0090 EQ R3 R3 R4 - 0x780E0004, // 0091 JMPF R3 #0097 - 0x8C0C0122, // 0092 GETMET R3 R0 K34 - 0x58140007, // 0093 LDCONST R5 K7 - 0x5C180200, // 0094 MOVE R6 R1 - 0x7C0C0600, // 0095 CALL R3 3 - 0x70020001, // 0096 JMP #0099 - 0x8C0C0123, // 0097 GETMET R3 R0 K35 - 0x7C0C0200, // 0098 CALL R3 1 - 0x70020001, // 0099 JMP #009C - 0x8C0C0123, // 009A GETMET R3 R0 K35 - 0x7C0C0200, // 009B CALL R3 1 - 0x80000000, // 009C RET 0 + ( &(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 }) ) ); @@ -4206,9 +6956,110 @@ be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement_for_manage /******************************************************************** -** Solidified function: expect_left_paren +** Solidified function: next ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* 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: _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: 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: expect_left_brace +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -4223,12 +7074,12 @@ be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* 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_PAREN), + /* 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_X28_X27), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X7B_X27), }), - be_str_weak(expect_left_paren), + be_str_weak(expect_left_brace), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 @@ -4256,9 +7107,193 @@ be_local_closure(class_SimpleDSLTranspiler_expect_left_paren, /* name */ /******************************************************************** -** Solidified function: process_function_arguments +** Solidified function: _validate_animation_factory_exists ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name */ +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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: check_right_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* 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_PAREN), + }), + be_str_weak(check_right_paren), + &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: 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: 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_statement +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_statement, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ @@ -4268,105 +7303,190 @@ be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name 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), + ( &(const bvalue[38]) { /* 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(process_property_assignment), }), - be_str_weak(process_function_arguments), + be_str_weak(process_statement), &be_const_str_solidified, - ( &(const binstruction[73]) { /* code */ + ( &(const binstruction[141]) { /* 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 + 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 + 0x7002000E, // 007C JMP #008C + 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 + 0x780E0006, // 0082 JMPF R3 #008A + 0x880C0111, // 0083 GETMBR R3 R0 K17 + 0x740E0001, // 0084 JMPT R3 #0087 + 0x8C0C0112, // 0085 GETMET R3 R0 K18 + 0x7C0C0200, // 0086 CALL R3 1 + 0x8C0C0125, // 0087 GETMET R3 R0 K37 + 0x7C0C0200, // 0088 CALL R3 1 + 0x70020001, // 0089 JMP #008C + 0x8C0C0110, // 008A GETMET R3 R0 K16 + 0x7C0C0200, // 008B CALL R3 1 + 0x80000000, // 008C RET 0 }) ) ); @@ -4374,149 +7494,228 @@ be_local_closure(class_SimpleDSLTranspiler_process_function_arguments, /* name /******************************************************************** -** Solidified function: convert_color +** Solidified function: process_additive_expression ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_convert_color, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_additive_expression, /* name */ be_nested_proto( - 17, /* nstack */ - 2, /* 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[16]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(startswith), - /* K2 */ be_nested_str_weak(0x), - /* K3 */ be_nested_str_weak(0xFF_X25s), - /* K4 */ be_const_int(2), - /* K5 */ be_const_int(2147483647), - /* K6 */ be_nested_str_weak(_X23), - /* K7 */ be_nested_str_weak(0x_X25s), - /* K8 */ be_const_int(1), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(0x_X25s_X25s_X25s_X25s_X25s_X25s_X25s_X25s), - /* K11 */ be_nested_str_weak(0xFF_X25s_X25s_X25s_X25s_X25s_X25s), - /* K12 */ be_nested_str_weak(animation_dsl), - /* K13 */ be_nested_str_weak(is_color_name), - /* K14 */ be_nested_str_weak(get_named_color_value), - /* K15 */ be_nested_str_weak(0xFFFFFFFF), + ( &(const bvalue[14]) { /* 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_computed_expression_string), + /* K12 */ be_nested_str_weak(is_anonymous_function), + /* K13 */ be_nested_str_weak(create_computation_closure_from_string), }), - be_str_weak(convert_color), + be_str_weak(process_additive_expression), &be_const_str_solidified, - ( &(const binstruction[110]) { /* 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 - 0x780E0013, // 0005 JMPF R3 #001A - 0x600C000C, // 0006 GETGBL R3 G12 - 0x5C100200, // 0007 MOVE R4 R1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x54120009, // 0009 LDINT R4 10 - 0x1C0C0604, // 000A EQ R3 R3 R4 - 0x780E0001, // 000B JMPF R3 #000E - 0x80040200, // 000C RET 1 R1 - 0x7002000B, // 000D JMP #001A - 0x600C000C, // 000E GETGBL R3 G12 - 0x5C100200, // 000F MOVE R4 R1 - 0x7C0C0200, // 0010 CALL R3 1 - 0x54120007, // 0011 LDINT R4 8 - 0x1C0C0604, // 0012 EQ R3 R3 R4 - 0x780E0005, // 0013 JMPF R3 #001A - 0x600C0018, // 0014 GETGBL R3 G24 - 0x58100003, // 0015 LDCONST R4 K3 - 0x40160905, // 0016 CONNECT R5 K4 K5 - 0x94140205, // 0017 GETIDX R5 R1 R5 - 0x7C0C0400, // 0018 CALL R3 2 - 0x80040600, // 0019 RET 1 R3 - 0x8C0C0501, // 001A GETMET R3 R2 K1 - 0x5C140200, // 001B MOVE R5 R1 - 0x58180006, // 001C LDCONST R6 K6 - 0x7C0C0600, // 001D CALL R3 3 - 0x780E0044, // 001E JMPF R3 #0064 - 0x600C000C, // 001F GETGBL R3 G12 - 0x5C100200, // 0020 MOVE R4 R1 - 0x7C0C0200, // 0021 CALL R3 1 - 0x54120008, // 0022 LDINT R4 9 - 0x1C0C0604, // 0023 EQ R3 R3 R4 - 0x780E0006, // 0024 JMPF R3 #002C - 0x600C0018, // 0025 GETGBL R3 G24 - 0x58100007, // 0026 LDCONST R4 K7 - 0x40161105, // 0027 CONNECT R5 K8 K5 - 0x94140205, // 0028 GETIDX R5 R1 R5 - 0x7C0C0400, // 0029 CALL R3 2 - 0x80040600, // 002A RET 1 R3 - 0x70020037, // 002B JMP #0064 - 0x600C000C, // 002C GETGBL R3 G12 - 0x5C100200, // 002D MOVE R4 R1 - 0x7C0C0200, // 002E CALL R3 1 - 0x54120006, // 002F LDINT R4 7 - 0x1C0C0604, // 0030 EQ R3 R3 R4 - 0x780E0006, // 0031 JMPF R3 #0039 - 0x600C0018, // 0032 GETGBL R3 G24 - 0x58100003, // 0033 LDCONST R4 K3 - 0x40161105, // 0034 CONNECT R5 K8 K5 - 0x94140205, // 0035 GETIDX R5 R1 R5 - 0x7C0C0400, // 0036 CALL R3 2 + ( &(const binstruction[57]) { /* 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 + 0x780A000C, // 0029 JMPF R2 #0037 + 0x8C10010B, // 002A GETMET R4 R0 K11 + 0x5C180600, // 002B MOVE R6 R3 + 0x7C100400, // 002C CALL R4 2 + 0x78120008, // 002D JMPF R4 #0037 + 0x8C10010C, // 002E GETMET R4 R0 K12 + 0x5C180600, // 002F MOVE R6 R3 + 0x7C100400, // 0030 CALL R4 2 + 0x74120004, // 0031 JMPT R4 #0037 + 0x8C10010D, // 0032 GETMET R4 R0 K13 + 0x5C180600, // 0033 MOVE R6 R3 + 0x7C100400, // 0034 CALL R4 2 + 0x80040800, // 0035 RET 1 R4 + 0x70020000, // 0036 JMP #0038 0x80040600, // 0037 RET 1 R3 - 0x7002002A, // 0038 JMP #0064 - 0x600C000C, // 0039 GETGBL R3 G12 - 0x5C100200, // 003A MOVE R4 R1 - 0x7C0C0200, // 003B CALL R3 1 - 0x54120004, // 003C LDINT R4 5 - 0x1C0C0604, // 003D EQ R3 R3 R4 - 0x780E0011, // 003E JMPF R3 #0051 - 0x940C0308, // 003F GETIDX R3 R1 K8 - 0x94100304, // 0040 GETIDX R4 R1 K4 - 0x94140309, // 0041 GETIDX R5 R1 K9 - 0x541A0003, // 0042 LDINT R6 4 - 0x94180206, // 0043 GETIDX R6 R1 R6 - 0x601C0018, // 0044 GETGBL R7 G24 - 0x5820000A, // 0045 LDCONST R8 K10 - 0x5C240600, // 0046 MOVE R9 R3 - 0x5C280600, // 0047 MOVE R10 R3 - 0x5C2C0800, // 0048 MOVE R11 R4 - 0x5C300800, // 0049 MOVE R12 R4 - 0x5C340A00, // 004A MOVE R13 R5 - 0x5C380A00, // 004B MOVE R14 R5 - 0x5C3C0C00, // 004C MOVE R15 R6 - 0x5C400C00, // 004D MOVE R16 R6 - 0x7C1C1200, // 004E CALL R7 9 - 0x80040E00, // 004F RET 1 R7 - 0x70020012, // 0050 JMP #0064 - 0x600C000C, // 0051 GETGBL R3 G12 - 0x5C100200, // 0052 MOVE R4 R1 - 0x7C0C0200, // 0053 CALL R3 1 - 0x54120003, // 0054 LDINT R4 4 - 0x1C0C0604, // 0055 EQ R3 R3 R4 - 0x780E000C, // 0056 JMPF R3 #0064 - 0x940C0308, // 0057 GETIDX R3 R1 K8 - 0x94100304, // 0058 GETIDX R4 R1 K4 - 0x94140309, // 0059 GETIDX R5 R1 K9 - 0x60180018, // 005A GETGBL R6 G24 - 0x581C000B, // 005B LDCONST R7 K11 - 0x5C200600, // 005C MOVE R8 R3 - 0x5C240600, // 005D MOVE R9 R3 - 0x5C280800, // 005E MOVE R10 R4 - 0x5C2C0800, // 005F MOVE R11 R4 - 0x5C300A00, // 0060 MOVE R12 R5 - 0x5C340A00, // 0061 MOVE R13 R5 - 0x7C180E00, // 0062 CALL R6 7 - 0x80040C00, // 0063 RET 1 R6 - 0xB80E1800, // 0064 GETNGBL R3 K12 - 0x8C0C070D, // 0065 GETMET R3 R3 K13 - 0x5C140200, // 0066 MOVE R5 R1 - 0x7C0C0400, // 0067 CALL R3 2 - 0x780E0003, // 0068 JMPF R3 #006D - 0x8C0C010E, // 0069 GETMET R3 R0 K14 - 0x5C140200, // 006A MOVE R5 R1 - 0x7C0C0400, // 006B CALL R3 2 - 0x80040600, // 006C RET 1 R3 - 0x80061E00, // 006D RET 1 K15 + 0x80000000, // 0038 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_play_statement_fluent +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_play_statement_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[23]) { /* constants */ + /* K0 */ be_nested_str_weak(next), + /* K1 */ be_nested_str_weak(), + /* 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(IDENTIFIER), + /* K7 */ be_nested_str_weak(KEYWORD), + /* K8 */ be_nested_str_weak(peek), + /* K9 */ be_nested_str_weak(LEFT_PAREN), + /* K10 */ be_nested_str_weak(process_nested_function_call), + /* K11 */ be_nested_str_weak(expect_identifier), + /* K12 */ be_nested_str_weak(_validate_object_reference), + /* K13 */ be_nested_str_weak(sequence_X20play), + /* K14 */ be_nested_str_weak(_X25s_), + /* K15 */ be_nested_str_weak(nil), + /* K16 */ be_nested_str_weak(value), + /* K17 */ be_nested_str_weak(for), + /* K18 */ be_nested_str_weak(process_time_value), + /* K19 */ be_nested_str_weak(collect_inline_comment), + /* K20 */ be_nested_str_weak(add), + /* K21 */ be_nested_str_weak(_X25s_X2Epush_play_step_X28_X25s_X2C_X20_X25s_X29_X25s), + /* K22 */ be_nested_str_weak(get_indent), + }), + be_str_weak(process_play_statement_fluent), + &be_const_str_solidified, + ( &(const binstruction[87]) { /* 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 + 0x4C0C0000, // 0005 LDNIL R3 + 0x200C0403, // 0006 NE R3 R2 R3 + 0x780E001C, // 0007 JMPF R3 #0025 + 0x880C0503, // 0008 GETMBR R3 R2 K3 + 0xB8120800, // 0009 GETNGBL R4 K4 + 0x88100905, // 000A GETMBR R4 R4 K5 + 0x88100906, // 000B GETMBR R4 R4 K6 + 0x1C0C0604, // 000C EQ R3 R3 R4 + 0x740E0005, // 000D JMPT R3 #0014 + 0x880C0503, // 000E GETMBR R3 R2 K3 + 0xB8120800, // 000F GETNGBL R4 K4 + 0x88100905, // 0010 GETMBR R4 R4 K5 + 0x88100907, // 0011 GETMBR R4 R4 K7 + 0x1C0C0604, // 0012 EQ R3 R3 R4 + 0x780E0010, // 0013 JMPF R3 #0025 + 0x8C0C0108, // 0014 GETMET R3 R0 K8 + 0x7C0C0200, // 0015 CALL R3 1 + 0x4C100000, // 0016 LDNIL R4 + 0x200C0604, // 0017 NE R3 R3 R4 + 0x780E000B, // 0018 JMPF R3 #0025 + 0x8C0C0108, // 0019 GETMET R3 R0 K8 + 0x7C0C0200, // 001A CALL R3 1 + 0x880C0703, // 001B GETMBR R3 R3 K3 + 0xB8120800, // 001C GETNGBL R4 K4 + 0x88100905, // 001D GETMBR R4 R4 K5 + 0x88100909, // 001E GETMBR R4 R4 K9 + 0x1C0C0604, // 001F EQ R3 R3 R4 + 0x780E0003, // 0020 JMPF R3 #0025 + 0x8C0C010A, // 0021 GETMET R3 R0 K10 + 0x7C0C0200, // 0022 CALL R3 1 + 0x5C040600, // 0023 MOVE R1 R3 + 0x7002000A, // 0024 JMP #0030 + 0x8C0C010B, // 0025 GETMET R3 R0 K11 + 0x7C0C0200, // 0026 CALL R3 1 + 0x8C10010C, // 0027 GETMET R4 R0 K12 + 0x5C180600, // 0028 MOVE R6 R3 + 0x581C000D, // 0029 LDCONST R7 K13 + 0x7C100600, // 002A CALL R4 3 + 0x60100018, // 002B GETGBL R4 G24 + 0x5814000E, // 002C LDCONST R5 K14 + 0x5C180600, // 002D MOVE R6 R3 + 0x7C100400, // 002E CALL R4 2 + 0x5C040800, // 002F MOVE R1 R4 + 0x580C000F, // 0030 LDCONST R3 K15 + 0x8C100102, // 0031 GETMET R4 R0 K2 + 0x7C100200, // 0032 CALL R4 1 + 0x4C140000, // 0033 LDNIL R5 + 0x20100805, // 0034 NE R4 R4 R5 + 0x78120013, // 0035 JMPF R4 #004A + 0x8C100102, // 0036 GETMET R4 R0 K2 + 0x7C100200, // 0037 CALL R4 1 + 0x88100903, // 0038 GETMBR R4 R4 K3 + 0xB8160800, // 0039 GETNGBL R5 K4 + 0x88140B05, // 003A GETMBR R5 R5 K5 + 0x88140B07, // 003B GETMBR R5 R5 K7 + 0x1C100805, // 003C EQ R4 R4 R5 + 0x7812000B, // 003D JMPF R4 #004A + 0x8C100102, // 003E GETMET R4 R0 K2 + 0x7C100200, // 003F CALL R4 1 + 0x88100910, // 0040 GETMBR R4 R4 K16 + 0x1C100911, // 0041 EQ R4 R4 K17 + 0x78120006, // 0042 JMPF R4 #004A + 0x8C100100, // 0043 GETMET R4 R0 K0 + 0x7C100200, // 0044 CALL R4 1 + 0x60100008, // 0045 GETGBL R4 G8 + 0x8C140112, // 0046 GETMET R5 R0 K18 + 0x7C140200, // 0047 CALL R5 1 + 0x7C100200, // 0048 CALL R4 1 + 0x5C0C0800, // 0049 MOVE R3 R4 + 0x8C100113, // 004A GETMET R4 R0 K19 + 0x7C100200, // 004B CALL R4 1 + 0x8C140114, // 004C GETMET R5 R0 K20 + 0x601C0018, // 004D GETGBL R7 G24 + 0x58200015, // 004E LDCONST R8 K21 + 0x8C240116, // 004F GETMET R9 R0 K22 + 0x7C240200, // 0050 CALL R9 1 + 0x5C280200, // 0051 MOVE R10 R1 + 0x5C2C0600, // 0052 MOVE R11 R3 + 0x5C300800, // 0053 MOVE R12 R4 + 0x7C1C0A00, // 0054 CALL R7 5 + 0x7C140400, // 0055 CALL R5 2 + 0x80000000, // 0056 RET 0 }) ) ); @@ -4829,256 +8028,6 @@ be_local_closure(class_SimpleDSLTranspiler_process_palette, /* name */ /*******************************************************************/ -/******************************************************************** -** 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(is_user_function), - /* K19 */ be_nested_str_weak(process_function_arguments), - /* K20 */ be_nested_str_weak(engine_X2C_X20_X25s), - /* K21 */ be_nested_str_weak(engine), - /* K22 */ be_nested_str_weak(add), - /* K23 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29_X25s), - /* K24 */ be_nested_str_weak(_validate_animation_factory_creates_animation), - /* K25 */ be_nested_str_weak(error), - /* K26 */ 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), - /* K27 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20animation_X2E_X25s_X28engine_X29_X25s), - /* K28 */ be_nested_str_weak(_create_instance_for_validation), - /* K29 */ be_nested_str_weak(symbol_table), - /* K30 */ be_nested_str_weak(_process_named_arguments_for_animation), - /* K31 */ be_nested_str_weak(_X25s_), - /* K32 */ be_nested_str_weak(process_value), - /* K33 */ be_nested_str_weak(collect_inline_comment), - /* K34 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K35 */ be_nested_str_weak(contains), - /* K36 */ be_nested_str_weak(string), - }), - be_str_weak(process_animation), - &be_const_str_solidified, - ( &(const binstruction[189]) { /* 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 - 0xB8160600, // 0041 GETNGBL R5 K3 - 0x8C140B12, // 0042 GETMET R5 R5 K18 - 0x5C1C0600, // 0043 MOVE R7 R3 - 0x7C140400, // 0044 CALL R5 2 - 0x78160013, // 0045 JMPF R5 #005A - 0x8C140113, // 0046 GETMET R5 R0 K19 - 0x7C140200, // 0047 CALL R5 1 - 0x20180B0F, // 0048 NE R6 R5 K15 - 0x781A0004, // 0049 JMPF R6 #004F - 0x60180018, // 004A GETGBL R6 G24 - 0x581C0014, // 004B LDCONST R7 K20 - 0x5C200A00, // 004C MOVE R8 R5 - 0x7C180400, // 004D CALL R6 2 - 0x70020000, // 004E JMP #0050 - 0x58180015, // 004F LDCONST R6 K21 - 0x8C1C0116, // 0050 GETMET R7 R0 K22 - 0x60240018, // 0051 GETGBL R9 G24 - 0x58280017, // 0052 LDCONST R10 K23 - 0x5C2C0200, // 0053 MOVE R11 R1 - 0x5C300600, // 0054 MOVE R12 R3 - 0x5C340C00, // 0055 MOVE R13 R6 - 0x5C380800, // 0056 MOVE R14 R4 - 0x7C240A00, // 0057 CALL R9 5 - 0x7C1C0400, // 0058 CALL R7 2 - 0x70020023, // 0059 JMP #007E - 0x8C140118, // 005A GETMET R5 R0 K24 - 0x5C1C0600, // 005B MOVE R7 R3 - 0x7C140400, // 005C CALL R5 2 - 0x74160008, // 005D JMPT R5 #0067 - 0x8C140119, // 005E GETMET R5 R0 K25 - 0x601C0018, // 005F GETGBL R7 G24 - 0x5820001A, // 0060 LDCONST R8 K26 - 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 - 0x8C140116, // 0067 GETMET R5 R0 K22 - 0x601C0018, // 0068 GETGBL R7 G24 - 0x5820001B, // 0069 LDCONST R8 K27 - 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 - 0x8C14011C, // 006F GETMET R5 R0 K28 - 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 - 0x8818011D, // 0075 GETMBR R6 R0 K29 - 0x98180205, // 0076 SETIDX R6 R1 R5 - 0x8C18011E, // 0077 GETMET R6 R0 K30 - 0x60200018, // 0078 GETGBL R8 G24 - 0x5824001F, // 0079 LDCONST R9 K31 - 0x5C280200, // 007A MOVE R10 R1 - 0x7C200400, // 007B CALL R8 2 - 0x5C240600, // 007C MOVE R9 R3 - 0x7C180600, // 007D CALL R6 3 - 0x7002003C, // 007E JMP #00BC - 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 - 0x8C180120, // 009D GETMET R6 R0 K32 - 0x58200003, // 009E LDCONST R8 K3 - 0x7C180400, // 009F CALL R6 2 - 0x8C1C0121, // 00A0 GETMET R7 R0 K33 - 0x7C1C0200, // 00A1 CALL R7 1 - 0x8C200116, // 00A2 GETMET R8 R0 K22 - 0x60280018, // 00A3 GETGBL R10 G24 - 0x582C0022, // 00A4 LDCONST R11 K34 - 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 - 0x78120010, // 00AA JMPF R4 #00BC - 0x4C200000, // 00AB LDNIL R8 - 0x20200A08, // 00AC NE R8 R5 R8 - 0x7822000D, // 00AD JMPF R8 #00BC - 0x8820011D, // 00AE GETMBR R8 R0 K29 - 0x8C201123, // 00AF GETMET R8 R8 K35 - 0x5C280A00, // 00B0 MOVE R10 R5 - 0x7C200400, // 00B1 CALL R8 2 - 0x78220008, // 00B2 JMPF R8 #00BC - 0x8820011D, // 00B3 GETMBR R8 R0 K29 - 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 - 0x8824011D, // 00BA GETMBR R9 R0 K29 - 0x98240208, // 00BB SETIDX R9 R1 R8 - 0x80000000, // 00BC RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: process_sequence_statement ********************************************************************/ @@ -5302,948 +8251,6 @@ be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement, /* name /*******************************************************************/ -/******************************************************************** -** 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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_init, /* 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[11]) { /* constants */ - /* K0 */ be_nested_str_weak(tokens), - /* K1 */ be_nested_str_weak(pos), - /* K2 */ be_const_int(0), - /* K3 */ be_nested_str_weak(output), - /* K4 */ be_nested_str_weak(errors), - /* K5 */ be_nested_str_weak(run_statements), - /* K6 */ be_nested_str_weak(first_statement), - /* K7 */ be_nested_str_weak(strip_initialized), - /* K8 */ be_nested_str_weak(sequence_names), - /* K9 */ be_nested_str_weak(symbol_table), - /* K10 */ be_nested_str_weak(indent_level), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x20080202, // 0001 NE R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x5C080200, // 0003 MOVE R2 R1 - 0x70020001, // 0004 JMP #0007 - 0x60080012, // 0005 GETGBL R2 G18 - 0x7C080000, // 0006 CALL R2 0 - 0x90020002, // 0007 SETMBR R0 K0 R2 - 0x90020302, // 0008 SETMBR R0 K1 K2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90020602, // 000B SETMBR R0 K3 R2 - 0x60080012, // 000C GETGBL R2 G18 - 0x7C080000, // 000D CALL R2 0 - 0x90020802, // 000E SETMBR R0 K4 R2 - 0x60080012, // 000F GETGBL R2 G18 - 0x7C080000, // 0010 CALL R2 0 - 0x90020A02, // 0011 SETMBR R0 K5 R2 - 0x50080200, // 0012 LDBOOL R2 1 0 - 0x90020C02, // 0013 SETMBR R0 K6 R2 - 0x50080000, // 0014 LDBOOL R2 0 0 - 0x90020E02, // 0015 SETMBR R0 K7 R2 - 0x60080013, // 0016 GETGBL R2 G19 - 0x7C080000, // 0017 CALL R2 0 - 0x90021002, // 0018 SETMBR R0 K8 R2 - 0x60080013, // 0019 GETGBL R2 G19 - 0x7C080000, // 001A CALL R2 0 - 0x90021202, // 001B SETMBR R0 K9 R2 - 0x90021502, // 001C SETMBR R0 K10 K2 - 0x80000000, // 001D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_left_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_bracket, /* 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(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(expect_left_bracket), - &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: 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: _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: process_wait_statement -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_wait_statement, /* 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[ 5]) { /* 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(_X20_X20_X25s_X2Epush_X28animation_X2Ecreate_wait_step_X28_X25s_X29_X29_X25s), - }), - be_str_weak(process_wait_statement), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x8C080101, // 0002 GETMET R2 R0 K1 - 0x7C080200, // 0003 CALL R2 1 - 0x8C0C0102, // 0004 GETMET R3 R0 K2 - 0x7C0C0200, // 0005 CALL R3 1 - 0x8C100103, // 0006 GETMET R4 R0 K3 - 0x60180018, // 0007 GETGBL R6 G24 - 0x581C0004, // 0008 LDCONST R7 K4 - 0x5C200200, // 0009 MOVE R8 R1 - 0x5C240400, // 000A MOVE R9 R2 - 0x5C280600, // 000B MOVE R10 R3 - 0x7C180800, // 000C CALL R6 4 - 0x7C100400, // 000D CALL R4 2 - 0x80000000, // 000E 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_play_statement_fluent -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_play_statement_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[23]) { /* constants */ - /* K0 */ be_nested_str_weak(next), - /* K1 */ be_nested_str_weak(), - /* 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(IDENTIFIER), - /* K7 */ be_nested_str_weak(KEYWORD), - /* K8 */ be_nested_str_weak(peek), - /* K9 */ be_nested_str_weak(LEFT_PAREN), - /* K10 */ be_nested_str_weak(process_nested_function_call), - /* K11 */ be_nested_str_weak(expect_identifier), - /* K12 */ be_nested_str_weak(_validate_object_reference), - /* K13 */ be_nested_str_weak(sequence_X20play), - /* K14 */ be_nested_str_weak(_X25s_), - /* K15 */ be_nested_str_weak(nil), - /* K16 */ be_nested_str_weak(value), - /* K17 */ be_nested_str_weak(for), - /* K18 */ be_nested_str_weak(process_time_value), - /* K19 */ be_nested_str_weak(collect_inline_comment), - /* K20 */ be_nested_str_weak(add), - /* K21 */ be_nested_str_weak(_X25s_X2Epush_play_step_X28_X25s_X2C_X20_X25s_X29_X25s), - /* K22 */ be_nested_str_weak(get_indent), - }), - be_str_weak(process_play_statement_fluent), - &be_const_str_solidified, - ( &(const binstruction[87]) { /* 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 - 0x4C0C0000, // 0005 LDNIL R3 - 0x200C0403, // 0006 NE R3 R2 R3 - 0x780E001C, // 0007 JMPF R3 #0025 - 0x880C0503, // 0008 GETMBR R3 R2 K3 - 0xB8120800, // 0009 GETNGBL R4 K4 - 0x88100905, // 000A GETMBR R4 R4 K5 - 0x88100906, // 000B GETMBR R4 R4 K6 - 0x1C0C0604, // 000C EQ R3 R3 R4 - 0x740E0005, // 000D JMPT R3 #0014 - 0x880C0503, // 000E GETMBR R3 R2 K3 - 0xB8120800, // 000F GETNGBL R4 K4 - 0x88100905, // 0010 GETMBR R4 R4 K5 - 0x88100907, // 0011 GETMBR R4 R4 K7 - 0x1C0C0604, // 0012 EQ R3 R3 R4 - 0x780E0010, // 0013 JMPF R3 #0025 - 0x8C0C0108, // 0014 GETMET R3 R0 K8 - 0x7C0C0200, // 0015 CALL R3 1 - 0x4C100000, // 0016 LDNIL R4 - 0x200C0604, // 0017 NE R3 R3 R4 - 0x780E000B, // 0018 JMPF R3 #0025 - 0x8C0C0108, // 0019 GETMET R3 R0 K8 - 0x7C0C0200, // 001A CALL R3 1 - 0x880C0703, // 001B GETMBR R3 R3 K3 - 0xB8120800, // 001C GETNGBL R4 K4 - 0x88100905, // 001D GETMBR R4 R4 K5 - 0x88100909, // 001E GETMBR R4 R4 K9 - 0x1C0C0604, // 001F EQ R3 R3 R4 - 0x780E0003, // 0020 JMPF R3 #0025 - 0x8C0C010A, // 0021 GETMET R3 R0 K10 - 0x7C0C0200, // 0022 CALL R3 1 - 0x5C040600, // 0023 MOVE R1 R3 - 0x7002000A, // 0024 JMP #0030 - 0x8C0C010B, // 0025 GETMET R3 R0 K11 - 0x7C0C0200, // 0026 CALL R3 1 - 0x8C10010C, // 0027 GETMET R4 R0 K12 - 0x5C180600, // 0028 MOVE R6 R3 - 0x581C000D, // 0029 LDCONST R7 K13 - 0x7C100600, // 002A CALL R4 3 - 0x60100018, // 002B GETGBL R4 G24 - 0x5814000E, // 002C LDCONST R5 K14 - 0x5C180600, // 002D MOVE R6 R3 - 0x7C100400, // 002E CALL R4 2 - 0x5C040800, // 002F MOVE R1 R4 - 0x580C000F, // 0030 LDCONST R3 K15 - 0x8C100102, // 0031 GETMET R4 R0 K2 - 0x7C100200, // 0032 CALL R4 1 - 0x4C140000, // 0033 LDNIL R5 - 0x20100805, // 0034 NE R4 R4 R5 - 0x78120013, // 0035 JMPF R4 #004A - 0x8C100102, // 0036 GETMET R4 R0 K2 - 0x7C100200, // 0037 CALL R4 1 - 0x88100903, // 0038 GETMBR R4 R4 K3 - 0xB8160800, // 0039 GETNGBL R5 K4 - 0x88140B05, // 003A GETMBR R5 R5 K5 - 0x88140B07, // 003B GETMBR R5 R5 K7 - 0x1C100805, // 003C EQ R4 R4 R5 - 0x7812000B, // 003D JMPF R4 #004A - 0x8C100102, // 003E GETMET R4 R0 K2 - 0x7C100200, // 003F CALL R4 1 - 0x88100910, // 0040 GETMBR R4 R4 K16 - 0x1C100911, // 0041 EQ R4 R4 K17 - 0x78120006, // 0042 JMPF R4 #004A - 0x8C100100, // 0043 GETMET R4 R0 K0 - 0x7C100200, // 0044 CALL R4 1 - 0x60100008, // 0045 GETGBL R4 G8 - 0x8C140112, // 0046 GETMET R5 R0 K18 - 0x7C140200, // 0047 CALL R5 1 - 0x7C100200, // 0048 CALL R4 1 - 0x5C0C0800, // 0049 MOVE R3 R4 - 0x8C100113, // 004A GETMET R4 R0 K19 - 0x7C100200, // 004B CALL R4 1 - 0x8C140114, // 004C GETMET R5 R0 K20 - 0x601C0018, // 004D GETGBL R7 G24 - 0x58200015, // 004E LDCONST R8 K21 - 0x8C240116, // 004F GETMET R9 R0 K22 - 0x7C240200, // 0050 CALL R9 1 - 0x5C280200, // 0051 MOVE R10 R1 - 0x5C2C0600, // 0052 MOVE R11 R3 - 0x5C300800, // 0053 MOVE R12 R4 - 0x7C1C0A00, // 0054 CALL R7 5 - 0x7C140400, // 0055 CALL R5 2 - 0x80000000, // 0056 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), - }), - be_str_weak(process_sequence_assignment), - &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: process_unary_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_unary_expression, /* 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[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_unary_expression), - &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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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[14]) { /* 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_computed_expression_string), - /* K12 */ be_nested_str_weak(is_anonymous_function), - /* K13 */ be_nested_str_weak(create_computation_closure_from_string), - }), - be_str_weak(process_additive_expression), - &be_const_str_solidified, - ( &(const binstruction[57]) { /* 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 - 0x780A000C, // 0029 JMPF R2 #0037 - 0x8C10010B, // 002A GETMET R4 R0 K11 - 0x5C180600, // 002B MOVE R6 R3 - 0x7C100400, // 002C CALL R4 2 - 0x78120008, // 002D JMPF R4 #0037 - 0x8C10010C, // 002E GETMET R4 R0 K12 - 0x5C180600, // 002F MOVE R6 R3 - 0x7C100400, // 0030 CALL R4 2 - 0x74120004, // 0031 JMPT R4 #0037 - 0x8C10010D, // 0032 GETMET R4 R0 K13 - 0x5C180600, // 0033 MOVE R6 R3 - 0x7C100400, // 0034 CALL R4 2 - 0x80040800, // 0035 RET 1 R4 - 0x70020000, // 0036 JMP #0038 - 0x80040600, // 0037 RET 1 R3 - 0x80000000, // 0038 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_right_bracket -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_bracket, /* 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_BRACKET), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X5D_X27), - }), - be_str_weak(expect_right_bracket), - &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_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: 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: 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: 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_array_literal ********************************************************************/ @@ -6354,11 +8361,11 @@ be_local_closure(class_SimpleDSLTranspiler_process_array_literal, /* name */ /******************************************************************** -** Solidified function: get_indent +** Solidified function: process_template ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_get_indent, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_template, /* name */ be_nested_proto( - 6, /* nstack */ + 12, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -6366,427 +8373,41 @@ be_local_closure(class_SimpleDSLTranspiler_get_indent, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(), - /* K1 */ be_nested_str_weak(indent_level), - /* K2 */ be_const_int(1), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(_X20), - /* K6 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(get_indent), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x00080502, // 0002 ADD R2 R2 K2 - 0x08080503, // 0003 MUL R2 R2 K3 - 0x600C0010, // 0004 GETGBL R3 G16 - 0x04100502, // 0005 SUB R4 R2 K2 - 0x40120804, // 0006 CONNECT R4 K4 R4 - 0x7C0C0200, // 0007 CALL R3 1 - 0xA8020003, // 0008 EXBLK 0 #000D - 0x5C100600, // 0009 MOVE R4 R3 - 0x7C100000, // 000A CALL R4 0 - 0x00040305, // 000B ADD R1 R1 K5 - 0x7001FFFB, // 000C JMP #0009 - 0x580C0006, // 000D LDCONST R3 K6 - 0xAC0C0200, // 000E CATCH R3 1 0 - 0xB0080000, // 000F RAISE 2 R0 R0 - 0x80040200, // 0010 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: _validate_animation_factory_creates_animation -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation, /* 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(_validate_factory_function), - /* K1 */ be_nested_str_weak(animation), - }), - be_str_weak(_validate_animation_factory_creates_animation), - &be_const_str_solidified, - ( &(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: 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: process_time_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_time_value, /* 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(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: 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_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 - 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: 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 */ - 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(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_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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_set -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_set, /* 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[11]) { /* 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(variable), + /* K3 */ be_nested_str_weak(template), /* K4 */ be_nested_str_weak(skip_statement), - /* K5 */ be_nested_str_weak(expect_assign), - /* K6 */ be_nested_str_weak(process_value), - /* K7 */ be_nested_str_weak(collect_inline_comment), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(var_X20_X25s__X20_X3D_X20_X25s_X25s), - /* K10 */ be_nested_str_weak(symbol_table), + /* 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_set), + be_str_weak(process_template), &be_const_str_solidified, - ( &(const binstruction[30]) { /* code */ + ( &(const binstruction[168]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 0x7C040200, // 0001 CALL R1 1 0x8C040101, // 0002 GETMET R1 R0 K1 @@ -6801,1029 +8422,160 @@ be_local_closure(class_SimpleDSLTranspiler_process_set, /* name */ 0x80000400, // 000B RET 0 0x8C080105, // 000C GETMET R2 R0 K5 0x7C080200, // 000D CALL R2 1 - 0x8C080106, // 000E GETMET R2 R0 K6 - 0x58100003, // 000F LDCONST R4 K3 - 0x7C080400, // 0010 CALL R2 2 - 0x8C0C0107, // 0011 GETMET R3 R0 K7 - 0x7C0C0200, // 0012 CALL R3 1 - 0x8C100108, // 0013 GETMET R4 R0 K8 - 0x60180018, // 0014 GETGBL R6 G24 - 0x581C0009, // 0015 LDCONST R7 K9 - 0x5C200200, // 0016 MOVE R8 R1 - 0x5C240400, // 0017 MOVE R9 R2 - 0x5C280600, // 0018 MOVE R10 R3 - 0x7C180800, // 0019 CALL R6 4 - 0x7C100400, // 001A CALL R4 2 - 0x8810010A, // 001B GETMBR R4 R0 K10 - 0x98100303, // 001C SETIDX R4 R1 K3 - 0x80000000, // 001D RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_assign -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* 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(ASSIGN), - /* K5 */ be_nested_str_weak(next), - /* K6 */ be_nested_str_weak(error), - /* K7 */ be_nested_str_weak(Expected_X20_X27_X3D_X27), - }), - be_str_weak(expect_assign), - &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_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[34]) { /* 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(run), - /* K30 */ be_nested_str_weak(process_run), - /* K31 */ be_nested_str_weak(on), - /* K32 */ be_nested_str_weak(process_event_handler), - /* K33 */ be_nested_str_weak(process_property_assignment), - }), - be_str_weak(process_statement), - &be_const_str_solidified, - ( &(const binstruction[129]) { /* 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 - 0x780E003A, // 0035 JMPF R3 #0071 - 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 - 0x7002002F, // 003F JMP #0070 - 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 - 0x70020025, // 0049 JMP #0070 - 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 - 0x7002001F, // 004F JMP #0070 - 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 - 0x70020019, // 0055 JMP #0070 - 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 - 0x70020013, // 005B JMP #0070 - 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 - 0x7002000D, // 0061 JMP #0070 - 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 - 0x70020007, // 0067 JMP #0070 - 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 - 0x70020001, // 006D JMP #0070 - 0x8C0C0110, // 006E GETMET R3 R0 K16 - 0x7C0C0200, // 006F CALL R3 1 - 0x7002000E, // 0070 JMP #0080 - 0x880C0301, // 0071 GETMBR R3 R1 K1 - 0xB8120400, // 0072 GETNGBL R4 K2 - 0x88100903, // 0073 GETMBR R4 R4 K3 - 0x8810090C, // 0074 GETMBR R4 R4 K12 - 0x1C0C0604, // 0075 EQ R3 R3 R4 - 0x780E0006, // 0076 JMPF R3 #007E - 0x880C0111, // 0077 GETMBR R3 R0 K17 - 0x740E0001, // 0078 JMPT R3 #007B - 0x8C0C0112, // 0079 GETMET R3 R0 K18 - 0x7C0C0200, // 007A CALL R3 1 - 0x8C0C0121, // 007B GETMET R3 R0 K33 - 0x7C0C0200, // 007C CALL R3 1 - 0x70020001, // 007D JMP #0080 - 0x8C0C0110, // 007E GETMET R3 R0 K16 - 0x7C0C0200, // 007F CALL R3 1 - 0x80000000, // 0080 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: _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 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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_primary_expression -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_primary_expression, /* 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[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), - /* 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_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(symbol_table), - /* K36 */ be_nested_str_weak(contains), - /* K37 */ be_nested_str_weak(string), - /* K38 */ be_nested_str_weak(_validate_single_parameter), - /* K39 */ 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), - /* K40 */ be_nested_str_weak(introspect), - /* K41 */ be_nested_str_weak(), - /* K42 */ be_nested_str_weak(animation), - /* K43 */ be_nested_str_weak(animation_X2E_X25s), - /* K44 */ be_nested_str_weak(_X25s_), - /* K45 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), - /* K46 */ be_nested_str_weak(startswith), - /* K47 */ be_nested_str_weak(PALETTE_), - /* K48 */ be_nested_str_weak(is_color_name), - /* K49 */ be_nested_str_weak(get_named_color_value), - /* K50 */ be_nested_str_weak(true), - /* K51 */ be_nested_str_weak(false), - /* K52 */ be_nested_str_weak(Unexpected_X20value_X3A_X20_X25s), - }), - be_str_weak(process_primary_expression), - &be_const_str_solidified, - ( &(const binstruction[298]) { /* 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 - 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 - 0x7812006C, // 0095 JMPF R4 #0103 - 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 - 0x7816003F, // 009D JMPF R5 #00DE - 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 - 0x78160037, // 00A5 JMPF R5 #00DE - 0x8C140108, // 00A6 GETMET R5 R0 K8 - 0x7C140200, // 00A7 CALL R5 1 - 0x8C140122, // 00A8 GETMET R5 R0 K34 - 0x7C140200, // 00A9 CALL R5 1 - 0x88180123, // 00AA GETMBR R6 R0 K35 - 0x8C180D24, // 00AB GETMET R6 R6 K36 - 0x5C200800, // 00AC MOVE R8 R4 - 0x7C180400, // 00AD CALL R6 2 - 0x781A0016, // 00AE JMPF R6 #00C6 - 0x88180123, // 00AF GETMBR R6 R0 K35 - 0x94180C04, // 00B0 GETIDX R6 R6 R4 - 0x601C0004, // 00B1 GETGBL R7 G4 - 0x5C200C00, // 00B2 MOVE R8 R6 - 0x7C1C0200, // 00B3 CALL R7 1 - 0x201C0F25, // 00B4 NE R7 R7 K37 - 0x781E0008, // 00B5 JMPF R7 #00BF - 0x601C0005, // 00B6 GETGBL R7 G5 - 0x5C200C00, // 00B7 MOVE R8 R6 - 0x7C1C0200, // 00B8 CALL R7 1 - 0x8C200126, // 00B9 GETMET R8 R0 K38 - 0x5C280E00, // 00BA MOVE R10 R7 - 0x5C2C0A00, // 00BB MOVE R11 R5 - 0x5C300C00, // 00BC MOVE R12 R6 - 0x7C200800, // 00BD CALL R8 4 - 0x70020006, // 00BE JMP #00C6 - 0x8C1C0101, // 00BF GETMET R7 R0 K1 - 0x60240018, // 00C0 GETGBL R9 G24 - 0x58280027, // 00C1 LDCONST R10 K39 - 0x5C2C0800, // 00C2 MOVE R11 R4 - 0x7C240400, // 00C3 CALL R9 2 - 0x7C1C0400, // 00C4 CALL R7 2 - 0x80060600, // 00C5 RET 1 K3 - 0xA41A5000, // 00C6 IMPORT R6 K40 - 0x581C0029, // 00C7 LDCONST R7 K41 - 0x8C200D24, // 00C8 GETMET R8 R6 K36 - 0xB82A5400, // 00C9 GETNGBL R10 K42 - 0x5C2C0800, // 00CA MOVE R11 R4 - 0x7C200600, // 00CB CALL R8 3 - 0x78220005, // 00CC JMPF R8 #00D3 - 0x60200018, // 00CD GETGBL R8 G24 - 0x5824002B, // 00CE LDCONST R9 K43 - 0x5C280800, // 00CF MOVE R10 R4 - 0x7C200400, // 00D0 CALL R8 2 - 0x5C1C1000, // 00D1 MOVE R7 R8 - 0x70020004, // 00D2 JMP #00D8 - 0x60200018, // 00D3 GETGBL R8 G24 - 0x5824002C, // 00D4 LDCONST R9 K44 - 0x5C280800, // 00D5 MOVE R10 R4 - 0x7C200400, // 00D6 CALL R8 2 - 0x5C1C1000, // 00D7 MOVE R7 R8 - 0x60200018, // 00D8 GETGBL R8 G24 - 0x5824002D, // 00D9 LDCONST R9 K45 - 0x5C280E00, // 00DA MOVE R10 R7 - 0x5C2C0A00, // 00DB MOVE R11 R5 - 0x7C200600, // 00DC CALL R8 3 - 0x80041000, // 00DD RET 1 R8 - 0xA4164A00, // 00DE IMPORT R5 K37 - 0x8C180B2E, // 00DF GETMET R6 R5 K46 - 0x5C200800, // 00E0 MOVE R8 R4 - 0x5824002F, // 00E1 LDCONST R9 K47 - 0x7C180600, // 00E2 CALL R6 3 - 0x781A0004, // 00E3 JMPF R6 #00E9 - 0x60180018, // 00E4 GETGBL R6 G24 - 0x581C002B, // 00E5 LDCONST R7 K43 - 0x5C200800, // 00E6 MOVE R8 R4 - 0x7C180400, // 00E7 CALL R6 2 - 0x80040C00, // 00E8 RET 1 R6 - 0xB81A0A00, // 00E9 GETNGBL R6 K5 - 0x8C180D30, // 00EA GETMET R6 R6 K48 - 0x5C200800, // 00EB MOVE R8 R4 - 0x7C180400, // 00EC CALL R6 2 - 0x781A0003, // 00ED JMPF R6 #00F2 - 0x8C180131, // 00EE GETMET R6 R0 K49 - 0x5C200800, // 00EF MOVE R8 R4 - 0x7C180400, // 00F0 CALL R6 2 - 0x80040C00, // 00F1 RET 1 R6 - 0xA41A5000, // 00F2 IMPORT R6 K40 - 0x8C1C0D24, // 00F3 GETMET R7 R6 K36 - 0xB8265400, // 00F4 GETNGBL R9 K42 - 0x5C280800, // 00F5 MOVE R10 R4 - 0x7C1C0600, // 00F6 CALL R7 3 - 0x781E0005, // 00F7 JMPF R7 #00FE - 0x601C0018, // 00F8 GETGBL R7 G24 - 0x5820002B, // 00F9 LDCONST R8 K43 - 0x5C240800, // 00FA MOVE R9 R4 - 0x7C1C0400, // 00FB CALL R7 2 - 0x80040E00, // 00FC RET 1 R7 - 0x70020004, // 00FD JMP #0103 - 0x601C0018, // 00FE GETGBL R7 G24 - 0x5820002C, // 00FF LDCONST R8 K44 - 0x5C240800, // 0100 MOVE R9 R4 - 0x7C1C0400, // 0101 CALL R7 2 - 0x80040E00, // 0102 RET 1 R7 - 0x88100704, // 0103 GETMBR R4 R3 K4 - 0xB8160A00, // 0104 GETNGBL R5 K5 - 0x88140B06, // 0105 GETMBR R5 R5 K6 - 0x88140B0C, // 0106 GETMBR R5 R5 K12 - 0x1C100805, // 0107 EQ R4 R4 R5 - 0x78120009, // 0108 JMPF R4 #0113 - 0x8810070F, // 0109 GETMBR R4 R3 K15 - 0x1C100932, // 010A EQ R4 R4 K50 - 0x74120002, // 010B JMPT R4 #010F - 0x8810070F, // 010C GETMBR R4 R3 K15 - 0x1C100933, // 010D EQ R4 R4 K51 - 0x78120003, // 010E JMPF R4 #0113 - 0x8810070F, // 010F GETMBR R4 R3 K15 - 0x8C140108, // 0110 GETMET R5 R0 K8 - 0x7C140200, // 0111 CALL R5 1 - 0x80040800, // 0112 RET 1 R4 - 0x88100704, // 0113 GETMBR R4 R3 K4 - 0xB8160A00, // 0114 GETNGBL R5 K5 - 0x88140B06, // 0115 GETMBR R5 R5 K6 - 0x88140B0C, // 0116 GETMBR R5 R5 K12 - 0x1C100805, // 0117 EQ R4 R4 R5 - 0x78120007, // 0118 JMPF R4 #0121 - 0x8810070F, // 0119 GETMBR R4 R3 K15 - 0x8C140108, // 011A GETMET R5 R0 K8 - 0x7C140200, // 011B CALL R5 1 - 0x60140018, // 011C GETGBL R5 G24 - 0x5818002B, // 011D LDCONST R6 K43 - 0x5C1C0800, // 011E MOVE R7 R4 - 0x7C140400, // 011F CALL R5 2 - 0x80040A00, // 0120 RET 1 R5 - 0x8C100101, // 0121 GETMET R4 R0 K1 - 0x60180018, // 0122 GETGBL R6 G24 - 0x581C0034, // 0123 LDCONST R7 K52 - 0x8820070F, // 0124 GETMBR R8 R3 K15 - 0x7C180400, // 0125 CALL R6 2 - 0x7C100400, // 0126 CALL R4 2 - 0x8C100108, // 0127 GETMET R4 R0 K8 - 0x7C100200, // 0128 CALL R4 1 - 0x80060600, // 0129 RET 1 K3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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: is_anonymous_function -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* 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[ 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: expect_left_brace -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_left_brace, /* 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(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(expect_left_brace), - &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 + 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 + 0x741A002E, // 0066 JMPT R6 #0096 + 0x8C180107, // 0067 GETMET R6 R0 K7 + 0x7C180200, // 0068 CALL R6 1 + 0x741A002B, // 0069 JMPT R6 #0096 + 0x8C180109, // 006A GETMET R6 R0 K9 + 0x7C180200, // 006B CALL R6 1 + 0x4C1C0000, // 006C LDNIL R7 + 0x1C1C0C07, // 006D EQ R7 R6 R7 + 0x741E0005, // 006E JMPT R7 #0075 + 0x881C0D0A, // 006F GETMBR R7 R6 K10 + 0xB8221600, // 0070 GETNGBL R8 K11 + 0x8820110C, // 0071 GETMBR R8 R8 K12 + 0x88201113, // 0072 GETMBR R8 R8 K19 + 0x1C1C0E08, // 0073 EQ R7 R7 R8 + 0x781E0000, // 0074 JMPF R7 #0076 + 0x7002001F, // 0075 JMP #0096 + 0x881C0D0A, // 0076 GETMBR R7 R6 K10 + 0xB8221600, // 0077 GETNGBL R8 K11 + 0x8820110C, // 0078 GETMBR R8 R8 K12 + 0x88201114, // 0079 GETMBR R8 R8 K20 + 0x1C1C0E08, // 007A EQ R7 R7 R8 + 0x781E0004, // 007B JMPF R7 #0081 + 0x00140B15, // 007C ADD R5 R5 K21 + 0x8C1C0910, // 007D GETMET R7 R4 K16 + 0x5C240C00, // 007E MOVE R9 R6 + 0x7C1C0400, // 007F CALL R7 2 + 0x70020011, // 0080 JMP #0093 + 0x881C0D0A, // 0081 GETMBR R7 R6 K10 + 0xB8221600, // 0082 GETNGBL R8 K11 + 0x8820110C, // 0083 GETMBR R8 R8 K12 + 0x88201116, // 0084 GETMBR R8 R8 K22 + 0x1C1C0E08, // 0085 EQ R7 R7 R8 + 0x781E0008, // 0086 JMPF R7 #0090 + 0x1C1C0B12, // 0087 EQ R7 R5 K18 + 0x781E0001, // 0088 JMPF R7 #008B + 0x7002000B, // 0089 JMP #0096 + 0x70020003, // 008A JMP #008F + 0x04140B15, // 008B SUB R5 R5 K21 + 0x8C1C0910, // 008C GETMET R7 R4 K16 + 0x5C240C00, // 008D MOVE R9 R6 + 0x7C1C0400, // 008E CALL R7 2 + 0x70020002, // 008F JMP #0093 + 0x8C1C0910, // 0090 GETMET R7 R4 K16 + 0x5C240C00, // 0091 MOVE R9 R6 + 0x7C1C0400, // 0092 CALL R7 2 + 0x8C1C0100, // 0093 GETMET R7 R0 K0 + 0x7C1C0200, // 0094 CALL R7 1 + 0x7001FFCD, // 0095 JMP #0064 + 0x8C180117, // 0096 GETMET R6 R0 K23 + 0x7C180200, // 0097 CALL R6 1 + 0x88180118, // 0098 GETMBR R6 R0 K24 + 0x601C0013, // 0099 GETGBL R7 G19 + 0x7C1C0000, // 009A CALL R7 0 + 0x981E3202, // 009B SETIDX R7 K25 R2 + 0x981E3403, // 009C SETIDX R7 K26 R3 + 0x981E3604, // 009D SETIDX R7 K27 R4 + 0x98180207, // 009E SETIDX R6 R1 R7 + 0x8C18011C, // 009F GETMET R6 R0 K28 + 0x5C200200, // 00A0 MOVE R8 R1 + 0x5C240400, // 00A1 MOVE R9 R2 + 0x5C280600, // 00A2 MOVE R10 R3 + 0x5C2C0800, // 00A3 MOVE R11 R4 + 0x7C180A00, // 00A4 CALL R6 5 + 0x8818011D, // 00A5 GETMBR R6 R0 K29 + 0x98180303, // 00A6 SETIDX R6 R1 K3 + 0x80000000, // 00A7 RET 0 }) ) ); @@ -7920,6 +8672,207 @@ be_local_closure(class_SimpleDSLTranspiler__validate_factory_function, /* name /*******************************************************************/ +/******************************************************************** +** 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[28]) { /* 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(template_definitions), + /* K16 */ be_nested_str_weak(contains), + /* K17 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), + /* K18 */ be_nested_str_weak(self_X2Eengine), + /* K19 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K20 */ be_nested_str_weak(_is_simple_function_call), + /* K21 */ be_nested_str_weak(process_function_arguments), + /* K22 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), + /* K23 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + /* K24 */ be_nested_str_weak(_validate_animation_factory_exists), + /* K25 */ 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), + /* K26 */ be_nested_str_weak(skip_function_arguments), + /* K27 */ be_nested_str_weak(_generate_anonymous_function_call), + }), + be_str_weak(process_nested_function_call), + &be_const_str_solidified, + ( &(const binstruction[99]) { /* 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 + 0x880C010F, // 0026 GETMBR R3 R0 K15 + 0x8C0C0710, // 0027 GETMET R3 R3 K16 + 0x5C140400, // 0028 MOVE R5 R2 + 0x7C0C0400, // 0029 CALL R3 2 + 0x780E0010, // 002A JMPF R3 #003C + 0x8C0C010D, // 002B GETMET R3 R0 K13 + 0x7C0C0200, // 002C CALL R3 1 + 0x20100701, // 002D NE R4 R3 K1 + 0x78120004, // 002E JMPF R4 #0034 + 0x60100018, // 002F GETGBL R4 G24 + 0x58140011, // 0030 LDCONST R5 K17 + 0x5C180600, // 0031 MOVE R6 R3 + 0x7C100400, // 0032 CALL R4 2 + 0x70020000, // 0033 JMP #0035 + 0x58100012, // 0034 LDCONST R4 K18 + 0x60140018, // 0035 GETGBL R5 G24 + 0x58180013, // 0036 LDCONST R6 K19 + 0x5C1C0400, // 0037 MOVE R7 R2 + 0x5C200800, // 0038 MOVE R8 R4 + 0x7C140600, // 0039 CALL R5 3 + 0x80040A00, // 003A RET 1 R5 + 0x70020025, // 003B JMP #0062 + 0x8C0C0114, // 003C GETMET R3 R0 K20 + 0x5C140400, // 003D MOVE R5 R2 + 0x7C0C0400, // 003E CALL R3 2 + 0x780E0010, // 003F JMPF R3 #0051 + 0x8C0C0115, // 0040 GETMET R3 R0 K21 + 0x7C0C0200, // 0041 CALL R3 1 + 0x20100701, // 0042 NE R4 R3 K1 + 0x78120006, // 0043 JMPF R4 #004B + 0x60100018, // 0044 GETGBL R4 G24 + 0x58140016, // 0045 LDCONST R5 K22 + 0x5C180400, // 0046 MOVE R6 R2 + 0x5C1C0600, // 0047 MOVE R7 R3 + 0x7C100600, // 0048 CALL R4 3 + 0x80040800, // 0049 RET 1 R4 + 0x70020004, // 004A JMP #0050 + 0x60100018, // 004B GETGBL R4 G24 + 0x58140017, // 004C LDCONST R5 K23 + 0x5C180400, // 004D MOVE R6 R2 + 0x7C100400, // 004E CALL R4 2 + 0x80040800, // 004F RET 1 R4 + 0x70020010, // 0050 JMP #0062 + 0x8C0C0118, // 0051 GETMET R3 R0 K24 + 0x5C140400, // 0052 MOVE R5 R2 + 0x7C0C0400, // 0053 CALL R3 2 + 0x740E0008, // 0054 JMPT R3 #005E + 0x8C0C0109, // 0055 GETMET R3 R0 K9 + 0x60140018, // 0056 GETGBL R5 G24 + 0x58180019, // 0057 LDCONST R6 K25 + 0x5C1C0400, // 0058 MOVE R7 R2 + 0x7C140400, // 0059 CALL R5 2 + 0x7C0C0400, // 005A CALL R3 2 + 0x8C0C011A, // 005B GETMET R3 R0 K26 + 0x7C0C0200, // 005C CALL R3 1 + 0x80061600, // 005D RET 1 K11 + 0x8C0C011B, // 005E GETMET R3 R0 K27 + 0x5C140400, // 005F MOVE R5 R2 + 0x7C0C0400, // 0060 CALL R3 2 + 0x80040600, // 0061 RET 1 R3 + 0x80000000, // 0062 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: expect_assign +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_assign, /* 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(ASSIGN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X3D_X27), + }), + be_str_weak(expect_assign), + &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: validate_user_name ********************************************************************/ @@ -8005,185 +8958,6 @@ be_local_closure(class_SimpleDSLTranspiler_validate_user_name, /* name */ /*******************************************************************/ -/******************************************************************** -** 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_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[28]) { /* 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(animation), - /* K16 */ be_nested_str_weak(is_user_function), - /* K17 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K18 */ be_nested_str_weak(self_X2Eengine), - /* K19 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), - /* K20 */ be_nested_str_weak(_is_simple_function_call), - /* K21 */ be_nested_str_weak(process_function_arguments), - /* K22 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), - /* K23 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), - /* K24 */ be_nested_str_weak(_validate_animation_factory_exists), - /* K25 */ 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), - /* K26 */ be_nested_str_weak(skip_function_arguments), - /* K27 */ be_nested_str_weak(_generate_anonymous_function_call), - }), - be_str_weak(process_nested_function_call), - &be_const_str_solidified, - ( &(const binstruction[99]) { /* 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 - 0xB80E1E00, // 0026 GETNGBL R3 K15 - 0x8C0C0710, // 0027 GETMET R3 R3 K16 - 0x5C140400, // 0028 MOVE R5 R2 - 0x7C0C0400, // 0029 CALL R3 2 - 0x780E0010, // 002A JMPF R3 #003C - 0x8C0C010D, // 002B GETMET R3 R0 K13 - 0x7C0C0200, // 002C CALL R3 1 - 0x20100701, // 002D NE R4 R3 K1 - 0x78120004, // 002E JMPF R4 #0034 - 0x60100018, // 002F GETGBL R4 G24 - 0x58140011, // 0030 LDCONST R5 K17 - 0x5C180600, // 0031 MOVE R6 R3 - 0x7C100400, // 0032 CALL R4 2 - 0x70020000, // 0033 JMP #0035 - 0x58100012, // 0034 LDCONST R4 K18 - 0x60140018, // 0035 GETGBL R5 G24 - 0x58180013, // 0036 LDCONST R6 K19 - 0x5C1C0400, // 0037 MOVE R7 R2 - 0x5C200800, // 0038 MOVE R8 R4 - 0x7C140600, // 0039 CALL R5 3 - 0x80040A00, // 003A RET 1 R5 - 0x70020025, // 003B JMP #0062 - 0x8C0C0114, // 003C GETMET R3 R0 K20 - 0x5C140400, // 003D MOVE R5 R2 - 0x7C0C0400, // 003E CALL R3 2 - 0x780E0010, // 003F JMPF R3 #0051 - 0x8C0C0115, // 0040 GETMET R3 R0 K21 - 0x7C0C0200, // 0041 CALL R3 1 - 0x20100701, // 0042 NE R4 R3 K1 - 0x78120006, // 0043 JMPF R4 #004B - 0x60100018, // 0044 GETGBL R4 G24 - 0x58140016, // 0045 LDCONST R5 K22 - 0x5C180400, // 0046 MOVE R6 R2 - 0x5C1C0600, // 0047 MOVE R7 R3 - 0x7C100600, // 0048 CALL R4 3 - 0x80040800, // 0049 RET 1 R4 - 0x70020004, // 004A JMP #0050 - 0x60100018, // 004B GETGBL R4 G24 - 0x58140017, // 004C LDCONST R5 K23 - 0x5C180400, // 004D MOVE R6 R2 - 0x7C100400, // 004E CALL R4 2 - 0x80040800, // 004F RET 1 R4 - 0x70020010, // 0050 JMP #0062 - 0x8C0C0118, // 0051 GETMET R3 R0 K24 - 0x5C140400, // 0052 MOVE R5 R2 - 0x7C0C0400, // 0053 CALL R3 2 - 0x740E0008, // 0054 JMPT R3 #005E - 0x8C0C0109, // 0055 GETMET R3 R0 K9 - 0x60140018, // 0056 GETGBL R5 G24 - 0x58180019, // 0057 LDCONST R6 K25 - 0x5C1C0400, // 0058 MOVE R7 R2 - 0x7C140400, // 0059 CALL R5 2 - 0x7C0C0400, // 005A CALL R3 2 - 0x8C0C011A, // 005B GETMET R3 R0 K26 - 0x7C0C0200, // 005C CALL R3 1 - 0x80061600, // 005D RET 1 K11 - 0x8C0C011B, // 005E GETMET R3 R0 K27 - 0x5C140400, // 005F MOVE R5 R2 - 0x7C0C0400, // 0060 CALL R3 2 - 0x80040600, // 0061 RET 1 R3 - 0x80000000, // 0062 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: current ********************************************************************/ @@ -8222,6 +8996,219 @@ be_local_closure(class_SimpleDSLTranspiler_current, /* name */ /*******************************************************************/ +/******************************************************************** +** 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: 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: 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[22]) { /* 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(template_definitions), + /* K16 */ be_nested_str_weak(contains), + /* K17 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K18 */ be_nested_str_weak(engine), + /* K19 */ be_nested_str_weak(_X25s_template_X28_X25s_X29), + /* K20 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X2C_X20_X25s_X29), + /* K21 */ be_nested_str_weak(animation_X2E_X25s_X28engine_X29), + }), + be_str_weak(process_function_call), + &be_const_str_solidified, + ( &(const binstruction[75]) { /* 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 + 0x8C10010D, // 0026 GETMET R4 R0 K13 + 0x7C100200, // 0027 CALL R4 1 + 0x8814010F, // 0028 GETMBR R5 R0 K15 + 0x8C140B10, // 0029 GETMET R5 R5 K16 + 0x5C1C0600, // 002A MOVE R7 R3 + 0x7C140400, // 002B CALL R5 2 + 0x7816000E, // 002C JMPF R5 #003C + 0x20140901, // 002D NE R5 R4 K1 + 0x78160004, // 002E JMPF R5 #0034 + 0x60140018, // 002F GETGBL R5 G24 + 0x58180011, // 0030 LDCONST R6 K17 + 0x5C1C0800, // 0031 MOVE R7 R4 + 0x7C140400, // 0032 CALL R5 2 + 0x70020000, // 0033 JMP #0035 + 0x58140012, // 0034 LDCONST R5 K18 + 0x60180018, // 0035 GETGBL R6 G24 + 0x581C0013, // 0036 LDCONST R7 K19 + 0x5C200600, // 0037 MOVE R8 R3 + 0x5C240A00, // 0038 MOVE R9 R5 + 0x7C180600, // 0039 CALL R6 3 + 0x80040C00, // 003A RET 1 R6 + 0x7002000D, // 003B JMP #004A + 0x20140901, // 003C NE R5 R4 K1 + 0x78160006, // 003D JMPF R5 #0045 + 0x60140018, // 003E GETGBL R5 G24 + 0x58180014, // 003F LDCONST R6 K20 + 0x5C1C0600, // 0040 MOVE R7 R3 + 0x5C200800, // 0041 MOVE R8 R4 + 0x7C140600, // 0042 CALL R5 3 + 0x80040A00, // 0043 RET 1 R5 + 0x70020004, // 0044 JMP #004A + 0x60140018, // 0045 GETGBL R5 G24 + 0x58180015, // 0046 LDCONST R6 K21 + 0x5C1C0600, // 0047 MOVE R7 R3 + 0x7C140400, // 0048 CALL R5 2 + 0x80040A00, // 0049 RET 1 R5 + 0x80000000, // 004A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: can_use_as_identifier ********************************************************************/ @@ -8293,426 +9280,9 @@ be_local_closure(class_SimpleDSLTranspiler_can_use_as_identifier, /* name */ /******************************************************************** -** Solidified function: process_function_arguments_for_expression +** Solidified function: expect_comma ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_function_arguments_for_expression, /* 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[20]) { /* 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_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), - }), - be_str_weak(process_function_arguments_for_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: 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[11]) { /* constants */ - /* K0 */ be_nested_str_weak(run_statements), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(name), - /* K3 */ be_nested_str_weak(comment), - /* K4 */ be_nested_str_weak(sequence_names), - /* K5 */ be_nested_str_weak(contains), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(engine_X2Eadd_sequence_manager_X28_X25s__X29_X25s), - /* K8 */ be_nested_str_weak(engine_X2Eadd_animation_X28_X25s__X29_X25s), - /* K9 */ be_nested_str_weak(stop_iteration), - /* K10 */ be_nested_str_weak(engine_X2Estart_X28_X29), - }), - be_str_weak(generate_engine_start), - &be_const_str_solidified, - ( &(const binstruction[42]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x1C040301, // 0003 EQ R1 R1 K1 - 0x78060000, // 0004 JMPF R1 #0006 - 0x80000200, // 0005 RET 0 - 0x60040010, // 0006 GETGBL R1 G16 - 0x88080100, // 0007 GETMBR R2 R0 K0 - 0x7C040200, // 0008 CALL R1 1 - 0xA8020018, // 0009 EXBLK 0 #0023 - 0x5C080200, // 000A MOVE R2 R1 - 0x7C080000, // 000B CALL R2 0 - 0x940C0502, // 000C GETIDX R3 R2 K2 - 0x94100503, // 000D GETIDX R4 R2 K3 - 0x88140104, // 000E GETMBR R5 R0 K4 - 0x8C140B05, // 000F GETMET R5 R5 K5 - 0x5C1C0600, // 0010 MOVE R7 R3 - 0x7C140400, // 0011 CALL R5 2 - 0x78160007, // 0012 JMPF R5 #001B - 0x8C140106, // 0013 GETMET R5 R0 K6 - 0x601C0018, // 0014 GETGBL R7 G24 - 0x58200007, // 0015 LDCONST R8 K7 - 0x5C240600, // 0016 MOVE R9 R3 - 0x5C280800, // 0017 MOVE R10 R4 - 0x7C1C0600, // 0018 CALL R7 3 - 0x7C140400, // 0019 CALL R5 2 - 0x70020006, // 001A JMP #0022 - 0x8C140106, // 001B GETMET R5 R0 K6 - 0x601C0018, // 001C GETGBL R7 G24 - 0x58200008, // 001D LDCONST R8 K8 - 0x5C240600, // 001E MOVE R9 R3 - 0x5C280800, // 001F MOVE R10 R4 - 0x7C1C0600, // 0020 CALL R7 3 - 0x7C140400, // 0021 CALL R5 2 - 0x7001FFE6, // 0022 JMP #000A - 0x58040009, // 0023 LDCONST R1 K9 - 0xAC040200, // 0024 CATCH R1 1 0 - 0xB0080000, // 0025 RAISE 2 R0 R0 - 0x8C040106, // 0026 GETMET R1 R0 K6 - 0x580C000A, // 0027 LDCONST R3 K10 - 0x7C040400, // 0028 CALL R1 2 - 0x80000000, // 0029 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: 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[ 7]) { /* 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_X2Eglobal), - /* K5 */ be_nested_str_weak(animation_X2E), - /* K6 */ be_nested_str_weak(_), - }), - be_str_weak(is_computed_expression), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* 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 - 0x7416002A, // 0006 JMPT R5 #0032 - 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 - 0x74160024, // 000C JMPT R5 #0032 - 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 - 0x7416001E, // 0012 JMPT R5 #0032 - 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 - 0x74160018, // 0018 JMPT R5 #0032 - 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 - 0x74160012, // 001E JMPT R5 #0032 - 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 - 0x7416000C, // 0024 JMPT R5 #0032 - 0x8C140901, // 0025 GETMET R5 R4 K1 - 0x5C1C0200, // 0026 MOVE R7 R1 - 0x58200006, // 0027 LDCONST R8 K6 - 0x7C140600, // 0028 CALL R5 3 - 0x28140B03, // 0029 GE R5 R5 K3 - 0x74160006, // 002A JMPT R5 #0032 - 0x8C140901, // 002B GETMET R5 R4 K1 - 0x5C1C0600, // 002C MOVE R7 R3 - 0x58200006, // 002D LDCONST R8 K6 - 0x7C140600, // 002E CALL R5 3 - 0x28140B03, // 002F GE R5 R5 K3 - 0x74160000, // 0030 JMPT R5 #0032 - 0x50140001, // 0031 LDBOOL R5 0 1 - 0x50140200, // 0032 LDBOOL R5 1 0 - 0x80040A00, // 0033 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_multiplicative_expression_raw -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw, /* 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: expect_right_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ +be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* name */ be_nested_proto( 5, /* nstack */ 1, /* argc */ @@ -8727,12 +9297,12 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* 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(RIGHT_PAREN), + /* 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_X29_X27), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X2C_X27), }), - be_str_weak(expect_right_paren), + be_str_weak(expect_comma), &be_const_str_solidified, ( &(const binstruction[18]) { /* code */ 0x8C040100, // 0000 GETMET R1 R0 K0 @@ -8760,9 +9330,916 @@ be_local_closure(class_SimpleDSLTranspiler_expect_right_paren, /* name */ /******************************************************************** -** Solidified function: _process_named_arguments_for_animation +** Solidified function: convert_to_vrgb ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animation, /* name */ +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: 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: 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 */ + 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(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_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 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** 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: 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_animation_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: 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_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_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[188]) { /* 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 + 0x7002003C, // 007D JMP #00BB + 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 + 0x78120010, // 00A9 JMPF R4 #00BB + 0x4C200000, // 00AA LDNIL R8 + 0x20200A08, // 00AB NE R8 R5 R8 + 0x7822000D, // 00AC JMPF R8 #00BB + 0x8820011E, // 00AD GETMBR R8 R0 K30 + 0x8C201113, // 00AE GETMET R8 R8 K19 + 0x5C280A00, // 00AF MOVE R10 R5 + 0x7C200400, // 00B0 CALL R8 2 + 0x78220008, // 00B1 JMPF R8 #00BB + 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 + 0x80000000, // 00BB RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_import +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_process_import, /* 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[ 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), + }), + be_str_weak(process_import), + &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: 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: _process_named_arguments_generic +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_generic, /* name */ be_nested_proto( 15, /* nstack */ 3, /* argc */ @@ -8798,7 +10275,7 @@ be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animatio /* 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_str_weak(_process_named_arguments_generic), &be_const_str_solidified, ( &(const binstruction[109]) { /* code */ 0x8C0C0100, // 0000 GETMET R3 R0 K0 @@ -8917,110 +10394,12 @@ be_local_closure(class_SimpleDSLTranspiler__process_named_arguments_for_animatio /******************************************************************** -** Solidified function: expect_number +** Solidified function: is_identifier_char ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_number, /* name */ +be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* 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(NUMBER), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_nested_str_weak(error), - /* K8 */ be_nested_str_weak(Expected_X20number), - /* K9 */ be_nested_str_weak(0), - }), - be_str_weak(expect_number), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* 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 - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x80040400, // 000E RET 1 R2 - 0x70020003, // 000F JMP #0014 - 0x8C080107, // 0010 GETMET R2 R0 K7 - 0x58100008, // 0011 LDCONST R4 K8 - 0x7C080400, // 0012 CALL R2 2 - 0x80061200, // 0013 RET 1 K9 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: check_right_paren -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_check_right_paren, /* 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_PAREN), - }), - be_str_weak(check_right_paren), - &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: at_end -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ + 3, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -9028,128 +10407,232 @@ be_local_closure(class_SimpleDSLTranspiler_at_end, /* name */ 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), + /* 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(at_end), + be_str_weak(is_identifier_char), &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 + ( &(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_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[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(template_definitions), + /* K7 */ be_nested_str_weak(contains), + /* K8 */ be_nested_str_weak(process_function_arguments), + /* K9 */ be_nested_str_weak(), + /* K10 */ be_nested_str_weak(engine_X2C_X20_X25s), + /* K11 */ be_nested_str_weak(engine), + /* K12 */ be_nested_str_weak(collect_inline_comment), + /* K13 */ be_nested_str_weak(add), + /* K14 */ be_nested_str_weak(_X25s_template_X28_X25s_X29_X25s), + /* K15 */ be_nested_str_weak(has_template_calls), + /* K16 */ be_nested_str_weak(error), + /* K17 */ be_nested_str_weak(Standalone_X20function_X20calls_X20are_X20only_X20supported_X20for_X20templates_X2E_X20_X27_X25s_X27_X20is_X20not_X20a_X20template_X2E), + /* K18 */ be_nested_str_weak(skip_statement), + /* K19 */ be_nested_str_weak(DOT), + /* K20 */ be_nested_str_weak(next), + /* K21 */ be_nested_str_weak(symbol_table), + /* K22 */ be_nested_str_weak(string), + /* K23 */ be_nested_str_weak(_validate_single_parameter), + /* K24 */ 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), + /* K25 */ be_nested_str_weak(expect_assign), + /* K26 */ be_nested_str_weak(process_value), + /* K27 */ be_nested_str_weak(property), + /* K28 */ be_nested_str_weak(introspect), + /* K29 */ be_nested_str_weak(animation), + /* K30 */ be_nested_str_weak(animation_X2E_X25s), + /* K31 */ be_nested_str_weak(_X25s_), + /* 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[140]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x7C040200, // 0001 CALL R1 1 + 0x8C080101, // 0002 GETMET R2 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_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: 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 + 0x4C0C0000, // 0004 LDNIL R3 + 0x20080403, // 0005 NE R2 R2 R3 + 0x780A002C, // 0006 JMPF R2 #0034 + 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 + 0x780A0024, // 000E JMPF R2 #0034 + 0x88080106, // 000F GETMBR R2 R0 K6 + 0x8C080507, // 0010 GETMET R2 R2 K7 + 0x5C100200, // 0011 MOVE R4 R1 + 0x7C080400, // 0012 CALL R2 2 + 0x780A0016, // 0013 JMPF R2 #002B + 0x8C080108, // 0014 GETMET R2 R0 K8 + 0x7C080200, // 0015 CALL R2 1 + 0x200C0509, // 0016 NE R3 R2 K9 + 0x780E0004, // 0017 JMPF R3 #001D + 0x600C0018, // 0018 GETGBL R3 G24 + 0x5810000A, // 0019 LDCONST R4 K10 + 0x5C140400, // 001A MOVE R5 R2 + 0x7C0C0400, // 001B CALL R3 2 + 0x70020000, // 001C JMP #001E + 0x580C000B, // 001D LDCONST R3 K11 + 0x8C10010C, // 001E GETMET R4 R0 K12 + 0x7C100200, // 001F CALL R4 1 + 0x8C14010D, // 0020 GETMET R5 R0 K13 + 0x601C0018, // 0021 GETGBL R7 G24 + 0x5820000E, // 0022 LDCONST R8 K14 + 0x5C240200, // 0023 MOVE R9 R1 + 0x5C280600, // 0024 MOVE R10 R3 + 0x5C2C0800, // 0025 MOVE R11 R4 + 0x7C1C0800, // 0026 CALL R7 4 + 0x7C140400, // 0027 CALL R5 2 + 0x50140200, // 0028 LDBOOL R5 1 0 + 0x90021E05, // 0029 SETMBR R0 K15 R5 + 0x70020007, // 002A JMP #0033 + 0x8C080110, // 002B GETMET R2 R0 K16 + 0x60100018, // 002C GETGBL R4 G24 + 0x58140011, // 002D LDCONST R5 K17 + 0x5C180200, // 002E MOVE R6 R1 + 0x7C100400, // 002F CALL R4 2 + 0x7C080400, // 0030 CALL R2 2 + 0x8C080112, // 0031 GETMET R2 R0 K18 + 0x7C080200, // 0032 CALL R2 1 + 0x80000400, // 0033 RET 0 + 0x8C080101, // 0034 GETMET R2 R0 K1 + 0x7C080200, // 0035 CALL R2 1 + 0x4C0C0000, // 0036 LDNIL R3 + 0x20080403, // 0037 NE R2 R2 R3 + 0x780A0049, // 0038 JMPF R2 #0083 + 0x8C080101, // 0039 GETMET R2 R0 K1 + 0x7C080200, // 003A CALL R2 1 + 0x88080502, // 003B GETMBR R2 R2 K2 + 0xB80E0600, // 003C GETNGBL R3 K3 + 0x880C0704, // 003D GETMBR R3 R3 K4 + 0x880C0713, // 003E GETMBR R3 R3 K19 + 0x1C080403, // 003F EQ R2 R2 R3 + 0x780A0041, // 0040 JMPF R2 #0083 + 0x8C080114, // 0041 GETMET R2 R0 K20 + 0x7C080200, // 0042 CALL R2 1 + 0x8C080100, // 0043 GETMET R2 R0 K0 + 0x7C080200, // 0044 CALL R2 1 + 0x880C0115, // 0045 GETMBR R3 R0 K21 + 0x8C0C0707, // 0046 GETMET R3 R3 K7 + 0x5C140200, // 0047 MOVE R5 R1 + 0x7C0C0400, // 0048 CALL R3 2 + 0x780E0015, // 0049 JMPF R3 #0060 + 0x880C0115, // 004A GETMBR R3 R0 K21 + 0x940C0601, // 004B GETIDX R3 R3 R1 + 0x60100004, // 004C GETGBL R4 G4 + 0x5C140600, // 004D MOVE R5 R3 + 0x7C100200, // 004E CALL R4 1 + 0x20100916, // 004F NE R4 R4 K22 + 0x78120008, // 0050 JMPF R4 #005A + 0x60100005, // 0051 GETGBL R4 G5 + 0x5C140600, // 0052 MOVE R5 R3 + 0x7C100200, // 0053 CALL R4 1 + 0x8C140117, // 0054 GETMET R5 R0 K23 + 0x5C1C0800, // 0055 MOVE R7 R4 + 0x5C200400, // 0056 MOVE R8 R2 + 0x5C240600, // 0057 MOVE R9 R3 + 0x7C140800, // 0058 CALL R5 4 + 0x70020005, // 0059 JMP #0060 + 0x8C100110, // 005A GETMET R4 R0 K16 + 0x60180018, // 005B GETGBL R6 G24 + 0x581C0018, // 005C LDCONST R7 K24 + 0x5C200200, // 005D MOVE R8 R1 + 0x7C180400, // 005E CALL R6 2 + 0x7C100400, // 005F CALL R4 2 + 0x8C0C0119, // 0060 GETMET R3 R0 K25 + 0x7C0C0200, // 0061 CALL R3 1 + 0x8C0C011A, // 0062 GETMET R3 R0 K26 + 0x5814001B, // 0063 LDCONST R5 K27 + 0x7C0C0400, // 0064 CALL R3 2 + 0x8C10010C, // 0065 GETMET R4 R0 K12 + 0x7C100200, // 0066 CALL R4 1 + 0xA4163800, // 0067 IMPORT R5 K28 + 0x58180009, // 0068 LDCONST R6 K9 + 0x8C1C0B07, // 0069 GETMET R7 R5 K7 + 0xB8263A00, // 006A GETNGBL R9 K29 + 0x5C280200, // 006B MOVE R10 R1 + 0x7C1C0600, // 006C CALL R7 3 + 0x781E0005, // 006D JMPF R7 #0074 + 0x601C0018, // 006E GETGBL R7 G24 + 0x5820001E, // 006F LDCONST R8 K30 + 0x5C240200, // 0070 MOVE R9 R1 + 0x7C1C0400, // 0071 CALL R7 2 + 0x5C180E00, // 0072 MOVE R6 R7 + 0x70020004, // 0073 JMP #0079 + 0x601C0018, // 0074 GETGBL R7 G24 + 0x5820001F, // 0075 LDCONST R8 K31 + 0x5C240200, // 0076 MOVE R9 R1 + 0x7C1C0400, // 0077 CALL R7 2 + 0x5C180E00, // 0078 MOVE R6 R7 + 0x8C1C010D, // 0079 GETMET R7 R0 K13 + 0x60240018, // 007A GETGBL R9 G24 + 0x58280020, // 007B LDCONST R10 K32 + 0x5C2C0C00, // 007C MOVE R11 R6 + 0x5C300400, // 007D MOVE R12 R2 + 0x5C340600, // 007E MOVE R13 R3 + 0x5C380800, // 007F MOVE R14 R4 + 0x7C240A00, // 0080 CALL R9 5 + 0x7C1C0400, // 0081 CALL R7 2 + 0x70020007, // 0082 JMP #008B + 0x8C080110, // 0083 GETMET R2 R0 K16 + 0x60100018, // 0084 GETGBL R4 G24 + 0x58140021, // 0085 LDCONST R5 K33 + 0x5C180200, // 0086 MOVE R6 R1 + 0x7C100400, // 0087 CALL R4 2 + 0x7C080400, // 0088 CALL R2 2 + 0x8C080112, // 0089 GETMET R2 R0 K18 + 0x7C080200, // 008A CALL R2 1 + 0x80000000, // 008B RET 0 }) ) ); @@ -9338,1789 +10821,6 @@ be_local_closure(class_SimpleDSLTranspiler_process_sequence, /* 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[38]) { /* 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(animation), - /* K19 */ be_nested_str_weak(is_user_function), - /* 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(var_X20_X25s__X20_X3D_X20animation_X2Eget_user_function_X28_X27_X25s_X27_X29_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(contains), - /* K37 */ be_nested_str_weak(string), - }), - be_str_weak(process_color), - &be_const_str_solidified, - ( &(const binstruction[189]) { /* 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 - 0xB8162400, // 0041 GETNGBL R5 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 - 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 - 0x5C2C0200, // 0053 MOVE R11 R1 - 0x5C300600, // 0054 MOVE R12 R3 - 0x5C340C00, // 0055 MOVE R13 R6 - 0x5C380800, // 0056 MOVE R14 R4 - 0x7C240A00, // 0057 CALL R9 5 - 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 - 0x7002003C, // 007E JMP #00BC - 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 - 0x78120010, // 00AA JMPF R4 #00BC - 0x4C200000, // 00AB LDNIL R8 - 0x20200A08, // 00AC NE R8 R5 R8 - 0x7822000D, // 00AD JMPF R8 #00BC - 0x8820011E, // 00AE GETMBR R8 R0 K30 - 0x8C201124, // 00AF GETMET R8 R8 K36 - 0x5C280A00, // 00B0 MOVE R10 R5 - 0x7C200400, // 00B1 CALL R8 2 - 0x78220008, // 00B2 JMPF R8 #00BC - 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 - 0x20241325, // 00B8 NE R9 R9 K37 - 0x78260001, // 00B9 JMPF R9 #00BC - 0x8824011E, // 00BA GETMBR R9 R0 K30 - 0x98240208, // 00BB SETIDX R9 R1 R8 - 0x80000000, // 00BC RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: expect_comma -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_expect_comma, /* 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(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(expect_comma), - &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_percentage_value -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_percentage_value, /* 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[11]) { /* 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(PERCENTAGE), - /* K5 */ be_nested_str_weak(value), - /* K6 */ be_nested_str_weak(next), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(NUMBER), - /* K9 */ be_nested_str_weak(error), - /* K10 */ be_nested_str_weak(Expected_X20percentage_X20value), - }), - be_str_weak(process_percentage_value), - &be_const_str_solidified, - ( &(const binstruction[52]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x7C040200, // 0001 CALL R1 1 - 0x4C080000, // 0002 LDNIL R2 - 0x20080202, // 0003 NE R2 R1 R2 - 0x780A0015, // 0004 JMPF R2 #001B - 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 - 0x780A000F, // 000A JMPF R2 #001B - 0x88080305, // 000B GETMBR R2 R1 K5 - 0x8C0C0106, // 000C GETMET R3 R0 K6 - 0x7C0C0200, // 000D CALL R3 1 - 0x600C000A, // 000E GETGBL R3 G10 - 0x5411FFFD, // 000F LDINT R4 -2 - 0x40120E04, // 0010 CONNECT R4 K7 R4 - 0x94100404, // 0011 GETIDX R4 R2 R4 - 0x7C0C0200, // 0012 CALL R3 1 - 0x60100009, // 0013 GETGBL R4 G9 - 0x541600FE, // 0014 LDINT R5 255 - 0x08140605, // 0015 MUL R5 R3 R5 - 0x541A0063, // 0016 LDINT R6 100 - 0x0C140A06, // 0017 DIV R5 R5 R6 - 0x7C100200, // 0018 CALL R4 1 - 0x80040800, // 0019 RET 1 R4 - 0x70020017, // 001A JMP #0033 - 0x4C080000, // 001B LDNIL R2 - 0x20080202, // 001C NE R2 R1 R2 - 0x780A000F, // 001D JMPF R2 #002E - 0x88080301, // 001E GETMBR R2 R1 K1 - 0xB80E0400, // 001F GETNGBL R3 K2 - 0x880C0703, // 0020 GETMBR R3 R3 K3 - 0x880C0708, // 0021 GETMBR R3 R3 K8 - 0x1C080403, // 0022 EQ R2 R2 R3 - 0x780A0009, // 0023 JMPF R2 #002E - 0x88080305, // 0024 GETMBR R2 R1 K5 - 0x8C0C0106, // 0025 GETMET R3 R0 K6 - 0x7C0C0200, // 0026 CALL R3 1 - 0x600C0009, // 0027 GETGBL R3 G9 - 0x6010000A, // 0028 GETGBL R4 G10 - 0x5C140400, // 0029 MOVE R5 R2 - 0x7C100200, // 002A CALL R4 1 - 0x7C0C0200, // 002B CALL R3 1 - 0x80040600, // 002C RET 1 R3 - 0x70020004, // 002D JMP #0033 - 0x8C080109, // 002E GETMET R2 R0 K9 - 0x5810000A, // 002F LDCONST R4 K10 - 0x7C080400, // 0030 CALL R2 2 - 0x540A00FE, // 0031 LDINT R2 255 - 0x80040400, // 0032 RET 1 R2 - 0x80000000, // 0033 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: 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: 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: 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: 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: 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: 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: 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_statement_generic -********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_sequence_statement_generic, /* 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[21]) { /* 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(_X20_X20), - /* K8 */ be_nested_str_weak(value), - /* K9 */ be_nested_str_weak(next), - /* K10 */ be_nested_str_weak(NEWLINE), - /* K11 */ be_nested_str_weak(KEYWORD), - /* K12 */ be_nested_str_weak(play), - /* K13 */ be_nested_str_weak(process_play_statement), - /* K14 */ be_nested_str_weak(wait), - /* K15 */ be_nested_str_weak(process_wait_statement), - /* K16 */ be_nested_str_weak(IDENTIFIER), - /* K17 */ be_nested_str_weak(peek), - /* K18 */ be_nested_str_weak(DOT), - /* K19 */ be_nested_str_weak(process_sequence_assignment_generic), - /* K20 */ be_nested_str_weak(skip_statement), - }), - be_str_weak(process_sequence_statement_generic), - &be_const_str_solidified, - ( &(const binstruction[90]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x7C080200, // 0001 CALL R2 1 - 0x4C0C0000, // 0002 LDNIL R3 - 0x1C0C0403, // 0003 EQ R3 R2 R3 - 0x740E0005, // 0004 JMPT R3 #000B - 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 - 0x780E0000, // 000A JMPF R3 #000C - 0x80000600, // 000B RET 0 - 0x880C0501, // 000C GETMBR R3 R2 K1 - 0xB8120400, // 000D GETNGBL R4 K2 - 0x88100903, // 000E GETMBR R4 R4 K3 - 0x88100905, // 000F GETMBR R4 R4 K5 - 0x1C0C0604, // 0010 EQ R3 R3 R4 - 0x780E0006, // 0011 JMPF R3 #0019 - 0x8C0C0106, // 0012 GETMET R3 R0 K6 - 0x88140508, // 0013 GETMBR R5 R2 K8 - 0x00160E05, // 0014 ADD R5 K7 R5 - 0x7C0C0400, // 0015 CALL R3 2 - 0x8C0C0109, // 0016 GETMET R3 R0 K9 - 0x7C0C0200, // 0017 CALL R3 1 - 0x80000600, // 0018 RET 0 - 0x880C0501, // 0019 GETMBR R3 R2 K1 - 0xB8120400, // 001A GETNGBL R4 K2 - 0x88100903, // 001B GETMBR R4 R4 K3 - 0x8810090A, // 001C GETMBR R4 R4 K10 - 0x1C0C0604, // 001D EQ R3 R3 R4 - 0x780E0002, // 001E JMPF R3 #0022 - 0x8C0C0109, // 001F GETMET R3 R0 K9 - 0x7C0C0200, // 0020 CALL R3 1 - 0x80000600, // 0021 RET 0 - 0x880C0501, // 0022 GETMBR R3 R2 K1 - 0xB8120400, // 0023 GETNGBL R4 K2 - 0x88100903, // 0024 GETMBR R4 R4 K3 - 0x8810090B, // 0025 GETMBR R4 R4 K11 - 0x1C0C0604, // 0026 EQ R3 R3 R4 - 0x780E0006, // 0027 JMPF R3 #002F - 0x880C0508, // 0028 GETMBR R3 R2 K8 - 0x1C0C070C, // 0029 EQ R3 R3 K12 - 0x780E0003, // 002A JMPF R3 #002F - 0x8C0C010D, // 002B GETMET R3 R0 K13 - 0x5C140200, // 002C MOVE R5 R1 - 0x7C0C0400, // 002D CALL R3 2 - 0x70020029, // 002E JMP #0059 - 0x880C0501, // 002F GETMBR R3 R2 K1 - 0xB8120400, // 0030 GETNGBL R4 K2 - 0x88100903, // 0031 GETMBR R4 R4 K3 - 0x8810090B, // 0032 GETMBR R4 R4 K11 - 0x1C0C0604, // 0033 EQ R3 R3 R4 - 0x780E0006, // 0034 JMPF R3 #003C - 0x880C0508, // 0035 GETMBR R3 R2 K8 - 0x1C0C070E, // 0036 EQ R3 R3 K14 - 0x780E0003, // 0037 JMPF R3 #003C - 0x8C0C010F, // 0038 GETMET R3 R0 K15 - 0x5C140200, // 0039 MOVE R5 R1 - 0x7C0C0400, // 003A CALL R3 2 - 0x7002001C, // 003B JMP #0059 - 0x880C0501, // 003C GETMBR R3 R2 K1 - 0xB8120400, // 003D GETNGBL R4 K2 - 0x88100903, // 003E GETMBR R4 R4 K3 - 0x88100910, // 003F GETMBR R4 R4 K16 - 0x1C0C0604, // 0040 EQ R3 R3 R4 - 0x780E0014, // 0041 JMPF R3 #0057 - 0x8C0C0111, // 0042 GETMET R3 R0 K17 - 0x7C0C0200, // 0043 CALL R3 1 - 0x4C100000, // 0044 LDNIL R4 - 0x200C0604, // 0045 NE R3 R3 R4 - 0x780E000C, // 0046 JMPF R3 #0054 - 0x8C0C0111, // 0047 GETMET R3 R0 K17 - 0x7C0C0200, // 0048 CALL R3 1 - 0x880C0701, // 0049 GETMBR R3 R3 K1 - 0xB8120400, // 004A GETNGBL R4 K2 - 0x88100903, // 004B GETMBR R4 R4 K3 - 0x88100912, // 004C GETMBR R4 R4 K18 - 0x1C0C0604, // 004D EQ R3 R3 R4 - 0x780E0004, // 004E JMPF R3 #0054 - 0x8C0C0113, // 004F GETMET R3 R0 K19 - 0x58140007, // 0050 LDCONST R5 K7 - 0x5C180200, // 0051 MOVE R6 R1 - 0x7C0C0600, // 0052 CALL R3 3 - 0x70020001, // 0053 JMP #0056 - 0x8C0C0114, // 0054 GETMET R3 R0 K20 - 0x7C0C0200, // 0055 CALL R3 1 - 0x70020001, // 0056 JMP #0059 - 0x8C0C0114, // 0057 GETMET R3 R0 K20 - 0x7C0C0200, // 0058 CALL R3 1 - 0x80000000, // 0059 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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: 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[26]) { /* 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(add), - /* K23 */ be_nested_str_weak(_X25s_X2E_X25s_X20_X3D_X20_X25s_X25s), - /* K24 */ be_nested_str_weak(Expected_X20property_X20assignment_X20for_X20_X27_X25s_X27_X20but_X20found_X20no_X20dot), - /* K25 */ be_nested_str_weak(skip_statement), - }), - be_str_weak(process_property_assignment), - &be_const_str_solidified, - ( &(const binstruction[90]) { /* 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 - 0x780A0049, // 0006 JMPF R2 #0051 - 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 - 0x780A0041, // 000E JMPF R2 #0051 - 0x8C080106, // 000F GETMET R2 R0 K6 - 0x7C080200, // 0010 CALL R2 1 - 0x8C080100, // 0011 GETMET R2 R0 K0 - 0x7C080200, // 0012 CALL R2 1 - 0x880C0107, // 0013 GETMBR R3 R0 K7 - 0x8C0C0708, // 0014 GETMET R3 R3 K8 - 0x5C140200, // 0015 MOVE R5 R1 - 0x7C0C0400, // 0016 CALL R3 2 - 0x780E0015, // 0017 JMPF R3 #002E - 0x880C0107, // 0018 GETMBR R3 R0 K7 - 0x940C0601, // 0019 GETIDX R3 R3 R1 - 0x60100004, // 001A GETGBL R4 G4 - 0x5C140600, // 001B MOVE R5 R3 - 0x7C100200, // 001C CALL R4 1 - 0x20100909, // 001D NE R4 R4 K9 - 0x78120008, // 001E JMPF R4 #0028 - 0x60100005, // 001F GETGBL R4 G5 - 0x5C140600, // 0020 MOVE R5 R3 - 0x7C100200, // 0021 CALL R4 1 - 0x8C14010A, // 0022 GETMET R5 R0 K10 - 0x5C1C0800, // 0023 MOVE R7 R4 - 0x5C200400, // 0024 MOVE R8 R2 - 0x5C240600, // 0025 MOVE R9 R3 - 0x7C140800, // 0026 CALL R5 4 - 0x70020005, // 0027 JMP #002E - 0x8C10010B, // 0028 GETMET R4 R0 K11 - 0x60180018, // 0029 GETGBL R6 G24 - 0x581C000C, // 002A LDCONST R7 K12 - 0x5C200200, // 002B MOVE R8 R1 - 0x7C180400, // 002C CALL R6 2 - 0x7C100400, // 002D CALL R4 2 - 0x8C0C010D, // 002E GETMET R3 R0 K13 - 0x7C0C0200, // 002F CALL R3 1 - 0x8C0C010E, // 0030 GETMET R3 R0 K14 - 0x5814000F, // 0031 LDCONST R5 K15 - 0x7C0C0400, // 0032 CALL R3 2 - 0x8C100110, // 0033 GETMET R4 R0 K16 - 0x7C100200, // 0034 CALL R4 1 - 0xA4162200, // 0035 IMPORT R5 K17 - 0x58180012, // 0036 LDCONST R6 K18 - 0x8C1C0B08, // 0037 GETMET R7 R5 K8 - 0xB8262600, // 0038 GETNGBL R9 K19 - 0x5C280200, // 0039 MOVE R10 R1 - 0x7C1C0600, // 003A CALL R7 3 - 0x781E0005, // 003B JMPF R7 #0042 - 0x601C0018, // 003C GETGBL R7 G24 - 0x58200014, // 003D LDCONST R8 K20 - 0x5C240200, // 003E MOVE R9 R1 - 0x7C1C0400, // 003F CALL R7 2 - 0x5C180E00, // 0040 MOVE R6 R7 - 0x70020004, // 0041 JMP #0047 - 0x601C0018, // 0042 GETGBL R7 G24 - 0x58200015, // 0043 LDCONST R8 K21 - 0x5C240200, // 0044 MOVE R9 R1 - 0x7C1C0400, // 0045 CALL R7 2 - 0x5C180E00, // 0046 MOVE R6 R7 - 0x8C1C0116, // 0047 GETMET R7 R0 K22 - 0x60240018, // 0048 GETGBL R9 G24 - 0x58280017, // 0049 LDCONST R10 K23 - 0x5C2C0C00, // 004A MOVE R11 R6 - 0x5C300400, // 004B MOVE R12 R2 - 0x5C340600, // 004C MOVE R13 R3 - 0x5C380800, // 004D MOVE R14 R4 - 0x7C240A00, // 004E CALL R9 5 - 0x7C1C0400, // 004F CALL R7 2 - 0x70020007, // 0050 JMP #0059 - 0x8C08010B, // 0051 GETMET R2 R0 K11 - 0x60100018, // 0052 GETGBL R4 G24 - 0x58140018, // 0053 LDCONST R5 K24 - 0x5C180200, // 0054 MOVE R6 R1 - 0x7C100400, // 0055 CALL R4 2 - 0x7C080400, // 0056 CALL R2 2 - 0x8C080119, // 0057 GETMET R2 R0 K25 - 0x7C080200, // 0058 CALL R2 1 - 0x80000000, // 0059 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_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[48]) { /* 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(animation), - /* K20 */ be_nested_str_weak(is_user_function), - /* K21 */ be_nested_str_weak(), - /* K22 */ be_nested_str_weak(self_X2Eengine_X2C_X20_X25s), - /* K23 */ be_nested_str_weak(self_X2Eengine), - /* K24 */ be_nested_str_weak(animation_X2Eget_user_function_X28_X27_X25s_X27_X29_X28_X25s_X29), - /* K25 */ be_nested_str_weak(Function_X20_X27_X25s_X27_X20not_X20supported_X20in_X20expression_X20context), - /* K26 */ be_nested_str_weak(COLOR), - /* K27 */ be_nested_str_weak(convert_color), - /* K28 */ be_nested_str_weak(TIME), - /* K29 */ be_nested_str_weak(process_time_value), - /* K30 */ be_nested_str_weak(PERCENTAGE), - /* K31 */ be_nested_str_weak(process_percentage_value), - /* K32 */ be_nested_str_weak(NUMBER), - /* K33 */ be_nested_str_weak(STRING), - /* K34 */ be_nested_str_weak(_X22_X25s_X22), - /* K35 */ be_nested_str_weak(DOT), - /* K36 */ be_nested_str_weak(expect_identifier), - /* 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(animation_X2E_X25s), - /* K44 */ be_nested_str_weak(_X25s_), - /* K45 */ be_nested_str_weak(self_X2Eresolve_X28_X25s_X2C_X20_X27_X25s_X27_X29), - /* K46 */ be_nested_str_weak(self_X2Eresolve_X28_X25s__X29), - /* K47 */ be_nested_str_weak(Unexpected_X20token_X20in_X20expression_X3A_X20_X25s), - }), - be_str_weak(process_primary_expression_raw), - &be_const_str_solidified, - ( &(const binstruction[242]) { /* 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 - 0x780A0037, // 0025 JMPF R2 #005E - 0x8C08010E, // 0026 GETMET R2 R0 K14 - 0x7C080200, // 0027 CALL R2 1 - 0x4C0C0000, // 0028 LDNIL R3 - 0x20080403, // 0029 NE R2 R2 R3 - 0x780A0032, // 002A JMPF R2 #005E - 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 - 0x780A002A, // 0032 JMPF R2 #005E - 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 - 0xB80E2600, // 0042 GETNGBL R3 K19 - 0x8C0C0714, // 0043 GETMET R3 R3 K20 - 0x5C140400, // 0044 MOVE R5 R2 - 0x7C0C0400, // 0045 CALL R3 2 - 0x780E000F, // 0046 JMPF R3 #0057 - 0x8C0C0111, // 0047 GETMET R3 R0 K17 - 0x7C0C0200, // 0048 CALL R3 1 - 0x20100715, // 0049 NE R4 R3 K21 - 0x78120004, // 004A JMPF R4 #0050 - 0x60100018, // 004B GETGBL R4 G24 - 0x58140016, // 004C LDCONST R5 K22 - 0x5C180600, // 004D MOVE R6 R3 - 0x7C100400, // 004E CALL R4 2 - 0x70020000, // 004F JMP #0051 - 0x58100017, // 0050 LDCONST R4 K23 - 0x60140018, // 0051 GETGBL R5 G24 - 0x58180018, // 0052 LDCONST R6 K24 - 0x5C1C0400, // 0053 MOVE R7 R2 - 0x5C200800, // 0054 MOVE R8 R4 - 0x7C140600, // 0055 CALL R5 3 - 0x80040A00, // 0056 RET 1 R5 - 0x8C0C0101, // 0057 GETMET R3 R0 K1 - 0x60140018, // 0058 GETGBL R5 G24 - 0x58180019, // 0059 LDCONST R6 K25 - 0x5C1C0400, // 005A MOVE R7 R2 - 0x7C140400, // 005B CALL R5 2 - 0x7C0C0400, // 005C CALL R3 2 - 0x80060600, // 005D RET 1 K3 - 0x88080304, // 005E GETMBR R2 R1 K4 - 0xB80E0A00, // 005F GETNGBL R3 K5 - 0x880C0706, // 0060 GETMBR R3 R3 K6 - 0x880C071A, // 0061 GETMBR R3 R3 K26 - 0x1C080403, // 0062 EQ R2 R2 R3 - 0x780A0005, // 0063 JMPF R2 #006A - 0x8C080108, // 0064 GETMET R2 R0 K8 - 0x7C080200, // 0065 CALL R2 1 - 0x8C08011B, // 0066 GETMET R2 R0 K27 - 0x8810030F, // 0067 GETMBR R4 R1 K15 - 0x7C080400, // 0068 CALL R2 2 - 0x80040400, // 0069 RET 1 R2 - 0x88080304, // 006A GETMBR R2 R1 K4 - 0xB80E0A00, // 006B GETNGBL R3 K5 - 0x880C0706, // 006C GETMBR R3 R3 K6 - 0x880C071C, // 006D GETMBR R3 R3 K28 - 0x1C080403, // 006E EQ R2 R2 R3 - 0x780A0004, // 006F JMPF R2 #0075 - 0x60080008, // 0070 GETGBL R2 G8 - 0x8C0C011D, // 0071 GETMET R3 R0 K29 - 0x7C0C0200, // 0072 CALL R3 1 - 0x7C080200, // 0073 CALL R2 1 - 0x80040400, // 0074 RET 1 R2 - 0x88080304, // 0075 GETMBR R2 R1 K4 - 0xB80E0A00, // 0076 GETNGBL R3 K5 - 0x880C0706, // 0077 GETMBR R3 R3 K6 - 0x880C071E, // 0078 GETMBR R3 R3 K30 - 0x1C080403, // 0079 EQ R2 R2 R3 - 0x780A0004, // 007A JMPF R2 #0080 - 0x60080008, // 007B GETGBL R2 G8 - 0x8C0C011F, // 007C GETMET R3 R0 K31 - 0x7C0C0200, // 007D CALL R3 1 - 0x7C080200, // 007E CALL R2 1 - 0x80040400, // 007F RET 1 R2 - 0x88080304, // 0080 GETMBR R2 R1 K4 - 0xB80E0A00, // 0081 GETNGBL R3 K5 - 0x880C0706, // 0082 GETMBR R3 R3 K6 - 0x880C0720, // 0083 GETMBR R3 R3 K32 - 0x1C080403, // 0084 EQ R2 R2 R3 - 0x780A0003, // 0085 JMPF R2 #008A - 0x8808030F, // 0086 GETMBR R2 R1 K15 - 0x8C0C0108, // 0087 GETMET R3 R0 K8 - 0x7C0C0200, // 0088 CALL R3 1 - 0x80040400, // 0089 RET 1 R2 - 0x88080304, // 008A GETMBR R2 R1 K4 - 0xB80E0A00, // 008B GETNGBL R3 K5 - 0x880C0706, // 008C GETMBR R3 R3 K6 - 0x880C0721, // 008D GETMBR R3 R3 K33 - 0x1C080403, // 008E EQ R2 R2 R3 - 0x780A0007, // 008F JMPF R2 #0098 - 0x8808030F, // 0090 GETMBR R2 R1 K15 - 0x8C0C0108, // 0091 GETMET R3 R0 K8 - 0x7C0C0200, // 0092 CALL R3 1 - 0x600C0018, // 0093 GETGBL R3 G24 - 0x58100022, // 0094 LDCONST R4 K34 - 0x5C140400, // 0095 MOVE R5 R2 - 0x7C0C0400, // 0096 CALL R3 2 - 0x80040600, // 0097 RET 1 R3 - 0x88080304, // 0098 GETMBR R2 R1 K4 - 0xB80E0A00, // 0099 GETNGBL R3 K5 - 0x880C0706, // 009A GETMBR R3 R3 K6 - 0x880C070D, // 009B GETMBR R3 R3 K13 - 0x1C080403, // 009C EQ R2 R2 R3 - 0x780A004C, // 009D JMPF R2 #00EB - 0x8808030F, // 009E GETMBR R2 R1 K15 - 0x8C0C0108, // 009F GETMET R3 R0 K8 - 0x7C0C0200, // 00A0 CALL R3 1 - 0x8C0C0100, // 00A1 GETMET R3 R0 K0 - 0x7C0C0200, // 00A2 CALL R3 1 - 0x4C100000, // 00A3 LDNIL R4 - 0x200C0604, // 00A4 NE R3 R3 R4 - 0x780E003F, // 00A5 JMPF R3 #00E6 - 0x8C0C0100, // 00A6 GETMET R3 R0 K0 - 0x7C0C0200, // 00A7 CALL R3 1 - 0x880C0704, // 00A8 GETMBR R3 R3 K4 - 0xB8120A00, // 00A9 GETNGBL R4 K5 - 0x88100906, // 00AA GETMBR R4 R4 K6 - 0x88100923, // 00AB GETMBR R4 R4 K35 - 0x1C0C0604, // 00AC EQ R3 R3 R4 - 0x780E0037, // 00AD JMPF R3 #00E6 - 0x8C0C0108, // 00AE GETMET R3 R0 K8 - 0x7C0C0200, // 00AF CALL R3 1 - 0x8C0C0124, // 00B0 GETMET R3 R0 K36 - 0x7C0C0200, // 00B1 CALL R3 1 - 0x88100125, // 00B2 GETMBR R4 R0 K37 - 0x8C100926, // 00B3 GETMET R4 R4 K38 - 0x5C180400, // 00B4 MOVE R6 R2 - 0x7C100400, // 00B5 CALL R4 2 - 0x78120016, // 00B6 JMPF R4 #00CE - 0x88100125, // 00B7 GETMBR R4 R0 K37 - 0x94100802, // 00B8 GETIDX R4 R4 R2 - 0x60140004, // 00B9 GETGBL R5 G4 - 0x5C180800, // 00BA MOVE R6 R4 - 0x7C140200, // 00BB CALL R5 1 - 0x20140B27, // 00BC NE R5 R5 K39 - 0x78160008, // 00BD JMPF R5 #00C7 - 0x60140005, // 00BE GETGBL R5 G5 - 0x5C180800, // 00BF MOVE R6 R4 - 0x7C140200, // 00C0 CALL R5 1 - 0x8C180128, // 00C1 GETMET R6 R0 K40 - 0x5C200A00, // 00C2 MOVE R8 R5 - 0x5C240600, // 00C3 MOVE R9 R3 - 0x5C280800, // 00C4 MOVE R10 R4 - 0x7C180800, // 00C5 CALL R6 4 - 0x70020006, // 00C6 JMP #00CE - 0x8C140101, // 00C7 GETMET R5 R0 K1 - 0x601C0018, // 00C8 GETGBL R7 G24 - 0x58200029, // 00C9 LDCONST R8 K41 - 0x5C240400, // 00CA MOVE R9 R2 - 0x7C1C0400, // 00CB CALL R7 2 - 0x7C140400, // 00CC CALL R5 2 - 0x80060600, // 00CD RET 1 K3 - 0xA4125400, // 00CE IMPORT R4 K42 - 0x58140015, // 00CF LDCONST R5 K21 - 0x8C180926, // 00D0 GETMET R6 R4 K38 - 0xB8222600, // 00D1 GETNGBL R8 K19 - 0x5C240400, // 00D2 MOVE R9 R2 - 0x7C180600, // 00D3 CALL R6 3 - 0x781A0005, // 00D4 JMPF R6 #00DB - 0x60180018, // 00D5 GETGBL R6 G24 - 0x581C002B, // 00D6 LDCONST R7 K43 - 0x5C200400, // 00D7 MOVE R8 R2 - 0x7C180400, // 00D8 CALL R6 2 - 0x5C140C00, // 00D9 MOVE R5 R6 - 0x70020004, // 00DA JMP #00E0 - 0x60180018, // 00DB GETGBL R6 G24 - 0x581C002C, // 00DC LDCONST R7 K44 - 0x5C200400, // 00DD MOVE R8 R2 - 0x7C180400, // 00DE CALL R6 2 - 0x5C140C00, // 00DF MOVE R5 R6 - 0x60180018, // 00E0 GETGBL R6 G24 - 0x581C002D, // 00E1 LDCONST R7 K45 - 0x5C200A00, // 00E2 MOVE R8 R5 - 0x5C240600, // 00E3 MOVE R9 R3 - 0x7C180600, // 00E4 CALL R6 3 - 0x80040C00, // 00E5 RET 1 R6 - 0x600C0018, // 00E6 GETGBL R3 G24 - 0x5810002E, // 00E7 LDCONST R4 K46 - 0x5C140400, // 00E8 MOVE R5 R2 - 0x7C0C0400, // 00E9 CALL R3 2 - 0x80040600, // 00EA RET 1 R3 - 0x8C080101, // 00EB GETMET R2 R0 K1 - 0x60100018, // 00EC GETGBL R4 G24 - 0x5814002F, // 00ED LDCONST R5 K47 - 0x8818030F, // 00EE GETMBR R6 R1 K15 - 0x7C100400, // 00EF CALL R4 2 - 0x7C080400, // 00F0 CALL R2 2 - 0x80060600, // 00F1 RET 1 K3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** 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: process_event_handler ********************************************************************/ @@ -11273,47 +10973,40 @@ be_local_closure(class_SimpleDSLTranspiler_process_event_handler, /* name */ /******************************************************************** -** Solidified function: is_identifier_char +** Solidified function: peek ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* name */ +be_local_closure(class_SimpleDSLTranspiler_peek, /* name */ be_nested_proto( - 3, /* nstack */ - 2, /* argc */ + 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(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(_), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(pos), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_str_weak(tokens), }), - be_str_weak(is_identifier_char), + be_str_weak(peek), &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 + ( &(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 }) ) ); @@ -11321,9 +11014,9 @@ be_local_closure(class_SimpleDSLTranspiler_is_identifier_char, /* name */ /******************************************************************** -** Solidified function: process_additive_expression_raw +** Solidified function: process_wait_statement_fluent ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler_process_additive_expression_raw, /* name */ +be_local_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ @@ -11333,60 +11026,248 @@ 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), + ( &(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_additive_expression_raw), + be_str_weak(process_wait_statement_fluent), &be_const_str_solidified, - ( &(const binstruction[38]) { /* code */ + ( &(const binstruction[16]) { /* 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 + 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: 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: 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_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), + }), + be_str_weak(process_sequence_assignment), + &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: 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[12]) { /* 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(sequence_names), + /* K6 */ be_nested_str_weak(contains), + /* K7 */ be_nested_str_weak(add), + /* K8 */ be_nested_str_weak(engine_X2Eadd_sequence_manager_X28_X25s__X29_X25s), + /* K9 */ be_nested_str_weak(engine_X2Eadd_animation_X28_X25s__X29_X25s), + /* K10 */ be_nested_str_weak(stop_iteration), + /* K11 */ be_nested_str_weak(engine_X2Estart_X28_X29), + }), + be_str_weak(generate_engine_start), + &be_const_str_solidified, + ( &(const binstruction[44]) { /* 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 + 0xA8020018, // 000B EXBLK 0 #0025 + 0x5C080200, // 000C MOVE R2 R1 + 0x7C080000, // 000D CALL R2 0 + 0x940C0503, // 000E GETIDX R3 R2 K3 + 0x94100504, // 000F GETIDX R4 R2 K4 + 0x88140105, // 0010 GETMBR R5 R0 K5 + 0x8C140B06, // 0011 GETMET R5 R5 K6 + 0x5C1C0600, // 0012 MOVE R7 R3 + 0x7C140400, // 0013 CALL R5 2 + 0x78160007, // 0014 JMPF R5 #001D + 0x8C140107, // 0015 GETMET R5 R0 K7 + 0x601C0018, // 0016 GETGBL R7 G24 + 0x58200008, // 0017 LDCONST R8 K8 + 0x5C240600, // 0018 MOVE R9 R3 + 0x5C280800, // 0019 MOVE R10 R4 + 0x7C1C0600, // 001A CALL R7 3 + 0x7C140400, // 001B CALL R5 2 + 0x70020006, // 001C JMP #0024 + 0x8C140107, // 001D GETMET R5 R0 K7 + 0x601C0018, // 001E GETGBL R7 G24 + 0x58200009, // 001F LDCONST R8 K9 + 0x5C240600, // 0020 MOVE R9 R3 + 0x5C280800, // 0021 MOVE R10 R4 + 0x7C1C0600, // 0022 CALL R7 3 + 0x7C140400, // 0023 CALL R5 2 + 0x7001FFE6, // 0024 JMP #000C + 0x5804000A, // 0025 LDCONST R1 K10 + 0xAC040200, // 0026 CATCH R1 1 0 + 0xB0080000, // 0027 RAISE 2 R0 R0 + 0x8C040107, // 0028 GETMET R1 R0 K7 + 0x580C000B, // 0029 LDCONST R3 K11 + 0x7C040400, // 002A CALL R1 2 + 0x80000000, // 002B RET 0 }) ) ); @@ -11489,69 +11370,42 @@ be_local_closure(class_SimpleDSLTranspiler_convert_time_to_ms, /* name */ /******************************************************************** -** Solidified function: _validate_single_parameter +** Solidified function: check_right_brace ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name */ +be_local_closure(class_SimpleDSLTranspiler_check_right_brace, /* name */ be_nested_proto( - 12, /* nstack */ - 4, /* argc */ + 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(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), + ( &(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(_validate_single_parameter), + be_str_weak(check_right_brace), &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 + ( &(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 }) ) ); @@ -11559,11 +11413,250 @@ be_local_closure(class_SimpleDSLTranspiler__validate_single_parameter, /* name /******************************************************************** -** Solidified function: _is_simple_function_call +** Solidified function: generate_template_function ********************************************************************/ -be_local_closure(class_SimpleDSLTranspiler__is_simple_function_call, /* name */ +be_local_closure(class_SimpleDSLTranspiler_generate_template_function, /* name */ be_nested_proto( - 6, /* nstack */ + 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: 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_anonymous_function +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_is_anonymous_function, /* name */ + be_nested_proto( + 7, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -11571,35 +11664,82 @@ be_local_closure(class_SimpleDSLTranspiler__is_simple_function_call, /* name * 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), + ( &(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_simple_function_call), + be_str_weak(is_anonymous_function), &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 + ( &(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: expect_left_paren +********************************************************************/ +be_local_closure(class_SimpleDSLTranspiler_expect_left_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(LEFT_PAREN), + /* K5 */ be_nested_str_weak(next), + /* K6 */ be_nested_str_weak(error), + /* K7 */ be_nested_str_weak(Expected_X20_X27_X28_X27), + }), + be_str_weak(expect_left_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 }) ) ); @@ -11610,53 +11750,122 @@ be_local_closure(class_SimpleDSLTranspiler__is_simple_function_call, /* name * ** Solidified class: SimpleDSLTranspiler ********************************************************************/ be_local_class(SimpleDSLTranspiler, - 10, + 12, NULL, - be_nested_map(112, + be_nested_map(115, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(process_named_arguments_for_variable, 25), be_const_closure(class_SimpleDSLTranspiler_process_named_arguments_for_variable_closure) }, - { be_const_key_weak(process_sequence_statement_for_manager, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_for_manager_closure) }, - { be_const_key_weak(symbol_table, 18), be_const_var(8) }, - { be_const_key_weak(join_output, -1), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, - { be_const_key_weak(transform_expression_for_closure, 71), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, - { be_const_key_weak(_validate_animation_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, - { be_const_key_weak(skip_whitespace, -1), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, - { be_const_key_weak(get_errors, 68), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, - { be_const_key_weak(_process_named_arguments_generic, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, - { be_const_key_weak(pos, -1), be_const_var(1) }, - { be_const_key_weak(add, -1), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, - { be_const_key_weak(get_named_color_value, -1), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, - { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_closure) }, - { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, - { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, - { be_const_key_weak(process_play_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_closure) }, - { be_const_key_weak(process_function_call, 102), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, - { be_const_key_weak(_generate_anonymous_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call_closure) }, - { be_const_key_weak(expect_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, - { be_const_key_weak(expect_left_paren, 108), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, - { be_const_key_weak(process_function_arguments, 50), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, - { be_const_key_weak(process_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, - { be_const_key_weak(process_palette, 21), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, - { be_const_key_weak(process_animation, -1), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, - { be_const_key_weak(process_sequence_assignment_generic, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic_closure) }, - { be_const_key_weak(process_time_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_time_value_closure) }, - { be_const_key_weak(process_event_parameters, 55), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, - { be_const_key_weak(expect_left_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, - { be_const_key_weak(strip_initialized, 39), be_const_var(6) }, - { be_const_key_weak(get_error_report, 105), be_const_closure(class_SimpleDSLTranspiler_get_error_report_closure) }, - { be_const_key_weak(_create_instance_for_validation, -1), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, - { be_const_key_weak(sequence_names, -1), be_const_var(7) }, - { be_const_key_weak(process_wait_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_closure) }, - { be_const_key_weak(expect_right_brace, 14), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, - { be_const_key_weak(process_play_statement_fluent, 60), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, + { be_const_key_weak(process_multiplicative_expression_raw, 99), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw_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(process_unary_expression, 43), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, + { be_const_key_weak(process_function_arguments, 93), be_const_closure(class_SimpleDSLTranspiler_process_function_arguments_closure) }, { be_const_key_weak(tokens, -1), be_const_var(0) }, - { be_const_key_weak(process_property_assignment, 63), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, - { be_const_key_weak(process_unary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_closure) }, - { be_const_key_weak(process_additive_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, - { be_const_key_weak(expect_assign, -1), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, + { be_const_key_weak(expect_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, + { be_const_key_weak(expect_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_closure) }, + { be_const_key_weak(is_anonymous_function, -1), be_const_closure(class_SimpleDSLTranspiler_is_anonymous_function_closure) }, + { be_const_key_weak(process_primary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, + { be_const_key_weak(process_time_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_time_value_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(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(indent_level, -1), be_const_var(9) }, + { be_const_key_weak(errors, 50), be_const_var(3) }, + { be_const_key_weak(error, -1), 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, 26), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, + { be_const_key_weak(generate_template_function, -1), be_const_closure(class_SimpleDSLTranspiler_generate_template_function_closure) }, + { be_const_key_weak(transform_expression_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_expression_for_closure_closure) }, + { be_const_key_weak(join_output, -1), be_const_closure(class_SimpleDSLTranspiler_join_output_closure) }, + { be_const_key_weak(process_multiplicative_expression, 18), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, + { be_const_key_weak(convert_time_to_ms, -1), be_const_closure(class_SimpleDSLTranspiler_convert_time_to_ms_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_named_arguments_for_color_provider, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider_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(has_template_calls, 42), be_const_var(11) }, + { be_const_key_weak(generate_engine_start, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_start_closure) }, + { be_const_key_weak(first_statement, -1), be_const_var(5) }, + { be_const_key_weak(_validate_animation_factory_creates_animation, -1), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, + { be_const_key_weak(_create_instance_for_validation, 57), be_const_closure(class_SimpleDSLTranspiler__create_instance_for_validation_closure) }, + { be_const_key_weak(process_event_parameters, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_parameters_closure) }, + { be_const_key_weak(expect_left_brace, 108), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, + { be_const_key_weak(process_sequence_assignment_fluent, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_fluent_closure) }, + { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, + { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, + { be_const_key_weak(expect_number, -1), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, + { be_const_key_weak(is_computed_expression_string, -1), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_string_closure) }, + { be_const_key_weak(check_right_bracket, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_bracket_closure) }, + { be_const_key_weak(output, 7), be_const_var(2) }, + { be_const_key_weak(_validate_object_reference, -1), be_const_closure(class_SimpleDSLTranspiler__validate_object_reference_closure) }, + { be_const_key_weak(expect_keyword, 104), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, + { be_const_key_weak(skip_statement, -1), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, + { be_const_key_weak(process_wait_statement_fluent, 69), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_closure) }, + { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, + { be_const_key_weak(at_end, -1), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, + { be_const_key_weak(add, 39), be_const_closure(class_SimpleDSLTranspiler_add_closure) }, + { be_const_key_weak(expect_left_bracket, 51), be_const_closure(class_SimpleDSLTranspiler_expect_left_bracket_closure) }, + { be_const_key_weak(process_percentage_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_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_event_handler, -1), be_const_closure(class_SimpleDSLTranspiler_process_event_handler_closure) }, + { be_const_key_weak(process_sequence, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, + { be_const_key_weak(process_property_assignment, -1), be_const_closure(class_SimpleDSLTranspiler_process_property_assignment_closure) }, + { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, + { be_const_key_weak(sequence_names, -1), be_const_var(7) }, + { be_const_key_weak(is_identifier_char, -1), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, + { be_const_key_weak(_generate_anonymous_function_call, 73), be_const_closure(class_SimpleDSLTranspiler__generate_anonymous_function_call_closure) }, + { be_const_key_weak(_process_named_arguments_generic, -1), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_generic_closure) }, + { be_const_key_weak(process_array_literal, -1), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, + { be_const_key_weak(_validate_color_provider_factory_exists, 41), be_const_closure(class_SimpleDSLTranspiler__validate_color_provider_factory_exists_closure) }, + { be_const_key_weak(process_animation, 31), be_const_closure(class_SimpleDSLTranspiler_process_animation_closure) }, + { be_const_key_weak(init, 66), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, + { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, + { be_const_key_weak(next, 105), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, + { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, + { be_const_key_weak(process_import, 89), be_const_closure(class_SimpleDSLTranspiler_process_import_closure) }, + { be_const_key_weak(expect_right_brace, 100), be_const_closure(class_SimpleDSLTranspiler_expect_right_brace_closure) }, + { be_const_key_weak(template_definitions, -1), be_const_var(10) }, + { be_const_key_weak(strip_initialized, -1), be_const_var(6) }, + { be_const_key_weak(process_additive_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_closure) }, + { be_const_key_weak(_process_user_function_call, 113), be_const_closure(class_SimpleDSLTranspiler__process_user_function_call_closure) }, + { be_const_key_weak(is_computed_expression, 83), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, + { be_const_key_weak(process_sequence_statement, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_closure) }, + { be_const_key_weak(transpile_template_body, -1), be_const_closure(class_SimpleDSLTranspiler_transpile_template_body_closure) }, + { be_const_key_weak(get_indent, 94), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, + { be_const_key_weak(_validate_factory_function, 77), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, + { be_const_key_weak(process_unary_expression_raw, 61), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_raw_closure) }, + { be_const_key_weak(expect_assign, -1), be_const_closure(class_SimpleDSLTranspiler_expect_assign_closure) }, + { be_const_key_weak(is_math_method, 84), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, + { be_const_key_weak(generate_default_strip_initialization, -1), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, + { be_const_key_weak(process_additive_expression_raw, 64), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_raw_closure) }, + { be_const_key_weak(convert_color, 88), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, + { be_const_key_weak(get_named_color_value, 78), be_const_closure(class_SimpleDSLTranspiler_get_named_color_value_closure) }, + { be_const_key_weak(pos, -1), be_const_var(1) }, + { be_const_key_weak(process_function_call, 102), be_const_closure(class_SimpleDSLTranspiler_process_function_call_closure) }, + { be_const_key_weak(can_use_as_identifier, -1), be_const_closure(class_SimpleDSLTranspiler_can_use_as_identifier_closure) }, + { be_const_key_weak(expect_comma, -1), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, + { be_const_key_weak(convert_to_vrgb, -1), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, + { be_const_key_weak(process_expression_argument, -1), be_const_closure(class_SimpleDSLTranspiler_process_expression_argument_closure) }, + { be_const_key_weak(_is_simple_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__is_simple_function_call_closure) }, + { be_const_key_weak(symbol_table, -1), be_const_var(8) }, + { be_const_key_weak(expect_colon, 72), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, + { be_const_key_weak(skip_function_arguments, 70), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, + { be_const_key_weak(skip_whitespace_including_newlines, 25), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, + { be_const_key_weak(current, -1), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, + { be_const_key_weak(validate_user_name, -1), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, + { be_const_key_weak(run_statements, -1), be_const_var(4) }, + { be_const_key_weak(process_sequence_assignment_generic, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_generic_closure) }, + { be_const_key_weak(process_template, 56), be_const_closure(class_SimpleDSLTranspiler_process_template_closure) }, + { be_const_key_weak(expect_right_bracket, 54), be_const_closure(class_SimpleDSLTranspiler_expect_right_bracket_closure) }, + { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, + { be_const_key_weak(process_play_statement_fluent, 103), be_const_closure(class_SimpleDSLTranspiler_process_play_statement_fluent_closure) }, + { be_const_key_weak(skip_whitespace, 49), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_closure) }, + { be_const_key_weak(process_statement, 4), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, + { be_const_key_weak(get_errors, -1), be_const_closure(class_SimpleDSLTranspiler_get_errors_closure) }, + { be_const_key_weak(create_computation_closure, -1), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_closure) }, + { be_const_key_weak(_validate_animation_factory_exists, -1), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_exists_closure) }, + { be_const_key_weak(process_sequence_assignment, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_closure) }, + { be_const_key_weak(process_color, 16), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, + { be_const_key_weak(has_errors, 112), be_const_closure(class_SimpleDSLTranspiler_has_errors_closure) }, + { be_const_key_weak(process_palette, 21), be_const_closure(class_SimpleDSLTranspiler_process_palette_closure) }, { be_const_key_weak(check_right_brace, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_brace_closure) }, + { be_const_key_weak(get_error_report, 17), be_const_closure(class_SimpleDSLTranspiler_get_error_report_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[]) { @@ -11698,74 +11907,8 @@ 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(skip_statement, 95), be_const_closure(class_SimpleDSLTranspiler_skip_statement_closure) }, - { be_const_key_weak(indent_level, -1), be_const_var(9) }, - { be_const_key_weak(get_indent, -1), be_const_closure(class_SimpleDSLTranspiler_get_indent_closure) }, - { be_const_key_weak(_validate_animation_factory_creates_animation, -1), be_const_closure(class_SimpleDSLTranspiler__validate_animation_factory_creates_animation_closure) }, - { be_const_key_weak(expect_dot, -1), be_const_closure(class_SimpleDSLTranspiler_expect_dot_closure) }, - { be_const_key_weak(is_anonymous_function, 1), be_const_closure(class_SimpleDSLTranspiler_is_anonymous_function_closure) }, - { be_const_key_weak(expect_keyword, -1), be_const_closure(class_SimpleDSLTranspiler_expect_keyword_closure) }, - { be_const_key_weak(process_wait_statement_fluent, 61), be_const_closure(class_SimpleDSLTranspiler_process_wait_statement_fluent_closure) }, - { be_const_key_weak(process_multiplicative_expression, 59), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_closure) }, - { be_const_key_weak(process_set, -1), be_const_closure(class_SimpleDSLTranspiler_process_set_closure) }, - { be_const_key_weak(errors, 26), be_const_var(3) }, - { be_const_key_weak(generate_default_strip_initialization, -1), be_const_closure(class_SimpleDSLTranspiler_generate_default_strip_initialization_closure) }, - { be_const_key_weak(process_unary_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_unary_expression_raw_closure) }, - { be_const_key_weak(transpile, 12), be_const_closure(class_SimpleDSLTranspiler_transpile_closure) }, - { be_const_key_weak(_process_named_arguments_for_color_provider, 83), be_const_closure(class_SimpleDSLTranspiler__process_named_arguments_for_color_provider_closure) }, - { be_const_key_weak(is_computed_expression_string, 101), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_string_closure) }, - { be_const_key_weak(process_primary_expression, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_closure) }, - { be_const_key_weak(transform_operand_for_closure, -1), be_const_closure(class_SimpleDSLTranspiler_transform_operand_for_closure_closure) }, - { be_const_key_weak(peek, -1), be_const_closure(class_SimpleDSLTranspiler_peek_closure) }, - { 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(process_sequence_statement, 96), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_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_sequence_assignment, 94), be_const_closure(class_SimpleDSLTranspiler_process_sequence_assignment_closure) }, - { be_const_key_weak(create_computation_closure, 93), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_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(process_expression_argument, -1), be_const_closure(class_SimpleDSLTranspiler_process_expression_argument_closure) }, - { be_const_key_weak(process_color, -1), be_const_closure(class_SimpleDSLTranspiler_process_color_closure) }, - { be_const_key_weak(_validate_object_reference, 10), be_const_closure(class_SimpleDSLTranspiler__validate_object_reference_closure) }, - { be_const_key_weak(convert_color, 65), be_const_closure(class_SimpleDSLTranspiler_convert_color_closure) }, - { be_const_key_weak(is_computed_expression, 49), be_const_closure(class_SimpleDSLTranspiler_is_computed_expression_closure) }, - { be_const_key_weak(skip_whitespace_including_newlines, 87), be_const_closure(class_SimpleDSLTranspiler_skip_whitespace_including_newlines_closure) }, - { be_const_key_weak(create_computation_closure_from_string, 82), be_const_closure(class_SimpleDSLTranspiler_create_computation_closure_from_string_closure) }, - { be_const_key_weak(expect_colon, 73), be_const_closure(class_SimpleDSLTranspiler_expect_colon_closure) }, - { be_const_key_weak(process_multiplicative_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_multiplicative_expression_raw_closure) }, - { be_const_key_weak(expect_right_paren, 70), be_const_closure(class_SimpleDSLTranspiler_expect_right_paren_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(expect_number, -1), be_const_closure(class_SimpleDSLTranspiler_expect_number_closure) }, - { be_const_key_weak(check_right_paren, -1), be_const_closure(class_SimpleDSLTranspiler_check_right_paren_closure) }, - { be_const_key_weak(process_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_value_closure) }, - { be_const_key_weak(at_end, 91), be_const_closure(class_SimpleDSLTranspiler_at_end_closure) }, - { be_const_key_weak(process_statement, 75), be_const_closure(class_SimpleDSLTranspiler_process_statement_closure) }, - { be_const_key_weak(run_statements, -1), be_const_var(4) }, - { be_const_key_weak(process_sequence, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_closure) }, - { be_const_key_weak(generate_engine_start, -1), be_const_closure(class_SimpleDSLTranspiler_generate_engine_start_closure) }, - { be_const_key_weak(expect_comma, 56), be_const_closure(class_SimpleDSLTranspiler_expect_comma_closure) }, - { be_const_key_weak(process_percentage_value, -1), be_const_closure(class_SimpleDSLTranspiler_process_percentage_value_closure) }, - { be_const_key_weak(current, 36), be_const_closure(class_SimpleDSLTranspiler_current_closure) }, - { be_const_key_weak(process_nested_function_call, -1), be_const_closure(class_SimpleDSLTranspiler_process_nested_function_call_closure) }, - { be_const_key_weak(convert_to_vrgb, -1), be_const_closure(class_SimpleDSLTranspiler_convert_to_vrgb_closure) }, - { be_const_key_weak(first_statement, -1), be_const_var(5) }, - { be_const_key_weak(_validate_factory_function, 45), be_const_closure(class_SimpleDSLTranspiler__validate_factory_function_closure) }, - { be_const_key_weak(skip_function_arguments, -1), be_const_closure(class_SimpleDSLTranspiler_skip_function_arguments_closure) }, - { be_const_key_weak(expect_left_brace, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_brace_closure) }, - { be_const_key_weak(error, -1), be_const_closure(class_SimpleDSLTranspiler_error_closure) }, - { be_const_key_weak(process_sequence_statement_generic, -1), be_const_closure(class_SimpleDSLTranspiler_process_sequence_statement_generic_closure) }, - { be_const_key_weak(validate_user_name, 41), be_const_closure(class_SimpleDSLTranspiler_validate_user_name_closure) }, - { be_const_key_weak(output, -1), be_const_var(2) }, - { be_const_key_weak(is_math_method, -1), be_const_closure(class_SimpleDSLTranspiler_is_math_method_closure) }, - { be_const_key_weak(process_array_literal, -1), be_const_closure(class_SimpleDSLTranspiler_process_array_literal_closure) }, - { be_const_key_weak(process_primary_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_primary_expression_raw_closure) }, - { be_const_key_weak(next, 24), be_const_closure(class_SimpleDSLTranspiler_next_closure) }, - { be_const_key_weak(collect_inline_comment, -1), be_const_closure(class_SimpleDSLTranspiler_collect_inline_comment_closure) }, - { be_const_key_weak(is_identifier_char, -1), be_const_closure(class_SimpleDSLTranspiler_is_identifier_char_closure) }, - { be_const_key_weak(process_additive_expression_raw, -1), be_const_closure(class_SimpleDSLTranspiler_process_additive_expression_raw_closure) }, - { be_const_key_weak(init, -1), be_const_closure(class_SimpleDSLTranspiler_init_closure) }, - { be_const_key_weak(_validate_single_parameter, -1), be_const_closure(class_SimpleDSLTranspiler__validate_single_parameter_closure) }, - { be_const_key_weak(expect_identifier, 2), be_const_closure(class_SimpleDSLTranspiler_expect_identifier_closure) }, - { be_const_key_weak(_is_simple_function_call, -1), be_const_closure(class_SimpleDSLTranspiler__is_simple_function_call_closure) }, + { 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_paren, -1), be_const_closure(class_SimpleDSLTranspiler_expect_left_paren_closure) }, })), be_str_weak(SimpleDSLTranspiler) ); diff --git a/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be b/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be new file mode 100644 index 000000000..7d2cb1b31 --- /dev/null +++ b/lib/libesp32/berry_animation/src/tests/animation_opacity_test.be @@ -0,0 +1,352 @@ +# Animation Engine Test Suite +# Comprehensive tests for the unified AnimationEngine + +import animation + +print("=== Animation Engine Opcaity Test Suite ===") + +# Test utilities +var test_count = 0 +var passed_count = 0 + +def assert_test(condition, message) + test_count += 1 + if condition + passed_count += 1 + print(f"✓ PASS: {message}") + else + print(f"✗ FAIL: {message}") + end +end + +def assert_equals(actual, expected, message) + assert_test(actual == expected, f"{message} (expected: {expected}, actual: {actual})") +end + +def assert_not_nil(value, message) + assert_test(value != nil, f"{message} (value was nil)") +end + +# Test 11: Animation Opacity with Animation Masks +print("\n--- Test 11: Animation Opacity with Animation Masks ---") + +# Create a fresh engine for opacity tests +var opacity_strip = global.Leds(10) +var opacity_engine = animation.animation_engine(opacity_strip) + +# Test 11a: Basic numeric opacity +print("\n--- Test 11a: Basic numeric opacity ---") +var base_anim = animation.solid(opacity_engine) +base_anim.color = 0xFFFF0000 # Red +base_anim.opacity = 128 # 50% opacity +base_anim.priority = 10 +base_anim.name = "base_red" + +opacity_engine.add_animation(base_anim) +opacity_engine.start() + +# Create frame buffer and test rendering +var opacity_frame = animation.frame_buffer(10) +base_anim.start() +var render_result = base_anim.render(opacity_frame, opacity_engine.time_ms) + +assert_test(render_result, "Animation with numeric opacity should render successfully") +assert_equals(base_anim.opacity, 128, "Numeric opacity should be preserved") + +# Test 11b: Animation as opacity mask - basic setup +print("\n--- Test 11b: Animation as opacity mask - basic setup ---") + +# Create opacity mask animation (pulsing from 0 to 255) +var opacity_mask = animation.solid(opacity_engine) +opacity_mask.color = 0xFF808080 # Gray (128 brightness) +opacity_mask.priority = 5 +opacity_mask.name = "opacity_mask" + +# Create main animation with animation opacity +var masked_anim = animation.solid(opacity_engine) +masked_anim.color = 0xFF00FF00 # Green +masked_anim.opacity = opacity_mask # Use animation as opacity +masked_anim.priority = 15 +masked_anim.name = "masked_green" + +assert_test(isinstance(masked_anim.opacity, animation.animation), "Opacity should be an animation instance") +assert_equals(masked_anim.opacity.name, "opacity_mask", "Opacity animation should be correctly assigned") + +# Test 11c: Animation opacity rendering +print("\n--- Test 11c: Animation opacity rendering ---") + +opacity_engine.clear() +opacity_engine.add_animation(masked_anim) +opacity_engine.start() + +# Start both animations +masked_anim.start() +opacity_mask.start() + +# Test rendering with animation opacity +var masked_frame = animation.frame_buffer(10) +render_result = masked_anim.render(masked_frame, opacity_engine.time_ms) + +assert_test(render_result, "Animation with animation opacity should render successfully") +assert_not_nil(masked_anim.opacity_frame, "Opacity frame buffer should be created") +assert_equals(masked_anim.opacity_frame.width, 10, "Opacity frame buffer should match main frame width") + +# Test 11e: Complex opacity animation scenarios +print("\n--- Test 11e: Complex opacity animation scenarios ---") + +# Create a pulsing opacity mask +var pulsing_opacity = animation.solid(opacity_engine) +pulsing_opacity.color = 0xFF000000 # Start with black (0 opacity) +pulsing_opacity.priority = 1 +pulsing_opacity.name = "pulsing_opacity" + +# Create animated color base +var rainbow_base = animation.solid(opacity_engine) +rainbow_base.color = 0xFFFF0000 # Red base +rainbow_base.opacity = pulsing_opacity # Pulsing opacity +rainbow_base.priority = 20 +rainbow_base.name = "rainbow_with_pulse" + +# Test multiple renders with changing opacity +opacity_engine.clear() +opacity_engine.add_animation(rainbow_base) + +rainbow_base.start() +pulsing_opacity.start() + +# Test simple opacity changes +var test_frame = animation.frame_buffer(10) +var base_time = 2000 + +# Update opacity animation color to simulate pulsing +pulsing_opacity.color = 0xFF808080 # Gray (50% opacity) + +render_result = rainbow_base.render(test_frame, base_time) +assert_test(render_result, "Complex opacity animation should render successfully") + +# Test 11f: Opacity animation lifecycle management +print("\n--- Test 11f: Opacity animation lifecycle management ---") + +# Test that opacity animation starts automatically when main animation renders +var auto_start_opacity = animation.solid(opacity_engine) +auto_start_opacity.color = 0xFF808080 # Gray +auto_start_opacity.priority = 1 +auto_start_opacity.name = "auto_start_opacity" +auto_start_opacity.is_running = false # Start stopped + +var auto_start_main = animation.solid(opacity_engine) +auto_start_main.color = 0xFFFFFF00 # Yellow +auto_start_main.opacity = auto_start_opacity +auto_start_main.priority = 10 +auto_start_main.name = "auto_start_main" + +# Opacity animation should not be running initially +assert_test(!auto_start_opacity.is_running, "Opacity animation should start stopped") + +# Start main animation and render +auto_start_main.start() +var auto_frame = animation.frame_buffer(10) +render_result = auto_start_main.render(auto_frame, opacity_engine.time_ms) + +# Opacity animation should now be running +assert_test(auto_start_opacity.is_running, "Opacity animation should auto-start when main animation renders") +assert_test(render_result, "Main animation with auto-started opacity should render successfully") + +# Test 11g: Nested animation opacity (animation with animation opacity) +print("\n--- Test 11g: Nested animation opacity ---") + +# Create a chain: base -> opacity1 -> opacity2 +var base_nested = animation.solid(opacity_engine) +base_nested.color = 0xFF00FFFF # Cyan +base_nested.priority = 30 +base_nested.name = "base_nested" + +var opacity1 = animation.solid(opacity_engine) +opacity1.color = 0xFF808080 # 50% gray +opacity1.priority = 25 +opacity1.name = "opacity1" + +var opacity2 = animation.solid(opacity_engine) +opacity2.color = 0xFFC0C0C0 # 75% gray +opacity2.priority = 20 +opacity2.name = "opacity2" + +# Chain the opacities: base uses opacity1, opacity1 uses opacity2 +opacity1.opacity = opacity2 +base_nested.opacity = opacity1 + +# Test rendering with nested opacity +opacity_engine.clear() +opacity_engine.add_animation(base_nested) + +base_nested.start() +opacity1.start() +opacity2.start() + +var nested_frame = animation.frame_buffer(10) +render_result = base_nested.render(nested_frame, opacity_engine.time_ms) + +assert_test(render_result, "Nested animation opacity should render successfully") +assert_not_nil(base_nested.opacity_frame, "Base animation should have opacity frame buffer") +assert_not_nil(opacity1.opacity_frame, "First opacity animation should have opacity frame buffer") + +# Test 11h: Opacity animation parameter changes +print("\n--- Test 11h: Opacity animation parameter changes ---") + +var param_base = animation.solid(opacity_engine) +param_base.color = 0xFFFF00FF # Magenta +param_base.priority = 10 +param_base.name = "param_base" + +var param_opacity = animation.solid(opacity_engine) +param_opacity.color = 0xFF404040 # Dark gray +param_opacity.priority = 5 +param_opacity.name = "param_opacity" + +param_base.opacity = param_opacity + +# Test changing opacity animation parameters +param_base.start() +param_opacity.start() + +var param_frame = animation.frame_buffer(10) +render_result = param_base.render(param_frame, opacity_engine.time_ms) +assert_test(render_result, "Animation should render before opacity parameter change") + +# Change opacity animation color +param_opacity.color = 0xFFFFFFFF # White (full opacity) +render_result = param_base.render(param_frame, opacity_engine.time_ms + 100) +assert_test(render_result, "Animation should render after opacity parameter change") + +# Change opacity animation to numeric value +param_base.opacity = 64 # 25% opacity +render_result = param_base.render(param_frame, opacity_engine.time_ms + 200) +assert_test(render_result, "Animation should render after changing from animation to numeric opacity") + +# Change back to animation opacity +param_base.opacity = param_opacity +render_result = param_base.render(param_frame, opacity_engine.time_ms + 300) +assert_test(render_result, "Animation should render after changing from numeric to animation opacity") + +# Test 11i: Opacity with full transparency and full opacity +print("\n--- Test 11i: Opacity edge cases ---") + +var edge_base = animation.solid(opacity_engine) +edge_base.color = 0xFF0080FF # Blue +edge_base.priority = 10 +edge_base.name = "edge_base" + +# Test full transparency (should still render but with no visible effect) +edge_base.opacity = 0 +edge_base.start() +var edge_frame = animation.frame_buffer(10) +render_result = edge_base.render(edge_frame, opacity_engine.time_ms) +assert_test(render_result, "Animation with 0 opacity should still render") + +# Test full opacity (should render normally) +edge_base.opacity = 255 +render_result = edge_base.render(edge_frame, opacity_engine.time_ms + 100) +assert_test(render_result, "Animation with full opacity should render normally") + +# Test transparent animation as opacity +var transparent_opacity = animation.solid(opacity_engine) +transparent_opacity.color = 0x00000000 # Fully transparent +transparent_opacity.priority = 5 +transparent_opacity.name = "transparent_opacity" + +edge_base.opacity = transparent_opacity +transparent_opacity.start() +render_result = edge_base.render(edge_frame, opacity_engine.time_ms + 200) +assert_test(render_result, "Animation with transparent animation opacity should render") + +# Test 11j: Performance with animation opacity +print("\n--- Test 11j: Performance with animation opacity ---") + +# Create multiple animations with animation opacity for performance testing +opacity_engine.clear() + +var perf_animations = [] +var perf_opacities = [] + +for i : 0..9 + var perf_base = animation.solid(opacity_engine) + perf_base.color = 0xFF000000 | ((i * 25) << 16) | ((i * 15) << 8) | (i * 10) + perf_base.priority = 50 + i + perf_base.name = f"perf_base_{i}" + + var perf_opacity = animation.solid(opacity_engine) + perf_opacity.color = 0xFF808080 # 50% gray + perf_opacity.priority = 40 + i + perf_opacity.name = f"perf_opacity_{i}" + + perf_base.opacity = perf_opacity + + perf_animations.push(perf_base) + perf_opacities.push(perf_opacity) + + opacity_engine.add_animation(perf_base) +end + +# Start all animations +for anim : perf_animations + anim.start() +end +for opacity : perf_opacities + opacity.start() +end + +# Performance test: render multiple times +var perf_start_time = tasmota.millis() +for i : 0..19 + opacity_engine.on_tick(perf_start_time + i * 10) +end +var perf_time = tasmota.millis() - perf_start_time + +assert_test(perf_time < 300, f"20 render cycles with 10 animation opacities should be reasonable (took {perf_time}ms)") +assert_equals(opacity_engine.size(), 10, "Should have 10 animations with animation opacity") + +# Verify all opacity frame buffers were created +var opacity_frames_created = 0 +for anim : perf_animations + if anim.opacity_frame != nil + opacity_frames_created += 1 + end +end +assert_test(opacity_frames_created >= 5, f"Most animations should have opacity frame buffers created (found {opacity_frames_created})") + +opacity_engine.stop() + +# Test Results +print(f"\n=== Test Results ===") +print(f"Tests run: {test_count}") +print(f"Tests passed: {passed_count}") +print(f"Tests failed: {test_count - passed_count}") +print(f"Success rate: {tasmota.scale_uint(passed_count, 0, test_count, 0, 100)}%") + +if passed_count == test_count + print("🎉 All tests passed!") +else + print("❌ Some tests failed") + raise "test_failed" +end + +print("\n=== Animation Opacity Features ===") +print("Animation opacity system supports:") +print("- Numeric opacity values (0-255)") +print("- Animation instances as opacity masks") +print("- Automatic opacity animation lifecycle management") +print("- Efficient opacity frame buffer reuse") +print("- Dynamic frame buffer resizing") +print("- Nested animation opacity chains") +print("- Real-time opacity parameter changes") +print("- High performance with multiple opacity animations") + +print("\n=== Performance Benefits ===") +print("Unified AnimationEngine benefits:") +print("- Single object replacing 3 separate classes") +print("- Reduced memory overhead and allocations") +print("- Simplified API surface") +print("- Better cache locality") +print("- Fewer method calls per frame") +print("- Cleaner codebase with no deprecated APIs") +print("- Maintained full functionality") \ No newline at end of file diff --git a/lib/libesp32/berry_animation/src/tests/animation_test.be b/lib/libesp32/berry_animation/src/tests/animation_test.be index c4fd2582d..ef55893b2 100644 --- a/lib/libesp32/berry_animation/src/tests/animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/animation_test.be @@ -38,7 +38,7 @@ assert(anim.color == 0xFF0000, "Animation color should be red") var default_anim = animation.animation(engine) assert(default_anim.priority == 10, "Default priority should be 10") assert(default_anim.duration == 0, "Default duration should be 0 (infinite)") -assert(default_anim.loop == true, "Default loop should be true") +assert(default_anim.loop == false, "Default loop should be false") assert(default_anim.opacity == 255, "Default opacity should be 255") assert(default_anim.name == "animation", "Default name should be 'animation'") assert(default_anim.color == 0xFFFFFFFF, "Default color should be white") @@ -231,8 +231,6 @@ var valid_color_result = param_anim.set_param("color", 0xFF0000FF) # Valid var invalid_opacity_result = param_anim.set_param("opacity", 300) # Invalid: above max (255) assert(valid_priority_result == true, "Valid priority parameter should succeed") assert(valid_color_result == true, "Valid color parameter should succeed") -assert(invalid_opacity_result == false, "Invalid opacity parameter should fail") -assert(param_anim.get_param("opacity", nil) == 128, "Invalid parameters should not change existing value") # Test render method (base implementation should do nothing) # Create a frame buffer for testing diff --git a/lib/libesp32/berry_animation/src/tests/fire_animation_test.be b/lib/libesp32/berry_animation/src/tests/fire_animation_test.be index e488cac56..17a99825c 100644 --- a/lib/libesp32/berry_animation/src/tests/fire_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/fire_animation_test.be @@ -116,7 +116,8 @@ fire_palette.palette = animation.PALETTE_FIRE fire_palette.cycle_period = 5000 fire_palette.transition_type = 1 # Use sine transition (smooth) fire_palette.brightness = 255 -fire_palette.set_range(0, 255) +fire_palette.range_min = 0 +fire_palette.range_max = 255 fire.color = fire_palette print("Set back to fire palette") diff --git a/lib/libesp32/berry_animation/src/tests/global_variable_test.be b/lib/libesp32/berry_animation/src/tests/global_variable_test.be index e34271e3b..68d701345 100644 --- a/lib/libesp32/berry_animation/src/tests/global_variable_test.be +++ b/lib/libesp32/berry_animation/src/tests/global_variable_test.be @@ -1,6 +1,6 @@ # Test for global variable access with new transpiler symbol resolution # Verifies that generated code uses animation.symbol for animation module symbols -# and symbol_ for user-defined variables (no more animation.global calls) +# and symbol_ for user-defined variables calls) # # Command to run test is: # ./berry -s -g -m lib/libesp32/berry_animation -e "import tasmota" lib/libesp32/berry_animation/tests/global_variable_test.be @@ -26,7 +26,7 @@ def test_global_variable_access() assert(string.find(berry_code, "var red_alt_ = 0xFFFF0100") >= 0, "Should define red_alt variable") assert(string.find(berry_code, "var solid_red_ = animation.solid(engine)") >= 0, "Should define solid_red variable with new pattern") - # Variable references should now use direct underscore notation (no animation.global) + # Variable references should now use direct underscore notation assert(string.find(berry_code, "solid_red_.color = red_alt_") >= 0, "Should use red_alt_ directly for variable reference") # Verify the generated code actually compiles by executing it @@ -50,7 +50,7 @@ def test_undefined_variable_exception() assert(berry_code != nil, "Should compile DSL code") - # Check that undefined variables use direct underscore notation (no animation.global) + # Check that undefined variables use direct underscore notation import string assert(string.find(berry_code, "test_.color = undefined_var_") >= 0, "Should use undefined_var_ directly for undefined variable") diff --git a/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be b/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be index 82cfdfa81..15b9d8d32 100644 --- a/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/palette_pattern_animation_test.be @@ -34,8 +34,8 @@ var pattern_anim = animation.palette_pattern_animation(mock_engine) # Create a simple mock color source that has get_color_for_value method class MockColorSource def get_color_for_value(value, time_ms) - # Return red for high values, blue for low values - return value > 50 ? 0xFF0000FF : 0x0000FFFF + # Return red for high values, blue for low values (expecting 0-255 range) + return value > 127 ? 0xFF0000FF : 0x0000FFFF end end var mock_color_source = MockColorSource() @@ -47,9 +47,9 @@ pattern_anim.loop = false pattern_anim.opacity = 255 pattern_anim.name = "pattern_test" -# Create a simple pattern function that alternates between 0 and 100 +# Create a simple pattern function that alternates between 0 and 255 def simple_pattern(pixel_index, time_ms, animation) - return pixel_index % 2 == 0 ? 100 : 0 + return pixel_index % 2 == 0 ? 255 : 0 end pattern_anim.pattern_func = simple_pattern @@ -126,6 +126,17 @@ assert(result, "Render should return true") gradient_anim.shift_period = 1500 assert(gradient_anim.shift_period == 1500, "Shift period should be updated to 1500") +# Test new parameters +gradient_anim.spatial_period = 5 +assert(gradient_anim.spatial_period == 5, "Spatial period should be updated to 5") + +gradient_anim.phase_shift = 25 +assert(gradient_anim.phase_shift == 25, "Phase shift should be updated to 25") + +# Test static gradient (shift_period = 0) +gradient_anim.shift_period = 0 +assert(gradient_anim.shift_period == 0, "Shift period should be updated to 0 (static)") + # Test 4: PaletteMeterAnimation print("Test 4: PaletteMeterAnimation") var meter_anim = animation.palette_meter_animation(mock_engine) @@ -133,7 +144,7 @@ meter_anim.color_source = mock_color_source # Create a value function that returns 50% (half the strip) def meter_value_func(time_ms, animation) - return 50 # 50% of the strip + return 50 # 50% of the strip (this is still 0-100 for meter logic) end meter_anim.value_func = meter_value_func @@ -157,7 +168,7 @@ assert(result, "Render should return true") # Test changing value function def new_meter_value_func(time_ms, animation) - return 75 # 75% of the strip + return 75 # 75% of the strip (this is still 0-100 for meter logic) end meter_anim.value_func = new_meter_value_func @@ -229,10 +240,10 @@ end print("Test 7: Animation with different color mapping") class MockRainbowColorSource def get_color_for_value(value, time_ms) - # Simple rainbow mapping based on value - if value < 33 + # Simple rainbow mapping based on value (expecting 0-255 range) + if value < 85 return 0xFF0000FF # Red - elif value < 66 + elif value < 170 return 0x00FF00FF # Green else return 0x0000FFFF # Blue diff --git a/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be b/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be index 79352c3a3..77472090f 100644 --- a/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be +++ b/lib/libesp32/berry_animation/src/tests/parameter_validation_test.be @@ -39,11 +39,6 @@ def test_parameter_accepts_value_providers() oscillator.form = animation.SAWTOOTH assert(test_anim.set_param("opacity", oscillator) == true, "Should accept OscillatorValueProvider") - # Test that invalid types are rejected (no type conversion) - assert(test_anim.set_param("opacity", "invalid") == false, "Should reject string") - assert(test_anim.set_param("opacity", true) == false, "Should reject boolean") - assert(test_anim.set_param("opacity", 3.14) == true, "Should accept real (recent change to accept real for int parameters)") - print("✓ Parameter validation with ValueProviders test passed") end @@ -91,11 +86,7 @@ def test_range_validation() assert(test_anim.set_param("opacity", 50) == true, "Should accept value within range") assert(test_anim.set_param("opacity", 0) == true, "Should accept minimum value") assert(test_anim.set_param("opacity", 255) == true, "Should accept maximum value") - - # Test invalid range values - assert(test_anim.set_param("opacity", -1) == false, "Should reject value below minimum") - assert(test_anim.set_param("opacity", 256) == false, "Should reject value above maximum") - + print("✓ Range validation test passed") end @@ -114,8 +105,6 @@ def test_range_validation_with_providers() assert(test_anim.set_param("opacity", 50) == true, "Should accept value within range") assert(test_anim.set_param("opacity", 0) == true, "Should accept minimum value") assert(test_anim.set_param("opacity", 255) == true, "Should accept maximum value") - assert(test_anim.set_param("opacity", -1) == false, "Should reject value below minimum") - assert(test_anim.set_param("opacity", 256) == false, "Should reject value above maximum") # Test that ValueProviders bypass range validation # (since they provide dynamic values that can't be validated at set time) diff --git a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be index d6030221f..4ac7b1658 100644 --- a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be +++ b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_class_test.be @@ -125,10 +125,6 @@ print("Created static animation (cycle_period = 0)") var css_gradient = anim.color_provider.to_css_gradient() print(f"CSS gradient available: {bool(css_gradient)}") -anim.color_provider.set_range(0, 255) -var value_color = anim.color_provider.get_color_for_value(128, engine.time_ms) -print(f"Value-based color available: {bool(value_color)}") - # Validate key test results assert(anim != nil, "Rich palette animation should be created") assert(type(anim) == "instance", "Animation should be an instance") diff --git a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be index cd949701f..6880d604f 100644 --- a/lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be +++ b/lib/libesp32/berry_animation/src/tests/rich_palette_animation_test.be @@ -189,11 +189,14 @@ class RichPaletteAnimationTest self.assert_equal(provider.cycle_period, 1000, "Cycle period is 1000ms") # Test range setting and value-based colors - provider.set_range(0, 100) + provider.range_min = 0 + provider.range_max = 100 self.assert_equal(provider.range_min, 0, "Range min is 0") self.assert_equal(provider.range_max, 100, "Range max is 100") # Test value-based color generation + provider.start() + print(f"{provider.slots_arr=} {provider.value_arr=}") var color_0 = provider.get_color_for_value(0, 0) var color_50 = provider.get_color_for_value(50, 0) var color_100 = provider.get_color_for_value(100, 0) @@ -233,7 +236,9 @@ class RichPaletteAnimationTest var provider = animation.rich_palette(mock_engine) provider.palette = palette provider.cycle_period = 0 # Value-based mode - provider.set_range(0, 255) + provider.range_min = 0 + provider.range_max = 255 + provider.start() # Check that cycle_period can be set to 0 self.assert_equal(provider.cycle_period, 0, "Cycle period can be set to 0") diff --git a/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be b/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be index 571ee0ce3..cf4207f6b 100644 --- a/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be +++ b/lib/libesp32/berry_animation/src/tests/symbol_registry_test.be @@ -1,6 +1,5 @@ # Symbol Registry Test Suite # Tests for the simplified transpiler's runtime symbol resolution approach -# The simplified transpiler uses runtime resolution with new animation.global(name, module_name) signature # # Command to run test is: # ./berry -s -g -m lib/libesp32/berry_animation -e "import tasmota" lib/libesp32/berry_animation/tests/symbol_registry_test.be diff --git a/lib/libesp32/berry_animation/src/tests/test_all.be b/lib/libesp32/berry_animation/src/tests/test_all.be index d796ab091..a8cc38049 100644 --- a/lib/libesp32/berry_animation/src/tests/test_all.be +++ b/lib/libesp32/berry_animation/src/tests/test_all.be @@ -49,6 +49,7 @@ def run_all_tests() "lib/libesp32/berry_animation/src/tests/bytes_type_test.be", # Tests bytes type validation in parameterized objects "lib/libesp32/berry_animation/src/tests/animation_test.be", "lib/libesp32/berry_animation/src/tests/animation_engine_test.be", + "lib/libesp32/berry_animation/src/tests/animation_opacity_test.be", "lib/libesp32/berry_animation/src/tests/fast_loop_integration_test.be", "lib/libesp32/berry_animation/src/tests/solid_animation_test.be", # Tests unified solid() function "lib/libesp32/berry_animation/src/tests/solid_unification_test.be", # Tests solid unification diff --git a/lib/libesp32/berry_animation/src/tests/user_functions_test.be b/lib/libesp32/berry_animation/src/tests/user_functions_test.be index c90f5a9ad..084996fe5 100644 --- a/lib/libesp32/berry_animation/src/tests/user_functions_test.be +++ b/lib/libesp32/berry_animation/src/tests/user_functions_test.be @@ -4,6 +4,7 @@ import animation import animation_dsl +import user_functions # Load user functions import "user_functions" as user_funcs @@ -32,7 +33,7 @@ def test_user_function_in_computed_parameters() var dsl_code = "animation random_base = solid(color=blue, priority=10)\n" - "random_base.opacity = rand_demo()\n" + "random_base.opacity = user.rand_demo()\n" "run random_base" try @@ -56,7 +57,7 @@ def test_user_function_with_math() var dsl_code = "animation random_bounded = solid(color=orange, priority=8)\n" - "random_bounded.opacity = max(50, min(255, rand_demo() + 100))\n" + "random_bounded.opacity = max(50, min(255, user.rand_demo() + 100))\n" "run random_bounded" try @@ -82,7 +83,7 @@ def test_user_function_in_arithmetic() var dsl_code = "animation random_variation = solid(color=purple, priority=15)\n" - "random_variation.opacity = abs(rand_demo() - 128) + 64\n" + "random_variation.opacity = abs(user.rand_demo() - 128) + 64\n" "run random_variation" try @@ -108,7 +109,7 @@ def test_complex_user_function_expressions() var dsl_code = "animation random_complex = solid(color=white, priority=20)\n" - "random_complex.opacity = round((rand_demo() + 128) / 2 + abs(rand_demo() - 100))\n" + "random_complex.opacity = round((user.rand_demo() + 128) / 2 + abs(user.rand_demo() - 100))\n" "run random_complex" try @@ -139,8 +140,8 @@ def test_generated_code_validity() var dsl_code = "animation random_multi = solid(color=cyan, priority=12)\n" - "random_multi.opacity = rand_demo()\n" - "random_multi.duration = max(100, rand_demo())\n" + "random_multi.opacity = user.rand_demo()\n" + "random_multi.duration = max(100, user.rand_demo())\n" "run random_multi" try