Exemple #1
0
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");
	}
}