Basic constructor macro for expr-cast/add-ambig structures.
(make-expr-cast/add-ambig [:type/arg1 <type/arg1>] [:inc/dec <inc/dec>] [:arg/arg2 <arg/arg2>])
This is the usual way to construct expr-cast/add-ambig structures. It simply conses together a structure with the specified fields.
This macro generates a new expr-cast/add-ambig structure from scratch. See also change-expr-cast/add-ambig, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-expr-cast/add-ambig (&rest args) (std::make-aggregate 'expr-cast/add-ambig args '((:type/arg1) (:inc/dec) (:arg/arg2)) 'make-expr-cast/add-ambig nil))
Function:
(defun expr-cast/add-ambig (type/arg1 inc/dec arg/arg2) (declare (xargs :guard (and (amb-expr/tyname-p type/arg1) (inc/dec-op-listp inc/dec) (exprp arg/arg2)))) (declare (xargs :guard t)) (let ((__function__ 'expr-cast/add-ambig)) (declare (ignorable __function__)) (b* ((type/arg1 (mbe :logic (amb-expr/tyname-fix type/arg1) :exec type/arg1)) (inc/dec (mbe :logic (inc/dec-op-list-fix inc/dec) :exec inc/dec)) (arg/arg2 (mbe :logic (expr-fix arg/arg2) :exec arg/arg2))) (cons :cast/add-ambig (list type/arg1 inc/dec arg/arg2)))))