def parse_initialboard
      s0 = s1 = @current_pos
      if match_space != :failed
        parse_nonls
        s2 = parse_nl
        @current_pos = s1 if s2 == :failed
      else
        @current_pos = s1
      end
      s2 = @current_pos
      if match_str("+") != :failed
        parse_nonls
        @current_pos = s2 if parse_nl == :failed
      else
        @current_pos = s2
      end
      s4 = parse_ikkatsuline
      if s4 != :failed
        s3 = []
        while s4 != :failed
          s3 << s4
          s4 = parse_ikkatsuline
        end
      else
        s3 = :failed
      end
      if s3 != :failed
        s4 = @current_pos
        if match_str("+") != :failed
          parse_nonls
          @current_pos = s4 if parse_nl == :failed
        else
          @current_pos = s4
        end
        @reported_pos = s0
        transform_initialboard(s3)
      else
        @current_pos = s0
        :failed
      end
    end
def parse_initialboard
      s0 = s1 = @current_pos
      if match_space != :failed
        parse_nonls
        s2 = parse_nl
        @current_pos = s1 if s2 == :failed
      else
        @current_pos = s1
      end
      s2 = @current_pos
      if match_str("+") != :failed
        parse_nonls
        @current_pos = s2 if parse_nl == :failed
      else
        @current_pos = s2
      end
      s4 = parse_ikkatsuline
      if s4 != :failed
        s3 = []
        while s4 != :failed
          s3 << s4
          s4 = parse_ikkatsuline
        end
      else
        s3 = :failed
      end
      if s3 != :failed
        s4 = @current_pos
        if match_str("+") != :failed
          parse_nonls
          @current_pos = s4 if parse_nl == :failed
        else
          @current_pos = s4
        end
        @reported_pos = s0
        transform_initialboard(s3)
      else
        @current_pos = s0
        :failed
      end
    end
initialboard : (" " nonls nl)? ("+" nonls nl)? ikkatsuline+ ("+" nonls nl)?