Parse zero or more assembler clobbers, separated by commas.
(parse-asm-clobbers parstate) → (mv erp clobbers span new-parstate)
Function:
(defun parse-asm-clobbers-loop (parstate) (declare (xargs :stobjs (parstate))) (declare (xargs :guard (parstatep parstate))) (let ((__function__ 'parse-asm-clobbers-loop)) (declare (ignorable __function__)) (b* (((reterr) nil (irr-span) parstate) ((erp clobber span parstate) (parse-asm-clobber parstate)) ((erp token & parstate) (read-token parstate)) ((unless (token-punctuatorp token ",")) (b* ((parstate (if token (unread-token parstate) parstate))) (retok (list clobber) span parstate))) ((erp clobbers last-span parstate) (parse-asm-clobbers-loop parstate))) (retok (cons clobber clobbers) (span-join span last-span) parstate))))
Theorem:
(defthm asm-clobber-listp-of-parse-asm-clobbers-loop.clobbers (b* (((mv acl2::?erp ?clobbers ?span ?new-parstate) (parse-asm-clobbers-loop parstate))) (asm-clobber-listp clobbers)) :rule-classes :rewrite)
Theorem:
(defthm spanp-of-parse-asm-clobbers-loop.span (b* (((mv acl2::?erp ?clobbers ?span ?new-parstate) (parse-asm-clobbers-loop parstate))) (spanp span)) :rule-classes :rewrite)
Theorem:
(defthm parstatep-of-parse-asm-clobbers-loop.new-parstate (implies (parstatep parstate) (b* (((mv acl2::?erp ?clobbers ?span ?new-parstate) (parse-asm-clobbers-loop parstate))) (parstatep new-parstate))) :rule-classes :rewrite)
Theorem:
(defthm parsize-of-parse-asm-clobbers-loop (b* (((mv acl2::?erp ?clobbers ?span ?new-parstate) (parse-asm-clobbers-loop parstate))) (<= (parsize new-parstate) (parsize parstate))) :rule-classes :linear)
Function:
(defun parse-asm-clobbers (parstate) (declare (xargs :stobjs (parstate))) (declare (xargs :guard (parstatep parstate))) (let ((__function__ 'parse-asm-clobbers)) (declare (ignorable __function__)) (b* (((reterr) nil (irr-span) parstate) ((erp token & parstate) (read-token parstate)) ((unless (and token (token-case token :string))) (b* ((parstate (if token (unread-token parstate) parstate))) (retok nil (irr-span) parstate))) (parstate (unread-token parstate))) (parse-asm-clobbers-loop parstate))))
Theorem:
(defthm asm-clobber-listp-of-parse-asm-clobbers.clobbers (b* (((mv acl2::?erp ?clobbers ?span ?new-parstate) (parse-asm-clobbers parstate))) (asm-clobber-listp clobbers)) :rule-classes :rewrite)
Theorem:
(defthm spanp-of-parse-asm-clobbers.span (b* (((mv acl2::?erp ?clobbers ?span ?new-parstate) (parse-asm-clobbers parstate))) (spanp span)) :rule-classes :rewrite)
Theorem:
(defthm parstatep-of-parse-asm-clobbers.new-parstate (implies (parstatep parstate) (b* (((mv acl2::?erp ?clobbers ?span ?new-parstate) (parse-asm-clobbers parstate))) (parstatep new-parstate))) :rule-classes :rewrite)
Theorem:
(defthm parsize-of-parse-*-asm-clobbers-uncond (b* (((mv acl2::?erp ?clobbers ?span ?new-parstate) (parse-asm-clobbers parstate))) (<= (parsize new-parstate) (parsize parstate))) :rule-classes :linear)