def parse_result_illegal
      s0 = @current_pos
      if match_str("反則") != :failed
        s10 = @current_pos
        s11 = match_str("勝ち")
        if s11 != :failed
          @reported_pos = s10
          s11 = "ILLEGAL_ACTION"
        end
        s10 = s11
        if s10 == :failed
          s10 = @current_pos
          s11 = match_str("負け")
          if s11 != :failed
            @reported_pos = s10
            s11 = "ILLEGAL_MOVE"
          end
          s10 = s11
        end
        if s10 != :failed
          @reported_pos = s0
          s10
        else
          @current_pos = s0
          :failed
        end
      else
        @current_pos = s0
        :failed
      end
    end
def parse_result_illegal
      s0 = @current_pos
      if match_str("反則") != :failed
        s10 = @current_pos
        s11 = match_str("勝ち")
        if s11 != :failed
          @reported_pos = s10
          s11 = "ILLEGAL_ACTION"
        end
        s10 = s11
        if s10 == :failed
          s10 = @current_pos
          s11 = match_str("負け")
          if s11 != :failed
            @reported_pos = s10
            s11 = "ILLEGAL_MOVE"
          end
          s10 = s11
        end
        if s10 != :failed
          @reported_pos = s0
          s10
        else
          @current_pos = s0
          :failed
        end
      else
        @current_pos = s0
        :failed
      end
    end
result_illegal : "反則" ("勝ち" | "負け")