DSL EXPRESSION:
for (i = 0; i < NR; i += 1) { if (i == 2) { continue} $i += 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]
                    "NR" [tt:ctx_NR] [nt:ctx_NR]
        "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]
                "if_chain" [tt:if_chain] [nt:IfChain]
                    "if" [tt:kw_if] [nt:IfItem]
                        "==" [tt:op_eqeq] [nt:Operator]
                            "i" [tt:non_sigil_name] [nt:LocalVariable]
                            "2" [tt:int_literal] [nt:int_literal]
                        "block" [tt:block] [nt:StatementBlockInBraces]
                            "block" [tt:block] [nt:StatementBlock]
                                "continue" [tt:kw_continue] [nt:ContinueStatement]
                "+=" [tt:op_plus_equals] [nt:CompoundAssignment]
                    "$i" [tt:field_name] [nt:DirectFieldValue]
                    "+=" [tt:op_plus_equals] [nt:op_plus_equals]
                    "i" [tt:non_sigil_name] [nt:LocalVariable]

