示例#1
0
void
discard(void)
{
    expr_t	*expr = pop_expr();

    if (expr)
        del_expr(expr);
}
示例#2
0
/*
 * 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);
}
示例#3
0
文件: parse.c 项目: bitfixer/bitfixer
/*-----------------------------------------------------------------------------
*   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);
}