void symbol(Scanner & s)
{
	if (s.Peek().token_type == TOKENS::LABEL)
	{
		s.Match(TOKENS::LABEL);
	}
	else if (s.Peek().token_type == TOKENS::NUMBER)
	{
		s.Match(TOKENS::NUMBER);
	}
	else
	{
		oops("symbol", s, "LABEL or NUMBER");
	}
}
void x_4(Scanner & s)
{
	if (s.Peek().token_type == TOKENS::RIGHTPAREN)
	{
		s.Match(TOKENS::RIGHTPAREN);
		Token temp_t;
		s.SetValidIndex();
	}
	else if ((s.Peek().token_type == TOKENS::LABEL) || (s.Peek().token_type == TOKENS::NUMBER))
	{
		args(s);
		s.Match(TOKENS::RIGHTPAREN);
		s.SetValidIndex();
	}
	else
	{
		oops("x_4", s, "RIGHTPAREN, LABEL, or NUMBER");
	}
}
void name(Scanner & s)
{
	if (s.Peek().token_type == TOKENS::LABEL)
	{
		s.Match(TOKENS::LABEL);
	}
	else
	{
		oops("name", s, "LABEL");
	}
}
void x_1(Scanner & s)
{
	if (s.Peek().token_type == TOKENS::SEPARATOR)
	{
		s.Match(TOKENS::SEPARATOR);
		body(s);
	}
	else
	{
		oops("x_1", s, "SEPARATOR");
	}
}
void x_3(Scanner & s)
{
	if (s.Peek().token_type == TOKENS::LEFTPAREN)
	{
		s.Match(TOKENS::LEFTPAREN);
		x_4(s);
	}
	else
	{
		oops("x_3", s, "LEFTPAREN");
	}

}
void x_5(Scanner & s){
	if (s.Peek().token_type == TOKENS::COMMA)
	{
		s.Match(TOKENS::COMMA);
		args(s);
	}
	else if ((s.Peek().token_type == TOKENS::RIGHTPAREN)){
		return;
	}
	else{
		oops("x_5", s, "COMMA or RIGHTPAREN");

	}

}
void x_2(Scanner & s)
{
	if (s.Peek().token_type == TOKENS::AND)
	{
		s.Match((TOKENS::AND));
		body(s);
	}
	else if (s.End() )
	{
		return;
	}
	else
	{
		oops("x_2", s, "AND");
	}
}
void x_6(Scanner & s){

	if (s.Peek().token_type == TOKENS::AND)
	{
		s.Match((TOKENS::AND));
		head(s);
	}
	else if (s.End() || s.Peek().token_type == TOKENS::SEPARATOR)
	{
		return;
	}
	else
	{
		oops("x_6", s, "AND or SEPARATOR");
	}
}