def read_loop
      line_number = 1
      full_buffer = ''
      while buf = Readline.readline("#{line_number}:#{extra_prompt}>> ", true)
        begin
          full_buffer += buf
          # unless this is puppet code, otherwise skip repl keywords
          unless PuppetDebugger::InputResponders::Commands.command_list_regex.match(buf)
            line_number = line_number.next
            begin
              parser.parse_string(full_buffer)
            rescue Puppet::ParseErrorWithIssue => e
              if multiline_input?(e)
                out_buffer.print '  '
                full_buffer += "\n"
                next
              end
            end
          end
          handle_input(full_buffer)
          full_buffer = ''
        end
      end
    end
def read_loop
      line_number = 1
      full_buffer = ''
      while buf = Readline.readline("#{line_number}:#{extra_prompt}>> ", true)
        begin
          full_buffer += buf
          # unless this is puppet code, otherwise skip repl keywords
          unless PuppetDebugger::InputResponders::Commands.command_list_regex.match(buf)
            line_number = line_number.next
            begin
              parser.parse_string(full_buffer)
            rescue Puppet::ParseErrorWithIssue => e
              if multiline_input?(e)
                out_buffer.print '  '
                full_buffer += "\n"
                next
              end
            end
          end
          handle_input(full_buffer)
          full_buffer = ''
        end
      end
    end
reads input from stdin, since readline requires a tty
 we cannot read from other sources as readline requires a file object
 we parse the string after each input to determine if the input is a multiline_input
 entry.  If it is multiline we run through the loop again and concatenate the
 input