def interactive_input ( ) # :nodoc:
      state = 0
      rv  = ""
      str = gets
      
      # Сразу нажата <Enter> => exit.
      return rv if str[0] == '\n'
      
      # Выполняем разбор посимвольно.
      str.each_char do |c|
	break if c == ?\n
	case state
	  #
	  # Сборка символов и проверка на наличие
	  # экранирующего символа, значит это ESC-символы.
	when 0
	  if c == '\\' then
	    state = 1
	  else
	    rv += c
	  end
	  #
	  # Анализ ESC символа.
	when 1
	  case c
	  when '0'
	    rv += "\0"
	  when 'n'
	    rv += "\n"
	  when 'r'
	    rv += "\r"
	  when '\\'
	    rv += "\\"
	  when 'a'
	    rv += "\a"
	  when 'b'
	    rv += "\b"
	  when 't'
	    rv += "\t"
	  when 'v'
	    rv += "\v"
	  when 'f'
	    rv += "\f"
	  else
	    puts "\nERROR: unrecognized esc-symbols.\n"
	    exit
	  end
	  state = 0
	end
      end
      return rv
    end
def interactive_input ( ) # :nodoc:
      state = 0
      rv  = ""
      str = gets
      
      # Сразу нажата <Enter> => exit.
      return rv if str[0] == '\n'
      
      # Выполняем разбор посимвольно.
      str.each_char do |c|
	break if c == ?\n
	case state
	  #
	  # Сборка символов и проверка на наличие
	  # экранирующего символа, значит это ESC-символы.
	when 0
	  if c == '\\' then
	    state = 1
	  else
	    rv += c
	  end
	  #
	  # Анализ ESC символа.
	when 1
	  case c
	  when '0'
	    rv += "\0"
	  when 'n'
	    rv += "\n"
	  when 'r'
	    rv += "\r"
	  when '\\'
	    rv += "\\"
	  when 'a'
	    rv += "\a"
	  when 'b'
	    rv += "\b"
	  when 't'
	    rv += "\t"
	  when 'v'
	    rv += "\v"
	  when 'f'
	    rv += "\f"
	  else
	    puts "\nERROR: unrecognized esc-symbols.\n"
	    exit
	  end
	  state = 0
	end
      end
      return rv
    end
Display information about of each state of parser.
 Обработка ввода для интерактивных режимов работы.