code: def p_do_loop(p):
      
      if len(p) == 4:
          q = make_block(p[2], p[3])
      else:
          q = p[2]
  
      if p[1] == 'DO':
          gl.LOOPS.append(('DO',))
  
      if q is None:
          warning(p.lineno(1), 'Infinite empty loop')
  
      # An infinite loop and no warnings
      p[0] = make_sentence('DO_LOOP', q)
      gl.LOOPS.pop()
docs: statement : do_start program_co label_loop
                    | do_start label_loop
                    | DO label_loop