void discard(void) { expr_t *expr = pop_expr(); if (expr) del_expr(expr); }
/* * Implementation */ token_t lookahead(void) { token_t token; data_t value; if (ahead == NULL) { token = parser.token; value = parser.value; (void)primary(); parser.token = token; parser.value = value; ahead = pop_expr(); } return (ahead->token); }
/*----------------------------------------------------------------------------- * Pop and compute expression, issue error on failure *----------------------------------------------------------------------------*/ static void pop_eval_expr(ParseCtx *ctx, int *pvalue, Bool *perror) { Expr *expr; *pvalue = 0; *perror = FALSE; expr = pop_expr(ctx); if (expr == NULL) { *perror = TRUE; /* error output by push_expr() */ return; } /* eval and discard expression */ *pvalue = Expr_eval(expr, TRUE); *perror = (expr->result.not_evaluable); OBJ_DELETE(expr); }