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"); } }