Parse an assembler clobber.
(parse-asm-clobber parstate) → (mv erp clobber span new-parstate)
This is a sequence of one or more juxtaposed string literals.
Function:
(defun parse-asm-clobber (parstate) (declare (xargs :stobjs (parstate))) (declare (xargs :guard (parstatep parstate))) (let ((__function__ 'parse-asm-clobber)) (declare (ignorable __function__)) (b* (((reterr) (irr-asm-clobber) (irr-span) parstate) ((erp string span parstate) (read-stringlit parstate)) ((erp strings last-span parstate) (parse-*-stringlit parstate))) (retok (asm-clobber (cons string strings)) (if (consp strings) (span-join span last-span) span) parstate))))
Theorem:
(defthm asm-clobberp-of-parse-asm-clobber.clobber (b* (((mv acl2::?erp ?clobber ?span ?new-parstate) (parse-asm-clobber parstate))) (asm-clobberp clobber)) :rule-classes :rewrite)
Theorem:
(defthm spanp-of-parse-asm-clobber.span (b* (((mv acl2::?erp ?clobber ?span ?new-parstate) (parse-asm-clobber parstate))) (spanp span)) :rule-classes :rewrite)
Theorem:
(defthm parstatep-of-parse-asm-clobber.new-parstate (implies (parstatep parstate) (b* (((mv acl2::?erp ?clobber ?span ?new-parstate) (parse-asm-clobber parstate))) (parstatep new-parstate))) :rule-classes :rewrite)
Theorem:
(defthm parsize-of-parse-asm-clobber-uncond (b* (((mv acl2::?erp ?clobber ?span ?new-parstate) (parse-asm-clobber parstate))) (<= (parsize new-parstate) (parsize parstate))) :rule-classes :linear)
Theorem:
(defthm parsize-of-parse-asm-clobber-cond (b* (((mv acl2::?erp ?clobber ?span ?new-parstate) (parse-asm-clobber parstate))) (implies (not erp) (<= (parsize new-parstate) (1- (parsize parstate))))) :rule-classes :linear)