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:
"block" [tt:block] [nt:StatementBlock]
    "begin" [tt:kw_begin] [nt:BeginBlock]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "=" [tt:equals] [nt:Assignment]
                    "@a" [tt:oosvar_name] [nt:DirectOosvarValue]
                    "1" [tt:int_literal] [nt:int_literal]
    "=" [tt:equals] [nt:Assignment]
        "$e" [tt:field_name] [nt:DirectFieldValue]
        "2" [tt:int_literal] [nt:int_literal]
    "||" [tt:op_logical_or] [nt:CondBlock]
        "||" [tt:op_logical_or] [nt:Operator]
            "==" [tt:op_eqeq] [nt:Operator]
                "$f" [tt:field_name] [nt:DirectFieldValue]
                "$g" [tt:field_name] [nt:DirectFieldValue]
            "==" [tt:op_eqeq] [nt:Operator]
                "$h" [tt:field_name] [nt:DirectFieldValue]
                "$i" [tt:field_name] [nt:DirectFieldValue]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "=" [tt:equals] [nt:Assignment]
                    "$s" [tt:field_name] [nt:DirectFieldValue]
                    "1" [tt:int_literal] [nt:int_literal]
                "=" [tt:equals] [nt:Assignment]
                    "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                        "@t" [tt:oosvar_name] [nt:DirectOosvarValue]
                        "." [tt:op_dot] [nt:DotOperator]
                            ""u"" [tt:string_literal] [nt:string_literal]
                            "$5" [tt:field_name] [nt:DirectFieldValue]
                    "2" [tt:int_literal] [nt:int_literal]
                "emit" [tt:kw_emit] [nt:EmitStatement]
                    "@v" [tt:oosvar_name] [nt:DirectOosvarValue]
                "emit" [tt:kw_emit] [nt:EmitStatement]
                    "@w" [tt:oosvar_name] [nt:DirectOosvarValue]
                "dump" [tt:kw_dump] [nt:DumpStatement]
    "=" [tt:equals] [nt:Assignment]
        "$x" [tt:field_name] [nt:DirectFieldValue]
        "6" [tt:int_literal] [nt:int_literal]
    "end" [tt:kw_end] [nt:EndBlock]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "=" [tt:equals] [nt:Assignment]
                    "@z" [tt:oosvar_name] [nt:DirectOosvarValue]
                    "9" [tt:int_literal] [nt:int_literal]

