Map a token that is a storage class specifier to the correspoding storage class specifier.
(token-to-storage-class-specifier token) → stor-spec
Function:
(defun token-to-storage-class-specifier (token) (declare (xargs :guard (tokenp token))) (declare (xargs :guard (token-storage-class-specifier-p token))) (let ((__function__ 'token-to-storage-class-specifier)) (declare (ignorable __function__)) (cond ((token-keywordp token "typedef") (stor-spec-typedef)) ((token-keywordp token "extern") (stor-spec-extern)) ((token-keywordp token "static") (stor-spec-static)) ((token-keywordp token "_Thread_local") (stor-spec-threadloc)) ((token-keywordp token "auto") (stor-spec-auto)) ((token-keywordp token "register") (stor-spec-register)) (t (prog2$ (impossible) (irr-stor-spec))))))
Theorem:
(defthm stor-specp-of-token-to-storage-class-specifier (b* ((stor-spec (token-to-storage-class-specifier token))) (stor-specp stor-spec)) :rule-classes :rewrite)