rascal 0.3.4

A parser and compiler for Flash ActionScript 2 files into SWFs
Documentation
---
source: crates/rascal/src/tests.rs
expression: result
input_file: samples/as2/try_catch_finally_break_continue.as
---
initializer:
  actions:
    - ConstantPool:
        - i
        - loop i=
        - "  try:i="
        - boom@2
        - boom@4
        - "  catch:"
        - e
        - "  finally:i="
        - "  after try/catch/finally i="
        - done
    - Push:
        - Constant: 0
        - Integer: 0
    - DefineLocal
    - Push:
        - Constant: 0
    - GetVariable
    - Push:
        - Integer: 6
    - Less2
    - Not
    - If: loc0000
    - Push:
        - Constant: 1
        - Constant: 0
    - GetVariable
    - Add2
    - Trace
    - Try:
        try_body:
          actions:
            - Push:
                - Constant: 2
                - Constant: 0
            - GetVariable
            - Add2
            - Trace
            - Push:
                - Constant: 0
            - GetVariable
            - Push:
                - Integer: 1
            - Equals2
            - Not
            - If: loc0004
            - Jump: loc0001
            - Push:
                - Constant: 0
            - GetVariable
            - Push:
                - Integer: 2
            - Equals2
            - Not
            - If: loc0005
            - Push:
                - Constant: 3
            - Throw
            - Push:
                - Constant: 0
            - GetVariable
            - Push:
                - Integer: 4
            - Equals2
            - Not
            - If: loc0006
            - Push:
                - Constant: 4
            - Throw
            - Jump: loc0003
          label_positions:
            loc0004: 11
            loc0005: 19
            loc0006: 27
        catch_body:
          - Variable: e
          - actions:
              - Push:
                  - Constant: 5
                  - Constant: 6
              - GetVariable
              - Add2
              - Trace
              - Push:
                  - Constant: 6
              - GetVariable
              - Push:
                  - Constant: 3
              - Equals2
              - Not
              - If: loc0007
              - Jump: loc0000
              - Push:
                  - Constant: 6
              - GetVariable
              - Push:
                  - Constant: 4
              - Equals2
              - Not
              - If: loc0008
              - Jump: loc0001
            label_positions:
              loc0007: 11
              loc0008: 18
        finally_body:
          actions:
            - Push:
                - Constant: 7
                - Constant: 0
            - GetVariable
            - Add2
            - Trace
            - Push:
                - Constant: 0
            - GetVariable
            - Push:
                - Integer: 3
            - Equals2
            - Not
            - If: loc0009
            - Jump: loc0001
            - Push:
                - Constant: 0
            - GetVariable
            - Push:
                - Integer: 5
            - Equals2
            - Not
            - If: loc000a
            - Jump: loc0000
          label_positions:
            loc0003: 0
            loc0009: 11
            loc000a: 18
    - Push:
        - Constant: 8
        - Constant: 0
    - GetVariable
    - Add2
    - Trace
    - Push:
        - Constant: 0
        - Constant: 0
    - GetVariable
    - Increment
    - SetVariable
    - Jump: loc0002
    - Push:
        - Constant: 9
    - Trace
  label_positions:
    loc0002: 3
    loc0001: 18
    loc0000: 23
extra_modules: []
compile_options:
  swf_version: 15
  optimizations:
    fold_constants: true
    promote_variables_to_registers: true
custom_pcodes: []