rascal 0.3.4

A parser and compiler for Flash ActionScript 2 files into SWFs
Documentation
---
source: crates/rascal/src/program.rs
expression: parsed
input_file: samples/as2/try_catch_stack.as
---
Ok:
  initial_script:
    - Declare:
        name:
          span:
            start: 4
            end: 7
            file: 0
          value: bad
        value:
          span:
            start: 10
            end: 46
            file: 0
          value:
            Function:
              signature:
                name: ~
                args: []
                return_type: ~
              body:
                - Throw:
                    - span:
                        start: 33
                        end: 43
                        file: 0
                      value:
                        Constant:
                          String: oh noes!
              scope:
                defined_variables:
                  this:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  arguments:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  super:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  _root:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  _parent:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  _global:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                referenced_variables: []
                could_reference_anything: false
              register_count: 1
              preload_this: false
              suppress_this: true
              preload_arguments: false
              suppress_arguments: true
              preload_super: false
              suppress_super: true
              preload_root: false
              preload_parent: false
              preload_global: false
        type_name: ~
    - Declare:
        name:
          span:
            start: 53
            end: 56
            file: 0
          value: foo
        value:
          span:
            start: 59
            end: 188
            file: 0
          value:
            Function:
              signature:
                name: ~
                args: []
                return_type: ~
              body:
                - Try:
                    try_body:
                      - Return:
                          - span:
                              start: 97
                              end: 112
                              file: 0
                            value:
                              BinaryOperator:
                                - Add
                                - span:
                                    start: 97
                                    end: 98
                                    file: 0
                                  value:
                                    Constant:
                                      Integer: 1
                                - span:
                                    start: 102
                                    end: 111
                                    file: 0
                                  value:
                                    BinaryOperator:
                                      - Add
                                      - span:
                                          start: 102
                                          end: 103
                                          file: 0
                                        value:
                                          Constant:
                                            Integer: 1
                                      - span:
                                          start: 106
                                          end: 111
                                          file: 0
                                        value:
                                          Call:
                                            name:
                                              span:
                                                start: 106
                                                end: 109
                                                file: 0
                                              value:
                                                Constant:
                                                  Identifier: bad
                                            args: []
                    typed_catches: []
                    catch_all:
                      name:
                        span:
                          start: 127
                          end: 128
                          file: 0
                        value: e
                      body:
                        - Expr:
                            span:
                              start: 140
                              end: 161
                              file: 0
                            value:
                              Trace:
                                span:
                                  start: 146
                                  end: 160
                                  file: 0
                                value:
                                  BinaryOperator:
                                    - Add
                                    - span:
                                        start: 146
                                        end: 156
                                        file: 0
                                      value:
                                        Constant:
                                          String: "caught: "
                                    - span:
                                        start: 159
                                        end: 160
                                        file: 0
                                      value:
                                        Constant:
                                          Identifier: e
                        - Return:
                            - span:
                                start: 178
                                end: 179
                                file: 0
                              value:
                                Constant:
                                  Integer: 5
                    finally: []
              scope:
                defined_variables:
                  this:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  arguments:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  super:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  _root:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  _parent:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                  _global:
                    used: false
                    used_in_inner_scope: false
                    type_name: ~
                referenced_variables:
                  - bad
                  - e
                could_reference_anything: false
              register_count: 1
              preload_this: false
              suppress_this: true
              preload_arguments: false
              suppress_arguments: true
              preload_super: false
              suppress_super: true
              preload_root: false
              preload_parent: false
              preload_global: false
        type_name: ~
    - Expr:
        span:
          start: 191
          end: 203
          file: 0
        value:
          Trace:
            span:
              start: 197
              end: 202
              file: 0
            value:
              Call:
                name:
                  span:
                    start: 197
                    end: 200
                    file: 0
                  value:
                    Constant:
                      Identifier: foo
                args: []
    - Expr:
        span:
          start: 205
          end: 225
          file: 0
        value:
          Trace:
            span:
              start: 211
              end: 224
              file: 0
            value:
              BinaryOperator:
                - Add
                - span:
                    start: 211
                    end: 216
                    file: 0
                  value:
                    Call:
                      name:
                        span:
                          start: 211
                          end: 214
                          file: 0
                        value:
                          Constant:
                            Identifier: foo
                      args: []
                - span:
                    start: 219
                    end: 224
                    file: 0
                  value:
                    Call:
                      name:
                        span:
                          start: 219
                          end: 222
                          file: 0
                        value:
                          Constant:
                            Identifier: foo
                      args: []
  interfaces: []
  classes: []
  custom_pcodes: []
  compile_options:
    swf_version: 15
    optimizations:
      fold_constants: true
      promote_variables_to_registers: true