DSL EXPRESSION:
begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;@t["u".$5]=2;emit @v;emit @w; dump}; $x=6; end{@z=9}


AST:
* statement block
    * begin block
        * statement block
            * assignment "="
                * direct oosvar value "a"
                * int literal "1"
    * assignment "="
        * direct field value "e"
        * int literal "2"
    * cond block
        * operator "||"
            * operator "=="
                * direct field value "f"
                * direct field value "g"
            * operator "=="
                * direct field value "h"
                * direct field value "i"
        * statement block
            * assignment "="
                * direct field value "s"
                * int literal "1"
            * assignment "="
                * array or map index access "[]"
                    * direct oosvar value "t"
                    * dot operator "."
                        * string literal "u"
                        * direct field value "5"
                * int literal "2"
            * emit statement "emit"
                * emittable list
                    * direct oosvar value "v"
                * no-op
                * no-op
            * emit statement "emit"
                * emittable list
                    * direct oosvar value "w"
                * no-op
                * no-op
            * dump statement "dump"
                * no-op
                * no-op
    * assignment "="
        * direct field value "x"
        * int literal "6"
    * end block
        * statement block
            * assignment "="
                * direct oosvar value "z"
                * int literal "9"

