Basic constructor macro for dec-integer-literal structures.
(make-dec-integer-literal [:digits/uscores <digits/uscores>] [:suffix? <suffix?>])
This is the usual way to construct dec-integer-literal structures. It simply conses together a structure with the specified fields.
This macro generates a new dec-integer-literal structure from scratch. See also change-dec-integer-literal, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-dec-integer-literal (&rest args) (std::make-aggregate 'dec-integer-literal args '((:digits/uscores) (:suffix?)) 'make-dec-integer-literal nil))
Function:
(defun dec-integer-literal (digits/uscores suffix?) (declare (xargs :guard (and (decdig/uscore-listp digits/uscores) (optional-integer-type-suffix-p suffix?)))) (declare (xargs :guard (decdig/uscore-list-wfp digits/uscores))) (let ((__function__ 'dec-integer-literal)) (declare (ignorable __function__)) (b* ((digits/uscores (mbe :logic (decdig/uscore-list-fix digits/uscores) :exec digits/uscores)) (suffix? (mbe :logic (optional-integer-type-suffix-fix suffix?) :exec suffix?))) (let ((digits/uscores (mbe :logic (if (decdig/uscore-list-wfp digits/uscores) digits/uscores (list (decdig/uscore-digit (char-code #\0)))) :exec digits/uscores))) (cons :dec-integer-lit (list digits/uscores suffix?))))))