parsing error that doesn't make any sense help

Okay, I can’t find the missing curly bracket so let’s play
FIND
THAT
MISSING
CURLY BRACKET!
YAY!

public class player : MonoBehaviour {
public float gravity = -5f; 
private bool jump = false;

	//the actual movement iow walking
			vel.y += jumpForce;
			jump = true;
			jump = false;
		groundedOn = null;
	
		if (hit && vel.y <= 0){
			groundedOn = hit.transform.gameObject;

		hit = Physics2D.Raycast(new Vector2(transform.position.x + width / 2, transform.position.y), -Vector2.up, height / 2);
			grounded = true;

}

Also, forgot to put this in, if you’re confused or just your head hurts, use this instead:
public class player :


 MonoBehaviour {
	//them variables!
	public Vector2 vel;
	public float gravity = -5f; 
	public float AxisX = 0f;
	public float AxisY = 0f;
	private Rigidbody2D rb;
	public float walkSpeed = 5f;
	public bool grounded = false;
	public GameObject groundedOn = null;
	public float height;
	public float width;
	public float jumpForce = 700f;
	RaycastHit2D hit;
	private bool jump = false;
	public float jumpLeft = 1
	
	// Use this for initialization
	void Start () {
		vel = new Vector2 (0,0);
		rb = GetComponent<Rigidbody2D>();
		PlayerPrefs.SetInt ("doublejumps", dJumpLimit);
	}
	
	// Update is called once per frame
	void Update () {
		vel = new Vector2(0,0);
		
		//player's movement
		void HandleMovement () {
			if(!grounded) { vel.y += gravity; }
			rb.MovePosition(rb.position + vel * Time.deltaTime);
		}
		//the actual movement iow walking
		void HandleWalking () {
			AxisX = Input.GetAxisRaw("Horizontal");
			AxisY = Input.GetAxisRaw("Vertical");
		
			if ((AxisX < 1 && AxisX > 0) || (AxisX > -1 && AxisX < 0)) { AxisX = 0f; }
			if ((AxisY < 1 && AxisY > 0) || (AxisY > -1 && AxisY < 0)) { AxisY = 0f; }
			//Walking!
			if (AxisX > 0) {vel.x += walkSpeed;}
			if (AxisX < 0) {vel.x -= walkSpeed;} 	
		//Jumping! is what I need help with ;^; 
		}
	
	
		//Okay, I really need help with this jumping situation tho
		void HandleJumping () {
	
			if(AxisY > 0 && !controller.isGrounded && Input.GetButtonDown("Jump")) {
				vel.y += jumpForce;
				jump = true;
				else jumpLeft - 1;
				}
			
			if (jumpLeft = 0){
				jump = false;
				}
		}
	
	
	
		//the groundtest
		public void GroundTest (){
			hit = Physics2D.Raycast(transform.position, -Vector2.up, height / 2);
		
			grounded = false; 
			groundedOn = null;
		
			if (hit && vel.y <= 0){
				grounded = true;
				groundedOn = hit.transform.gameObject;
			}
		
			hit = Physics2D.Raycast(new Vector2(transform.position.x + width / 2, transform.position.y), -Vector2.up, height / 2);
		
			if (hit && vel.y <= 0){
				grounded = true;
				groundedOn = hit.transform.gameObject;
			}
		
			hit = Physics2D.Raycast(new Vector2(transform.position.x - width / 2, transform.position.y), -Vector2.up, height / 2);
		
			if (hit && vel.y <= 0){
				grounded = true;
				groundedOn = hit.transform.gameObject;
			}
		
		}
		
	}

}

These errors should typically be identified by the compiler usually within the IDE. Anyway, this is what is indicated, as purely compile time errors, line numbers are based on above included code:

  1. Line 16, semi-colon missing: public float jumpLeft = 1;

  2. Line 22 dJumpLimit is not declared

  3. Line 28, missing close parenthesis }. This is probably what you are referring to in the question. Related there is an extra parenthesis at the end of the code sample which should be removed.

  4. Line 51, controller is undeclared

  5. Line 54, there is a spurious dangling else with an invalid statement syntax

  6. Line 57, the if condition requires ==, not the single = which means assignment

These are basic syntactical errors and so should have been caught and displayed by the compiler. Check the compiler error list if the code itself is not error highlighted.
Note, once corrected, any follow-up logic errors encountered do, by all means, open a separate non-parsing question. Hope this helps.