def parse_ikkatsu
      s0 = @current_pos
      s2 = parse_ikkatsu_line
      if s2 != :failed
        s1 = []
        while s2 != :failed
          s1 << s2
          s2 = parse_ikkatsu_line
        end
      else
        s1 = :failed
      end
      if s1 != :failed
        @reported_pos = s0
        s1 = -> (lines) do
          board = []
          9.times do |i|
            line = []
            9.times do |j|
              line << lines[j][8 - i]
            end
            board << line
          end
          { "preset" => "OTHER", "data" => { "board" => board } }
        end.call(s1)
      end
      s0 = s1
      s0
    end
def parse_ikkatsu
      s0 = @current_pos
      s2 = parse_ikkatsu_line
      if s2 != :failed
        s1 = []
        while s2 != :failed
          s1 << s2
          s2 = parse_ikkatsu_line
        end
      else
        s1 = :failed
      end
      if s1 != :failed
        @reported_pos = s0
        s1 = -> (lines) do
          board = []
          9.times do |i|
            line = []
            9.times do |j|
              line << lines[j][8 - i]
            end
            board << line
          end
          { "preset" => "OTHER", "data" => { "board" => board } }
        end.call(s1)
      end
      s0 = s1
      s0
    end
ikkatsu : ikkatsuline+