DSL EXPRESSION:
for (i = 0; i < 10; i += 1) { $x += i }


AST:
"block" [tt:block] [nt:StatementBlock]
    "for" [tt:kw_for] [nt:TripleForLoop]
        "block" [tt:block] [nt:StatementBlock]
            "=" [tt:equals] [nt:Assignment]
                "i" [tt:non_sigil_name] [nt:LocalVariable]
                "0" [tt:int_literal] [nt:int_literal]
        "block" [tt:block] [nt:StatementBlock]
            "<" [tt:op_lt] [nt:BareBoolean]
                "<" [tt:op_lt] [nt:Operator]
                    "i" [tt:non_sigil_name] [nt:LocalVariable]
                    "10" [tt:int_literal] [nt:int_literal]
        "block" [tt:block] [nt:StatementBlock]
            "+=" [tt:op_plus_equals] [nt:CompoundAssignment]
                "i" [tt:non_sigil_name] [nt:LocalVariable]
                "+=" [tt:op_plus_equals] [nt:op_plus_equals]
                "1" [tt:int_literal] [nt:int_literal]
        "block" [tt:block] [nt:StatementBlockInBraces]
            "block" [tt:block] [nt:StatementBlock]
                "+=" [tt:op_plus_equals] [nt:CompoundAssignment]
                    "$x" [tt:field_name] [nt:DirectFieldValue]
                    "+=" [tt:op_plus_equals] [nt:op_plus_equals]
                    "i" [tt:non_sigil_name] [nt:LocalVariable]

