32
32
(include-book "base")
33
33
(include-book "../eventctrl")
36
(b* ((tokens (make-test-tokens "@(foo or bar or baz)"))
37
(warnings 'blah-warnings)
38
(config *vl-default-loadconfig*)
39
((mv err val tokens warnings)
40
(vl-parse-delay-or-event-control)))
43
(equal warnings 'blah-warnings)
44
(equal val (make-vl-eventcontrol
49
:expr (make-vl-atom :guts (vl-id "foo")))
52
:expr (make-vl-atom :guts (vl-id "bar")))
55
:expr (make-vl-atom :guts (vl-id "baz")))))))))
58
(b* ((tokens (make-test-tokens "@(posedge foo)"))
59
(warnings 'blah-warnings)
60
(config *vl-default-loadconfig*)
61
((mv err val tokens warnings)
62
(vl-parse-delay-or-event-control)))
65
(equal warnings 'blah-warnings)
66
(equal val (make-vl-eventcontrol
68
:atoms (list (make-vl-evatom
70
:expr (make-vl-atom :guts (vl-id "foo")))))))))
73
(b* ((tokens (make-test-tokens "@(negedge foo)"))
74
(warnings 'blah-warnings)
75
(config *vl-default-loadconfig*)
76
((mv err val tokens warnings)
77
(vl-parse-delay-or-event-control)))
80
(equal warnings 'blah-warnings)
81
(equal val (make-vl-eventcontrol
83
:atoms (list (make-vl-evatom
85
:expr (make-vl-atom :guts (vl-id "foo")))))))))
87
(assert! (b* ((tokens (make-test-tokens "@*"))
88
(warnings 'blah-warnings)
89
(config *vl-default-loadconfig*)
90
((mv err val tokens warnings)
91
(vl-parse-delay-or-event-control)))
94
(equal warnings 'blah-warnings)
95
(equal val (make-vl-eventcontrol
99
(assert! (b* ((tokens (make-test-tokens "@(*)"))
100
(warnings 'blah-warnings)
101
(config *vl-default-loadconfig*)
102
((mv err val tokens warnings)
103
(vl-parse-delay-or-event-control)))
106
(equal warnings 'blah-warnings)
107
(equal val (make-vl-eventcontrol
111
(assert! (b* (((mv err val tokens warnings)
112
(vl-parse-delay-or-event-control
113
:tokens (make-test-tokens "@( *)")
114
:warnings 'blah-warnings
115
:config *vl-default-loadconfig*)))
118
(equal warnings 'blah-warnings)
119
(equal val (make-vl-eventcontrol
123
(assert! (b* (((mv err val tokens warnings)
124
(vl-parse-delay-or-event-control
125
:tokens (make-test-tokens "@(* )")
126
:warnings 'blah-warnings
127
:config *vl-default-loadconfig*)))
130
(equal warnings 'blah-warnings)
131
(equal val (make-vl-eventcontrol
135
(assert! (b* (((mv err val tokens warnings)
136
(vl-parse-delay-or-event-control
137
:tokens (make-test-tokens "@( * )")
138
:warnings 'blah-warnings
139
:config *vl-default-loadconfig*)))
142
(equal warnings 'blah-warnings)
143
(equal val (make-vl-eventcontrol
35
(defparser-top vl-parse-delay-or-event-control)
37
(defmacro test-vl-parse-delay-or-eventcontrol (&key input expect (successp 't))
39
(b* ((tokens (make-test-tokens ,input))
40
(pstate (make-vl-parsestate :warnings 'blah-warnings))
41
(config *vl-default-loadconfig*)
42
((mv err val tokens (vl-parsestate pstate))
43
(vl-parse-delay-or-event-control-top))
46
(debuggable-and ,successp
48
(equal pstate.warnings 'blah-warnings)
49
(equal val ,expect)))))
51
(test-vl-parse-delay-or-eventcontrol :input "@(foo or bar or baz)"
58
:expr (make-vl-atom :guts (vl-id "foo")))
61
:expr (make-vl-atom :guts (vl-id "bar")))
64
:expr (make-vl-atom :guts (vl-id "baz"))))))
66
(test-vl-parse-delay-or-eventcontrol :input "@(posedge foo)"
70
:atoms (list (make-vl-evatom
72
:expr (make-vl-atom :guts (vl-id "foo"))))))
74
(test-vl-parse-delay-or-eventcontrol :input "@(negedge foo)"
78
:atoms (list (make-vl-evatom
80
:expr (make-vl-atom :guts (vl-id "foo"))))))
82
(test-vl-parse-delay-or-eventcontrol :input "@*"
83
:expect (make-vl-eventcontrol :starp t :atoms nil))
85
(test-vl-parse-delay-or-eventcontrol :input "@(*)"
86
:expect (make-vl-eventcontrol :starp t :atoms nil))
88
(test-vl-parse-delay-or-eventcontrol :input "@( *)"
89
:expect (make-vl-eventcontrol :starp t :atoms nil))
91
(test-vl-parse-delay-or-eventcontrol :input "@(* )"
92
:expect (make-vl-eventcontrol :starp t :atoms nil))
94
(test-vl-parse-delay-or-eventcontrol :input "@( * )"
95
:expect (make-vl-eventcontrol :starp t :atoms nil))
97
(test-vl-parse-delay-or-eventcontrol :input "@(foo or bar or baz or *)"
100
(test-vl-parse-delay-or-eventcontrol :input "@(foo or bar or)"
103
(test-vl-parse-delay-or-eventcontrol :input "@(* or foo)"
106
(test-vl-parse-delay-or-eventcontrol :input "@(foo or posedge bar)"
108
(make-vl-eventcontrol
110
:atoms (list (make-vl-evatom
112
:expr (make-vl-atom :guts (vl-id "foo")))
115
:expr (make-vl-atom :guts (vl-id "bar"))))))
117
(test-vl-parse-delay-or-eventcontrol :input "@(* or posedge bar)"
120
(test-vl-parse-delay-or-eventcontrol :input "@(posedge bar or *)"
123
(test-vl-parse-delay-or-eventcontrol :input "@(posedge bar or)"