================================================================================
Do block
================================================================================

do
end

--------------------------------------------------------------------------------

(program
  (do_statement))

================================================================================
Nested do blocks
================================================================================

do
  do
    do
    end
  end
end

--------------------------------------------------------------------------------

(program
  (do_statement
    (do_statement
      (do_statement))))

================================================================================
Numeric for loop
================================================================================

for i = 1, 10 do
end

--------------------------------------------------------------------------------

(program
  (numeric_for_statement
    (identifier)
    (number)
    (number)
    (for_body)))

================================================================================
Numeric for loop with step
================================================================================

for i = 1, 10, -2 do
end

--------------------------------------------------------------------------------

(program
  (numeric_for_statement
    variable: (identifier)
    initializer: (number)
    target: (number)
    step: (unary_op
      op: (op)
      right: (number))
    body: (for_body)))

================================================================================
Generic for loop
================================================================================

for i, v in thingy do

end

--------------------------------------------------------------------------------

(program
  (generic_for_statement
    (identifier)
    (identifier)
    (identifier)
    (for_body)))

================================================================================
While loop
================================================================================

while 1 do
end

--------------------------------------------------------------------------------

(program
  (while_statement
    condition: (number)
    (while_body)))

================================================================================
Repeat loop
================================================================================

repeat
until 1

--------------------------------------------------------------------------------

(program
  (repeat_statement
    condition: (number)))

================================================================================
A whole bunch of loops
================================================================================

for i = 1, 20 do
   while i < 10 do
      repeat
         do
         end
      until i > 30
   end
end

--------------------------------------------------------------------------------

(program
  (numeric_for_statement
    variable: (identifier)
    initializer: (number)
    target: (number)
    body: (for_body
      (while_statement
        condition: (bin_op
          left: (identifier)
          op: (op)
          right: (number))
        (while_body
          (repeat_statement
            (do_statement)
            condition: (bin_op
              left: (identifier)
              op: (op)
              right: (number))))))))
