Verilog-2005 only. Match
(vl-parse-task-item-declaration-noatts atts &key (tokstream 'tokstream) (config 'config)) → (mv errmsg? value new-tokstream)
Note: again, function_item_declaration is the subset of task_item_declaration where the only ports are inputs. We therefore just writer a parser for task_item_declaration, then separately check (when we construct the function declaration) that all ports are inputs.
task_item_declaration ::= block_item_declaration | { attribute_instance } tf_input_declaration ';' | { attribute_instance } tf_output_declaration ';' | { attribute_instance } tf_inout_declaration ';' function_item_declaration ::= block_item_declaration | { attribute_instance } tf_input_declaration ';'
Function:
(defun vl-parse-task-item-declaration-noatts-fn (atts tokstream config) (declare (xargs :stobjs (tokstream))) (declare (xargs :guard (vl-loadconfig-p config))) (declare (ignorable config)) (declare (xargs :guard (vl-atts-p atts))) (let ((__function__ 'vl-parse-task-item-declaration-noatts)) (declare (ignorable __function__)) (seq tokstream (when (vl-is-some-token? '(:vl-kwd-input :vl-kwd-output :vl-kwd-inout)) (decls := (vl-parse-taskport-declaration atts)) (:= (vl-match-token :vl-semi)) (return decls)) (decls := (vl-parse-block-item-declaration-noatts atts)) (return decls))))
Theorem:
(defthm vl-parse-task-item-declaration-noatts-fails-gracefully (implies (mv-nth 0 (vl-parse-task-item-declaration-noatts atts)) (not (mv-nth 1 (vl-parse-task-item-declaration-noatts atts)))))
Theorem:
(defthm vl-warning-p-of-vl-parse-task-item-declaration-noatts (iff (vl-warning-p (mv-nth 0 (vl-parse-task-item-declaration-noatts atts))) (mv-nth 0 (vl-parse-task-item-declaration-noatts atts))))
Theorem:
(defthm vl-parse-task-item-declaration-noatts-result (implies (and (force (vl-atts-p atts))) (vl-portdecl-or-blockitem-list-p (mv-nth 1 (vl-parse-task-item-declaration-noatts atts)))))
Theorem:
(defthm vl-parse-task-item-declaration-noatts-true-listp (true-listp (mv-nth 1 (vl-parse-task-item-declaration-noatts atts))) :rule-classes :type-prescription)
Theorem:
(defthm vl-parse-task-item-declaration-noatts-count-strong (and (<= (vl-tokstream-measure :tokstream (mv-nth 2 (vl-parse-task-item-declaration-noatts atts))) (vl-tokstream-measure)) (implies (not (mv-nth 0 (vl-parse-task-item-declaration-noatts atts))) (< (vl-tokstream-measure :tokstream (mv-nth 2 (vl-parse-task-item-declaration-noatts atts))) (vl-tokstream-measure)))) :rule-classes ((:rewrite) (:linear)))