void Parser::Primary(ExprRec& result) { ExprRec index; switch (NextToken()) { case FALSE_SYM: case TRUE_SYM: Literal(); result.var_type = BOOL; code.ProcessLit(result); /*** CODE ***/ break; case INT_LIT: Literal(); result.var_type = INT; code.ProcessLit(result); /*** CODE ***/ break; case FLOAT_LIT: Literal(); result.var_type = FLOAT; code.ProcessLit(result); /*** CODE ***/ break; case CHEESE_LIT: Literal(); result.var_type = CHEESE; code.ProcessLit(result); /*** CODE ***/ break; case ID: Variable(result, index); /* var_type is retrieved from symbol table */ code.ProcessVar(result, index); /*** CODE ***/ break; case LBANANA: Match(LBANANA); Expression(result); Match(RBANANA); break; default: SyntaxError(NextToken(), "Unknown Primary Symbol"); } }