DSL EXPRESSION:
  @o[1][1]["text1"][NR] = $a;
  @o[1][2]["text2"][NR] = $b;
  @o[1][2][$a][$i*100] = $x;
  for((k1,k2),v in @o[1][2]) {
    @n[3][4][k2][k1] = v;
  }
  end {
    emit @n, "a", "b", "c", "d"
  }



AST:
"block" [tt:block] [nt:StatementBlock]
    "=" [tt:equals] [nt:Assignment]
        "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
            "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                    "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                        "@o" [tt:oosvar_name] [nt:DirectOosvarValue]
                        "1" [tt:int_literal] [nt:int_literal]
                    "1" [tt:int_literal] [nt:int_literal]
                ""text1"" [tt:string_literal] [nt:string_literal]
            "NR" [tt:ctx_NR] [nt:ctx_NR]
        "$a" [tt:field_name] [nt:DirectFieldValue]
    "=" [tt:equals] [nt:Assignment]
        "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
            "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                    "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                        "@o" [tt:oosvar_name] [nt:DirectOosvarValue]
                        "1" [tt:int_literal] [nt:int_literal]
                    "2" [tt:int_literal] [nt:int_literal]
                ""text2"" [tt:string_literal] [nt:string_literal]
            "NR" [tt:ctx_NR] [nt:ctx_NR]
        "$b" [tt:field_name] [nt:DirectFieldValue]
    "=" [tt:equals] [nt:Assignment]
        "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
            "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                    "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                        "@o" [tt:oosvar_name] [nt:DirectOosvarValue]
                        "1" [tt:int_literal] [nt:int_literal]
                    "2" [tt:int_literal] [nt:int_literal]
                "$a" [tt:field_name] [nt:DirectFieldValue]
            "*" [tt:op_star] [nt:Operator]
                "$i" [tt:field_name] [nt:DirectFieldValue]
                "100" [tt:int_literal] [nt:int_literal]
        "$x" [tt:field_name] [nt:DirectFieldValue]
    "for" [tt:kw_for] [nt:ForLoopMultivariable]
        "multi_index" [tt:multi_index] [nt:MultiIndex]
            "k1" [tt:non_sigil_name] [nt:LocalVariable]
            "k2" [tt:non_sigil_name] [nt:LocalVariable]
        "v" [tt:non_sigil_name] [nt:LocalVariable]
        "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
            "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                "@o" [tt:oosvar_name] [nt:DirectOosvarValue]
                "1" [tt:int_literal] [nt:int_literal]
            "2" [tt:int_literal] [nt:int_literal]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "=" [tt:equals] [nt:Assignment]
                    "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                        "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                            "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                                "[]" [tt:[]] [nt:ArrayOrMapIndexAccess]
                                    "@n" [tt:oosvar_name] [nt:DirectOosvarValue]
                                    "3" [tt:int_literal] [nt:int_literal]
                                "4" [tt:int_literal] [nt:int_literal]
                            "k2" [tt:non_sigil_name] [nt:LocalVariable]
                        "k1" [tt:non_sigil_name] [nt:LocalVariable]
                    "v" [tt:non_sigil_name] [nt:LocalVariable]
    "end" [tt:kw_end] [nt:EndBlock]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "emit" [tt:kw_emit] [nt:EmitStatement]
                    "@n" [tt:oosvar_name] [nt:DirectOosvarValue]
                    ""a"" [tt:string_literal] [nt:string_literal]
                    ""b"" [tt:string_literal] [nt:string_literal]
                    ""c"" [tt:string_literal] [nt:string_literal]
                    ""d"" [tt:string_literal] [nt:string_literal]

