DSL EXPRESSION:
  if (NR == 17) {
    $x = 18;
    $y = 19
  } elif (NR == 20) {
    $x = 21;
    $y = 22
  } elif (NR == 23) {
    $x = 24;
    $y = 25
  } else {
    $x = 1026;
    $y = 1027
  }


AST:
"block" [tt:block] [nt:StatementBlock]
    "if_chain" [tt:if_chain] [nt:IfChain]
        "if" [tt:kw_if] [nt:IfItem]
            "==" [tt:op_eqeq] [nt:Operator]
                "NR" [tt:ctx_NR] [nt:ctx_NR]
                "17" [tt:int_literal] [nt:int_literal]
            "block" [tt:block] [nt:StatementBlockInBraces]
                "block" [tt:block] [nt:StatementBlock]
                    "=" [tt:equals] [nt:Assignment]
                        "$x" [tt:field_name] [nt:DirectFieldValue]
                        "18" [tt:int_literal] [nt:int_literal]
                    "=" [tt:equals] [nt:Assignment]
                        "$y" [tt:field_name] [nt:DirectFieldValue]
                        "19" [tt:int_literal] [nt:int_literal]
        "elif" [tt:kw_elif] [nt:IfItem]
            "==" [tt:op_eqeq] [nt:Operator]
                "NR" [tt:ctx_NR] [nt:ctx_NR]
                "20" [tt:int_literal] [nt:int_literal]
            "block" [tt:block] [nt:StatementBlockInBraces]
                "block" [tt:block] [nt:StatementBlock]
                    "=" [tt:equals] [nt:Assignment]
                        "$x" [tt:field_name] [nt:DirectFieldValue]
                        "21" [tt:int_literal] [nt:int_literal]
                    "=" [tt:equals] [nt:Assignment]
                        "$y" [tt:field_name] [nt:DirectFieldValue]
                        "22" [tt:int_literal] [nt:int_literal]
        "elif" [tt:kw_elif] [nt:IfItem]
            "==" [tt:op_eqeq] [nt:Operator]
                "NR" [tt:ctx_NR] [nt:ctx_NR]
                "23" [tt:int_literal] [nt:int_literal]
            "block" [tt:block] [nt:StatementBlockInBraces]
                "block" [tt:block] [nt:StatementBlock]
                    "=" [tt:equals] [nt:Assignment]
                        "$x" [tt:field_name] [nt:DirectFieldValue]
                        "24" [tt:int_literal] [nt:int_literal]
                    "=" [tt:equals] [nt:Assignment]
                        "$y" [tt:field_name] [nt:DirectFieldValue]
                        "25" [tt:int_literal] [nt:int_literal]
        "else" [tt:kw_else] [nt:IfItem]
            "block" [tt:block] [nt:StatementBlockInBraces]
                "block" [tt:block] [nt:StatementBlock]
                    "=" [tt:equals] [nt:Assignment]
                        "$x" [tt:field_name] [nt:DirectFieldValue]
                        "1026" [tt:int_literal] [nt:int_literal]
                    "=" [tt:equals] [nt:Assignment]
                        "$y" [tt:field_name] [nt:DirectFieldValue]
                        "1027" [tt:int_literal] [nt:int_literal]

i=1,x=1026,y=1027
i=2,x=1026,y=1027
i=3,x=1026,y=1027
i=4,x=1026,y=1027
i=5,x=1026,y=1027
i=6,x=1026,y=1027
i=7,x=1026,y=1027
i=8,x=1026,y=1027
i=9,x=1026,y=1027
i=10,x=1026,y=1027
i=11,x=1026,y=1027
i=12,x=1026,y=1027
i=13,x=1026,y=1027
i=14,x=1026,y=1027
i=15,x=1026,y=1027
i=16,x=1026,y=1027
i=17,x=18,y=19
i=18,x=1026,y=1027
i=19,x=1026,y=1027
i=20,x=21,y=22
i=21,x=1026,y=1027
i=22,x=1026,y=1027
i=23,x=24,y=25
i=24,x=1026,y=1027
i=25,x=1026,y=1027
i=26,x=1026,y=1027
i=27,x=1026,y=1027
i=28,x=1026,y=1027
i=29,x=1026,y=1027
i=30,x=1026,y=1027
i=31,x=1026,y=1027
i=32,x=1026,y=1027
i=33,x=1026,y=1027
i=34,x=1026,y=1027
i=35,x=1026,y=1027
i=36,x=1026,y=1027
i=37,x=1026,y=1027
i=38,x=1026,y=1027
i=39,x=1026,y=1027
i=40,x=1026,y=1027
