def parse_teban
      s0 = @current_pos
      s1 = match_space
      if s1 == :failed
        s1 = match_str("+")
        s1 = match_str("^") if s1 == :failed
      end
      if s1 != :failed
        @reported_pos = s0
        s1 = 0
      end
      s0 = s1
      if s0 == :failed
        s0 = @current_pos
        s1 = match_str("v")
        s1 = match_str("V") if s1 == :failed
        if s1 != :failed
          @reported_pos = s0
          s1 = 1
        end
        s0 = s1
      end
      s0
    end
def parse_teban
      s0 = @current_pos
      s1 = match_space
      if s1 == :failed
        s1 = match_str("+")
        s1 = match_str("^") if s1 == :failed
      end
      if s1 != :failed
        @reported_pos = s0
        s1 = 0
      end
      s0 = s1
      if s0 == :failed
        s0 = @current_pos
        s1 = match_str("v")
        s1 = match_str("V") if s1 == :failed
        if s1 != :failed
          @reported_pos = s0
          s1 = 1
        end
        s0 = s1
      end
      s0
    end
teban : (" " | "+" | "^") | ("v" | "V")