1use crate::veryl_grammar_trait::*;
2use crate::veryl_token::VerylToken;
3
4macro_rules! before {
5 ($x:ident, $y:ident, $z:ident) => {
6 if let Some(mut handlers) = $x.get_handlers() {
7 for handler in handlers.iter_mut() {
8 handler.set_point(HandlerPoint::Before);
9 let _ = handler.$y($z);
10 }
11 }
12 };
13}
14
15macro_rules! after {
16 ($x:ident, $y:ident, $z:ident) => {
17 if let Some(mut handlers) = $x.get_handlers() {
18 for handler in handlers.iter_mut() {
19 handler.set_point(HandlerPoint::After);
20 let _ = handler.$y($z);
21 }
22 }
23 };
24}
25
26pub trait VerylWalker {
27 fn veryl_token(&mut self, _arg: &VerylToken) {}
29
30 fn start(&mut self, arg: &Start) {
32 before!(self, start, arg);
33 self.veryl_token(&arg.start_token);
34 after!(self, start, arg);
35 }
36
37 fn string_literal(&mut self, arg: &StringLiteral) {
39 before!(self, string_literal, arg);
40 self.veryl_token(&arg.string_literal_token);
41 after!(self, string_literal, arg);
42 }
43
44 fn exponent(&mut self, arg: &Exponent) {
46 before!(self, exponent, arg);
47 self.veryl_token(&arg.exponent_token);
48 after!(self, exponent, arg);
49 }
50
51 fn fixed_point(&mut self, arg: &FixedPoint) {
53 before!(self, fixed_point, arg);
54 self.veryl_token(&arg.fixed_point_token);
55 after!(self, fixed_point, arg);
56 }
57
58 fn based(&mut self, arg: &Based) {
60 before!(self, based, arg);
61 self.veryl_token(&arg.based_token);
62 after!(self, based, arg);
63 }
64
65 fn base_less(&mut self, arg: &BaseLess) {
67 before!(self, base_less, arg);
68 self.veryl_token(&arg.base_less_token);
69 after!(self, base_less, arg);
70 }
71
72 fn all_bit(&mut self, arg: &AllBit) {
74 before!(self, all_bit, arg);
75 self.veryl_token(&arg.all_bit_token);
76 after!(self, all_bit, arg);
77 }
78
79 fn assignment_operator(&mut self, arg: &AssignmentOperator) {
81 before!(self, assignment_operator, arg);
82 self.veryl_token(&arg.assignment_operator_token);
83 after!(self, assignment_operator, arg);
84 }
85
86 fn diamond_operator(&mut self, arg: &DiamondOperator) {
88 before!(self, diamond_operator, arg);
89 self.veryl_token(&arg.diamond_operator_token);
90 after!(self, diamond_operator, arg);
91 }
92
93 fn operator01(&mut self, arg: &Operator01) {
95 before!(self, operator01, arg);
96 self.veryl_token(&arg.operator01_token);
97 after!(self, operator01, arg);
98 }
99
100 fn operator02(&mut self, arg: &Operator02) {
102 before!(self, operator02, arg);
103 self.veryl_token(&arg.operator02_token);
104 after!(self, operator02, arg);
105 }
106
107 fn operator03(&mut self, arg: &Operator03) {
109 before!(self, operator03, arg);
110 self.veryl_token(&arg.operator03_token);
111 after!(self, operator03, arg);
112 }
113
114 fn operator04(&mut self, arg: &Operator04) {
116 before!(self, operator04, arg);
117 self.veryl_token(&arg.operator04_token);
118 after!(self, operator04, arg);
119 }
120
121 fn operator05(&mut self, arg: &Operator05) {
123 before!(self, operator05, arg);
124 self.veryl_token(&arg.operator05_token);
125 after!(self, operator05, arg);
126 }
127
128 fn operator06(&mut self, arg: &Operator06) {
130 before!(self, operator06, arg);
131 self.veryl_token(&arg.operator06_token);
132 after!(self, operator06, arg);
133 }
134
135 fn operator07(&mut self, arg: &Operator07) {
137 before!(self, operator07, arg);
138 self.veryl_token(&arg.operator07_token);
139 after!(self, operator07, arg);
140 }
141
142 fn operator08(&mut self, arg: &Operator08) {
144 before!(self, operator08, arg);
145 self.veryl_token(&arg.operator08_token);
146 after!(self, operator08, arg);
147 }
148
149 fn unary_operator(&mut self, arg: &UnaryOperator) {
151 before!(self, unary_operator, arg);
152 self.veryl_token(&arg.unary_operator_token);
153 after!(self, unary_operator, arg);
154 }
155
156 fn colon(&mut self, arg: &Colon) {
158 before!(self, colon, arg);
159 self.veryl_token(&arg.colon_token);
160 after!(self, colon, arg);
161 }
162
163 fn colon_colon(&mut self, arg: &ColonColon) {
165 before!(self, colon_colon, arg);
166 self.veryl_token(&arg.colon_colon_token);
167 after!(self, colon_colon, arg);
168 }
169
170 fn colon_colon_l_angle(&mut self, arg: &ColonColonLAngle) {
172 before!(self, colon_colon_l_angle, arg);
173 self.veryl_token(&arg.colon_colon_l_angle_token);
174 after!(self, colon_colon_l_angle, arg);
175 }
176
177 fn comma(&mut self, arg: &Comma) {
179 before!(self, comma, arg);
180 self.veryl_token(&arg.comma_token);
181 after!(self, comma, arg);
182 }
183
184 fn dot_dot(&mut self, arg: &DotDot) {
186 before!(self, dot_dot, arg);
187 self.veryl_token(&arg.dot_dot_token);
188 after!(self, dot_dot, arg);
189 }
190
191 fn dot_dot_equ(&mut self, arg: &DotDotEqu) {
193 before!(self, dot_dot_equ, arg);
194 self.veryl_token(&arg.dot_dot_equ_token);
195 after!(self, dot_dot_equ, arg);
196 }
197
198 fn dot(&mut self, arg: &Dot) {
200 before!(self, dot, arg);
201 self.veryl_token(&arg.dot_token);
202 after!(self, dot, arg);
203 }
204
205 fn equ(&mut self, arg: &Equ) {
207 before!(self, equ, arg);
208 self.veryl_token(&arg.equ_token);
209 after!(self, equ, arg);
210 }
211
212 fn hash_l_bracket(&mut self, arg: &HashLBracket) {
214 before!(self, hash_l_bracket, arg);
215 self.veryl_token(&arg.hash_l_bracket_token);
216 after!(self, hash_l_bracket, arg);
217 }
218
219 fn hash(&mut self, arg: &Hash) {
221 before!(self, hash, arg);
222 self.veryl_token(&arg.hash_token);
223 after!(self, hash, arg);
224 }
225
226 fn question(&mut self, arg: &Question) {
228 before!(self, question, arg);
229 self.veryl_token(&arg.question_token);
230 after!(self, question, arg);
231 }
232
233 fn quote_l_brace(&mut self, arg: &QuoteLBrace) {
235 before!(self, quote_l_brace, arg);
236 self.veryl_token(&arg.quote_l_brace_token);
237 after!(self, quote_l_brace, arg);
238 }
239
240 fn quote(&mut self, arg: &Quote) {
242 before!(self, quote, arg);
243 self.veryl_token(&arg.quote_token);
244 after!(self, quote, arg);
245 }
246
247 fn l_angle(&mut self, arg: &LAngle) {
249 before!(self, l_angle, arg);
250 self.veryl_token(&arg.l_angle_token);
251 after!(self, l_angle, arg);
252 }
253
254 fn embed_l_brace(&mut self, arg: &EmbedLBrace) {
256 before!(self, embed_l_brace, arg);
257 self.veryl_token(&arg.embed_l_brace_token);
258 after!(self, embed_l_brace, arg);
259 }
260
261 fn escaped_l_brace(&mut self, arg: &EscapedLBrace) {
263 before!(self, escaped_l_brace, arg);
264 self.veryl_token(&arg.escaped_l_brace_token);
265 after!(self, escaped_l_brace, arg);
266 }
267
268 fn triple_l_brace(&mut self, arg: &TripleLBrace) {
270 before!(self, triple_l_brace, arg);
271 self.veryl_token(&arg.triple_l_brace_token);
272 after!(self, triple_l_brace, arg);
273 }
274
275 fn l_brace(&mut self, arg: &LBrace) {
277 before!(self, l_brace, arg);
278 self.veryl_token(&arg.l_brace_token);
279 after!(self, l_brace, arg);
280 }
281
282 fn l_bracket(&mut self, arg: &LBracket) {
284 before!(self, l_bracket, arg);
285 self.veryl_token(&arg.l_bracket_token);
286 after!(self, l_bracket, arg);
287 }
288
289 fn l_paren(&mut self, arg: &LParen) {
291 before!(self, l_paren, arg);
292 self.veryl_token(&arg.l_paren_token);
293 after!(self, l_paren, arg);
294 }
295
296 fn l_t_minus(&mut self, arg: <Minus) {
298 before!(self, l_t_minus, arg);
299 self.veryl_token(&arg.l_t_minus_token);
300 after!(self, l_t_minus, arg);
301 }
302
303 fn minus_colon(&mut self, arg: &MinusColon) {
305 before!(self, minus_colon, arg);
306 self.veryl_token(&arg.minus_colon_token);
307 after!(self, minus_colon, arg);
308 }
309
310 fn minus_g_t(&mut self, arg: &MinusGT) {
312 before!(self, minus_g_t, arg);
313 self.veryl_token(&arg.minus_g_t_token);
314 after!(self, minus_g_t, arg);
315 }
316
317 fn plus_colon(&mut self, arg: &PlusColon) {
319 before!(self, plus_colon, arg);
320 self.veryl_token(&arg.plus_colon_token);
321 after!(self, plus_colon, arg);
322 }
323
324 fn r_angle(&mut self, arg: &RAngle) {
326 before!(self, r_angle, arg);
327 self.veryl_token(&arg.r_angle_token);
328 after!(self, r_angle, arg);
329 }
330
331 fn embed_r_brace(&mut self, arg: &EmbedRBrace) {
333 before!(self, embed_r_brace, arg);
334 self.veryl_token(&arg.embed_r_brace_token);
335 after!(self, embed_r_brace, arg);
336 }
337
338 fn escaped_r_brace(&mut self, arg: &EscapedRBrace) {
340 before!(self, escaped_r_brace, arg);
341 self.veryl_token(&arg.escaped_r_brace_token);
342 after!(self, escaped_r_brace, arg);
343 }
344
345 fn triple_r_brace(&mut self, arg: &TripleRBrace) {
347 before!(self, triple_r_brace, arg);
348 self.veryl_token(&arg.triple_r_brace_token);
349 after!(self, triple_r_brace, arg);
350 }
351
352 fn r_brace(&mut self, arg: &RBrace) {
354 before!(self, r_brace, arg);
355 self.veryl_token(&arg.r_brace_token);
356 after!(self, r_brace, arg);
357 }
358
359 fn r_bracket(&mut self, arg: &RBracket) {
361 before!(self, r_bracket, arg);
362 self.veryl_token(&arg.r_bracket_token);
363 after!(self, r_bracket, arg);
364 }
365
366 fn r_paren(&mut self, arg: &RParen) {
368 before!(self, r_paren, arg);
369 self.veryl_token(&arg.r_paren_token);
370 after!(self, r_paren, arg);
371 }
372
373 fn semicolon(&mut self, arg: &Semicolon) {
375 before!(self, semicolon, arg);
376 self.veryl_token(&arg.semicolon_token);
377 after!(self, semicolon, arg);
378 }
379
380 fn star(&mut self, arg: &Star) {
382 before!(self, star, arg);
383 self.veryl_token(&arg.star_token);
384 after!(self, star, arg);
385 }
386
387 fn alias(&mut self, arg: &Alias) {
389 before!(self, alias, arg);
390 self.veryl_token(&arg.alias_token);
391 after!(self, alias, arg);
392 }
393
394 fn always_comb(&mut self, arg: &AlwaysComb) {
396 before!(self, always_comb, arg);
397 self.veryl_token(&arg.always_comb_token);
398 after!(self, always_comb, arg);
399 }
400
401 fn always_ff(&mut self, arg: &AlwaysFf) {
403 before!(self, always_ff, arg);
404 self.veryl_token(&arg.always_ff_token);
405 after!(self, always_ff, arg);
406 }
407
408 fn r#as(&mut self, arg: &As) {
410 before!(self, r#as, arg);
411 self.veryl_token(&arg.as_token);
412 after!(self, r#as, arg);
413 }
414
415 fn assign(&mut self, arg: &Assign) {
417 before!(self, assign, arg);
418 self.veryl_token(&arg.assign_token);
419 after!(self, assign, arg);
420 }
421
422 fn bind(&mut self, arg: &Bind) {
424 before!(self, bind, arg);
425 self.veryl_token(&arg.bind_token);
426 after!(self, bind, arg);
427 }
428
429 fn bit(&mut self, arg: &Bit) {
431 before!(self, bit, arg);
432 self.veryl_token(&arg.bit_token);
433 after!(self, bit, arg);
434 }
435
436 fn block(&mut self, arg: &Block) {
438 before!(self, block, arg);
439 self.veryl_token(&arg.block_token);
440 after!(self, block, arg);
441 }
442
443 fn b_bool(&mut self, arg: &BBool) {
445 before!(self, b_bool, arg);
446 self.veryl_token(&arg.b_bool_token);
447 after!(self, b_bool, arg);
448 }
449
450 fn l_bool(&mut self, arg: &LBool) {
452 before!(self, l_bool, arg);
453 self.veryl_token(&arg.l_bool_token);
454 after!(self, l_bool, arg);
455 }
456
457 fn case(&mut self, arg: &Case) {
459 before!(self, case, arg);
460 self.veryl_token(&arg.case_token);
461 after!(self, case, arg);
462 }
463
464 fn clock(&mut self, arg: &Clock) {
466 before!(self, clock, arg);
467 self.veryl_token(&arg.clock_token);
468 after!(self, clock, arg);
469 }
470
471 fn clock_posedge(&mut self, arg: &ClockPosedge) {
473 before!(self, clock_posedge, arg);
474 self.veryl_token(&arg.clock_posedge_token);
475 after!(self, clock_posedge, arg);
476 }
477
478 fn clock_negedge(&mut self, arg: &ClockNegedge) {
480 before!(self, clock_negedge, arg);
481 self.veryl_token(&arg.clock_negedge_token);
482 after!(self, clock_negedge, arg);
483 }
484
485 fn connect(&mut self, arg: &Connect) {
487 before!(self, connect, arg);
488 self.veryl_token(&arg.connect_token);
489 after!(self, connect, arg);
490 }
491
492 fn r#const(&mut self, arg: &Const) {
494 before!(self, r#const, arg);
495 self.veryl_token(&arg.const_token);
496 after!(self, r#const, arg);
497 }
498
499 fn converse(&mut self, arg: &Converse) {
501 before!(self, converse, arg);
502 self.veryl_token(&arg.converse_token);
503 after!(self, converse, arg);
504 }
505
506 fn defaul(&mut self, arg: &Defaul) {
508 before!(self, defaul, arg);
509 self.veryl_token(&arg.default_token);
510 after!(self, defaul, arg);
511 }
512
513 fn r#else(&mut self, arg: &Else) {
515 before!(self, r#else, arg);
516 self.veryl_token(&arg.else_token);
517 after!(self, r#else, arg);
518 }
519
520 fn embed(&mut self, arg: &Embed) {
522 before!(self, embed, arg);
523 self.veryl_token(&arg.embed_token);
524 after!(self, embed, arg);
525 }
526
527 fn r#enum(&mut self, arg: &Enum) {
529 before!(self, r#enum, arg);
530 self.veryl_token(&arg.enum_token);
531 after!(self, r#enum, arg);
532 }
533
534 fn f32(&mut self, arg: &F32) {
536 before!(self, f32, arg);
537 self.veryl_token(&arg.f32_token);
538 after!(self, f32, arg);
539 }
540
541 fn f64(&mut self, arg: &F64) {
543 before!(self, f64, arg);
544 self.veryl_token(&arg.f64_token);
545 after!(self, f64, arg);
546 }
547
548 fn r#false(&mut self, arg: &False) {
550 before!(self, r#false, arg);
551 self.veryl_token(&arg.false_token);
552 after!(self, r#false, arg);
553 }
554
555 fn r#final(&mut self, arg: &Final) {
557 before!(self, r#final, arg);
558 self.veryl_token(&arg.final_token);
559 after!(self, r#final, arg);
560 }
561
562 fn r#for(&mut self, arg: &For) {
564 before!(self, r#for, arg);
565 self.veryl_token(&arg.for_token);
566 after!(self, r#for, arg);
567 }
568
569 fn function(&mut self, arg: &Function) {
571 before!(self, function, arg);
572 self.veryl_token(&arg.function_token);
573 after!(self, function, arg);
574 }
575
576 fn r#gen(&mut self, arg: &Gen) {
578 before!(self, r#gen, arg);
579 self.veryl_token(&arg.gen_token);
580 after!(self, r#gen, arg);
581 }
582
583 fn i8(&mut self, arg: &I8) {
585 before!(self, i8, arg);
586 self.veryl_token(&arg.i8_token);
587 after!(self, i8, arg);
588 }
589
590 fn i16(&mut self, arg: &I16) {
592 before!(self, i16, arg);
593 self.veryl_token(&arg.i16_token);
594 after!(self, i16, arg);
595 }
596
597 fn i32(&mut self, arg: &I32) {
599 before!(self, i32, arg);
600 self.veryl_token(&arg.i32_token);
601 after!(self, i32, arg);
602 }
603
604 fn i64(&mut self, arg: &I64) {
606 before!(self, i64, arg);
607 self.veryl_token(&arg.i64_token);
608 after!(self, i64, arg);
609 }
610
611 fn r#if(&mut self, arg: &If) {
613 before!(self, r#if, arg);
614 self.veryl_token(&arg.if_token);
615 after!(self, r#if, arg);
616 }
617
618 fn if_reset(&mut self, arg: &IfReset) {
620 before!(self, if_reset, arg);
621 self.veryl_token(&arg.if_reset_token);
622 after!(self, if_reset, arg);
623 }
624
625 fn import(&mut self, arg: &Import) {
627 before!(self, import, arg);
628 self.veryl_token(&arg.import_token);
629 after!(self, import, arg);
630 }
631
632 fn r#in(&mut self, arg: &In) {
634 before!(self, r#in, arg);
635 self.veryl_token(&arg.in_token);
636 after!(self, r#in, arg);
637 }
638
639 fn include(&mut self, arg: &Include) {
641 before!(self, include, arg);
642 self.veryl_token(&arg.include_token);
643 after!(self, include, arg);
644 }
645
646 fn initial(&mut self, arg: &Initial) {
648 before!(self, initial, arg);
649 self.veryl_token(&arg.initial_token);
650 after!(self, initial, arg);
651 }
652
653 fn inout(&mut self, arg: &Inout) {
655 before!(self, inout, arg);
656 self.veryl_token(&arg.inout_token);
657 after!(self, inout, arg);
658 }
659
660 fn input(&mut self, arg: &Input) {
662 before!(self, input, arg);
663 self.veryl_token(&arg.input_token);
664 after!(self, input, arg);
665 }
666
667 fn inside(&mut self, arg: &Inside) {
669 before!(self, inside, arg);
670 self.veryl_token(&arg.inside_token);
671 after!(self, inside, arg);
672 }
673
674 fn inst(&mut self, arg: &Inst) {
676 before!(self, inst, arg);
677 self.veryl_token(&arg.inst_token);
678 after!(self, inst, arg);
679 }
680
681 fn interface(&mut self, arg: &Interface) {
683 before!(self, interface, arg);
684 self.veryl_token(&arg.interface_token);
685 after!(self, interface, arg);
686 }
687
688 fn r#let(&mut self, arg: &Let) {
690 before!(self, r#let, arg);
691 self.veryl_token(&arg.let_token);
692 after!(self, r#let, arg);
693 }
694
695 fn logic(&mut self, arg: &Logic) {
697 before!(self, logic, arg);
698 self.veryl_token(&arg.logic_token);
699 after!(self, logic, arg);
700 }
701
702 fn lsb(&mut self, arg: &Lsb) {
704 before!(self, lsb, arg);
705 self.veryl_token(&arg.lsb_token);
706 after!(self, lsb, arg);
707 }
708
709 fn mixin(&mut self, arg: &Mixin) {
711 before!(self, mixin, arg);
712 self.veryl_token(&arg.mixin_token);
713 after!(self, mixin, arg);
714 }
715
716 fn modport(&mut self, arg: &Modport) {
718 before!(self, modport, arg);
719 self.veryl_token(&arg.modport_token);
720 after!(self, modport, arg);
721 }
722
723 fn module(&mut self, arg: &Module) {
725 before!(self, module, arg);
726 self.veryl_token(&arg.module_token);
727 after!(self, module, arg);
728 }
729
730 fn msb(&mut self, arg: &Msb) {
732 before!(self, msb, arg);
733 self.veryl_token(&arg.msb_token);
734 after!(self, msb, arg);
735 }
736
737 fn output(&mut self, arg: &Output) {
739 before!(self, output, arg);
740 self.veryl_token(&arg.output_token);
741 after!(self, output, arg);
742 }
743
744 fn outside(&mut self, arg: &Outside) {
746 before!(self, outside, arg);
747 self.veryl_token(&arg.outside_token);
748 after!(self, outside, arg);
749 }
750
751 fn package(&mut self, arg: &Package) {
753 before!(self, package, arg);
754 self.veryl_token(&arg.package_token);
755 after!(self, package, arg);
756 }
757
758 fn param(&mut self, arg: &Param) {
760 before!(self, param, arg);
761 self.veryl_token(&arg.param_token);
762 after!(self, param, arg);
763 }
764
765 fn proto(&mut self, arg: &Proto) {
767 before!(self, proto, arg);
768 self.veryl_token(&arg.proto_token);
769 after!(self, proto, arg);
770 }
771
772 fn r#pub(&mut self, arg: &Pub) {
774 before!(self, r#pub, arg);
775 self.veryl_token(&arg.pub_token);
776 after!(self, r#pub, arg);
777 }
778
779 fn repeat(&mut self, arg: &Repeat) {
781 before!(self, repeat, arg);
782 self.veryl_token(&arg.repeat_token);
783 after!(self, repeat, arg);
784 }
785
786 fn reset(&mut self, arg: &Reset) {
788 before!(self, reset, arg);
789 self.veryl_token(&arg.reset_token);
790 after!(self, reset, arg);
791 }
792
793 fn reset_async_high(&mut self, arg: &ResetAsyncHigh) {
795 before!(self, reset_async_high, arg);
796 self.veryl_token(&arg.reset_async_high_token);
797 after!(self, reset_async_high, arg);
798 }
799
800 fn reset_async_low(&mut self, arg: &ResetAsyncLow) {
802 before!(self, reset_async_low, arg);
803 self.veryl_token(&arg.reset_async_low_token);
804 after!(self, reset_async_low, arg);
805 }
806
807 fn reset_sync_high(&mut self, arg: &ResetSyncHigh) {
809 before!(self, reset_sync_high, arg);
810 self.veryl_token(&arg.reset_sync_high_token);
811 after!(self, reset_sync_high, arg);
812 }
813
814 fn reset_sync_low(&mut self, arg: &ResetSyncLow) {
816 before!(self, reset_sync_low, arg);
817 self.veryl_token(&arg.reset_sync_low_token);
818 after!(self, reset_sync_low, arg);
819 }
820
821 fn r#return(&mut self, arg: &Return) {
823 before!(self, r#return, arg);
824 self.veryl_token(&arg.return_token);
825 after!(self, r#return, arg);
826 }
827
828 fn rev(&mut self, arg: &Rev) {
830 before!(self, rev, arg);
831 self.veryl_token(&arg.rev_token);
832 after!(self, rev, arg);
833 }
834
835 fn r#break(&mut self, arg: &Break) {
837 before!(self, r#break, arg);
838 self.veryl_token(&arg.break_token);
839 after!(self, r#break, arg);
840 }
841
842 fn same(&mut self, arg: &Same) {
844 before!(self, same, arg);
845 self.veryl_token(&arg.same_token);
846 after!(self, same, arg);
847 }
848
849 fn signed(&mut self, arg: &Signed) {
851 before!(self, signed, arg);
852 self.veryl_token(&arg.signed_token);
853 after!(self, signed, arg);
854 }
855
856 fn step(&mut self, arg: &Step) {
858 before!(self, step, arg);
859 self.veryl_token(&arg.step_token);
860 after!(self, step, arg);
861 }
862
863 fn strin(&mut self, arg: &Strin) {
865 before!(self, strin, arg);
866 self.veryl_token(&arg.string_token);
867 after!(self, strin, arg);
868 }
869
870 fn r#struct(&mut self, arg: &Struct) {
872 before!(self, r#struct, arg);
873 self.veryl_token(&arg.struct_token);
874 after!(self, r#struct, arg);
875 }
876
877 fn switch(&mut self, arg: &Switch) {
879 before!(self, switch, arg);
880 self.veryl_token(&arg.switch_token);
881 after!(self, switch, arg);
882 }
883
884 fn union(&mut self, arg: &Union) {
886 before!(self, union, arg);
887 self.veryl_token(&arg.union_token);
888 after!(self, union, arg);
889 }
890
891 fn r#unsafe(&mut self, arg: &Unsafe) {
893 before!(self, r#unsafe, arg);
894 self.veryl_token(&arg.unsafe_token);
895 after!(self, r#unsafe, arg);
896 }
897
898 fn tri(&mut self, arg: &Tri) {
900 before!(self, tri, arg);
901 self.veryl_token(&arg.tri_token);
902 after!(self, tri, arg);
903 }
904
905 fn r#true(&mut self, arg: &True) {
907 before!(self, r#true, arg);
908 self.veryl_token(&arg.true_token);
909 after!(self, r#true, arg);
910 }
911
912 fn r#type(&mut self, arg: &Type) {
914 before!(self, r#type, arg);
915 self.veryl_token(&arg.type_token);
916 after!(self, r#type, arg);
917 }
918
919 fn p8(&mut self, arg: &P8) {
921 before!(self, p8, arg);
922 self.veryl_token(&arg.p8_token);
923 after!(self, p8, arg);
924 }
925
926 fn p16(&mut self, arg: &P16) {
928 before!(self, p16, arg);
929 self.veryl_token(&arg.p16_token);
930 after!(self, p16, arg);
931 }
932
933 fn p32(&mut self, arg: &P32) {
935 before!(self, p32, arg);
936 self.veryl_token(&arg.p32_token);
937 after!(self, p32, arg);
938 }
939
940 fn p64(&mut self, arg: &P64) {
942 before!(self, p64, arg);
943 self.veryl_token(&arg.p64_token);
944 after!(self, p64, arg);
945 }
946
947 fn u8(&mut self, arg: &U8) {
949 before!(self, u8, arg);
950 self.veryl_token(&arg.u8_token);
951 after!(self, u8, arg);
952 }
953
954 fn u16(&mut self, arg: &U16) {
956 before!(self, u16, arg);
957 self.veryl_token(&arg.u16_token);
958 after!(self, u16, arg);
959 }
960
961 fn u32(&mut self, arg: &U32) {
963 before!(self, u32, arg);
964 self.veryl_token(&arg.u32_token);
965 after!(self, u32, arg);
966 }
967
968 fn u64(&mut self, arg: &U64) {
970 before!(self, u64, arg);
971 self.veryl_token(&arg.u64_token);
972 after!(self, u64, arg);
973 }
974
975 fn var(&mut self, arg: &Var) {
977 before!(self, var, arg);
978 self.veryl_token(&arg.var_token);
979 after!(self, var, arg);
980 }
981
982 fn dollar_identifier(&mut self, arg: &DollarIdentifier) {
984 before!(self, dollar_identifier, arg);
985 self.veryl_token(&arg.dollar_identifier_token);
986 after!(self, dollar_identifier, arg);
987 }
988
989 fn identifier(&mut self, arg: &Identifier) {
991 before!(self, identifier, arg);
992 self.veryl_token(&arg.identifier_token);
993 after!(self, identifier, arg);
994 }
995
996 fn any(&mut self, arg: &Any) {
998 before!(self, any, arg);
999 self.veryl_token(&arg.any_token);
1000 after!(self, any, arg);
1001 }
1002
1003 fn number(&mut self, arg: &Number) {
1005 before!(self, number, arg);
1006 match arg {
1007 Number::IntegralNumber(x) => self.integral_number(&x.integral_number),
1008 Number::RealNumber(x) => self.real_number(&x.real_number),
1009 };
1010 after!(self, number, arg);
1011 }
1012
1013 fn integral_number(&mut self, arg: &IntegralNumber) {
1015 before!(self, integral_number, arg);
1016 match arg {
1017 IntegralNumber::Based(x) => self.based(&x.based),
1018 IntegralNumber::BaseLess(x) => self.base_less(&x.base_less),
1019 IntegralNumber::AllBit(x) => self.all_bit(&x.all_bit),
1020 };
1021 after!(self, integral_number, arg);
1022 }
1023
1024 fn real_number(&mut self, arg: &RealNumber) {
1026 before!(self, real_number, arg);
1027 match arg {
1028 RealNumber::FixedPoint(x) => self.fixed_point(&x.fixed_point),
1029 RealNumber::Exponent(x) => self.exponent(&x.exponent),
1030 };
1031 after!(self, real_number, arg);
1032 }
1033
1034 fn hierarchical_identifier(&mut self, arg: &HierarchicalIdentifier) {
1036 before!(self, hierarchical_identifier, arg);
1037 self.identifier(&arg.identifier);
1038 for x in &arg.hierarchical_identifier_list {
1039 self.select(&x.select);
1040 }
1041 for x in &arg.hierarchical_identifier_list0 {
1042 self.dot(&x.dot);
1043 self.identifier(&x.identifier);
1044 for x in &x.hierarchical_identifier_list0_list {
1045 self.select(&x.select);
1046 }
1047 }
1048 after!(self, hierarchical_identifier, arg);
1049 }
1050
1051 fn scoped_identifier(&mut self, arg: &ScopedIdentifier) {
1053 before!(self, scoped_identifier, arg);
1054 match &*arg.scoped_identifier_group {
1055 ScopedIdentifierGroup::IdentifierScopedIdentifierOpt(x) => {
1056 self.identifier(&x.identifier);
1057 if let Some(ref x) = x.scoped_identifier_opt {
1058 self.with_generic_argument(&x.with_generic_argument);
1059 }
1060 }
1061 ScopedIdentifierGroup::DollarIdentifier(x) => {
1062 self.dollar_identifier(&x.dollar_identifier)
1063 }
1064 }
1065 for x in &arg.scoped_identifier_list {
1066 self.colon_colon(&x.colon_colon);
1067 self.identifier(&x.identifier);
1068 if let Some(ref x) = x.scoped_identifier_opt0 {
1069 self.with_generic_argument(&x.with_generic_argument);
1070 }
1071 }
1072 after!(self, scoped_identifier, arg);
1073 }
1074
1075 fn expression_identifier(&mut self, arg: &ExpressionIdentifier) {
1077 before!(self, expression_identifier, arg);
1078 self.scoped_identifier(&arg.scoped_identifier);
1079 if let Some(ref x) = arg.expression_identifier_opt {
1080 self.width(&x.width);
1081 }
1082 for x in &arg.expression_identifier_list {
1083 self.select(&x.select);
1084 }
1085 for x in &arg.expression_identifier_list0 {
1086 self.dot(&x.dot);
1087 self.identifier(&x.identifier);
1088 for x in &x.expression_identifier_list0_list {
1089 self.select(&x.select);
1090 }
1091 }
1092 after!(self, expression_identifier, arg);
1093 }
1094
1095 fn generic_arg_identifier(&mut self, arg: &GenericArgIdentifier) {
1097 before!(self, generic_arg_identifier, arg);
1098 self.scoped_identifier(&arg.scoped_identifier);
1099 for x in &arg.generic_arg_identifier_list {
1100 self.dot(&x.dot);
1101 self.identifier(&x.identifier);
1102 }
1103 after!(self, generic_arg_identifier, arg);
1104 }
1105
1106 fn expression(&mut self, arg: &Expression) {
1108 before!(self, expression, arg);
1109 self.if_expression(&arg.if_expression);
1110 after!(self, expression, arg);
1111 }
1112
1113 fn if_expression(&mut self, arg: &IfExpression) {
1115 before!(self, if_expression, arg);
1116 for x in &arg.if_expression_list {
1117 self.r#if(&x.r#if);
1118 self.expression(&x.expression);
1119 self.question(&x.question);
1120 self.expression(&x.expression0);
1121 self.colon(&x.colon);
1122 }
1123 self.expression01(&arg.expression01);
1124 after!(self, if_expression, arg);
1125 }
1126
1127 fn expression01(&mut self, arg: &Expression01) {
1129 before!(self, expression01, arg);
1130 self.expression02(&arg.expression02);
1131 for x in &arg.expression01_list {
1132 self.expression01_op(&x.expression01_op);
1133 self.expression02(&x.expression02);
1134 }
1135 after!(self, expression01, arg);
1136 }
1137
1138 fn expression01_op(&mut self, arg: &Expression01Op) {
1140 before!(self, expression01_op, arg);
1141 match arg {
1142 Expression01Op::Operator01(x) => self.operator01(&x.operator01),
1143 Expression01Op::Operator02(x) => self.operator02(&x.operator02),
1144 Expression01Op::Operator03(x) => self.operator03(&x.operator03),
1145 Expression01Op::Operator04(x) => self.operator04(&x.operator04),
1146 Expression01Op::Operator05(x) => self.operator05(&x.operator05),
1147 Expression01Op::Operator06(x) => self.operator06(&x.operator06),
1148 Expression01Op::Operator07(x) => self.operator07(&x.operator07),
1149 Expression01Op::Star(x) => self.star(&x.star),
1150 Expression01Op::Operator08(x) => self.operator08(&x.operator08),
1151 }
1152 after!(self, expression01_op, arg);
1153 }
1154
1155 fn expression02(&mut self, arg: &Expression02) {
1157 before!(self, expression02, arg);
1158 for x in &arg.expression02_list {
1159 self.expression02_op(&x.expression02_op);
1160 }
1161 self.factor(&arg.factor);
1162 if let Some(x) = &arg.expression02_opt {
1163 self.r#as(&x.r#as);
1164 self.casting_type(&x.casting_type);
1165 }
1166 after!(self, expression02, arg);
1167 }
1168
1169 fn expression02_op(&mut self, arg: &Expression02Op) {
1171 before!(self, expression02_op, arg);
1172 match arg {
1173 Expression02Op::UnaryOperator(x) => self.unary_operator(&x.unary_operator),
1174 Expression02Op::Operator06(x) => self.operator06(&x.operator06),
1175 Expression02Op::Operator05(x) => self.operator05(&x.operator05),
1176 Expression02Op::Operator03(x) => self.operator03(&x.operator03),
1177 Expression02Op::Operator04(x) => self.operator04(&x.operator04),
1178 }
1179 after!(self, expression02_op, arg);
1180 }
1181
1182 fn factor(&mut self, arg: &Factor) {
1184 before!(self, factor, arg);
1185 match arg {
1186 Factor::Number(x) => self.number(&x.number),
1187 Factor::BooleanLiteral(x) => self.boolean_literal(&x.boolean_literal),
1188 Factor::IdentifierFactor(x) => self.identifier_factor(&x.identifier_factor),
1189 Factor::LParenExpressionRParen(x) => {
1190 self.l_paren(&x.l_paren);
1191 self.expression(&x.expression);
1192 self.r_paren(&x.r_paren);
1193 }
1194 Factor::LBraceConcatenationListRBrace(x) => {
1195 self.l_brace(&x.l_brace);
1196 self.concatenation_list(&x.concatenation_list);
1197 self.r_brace(&x.r_brace);
1198 }
1199 Factor::QuoteLBraceArrayLiteralListRBrace(x) => {
1200 self.quote_l_brace(&x.quote_l_brace);
1201 self.array_literal_list(&x.array_literal_list);
1202 self.r_brace(&x.r_brace);
1203 }
1204 Factor::CaseExpression(x) => {
1205 self.case_expression(&x.case_expression);
1206 }
1207 Factor::SwitchExpression(x) => {
1208 self.switch_expression(&x.switch_expression);
1209 }
1210 Factor::StringLiteral(x) => {
1211 self.string_literal(&x.string_literal);
1212 }
1213 Factor::FactorGroup(x) => match &*x.factor_group {
1214 FactorGroup::Msb(x) => self.msb(&x.msb),
1215 FactorGroup::Lsb(x) => self.lsb(&x.lsb),
1216 },
1217 Factor::InsideExpression(x) => {
1218 self.inside_expression(&x.inside_expression);
1219 }
1220 Factor::OutsideExpression(x) => {
1221 self.outside_expression(&x.outside_expression);
1222 }
1223 Factor::TypeExpression(x) => {
1224 self.type_expression(&x.type_expression);
1225 }
1226 Factor::FactorTypeFactor(x) => {
1227 self.factor_type_factor(&x.factor_type_factor);
1228 }
1229 }
1230 after!(self, factor, arg);
1231 }
1232
1233 fn boolean_literal(&mut self, arg: &BooleanLiteral) {
1235 before!(self, boolean_literal, arg);
1236 match arg {
1237 BooleanLiteral::True(x) => self.r#true(&x.r#true),
1238 BooleanLiteral::False(x) => self.r#false(&x.r#false),
1239 }
1240 after!(self, boolean_literal, arg);
1241 }
1242
1243 fn identifier_factor(&mut self, arg: &IdentifierFactor) {
1245 before!(self, identifier_factor, arg);
1246 self.expression_identifier(&arg.expression_identifier);
1247 if let Some(ref x) = arg.identifier_factor_opt {
1248 match x.identifier_factor_opt_group.as_ref() {
1249 IdentifierFactorOptGroup::FunctionCall(x) => {
1250 self.function_call(&x.function_call);
1251 }
1252 IdentifierFactorOptGroup::StructConstructor(x) => {
1253 self.struct_constructor(&x.struct_constructor);
1254 }
1255 }
1256 }
1257 after!(self, identifier_factor, arg);
1258 }
1259
1260 fn factor_type_factor(&mut self, arg: &FactorTypeFactor) {
1262 before!(self, factor_type_factor, arg);
1263 for x in &arg.factor_type_factor_list {
1264 self.type_modifier(&x.type_modifier);
1265 }
1266 self.factor_type(&arg.factor_type);
1267 after!(self, factor_type_factor, arg);
1268 }
1269
1270 fn function_call(&mut self, arg: &FunctionCall) {
1272 before!(self, function_call, arg);
1273 self.l_paren(&arg.l_paren);
1274 if let Some(ref x) = arg.function_call_opt {
1275 self.argument_list(&x.argument_list);
1276 }
1277 self.r_paren(&arg.r_paren);
1278 after!(self, function_call, arg);
1279 }
1280
1281 fn argument_list(&mut self, arg: &ArgumentList) {
1283 before!(self, argument_list, arg);
1284 self.argument_item(&arg.argument_item);
1285 for x in &arg.argument_list_list {
1286 self.comma(&x.comma);
1287 self.argument_item(&x.argument_item);
1288 }
1289 if let Some(ref x) = arg.argument_list_opt {
1290 self.comma(&x.comma);
1291 }
1292 after!(self, argument_list, arg);
1293 }
1294
1295 fn argument_item(&mut self, arg: &ArgumentItem) {
1297 before!(self, argument_item, arg);
1298 self.argument_expression(&arg.argument_expression);
1299 if let Some(ref x) = arg.argument_item_opt {
1300 self.colon(&x.colon);
1301 self.expression(&x.expression);
1302 }
1303 after!(self, argument_item, arg);
1304 }
1305
1306 fn argument_expression(&mut self, arg: &ArgumentExpression) {
1308 before!(self, argument_expression, arg);
1309 self.expression(&arg.expression);
1310 after!(self, argument_expression, arg);
1311 }
1312
1313 fn struct_constructor(&mut self, arg: &StructConstructor) {
1315 before!(self, struct_constructor, arg);
1316 self.quote_l_brace(&arg.quote_l_brace);
1317 self.struct_constructor_list(&arg.struct_constructor_list);
1318 if let Some(ref x) = arg.struct_constructor_opt {
1319 self.dot_dot(&x.dot_dot);
1320 self.defaul(&x.defaul);
1321 self.l_paren(&x.l_paren);
1322 self.expression(&x.expression);
1323 self.r_paren(&x.r_paren);
1324 }
1325 self.r_brace(&arg.r_brace);
1326 after!(self, struct_constructor, arg);
1327 }
1328
1329 fn struct_constructor_list(&mut self, arg: &StructConstructorList) {
1331 before!(self, struct_constructor_list, arg);
1332 self.struct_constructor_item(&arg.struct_constructor_item);
1333 for x in &arg.struct_constructor_list_list {
1334 self.comma(&x.comma);
1335 self.struct_constructor_item(&x.struct_constructor_item);
1336 }
1337 if let Some(ref x) = arg.struct_constructor_list_opt {
1338 self.comma(&x.comma);
1339 }
1340 after!(self, struct_constructor_list, arg);
1341 }
1342
1343 fn struct_constructor_item(&mut self, arg: &StructConstructorItem) {
1345 before!(self, struct_constructor_item, arg);
1346 self.identifier(&arg.identifier);
1347 self.colon(&arg.colon);
1348 self.expression(&arg.expression);
1349 after!(self, struct_constructor_item, arg);
1350 }
1351
1352 fn concatenation_list(&mut self, arg: &ConcatenationList) {
1354 before!(self, concatenation_list, arg);
1355 self.concatenation_item(&arg.concatenation_item);
1356 for x in &arg.concatenation_list_list {
1357 self.comma(&x.comma);
1358 self.concatenation_item(&x.concatenation_item);
1359 }
1360 if let Some(ref x) = arg.concatenation_list_opt {
1361 self.comma(&x.comma);
1362 }
1363 after!(self, concatenation_list, arg);
1364 }
1365
1366 fn concatenation_item(&mut self, arg: &ConcatenationItem) {
1368 before!(self, concatenation_item, arg);
1369 self.expression(&arg.expression);
1370 if let Some(ref x) = arg.concatenation_item_opt {
1371 self.repeat(&x.repeat);
1372 self.expression(&x.expression);
1373 }
1374 after!(self, concatenation_item, arg);
1375 }
1376
1377 fn array_literal_list(&mut self, arg: &ArrayLiteralList) {
1379 before!(self, array_literal_list, arg);
1380 self.array_literal_item(&arg.array_literal_item);
1381 for x in &arg.array_literal_list_list {
1382 self.comma(&x.comma);
1383 self.array_literal_item(&x.array_literal_item);
1384 }
1385 if let Some(ref x) = arg.array_literal_list_opt {
1386 self.comma(&x.comma);
1387 }
1388 after!(self, array_literal_list, arg);
1389 }
1390
1391 fn array_literal_item(&mut self, arg: &ArrayLiteralItem) {
1393 before!(self, array_literal_item, arg);
1394 match &*arg.array_literal_item_group {
1395 ArrayLiteralItemGroup::ExpressionArrayLiteralItemOpt(x) => {
1396 self.expression(&x.expression);
1397 if let Some(ref x) = x.array_literal_item_opt {
1398 self.repeat(&x.repeat);
1399 self.expression(&x.expression);
1400 }
1401 }
1402 ArrayLiteralItemGroup::DefaulColonExpression(x) => {
1403 self.defaul(&x.defaul);
1404 self.colon(&x.colon);
1405 self.expression(&x.expression);
1406 }
1407 }
1408 after!(self, array_literal_item, arg);
1409 }
1410
1411 fn case_expression(&mut self, arg: &CaseExpression) {
1413 before!(self, case_expression, arg);
1414 self.case(&arg.case);
1415 self.expression(&arg.expression);
1416 self.l_brace(&arg.l_brace);
1417 self.case_condition(&arg.case_condition);
1418 self.colon(&arg.colon);
1419 self.expression(&arg.expression0);
1420 self.comma(&arg.comma);
1421 for x in &arg.case_expression_list {
1422 self.case_condition(&x.case_condition);
1423 self.colon(&x.colon);
1424 self.expression(&x.expression);
1425 self.comma(&x.comma);
1426 }
1427 self.defaul(&arg.defaul);
1428 self.colon(&arg.colon0);
1429 self.expression(&arg.expression1);
1430 if let Some(ref x) = arg.case_expression_opt {
1431 self.comma(&x.comma);
1432 }
1433 self.r_brace(&arg.r_brace);
1434 after!(self, case_expression, arg);
1435 }
1436
1437 fn switch_expression(&mut self, arg: &SwitchExpression) {
1439 before!(self, switch_expression, arg);
1440 self.switch(&arg.switch);
1441 self.l_brace(&arg.l_brace);
1442 self.switch_condition(&arg.switch_condition);
1443 self.colon(&arg.colon);
1444 self.expression(&arg.expression);
1445 self.comma(&arg.comma);
1446 for x in &arg.switch_expression_list {
1447 self.switch_condition(&x.switch_condition);
1448 self.colon(&x.colon);
1449 self.expression(&x.expression);
1450 self.comma(&x.comma);
1451 }
1452 self.defaul(&arg.defaul);
1453 self.colon(&arg.colon0);
1454 self.expression(&arg.expression0);
1455 if let Some(ref x) = arg.switch_expression_opt {
1456 self.comma(&x.comma);
1457 }
1458 self.r_brace(&arg.r_brace);
1459 after!(self, switch_expression, arg);
1460 }
1461
1462 fn type_expression(&mut self, arg: &TypeExpression) {
1464 before!(self, type_expression, arg);
1465 self.r#type(&arg.r#type);
1466 self.l_paren(&arg.l_paren);
1467 self.expression(&arg.expression);
1468 self.r_paren(&arg.r_paren);
1469 after!(self, type_expression, arg);
1470 }
1471
1472 fn inside_expression(&mut self, arg: &InsideExpression) {
1474 before!(self, inside_expression, arg);
1475 self.inside(&arg.inside);
1476 self.expression(&arg.expression);
1477 self.l_brace(&arg.l_brace);
1478 self.range_list(&arg.range_list);
1479 self.r_brace(&arg.r_brace);
1480 after!(self, inside_expression, arg);
1481 }
1482
1483 fn outside_expression(&mut self, arg: &OutsideExpression) {
1485 before!(self, outside_expression, arg);
1486 self.outside(&arg.outside);
1487 self.expression(&arg.expression);
1488 self.l_brace(&arg.l_brace);
1489 self.range_list(&arg.range_list);
1490 self.r_brace(&arg.r_brace);
1491 after!(self, outside_expression, arg);
1492 }
1493
1494 fn range_list(&mut self, arg: &RangeList) {
1496 before!(self, range_list, arg);
1497 self.range_item(&arg.range_item);
1498 for x in &arg.range_list_list {
1499 self.comma(&x.comma);
1500 self.range_item(&x.range_item);
1501 }
1502 if let Some(ref x) = arg.range_list_opt {
1503 self.comma(&x.comma);
1504 }
1505 after!(self, range_list, arg);
1506 }
1507
1508 fn range_item(&mut self, arg: &RangeItem) {
1510 before!(self, range_item, arg);
1511 self.range(&arg.range);
1512 after!(self, range_item, arg);
1513 }
1514
1515 fn select(&mut self, arg: &Select) {
1517 before!(self, select, arg);
1518 self.l_bracket(&arg.l_bracket);
1519 self.expression(&arg.expression);
1520 if let Some(ref x) = arg.select_opt {
1521 self.select_operator(&x.select_operator);
1522 self.expression(&x.expression);
1523 }
1524 self.r_bracket(&arg.r_bracket);
1525 after!(self, select, arg);
1526 }
1527
1528 fn select_operator(&mut self, arg: &SelectOperator) {
1530 before!(self, select_operator, arg);
1531 match arg {
1532 SelectOperator::Colon(x) => self.colon(&x.colon),
1533 SelectOperator::PlusColon(x) => self.plus_colon(&x.plus_colon),
1534 SelectOperator::MinusColon(x) => self.minus_colon(&x.minus_colon),
1535 SelectOperator::Step(x) => self.step(&x.step),
1536 }
1537 after!(self, select_operator, arg);
1538 }
1539
1540 fn width(&mut self, arg: &Width) {
1542 before!(self, width, arg);
1543 self.l_angle(&arg.l_angle);
1544 self.expression(&arg.expression);
1545 for x in &arg.width_list {
1546 self.comma(&x.comma);
1547 self.expression(&x.expression);
1548 }
1549 self.r_angle(&arg.r_angle);
1550 after!(self, width, arg);
1551 }
1552
1553 fn array(&mut self, arg: &Array) {
1555 before!(self, array, arg);
1556 self.l_bracket(&arg.l_bracket);
1557 self.expression(&arg.expression);
1558 for x in &arg.array_list {
1559 self.comma(&x.comma);
1560 self.expression(&x.expression);
1561 }
1562 self.r_bracket(&arg.r_bracket);
1563 after!(self, array, arg);
1564 }
1565
1566 fn range(&mut self, arg: &Range) {
1568 before!(self, range, arg);
1569 self.expression(&arg.expression);
1570 if let Some(ref x) = arg.range_opt {
1571 self.range_operator(&x.range_operator);
1572 self.expression(&x.expression);
1573 }
1574 after!(self, range, arg);
1575 }
1576
1577 fn range_operator(&mut self, arg: &RangeOperator) {
1579 before!(self, range_operator, arg);
1580 match arg {
1581 RangeOperator::DotDot(x) => self.dot_dot(&x.dot_dot),
1582 RangeOperator::DotDotEqu(x) => self.dot_dot_equ(&x.dot_dot_equ),
1583 }
1584 after!(self, range_operator, arg);
1585 }
1586
1587 fn fixed_type(&mut self, arg: &FixedType) {
1589 before!(self, fixed_type, arg);
1590 match arg {
1591 FixedType::P8(x) => self.p8(&x.p8),
1592 FixedType::P16(x) => self.p16(&x.p16),
1593 FixedType::P32(x) => self.p32(&x.p32),
1594 FixedType::P64(x) => self.p64(&x.p64),
1595 FixedType::U8(x) => self.u8(&x.u8),
1596 FixedType::U16(x) => self.u16(&x.u16),
1597 FixedType::U32(x) => self.u32(&x.u32),
1598 FixedType::U64(x) => self.u64(&x.u64),
1599 FixedType::I8(x) => self.i8(&x.i8),
1600 FixedType::I16(x) => self.i16(&x.i16),
1601 FixedType::I32(x) => self.i32(&x.i32),
1602 FixedType::I64(x) => self.i64(&x.i64),
1603 FixedType::F32(x) => self.f32(&x.f32),
1604 FixedType::F64(x) => self.f64(&x.f64),
1605 FixedType::BBool(x) => self.b_bool(&x.b_bool),
1606 FixedType::LBool(x) => self.l_bool(&x.l_bool),
1607 FixedType::Strin(x) => self.strin(&x.strin),
1608 };
1609 after!(self, fixed_type, arg);
1610 }
1611
1612 fn variable_type(&mut self, arg: &VariableType) {
1614 before!(self, variable_type, arg);
1615 match arg {
1616 VariableType::Clock(x) => self.clock(&x.clock),
1617 VariableType::ClockPosedge(x) => self.clock_posedge(&x.clock_posedge),
1618 VariableType::ClockNegedge(x) => self.clock_negedge(&x.clock_negedge),
1619 VariableType::Reset(x) => self.reset(&x.reset),
1620 VariableType::ResetAsyncHigh(x) => self.reset_async_high(&x.reset_async_high),
1621 VariableType::ResetAsyncLow(x) => self.reset_async_low(&x.reset_async_low),
1622 VariableType::ResetSyncHigh(x) => self.reset_sync_high(&x.reset_sync_high),
1623 VariableType::ResetSyncLow(x) => self.reset_sync_low(&x.reset_sync_low),
1624 VariableType::Logic(x) => self.logic(&x.logic),
1625 VariableType::Bit(x) => self.bit(&x.bit),
1626 };
1627 after!(self, variable_type, arg);
1628 }
1629
1630 fn user_defined_type(&mut self, arg: &UserDefinedType) {
1632 before!(self, user_defined_type, arg);
1633 self.scoped_identifier(&arg.scoped_identifier);
1634 after!(self, user_defined_type, arg);
1635 }
1636
1637 fn type_modifier(&mut self, arg: &TypeModifier) {
1639 before!(self, type_modifier, arg);
1640 match arg {
1641 TypeModifier::Tri(x) => self.tri(&x.tri),
1642 TypeModifier::Signed(x) => self.signed(&x.signed),
1643 TypeModifier::Defaul(x) => self.defaul(&x.defaul),
1644 }
1645 after!(self, type_modifier, arg);
1646 }
1647
1648 fn factor_type(&mut self, arg: &FactorType) {
1650 before!(self, factor_type, arg);
1651 match arg.factor_type_group.as_ref() {
1652 FactorTypeGroup::VariableTypeFactorTypeOpt(x) => {
1653 self.variable_type(&x.variable_type);
1654 if let Some(ref x) = x.factor_type_opt {
1655 self.width(&x.width);
1656 }
1657 }
1658 FactorTypeGroup::FixedType(x) => self.fixed_type(&x.fixed_type),
1659 }
1660 after!(self, factor_type, arg);
1661 }
1662
1663 fn scalar_type(&mut self, arg: &ScalarType) {
1665 before!(self, scalar_type, arg);
1666 for x in &arg.scalar_type_list {
1667 self.type_modifier(&x.type_modifier);
1668 }
1669 match &*arg.scalar_type_group {
1670 ScalarTypeGroup::UserDefinedTypeScalarTypeOpt(x) => {
1671 self.user_defined_type(&x.user_defined_type);
1672 if let Some(ref x) = x.scalar_type_opt {
1673 self.width(&x.width);
1674 }
1675 }
1676 ScalarTypeGroup::FactorType(x) => {
1677 self.factor_type(&x.factor_type);
1678 }
1679 }
1680 after!(self, scalar_type, arg);
1681 }
1682
1683 fn array_type(&mut self, arg: &ArrayType) {
1685 before!(self, array_type, arg);
1686 self.scalar_type(&arg.scalar_type);
1687 if let Some(ref x) = arg.array_type_opt {
1688 self.array(&x.array);
1689 }
1690 after!(self, array_type, arg);
1691 }
1692
1693 fn casting_type(&mut self, arg: &CastingType) {
1695 before!(self, casting_type, arg);
1696 match arg {
1697 CastingType::P8(x) => self.p8(&x.p8),
1698 CastingType::P16(x) => self.p16(&x.p16),
1699 CastingType::P32(x) => self.p32(&x.p32),
1700 CastingType::P64(x) => self.p64(&x.p64),
1701 CastingType::U8(x) => self.u8(&x.u8),
1702 CastingType::U16(x) => self.u16(&x.u16),
1703 CastingType::U32(x) => self.u32(&x.u32),
1704 CastingType::U64(x) => self.u64(&x.u64),
1705 CastingType::I8(x) => self.i8(&x.i8),
1706 CastingType::I16(x) => self.i16(&x.i16),
1707 CastingType::I32(x) => self.i32(&x.i32),
1708 CastingType::I64(x) => self.i64(&x.i64),
1709 CastingType::F32(x) => self.f32(&x.f32),
1710 CastingType::F64(x) => self.f64(&x.f64),
1711 CastingType::BBool(x) => self.b_bool(&x.b_bool),
1712 CastingType::LBool(x) => self.l_bool(&x.l_bool),
1713 CastingType::Clock(x) => self.clock(&x.clock),
1714 CastingType::ClockPosedge(x) => self.clock_posedge(&x.clock_posedge),
1715 CastingType::ClockNegedge(x) => self.clock_negedge(&x.clock_negedge),
1716 CastingType::Reset(x) => self.reset(&x.reset),
1717 CastingType::ResetAsyncHigh(x) => self.reset_async_high(&x.reset_async_high),
1718 CastingType::ResetAsyncLow(x) => self.reset_async_low(&x.reset_async_low),
1719 CastingType::ResetSyncHigh(x) => self.reset_sync_high(&x.reset_sync_high),
1720 CastingType::ResetSyncLow(x) => self.reset_sync_low(&x.reset_sync_low),
1721 CastingType::UserDefinedType(x) => self.user_defined_type(&x.user_defined_type),
1722 CastingType::Based(x) => self.based(&x.based),
1723 CastingType::BaseLess(x) => self.base_less(&x.base_less),
1724 }
1725 after!(self, casting_type, arg);
1726 }
1727
1728 fn clock_domain(&mut self, arg: &ClockDomain) {
1730 before!(self, clock_domain, arg);
1731 self.quote(&arg.quote);
1732 self.identifier(&arg.identifier);
1733 after!(self, clock_domain, arg);
1734 }
1735
1736 fn statement_block(&mut self, arg: &StatementBlock) {
1738 before!(self, statement_block, arg);
1739 self.l_brace(&arg.l_brace);
1740 for x in &arg.statement_block_list {
1741 self.statement_block_group(&x.statement_block_group);
1742 }
1743 self.r_brace(&arg.r_brace);
1744 after!(self, statement_block, arg);
1745 }
1746
1747 fn statement_block_group(&mut self, arg: &StatementBlockGroup) {
1749 before!(self, statement_block_group, arg);
1750 for x in &arg.statement_block_group_list {
1751 self.attribute(&x.attribute);
1752 }
1753 match arg.statement_block_group_group.as_ref() {
1754 StatementBlockGroupGroup::BlockLBraceStatementBlockGroupGroupListRBrace(x) => {
1755 self.block(&x.block);
1756 self.l_brace(&x.l_brace);
1757 for x in &x.statement_block_group_group_list {
1758 self.statement_block_group(&x.statement_block_group);
1759 }
1760 self.r_brace(&x.r_brace);
1761 }
1762 StatementBlockGroupGroup::StatementBlockItem(x) => {
1763 self.statement_block_item(&x.statement_block_item);
1764 }
1765 }
1766 after!(self, statement_block_group, arg);
1767 }
1768
1769 fn statement_block_item(&mut self, arg: &StatementBlockItem) {
1771 before!(self, statement_block_item, arg);
1772 match arg {
1773 StatementBlockItem::VarDeclaration(x) => self.var_declaration(&x.var_declaration),
1774 StatementBlockItem::LetStatement(x) => self.let_statement(&x.let_statement),
1775 StatementBlockItem::Statement(x) => self.statement(&x.statement),
1776 StatementBlockItem::ConstDeclaration(x) => self.const_declaration(&x.const_declaration),
1777 StatementBlockItem::GenDeclaration(x) => self.gen_declaration(&x.gen_declaration),
1778 StatementBlockItem::ConcatenationAssignment(x) => {
1779 self.concatenation_assignment(&x.concatenation_assignment)
1780 }
1781 }
1782 after!(self, statement_block_item, arg);
1783 }
1784
1785 fn statement(&mut self, arg: &Statement) {
1787 before!(self, statement, arg);
1788 match arg {
1789 Statement::IdentifierStatement(x) => self.identifier_statement(&x.identifier_statement),
1790 Statement::IfStatement(x) => self.if_statement(&x.if_statement),
1791 Statement::IfResetStatement(x) => self.if_reset_statement(&x.if_reset_statement),
1792 Statement::ReturnStatement(x) => self.return_statement(&x.return_statement),
1793 Statement::BreakStatement(x) => self.break_statement(&x.break_statement),
1794 Statement::ForStatement(x) => self.for_statement(&x.for_statement),
1795 Statement::CaseStatement(x) => self.case_statement(&x.case_statement),
1796 Statement::SwitchStatement(x) => self.switch_statement(&x.switch_statement),
1797 };
1798 after!(self, statement, arg);
1799 }
1800
1801 fn let_statement(&mut self, arg: &LetStatement) {
1803 before!(self, let_statement, arg);
1804 self.r#let(&arg.r#let);
1805 self.identifier(&arg.identifier);
1806 if let Some(ref x) = arg.let_statement_opt {
1807 self.colon(&x.colon);
1808 if let Some(ref y) = x.let_statement_opt0 {
1809 self.clock_domain(&y.clock_domain);
1810 }
1811 self.array_type(&x.array_type);
1812 }
1813 self.equ(&arg.equ);
1814 self.expression(&arg.expression);
1815 self.semicolon(&arg.semicolon);
1816 after!(self, let_statement, arg);
1817 }
1818
1819 fn identifier_statement(&mut self, arg: &IdentifierStatement) {
1821 before!(self, identifier_statement, arg);
1822 self.expression_identifier(&arg.expression_identifier);
1823 match &*arg.identifier_statement_group {
1824 IdentifierStatementGroup::FunctionCall(x) => {
1825 self.function_call(&x.function_call);
1826 }
1827 IdentifierStatementGroup::Assignment(x) => {
1828 self.assignment(&x.assignment);
1829 }
1830 }
1831 self.semicolon(&arg.semicolon);
1832 after!(self, identifier_statement, arg);
1833 }
1834
1835 fn concatenation_assignment(&mut self, arg: &ConcatenationAssignment) {
1837 before!(self, concatenation_assignment, arg);
1838 self.l_brace(&arg.l_brace);
1839 self.assign_concatenation_list(&arg.assign_concatenation_list);
1840 self.r_brace(&arg.r_brace);
1841 self.equ(&arg.equ);
1842 self.expression(&arg.expression);
1843 self.semicolon(&arg.semicolon);
1844 after!(self, concatenation_assignment, arg);
1845 }
1846
1847 fn assignment(&mut self, arg: &Assignment) {
1849 before!(self, assignment, arg);
1850 match &*arg.assignment_group {
1851 AssignmentGroup::Equ(x) => self.equ(&x.equ),
1852 AssignmentGroup::AssignmentOperator(x) => {
1853 self.assignment_operator(&x.assignment_operator)
1854 }
1855 AssignmentGroup::DiamondOperator(x) => {
1856 self.diamond_operator(&x.diamond_operator);
1857 }
1858 }
1859 self.expression(&arg.expression);
1860 after!(self, assignment, arg);
1861 }
1862
1863 fn if_statement(&mut self, arg: &IfStatement) {
1865 before!(self, if_statement, arg);
1866 self.r#if(&arg.r#if);
1867 self.expression(&arg.expression);
1868 self.statement_block(&arg.statement_block);
1869 for x in &arg.if_statement_list {
1870 self.r#else(&x.r#else);
1871 self.r#if(&x.r#if);
1872 self.expression(&x.expression);
1873 self.statement_block(&x.statement_block);
1874 }
1875 if let Some(ref x) = arg.if_statement_opt {
1876 self.r#else(&x.r#else);
1877 self.statement_block(&x.statement_block);
1878 }
1879 after!(self, if_statement, arg);
1880 }
1881
1882 fn if_reset_statement(&mut self, arg: &IfResetStatement) {
1884 before!(self, if_reset_statement, arg);
1885 self.if_reset(&arg.if_reset);
1886 self.statement_block(&arg.statement_block);
1887 for x in &arg.if_reset_statement_list {
1888 self.r#else(&x.r#else);
1889 self.r#if(&x.r#if);
1890 self.expression(&x.expression);
1891 self.statement_block(&x.statement_block);
1892 }
1893 if let Some(ref x) = arg.if_reset_statement_opt {
1894 self.r#else(&x.r#else);
1895 self.statement_block(&x.statement_block);
1896 }
1897 after!(self, if_reset_statement, arg);
1898 }
1899
1900 fn return_statement(&mut self, arg: &ReturnStatement) {
1902 before!(self, return_statement, arg);
1903 self.r#return(&arg.r#return);
1904 self.expression(&arg.expression);
1905 self.semicolon(&arg.semicolon);
1906 after!(self, return_statement, arg);
1907 }
1908
1909 fn break_statement(&mut self, arg: &BreakStatement) {
1911 before!(self, break_statement, arg);
1912 self.r#break(&arg.r#break);
1913 self.semicolon(&arg.semicolon);
1914 after!(self, break_statement, arg);
1915 }
1916
1917 fn for_statement(&mut self, arg: &ForStatement) {
1919 before!(self, for_statement, arg);
1920 self.r#for(&arg.r#for);
1921 self.identifier(&arg.identifier);
1922 self.r#in(&arg.r#in);
1923 if let Some(ref x) = arg.for_statement_opt {
1924 self.rev(&x.rev);
1925 }
1926 self.range(&arg.range);
1927 if let Some(ref x) = arg.for_statement_opt0 {
1928 self.step(&x.step);
1929 self.assignment_operator(&x.assignment_operator);
1930 self.expression(&x.expression);
1931 }
1932 self.statement_block(&arg.statement_block);
1933 after!(self, for_statement, arg);
1934 }
1935
1936 fn case_statement(&mut self, arg: &CaseStatement) {
1938 before!(self, case_statement, arg);
1939 self.case(&arg.case);
1940 self.expression(&arg.expression);
1941 self.l_brace(&arg.l_brace);
1942 for x in &arg.case_statement_list {
1943 self.case_item(&x.case_item);
1944 }
1945 self.r_brace(&arg.r_brace);
1946 after!(self, case_statement, arg);
1947 }
1948
1949 fn case_item(&mut self, arg: &CaseItem) {
1951 before!(self, case_item, arg);
1952 match &*arg.case_item_group {
1953 CaseItemGroup::CaseCondition(x) => self.case_condition(&x.case_condition),
1954 CaseItemGroup::Defaul(x) => self.defaul(&x.defaul),
1955 }
1956 self.colon(&arg.colon);
1957 match &*arg.case_item_group0 {
1958 CaseItemGroup0::Statement(x) => self.statement(&x.statement),
1959 CaseItemGroup0::StatementBlock(x) => self.statement_block(&x.statement_block),
1960 }
1961 after!(self, case_item, arg);
1962 }
1963
1964 fn case_condition(&mut self, arg: &CaseCondition) {
1966 before!(self, case_condition, arg);
1967 self.range_item(&arg.range_item);
1968 for x in &arg.case_condition_list {
1969 self.comma(&x.comma);
1970 self.range_item(&x.range_item);
1971 }
1972 after!(self, case_condition, arg);
1973 }
1974
1975 fn switch_statement(&mut self, arg: &SwitchStatement) {
1977 before!(self, switch_statement, arg);
1978 self.switch(&arg.switch);
1979 self.l_brace(&arg.l_brace);
1980 for x in &arg.switch_statement_list {
1981 self.switch_item(&x.switch_item);
1982 }
1983 self.r_brace(&arg.r_brace);
1984 after!(self, switch_statement, arg);
1985 }
1986
1987 fn switch_item(&mut self, arg: &SwitchItem) {
1989 before!(self, switch_item, arg);
1990 match &*arg.switch_item_group {
1991 SwitchItemGroup::SwitchCondition(x) => self.switch_condition(&x.switch_condition),
1992 SwitchItemGroup::Defaul(x) => self.defaul(&x.defaul),
1993 }
1994 self.colon(&arg.colon);
1995 match &*arg.switch_item_group0 {
1996 SwitchItemGroup0::Statement(x) => self.statement(&x.statement),
1997 SwitchItemGroup0::StatementBlock(x) => self.statement_block(&x.statement_block),
1998 }
1999 after!(self, switch_item, arg);
2000 }
2001
2002 fn switch_condition(&mut self, arg: &SwitchCondition) {
2004 before!(self, switch_condition, arg);
2005 self.expression(&arg.expression);
2006 for x in &arg.switch_condition_list {
2007 self.comma(&x.comma);
2008 self.expression(&x.expression);
2009 }
2010 after!(self, switch_condition, arg);
2011 }
2012
2013 fn attribute(&mut self, arg: &Attribute) {
2015 before!(self, attribute, arg);
2016 self.hash_l_bracket(&arg.hash_l_bracket);
2017 self.identifier(&arg.identifier);
2018 if let Some(ref x) = arg.attribute_opt {
2019 self.l_paren(&x.l_paren);
2020 self.attribute_list(&x.attribute_list);
2021 self.r_paren(&x.r_paren);
2022 }
2023 self.r_bracket(&arg.r_bracket);
2024 after!(self, attribute, arg);
2025 }
2026
2027 fn attribute_list(&mut self, arg: &AttributeList) {
2029 before!(self, attribute_list, arg);
2030 self.attribute_item(&arg.attribute_item);
2031 for x in &arg.attribute_list_list {
2032 self.comma(&x.comma);
2033 self.attribute_item(&x.attribute_item);
2034 }
2035 if let Some(ref x) = arg.attribute_list_opt {
2036 self.comma(&x.comma);
2037 }
2038 after!(self, attribute_list, arg);
2039 }
2040
2041 fn attribute_item(&mut self, arg: &AttributeItem) {
2043 before!(self, attribute_item, arg);
2044 match arg {
2045 AttributeItem::Identifier(x) => self.identifier(&x.identifier),
2046 AttributeItem::StringLiteral(x) => self.string_literal(&x.string_literal),
2047 }
2048 after!(self, attribute_item, arg);
2049 }
2050
2051 fn let_declaration(&mut self, arg: &LetDeclaration) {
2053 before!(self, let_declaration, arg);
2054 self.r#let(&arg.r#let);
2055 self.identifier(&arg.identifier);
2056 if let Some(ref x) = arg.let_declaration_opt {
2057 self.colon(&x.colon);
2058 if let Some(ref y) = x.let_declaration_opt0 {
2059 self.clock_domain(&y.clock_domain);
2060 }
2061 self.array_type(&x.array_type);
2062 }
2063 self.equ(&arg.equ);
2064 self.expression(&arg.expression);
2065 self.semicolon(&arg.semicolon);
2066 after!(self, let_declaration, arg);
2067 }
2068
2069 fn var_declaration(&mut self, arg: &VarDeclaration) {
2071 before!(self, var_declaration, arg);
2072 self.var(&arg.var);
2073 self.identifier(&arg.identifier);
2074 if let Some(ref x) = arg.var_declaration_opt {
2075 self.colon(&x.colon);
2076 if let Some(ref y) = x.var_declaration_opt0 {
2077 self.clock_domain(&y.clock_domain);
2078 }
2079 self.array_type(&x.array_type);
2080 }
2081 self.semicolon(&arg.semicolon);
2082 after!(self, var_declaration, arg);
2083 }
2084
2085 fn const_declaration(&mut self, arg: &ConstDeclaration) {
2087 before!(self, const_declaration, arg);
2088 self.r#const(&arg.r#const);
2089 self.identifier(&arg.identifier);
2090 if let Some(ref x) = arg.const_declaration_opt {
2091 self.colon(&x.colon);
2092 match &*x.const_declaration_opt_group {
2093 ConstDeclarationOptGroup::ArrayType(x) => {
2094 self.array_type(&x.array_type);
2095 }
2096 ConstDeclarationOptGroup::Type(x) => {
2097 self.r#type(&x.r#type);
2098 }
2099 }
2100 }
2101 self.equ(&arg.equ);
2102 self.expression(&arg.expression);
2103 self.semicolon(&arg.semicolon);
2104 after!(self, const_declaration, arg);
2105 }
2106
2107 fn gen_declaration(&mut self, arg: &GenDeclaration) {
2109 before!(self, gen_declaration, arg);
2110 self.r#gen(&arg.r#gen);
2111 self.identifier(&arg.identifier);
2112 self.colon(&arg.colon);
2113 match &*arg.gen_declaration_group {
2114 GenDeclarationGroup::GenericProtoBound(x) => {
2115 self.generic_proto_bound(&x.generic_proto_bound);
2116 }
2117 GenDeclarationGroup::Type(x) => {
2118 self.r#type(&x.r#type);
2119 }
2120 }
2121 self.equ(&arg.equ);
2122 self.expression(&arg.expression);
2123 self.semicolon(&arg.semicolon);
2124 after!(self, gen_declaration, arg);
2125 }
2126
2127 fn type_def_declaration(&mut self, arg: &TypeDefDeclaration) {
2129 before!(self, type_def_declaration, arg);
2130 self.r#type(&arg.r#type);
2131 self.identifier(&arg.identifier);
2132 self.equ(&arg.equ);
2133 self.array_type(&arg.array_type);
2134 self.semicolon(&arg.semicolon);
2135 after!(self, type_def_declaration, arg);
2136 }
2137
2138 fn always_ff_declaration(&mut self, arg: &AlwaysFfDeclaration) {
2140 before!(self, always_ff_declaration, arg);
2141 self.always_ff(&arg.always_ff);
2142 if let Some(ref x) = arg.always_ff_declaration_opt {
2143 self.always_ff_event_list(&x.always_ff_event_list);
2144 }
2145 self.statement_block(&arg.statement_block);
2146 after!(self, always_ff_declaration, arg);
2147 }
2148
2149 fn always_ff_event_list(&mut self, arg: &AlwaysFfEventList) {
2151 before!(self, always_ff_event_list, arg);
2152 self.l_paren(&arg.l_paren);
2153 self.always_ff_clock(&arg.always_ff_clock);
2154 if let Some(ref x) = arg.always_ff_event_list_opt {
2155 self.comma(&x.comma);
2156 self.always_ff_reset(&x.always_ff_reset);
2157 }
2158 self.r_paren(&arg.r_paren);
2159 after!(self, always_ff_event_list, arg);
2160 }
2161
2162 fn always_ff_clock(&mut self, arg: &AlwaysFfClock) {
2164 before!(self, always_ff_clock, arg);
2165 self.hierarchical_identifier(&arg.hierarchical_identifier);
2166 after!(self, always_ff_clock, arg);
2167 }
2168
2169 fn always_ff_reset(&mut self, arg: &AlwaysFfReset) {
2171 before!(self, always_ff_reset, arg);
2172 self.hierarchical_identifier(&arg.hierarchical_identifier);
2173 after!(self, always_ff_reset, arg);
2174 }
2175
2176 fn always_comb_declaration(&mut self, arg: &AlwaysCombDeclaration) {
2178 before!(self, always_comb_declaration, arg);
2179 self.always_comb(&arg.always_comb);
2180 self.statement_block(&arg.statement_block);
2181 after!(self, always_comb_declaration, arg);
2182 }
2183
2184 fn assign_declaration(&mut self, arg: &AssignDeclaration) {
2186 before!(self, assign_declaration, arg);
2187 self.assign(&arg.assign);
2188 self.assign_destination(&arg.assign_destination);
2189 self.equ(&arg.equ);
2190 self.expression(&arg.expression);
2191 self.semicolon(&arg.semicolon);
2192 after!(self, assign_declaration, arg);
2193 }
2194
2195 fn assign_destination(&mut self, arg: &AssignDestination) {
2197 before!(self, assign_destination, arg);
2198 match arg {
2199 AssignDestination::HierarchicalIdentifier(x) => {
2200 self.hierarchical_identifier(&x.hierarchical_identifier);
2201 }
2202 AssignDestination::LBraceAssignConcatenationListRBrace(x) => {
2203 self.l_brace(&x.l_brace);
2204 self.assign_concatenation_list(&x.assign_concatenation_list);
2205 self.r_brace(&x.r_brace);
2206 }
2207 }
2208 after!(self, assign_destination, arg);
2209 }
2210
2211 fn assign_concatenation_list(&mut self, arg: &AssignConcatenationList) {
2213 before!(self, assign_concatenation_list, arg);
2214 self.assign_concatenation_item(&arg.assign_concatenation_item);
2215 for x in &arg.assign_concatenation_list_list {
2216 self.comma(&x.comma);
2217 self.assign_concatenation_item(&x.assign_concatenation_item);
2218 }
2219 if let Some(ref x) = arg.assign_concatenation_list_opt {
2220 self.comma(&x.comma);
2221 }
2222 after!(self, assign_concatenation_list, arg);
2223 }
2224
2225 fn assign_concatenation_item(&mut self, arg: &AssignConcatenationItem) {
2227 before!(self, assign_concatenation_item, arg);
2228 self.hierarchical_identifier(&arg.hierarchical_identifier);
2229 after!(self, assign_concatenation_item, arg);
2230 }
2231
2232 fn connect_declaration(&mut self, arg: &ConnectDeclaration) {
2234 before!(self, connect_declaration, arg);
2235 self.connect(&arg.connect);
2236 self.hierarchical_identifier(&arg.hierarchical_identifier);
2237 self.diamond_operator(&arg.diamond_operator);
2238 self.expression(&arg.expression);
2239 self.semicolon(&arg.semicolon);
2240 after!(self, connect_declaration, arg);
2241 }
2242
2243 fn modport_declaration(&mut self, arg: &ModportDeclaration) {
2245 before!(self, modport_declaration, arg);
2246 self.modport(&arg.modport);
2247 self.identifier(&arg.identifier);
2248 self.l_brace(&arg.l_brace);
2249 if let Some(ref x) = arg.modport_declaration_opt {
2250 self.modport_list(&x.modport_list);
2251 }
2252 if let Some(ref x) = arg.modport_declaration_opt0 {
2253 self.dot_dot(&x.dot_dot);
2254 self.modport_default(&x.modport_default);
2255 }
2256 self.r_brace(&arg.r_brace);
2257 after!(self, modport_declaration, arg);
2258 }
2259
2260 fn modport_list(&mut self, arg: &ModportList) {
2262 before!(self, modport_list, arg);
2263 self.modport_group(&arg.modport_group);
2264 for x in &arg.modport_list_list {
2265 self.comma(&x.comma);
2266 self.modport_group(&x.modport_group);
2267 }
2268 if let Some(ref x) = arg.modport_list_opt {
2269 self.comma(&x.comma);
2270 }
2271 after!(self, modport_list, arg);
2272 }
2273
2274 fn modport_group(&mut self, arg: &ModportGroup) {
2276 before!(self, modport_group, arg);
2277 for x in &arg.modport_group_list {
2278 self.attribute(&x.attribute);
2279 }
2280 match &*arg.modport_group_group {
2281 ModportGroupGroup::LBraceModportListRBrace(x) => {
2282 self.l_brace(&x.l_brace);
2283 self.modport_list(&x.modport_list);
2284 self.r_brace(&x.r_brace);
2285 }
2286 ModportGroupGroup::ModportItem(x) => self.modport_item(&x.modport_item),
2287 }
2288 after!(self, modport_group, arg);
2289 }
2290
2291 fn modport_item(&mut self, arg: &ModportItem) {
2293 before!(self, modport_item, arg);
2294 self.identifier(&arg.identifier);
2295 self.colon(&arg.colon);
2296 self.direction(&arg.direction);
2297 after!(self, modport_item, arg);
2298 }
2299
2300 fn modport_default(&mut self, arg: &ModportDefault) {
2302 before!(self, modport_default, arg);
2303 match arg {
2304 ModportDefault::Input(x) => self.input(&x.input),
2305 ModportDefault::Output(x) => self.output(&x.output),
2306 ModportDefault::SameLParenModportDefaultListRParen(x) => {
2307 self.same(&x.same);
2308 self.l_paren(&x.l_paren);
2309 self.modport_default_list(&x.modport_default_list);
2310 self.r_paren(&x.r_paren);
2311 }
2312 ModportDefault::ConverseLParenModportDefaultListRParen(x) => {
2313 self.converse(&x.converse);
2314 self.l_paren(&x.l_paren);
2315 self.modport_default_list(&x.modport_default_list);
2316 self.r_paren(&x.r_paren);
2317 }
2318 }
2319 after!(self, modport_default, arg);
2320 }
2321
2322 fn modport_default_list(&mut self, arg: &ModportDefaultList) {
2324 before!(self, modport_default_list, arg);
2325 self.identifier(&arg.identifier);
2326 for x in &arg.modport_default_list_list {
2327 self.comma(&x.comma);
2328 self.identifier(&x.identifier);
2329 }
2330 if let Some(ref x) = arg.modport_default_list_opt {
2331 self.comma(&x.comma);
2332 }
2333 after!(self, modport_default_list, arg);
2334 }
2335
2336 fn enum_declaration(&mut self, arg: &EnumDeclaration) {
2338 before!(self, enum_declaration, arg);
2339 self.r#enum(&arg.r#enum);
2340 self.identifier(&arg.identifier);
2341 if let Some(ref x) = arg.enum_declaration_opt {
2342 self.colon(&x.colon);
2343 self.scalar_type(&x.scalar_type);
2344 }
2345 self.l_brace(&arg.l_brace);
2346 self.enum_list(&arg.enum_list);
2347 self.r_brace(&arg.r_brace);
2348 after!(self, enum_declaration, arg);
2349 }
2350
2351 fn enum_list(&mut self, arg: &EnumList) {
2353 before!(self, enum_list, arg);
2354 self.enum_group(&arg.enum_group);
2355 for x in &arg.enum_list_list {
2356 self.comma(&x.comma);
2357 self.enum_group(&x.enum_group);
2358 }
2359 if let Some(ref x) = arg.enum_list_opt {
2360 self.comma(&x.comma);
2361 }
2362 after!(self, enum_list, arg);
2363 }
2364
2365 fn enum_group(&mut self, arg: &EnumGroup) {
2367 before!(self, enum_group, arg);
2368 for x in &arg.enum_group_list {
2369 self.attribute(&x.attribute);
2370 }
2371 match &*arg.enum_group_group {
2372 EnumGroupGroup::LBraceEnumListRBrace(x) => {
2373 self.l_brace(&x.l_brace);
2374 self.enum_list(&x.enum_list);
2375 self.r_brace(&x.r_brace);
2376 }
2377 EnumGroupGroup::EnumItem(x) => self.enum_item(&x.enum_item),
2378 }
2379 after!(self, enum_group, arg);
2380 }
2381
2382 fn enum_item(&mut self, arg: &EnumItem) {
2384 before!(self, enum_item, arg);
2385 self.identifier(&arg.identifier);
2386 if let Some(ref x) = arg.enum_item_opt {
2387 self.equ(&x.equ);
2388 self.expression(&x.expression);
2389 }
2390 after!(self, enum_item, arg);
2391 }
2392
2393 fn struct_union_declaration(&mut self, arg: &StructUnionDeclaration) {
2395 before!(self, struct_union_declaration, arg);
2396 self.struct_union(&arg.struct_union);
2397 self.identifier(&arg.identifier);
2398 if let Some(ref x) = arg.struct_union_declaration_opt {
2399 self.with_generic_parameter(&x.with_generic_parameter);
2400 }
2401 self.l_brace(&arg.l_brace);
2402 self.struct_union_list(&arg.struct_union_list);
2403 self.r_brace(&arg.r_brace);
2404 after!(self, struct_union_declaration, arg);
2405 }
2406
2407 fn struct_union(&mut self, arg: &StructUnion) {
2408 before!(self, struct_union, arg);
2409 match arg {
2410 StructUnion::Struct(x) => {
2411 self.r#struct(&x.r#struct);
2412 }
2413 StructUnion::Union(x) => {
2414 self.union(&x.union);
2415 }
2416 }
2417 after!(self, struct_union, arg);
2418 }
2419
2420 fn struct_union_list(&mut self, arg: &StructUnionList) {
2422 before!(self, struct_union_list, arg);
2423 self.struct_union_group(&arg.struct_union_group);
2424 for x in &arg.struct_union_list_list {
2425 self.comma(&x.comma);
2426 self.struct_union_group(&x.struct_union_group);
2427 }
2428 if let Some(ref x) = arg.struct_union_list_opt {
2429 self.comma(&x.comma);
2430 }
2431 after!(self, struct_union_list, arg);
2432 }
2433
2434 fn struct_union_group(&mut self, arg: &StructUnionGroup) {
2436 before!(self, struct_union_group, arg);
2437 for x in &arg.struct_union_group_list {
2438 self.attribute(&x.attribute);
2439 }
2440 match &*arg.struct_union_group_group {
2441 StructUnionGroupGroup::LBraceStructUnionListRBrace(x) => {
2442 self.l_brace(&x.l_brace);
2443 self.struct_union_list(&x.struct_union_list);
2444 self.r_brace(&x.r_brace);
2445 }
2446 StructUnionGroupGroup::StructUnionItem(x) => {
2447 self.struct_union_item(&x.struct_union_item)
2448 }
2449 }
2450 after!(self, struct_union_group, arg);
2451 }
2452
2453 fn struct_union_item(&mut self, arg: &StructUnionItem) {
2455 before!(self, struct_union_item, arg);
2456 self.identifier(&arg.identifier);
2457 self.colon(&arg.colon);
2458 self.scalar_type(&arg.scalar_type);
2459 after!(self, struct_union_item, arg);
2460 }
2461
2462 fn initial_declaration(&mut self, arg: &InitialDeclaration) {
2464 before!(self, initial_declaration, arg);
2465 self.initial(&arg.initial);
2466 self.statement_block(&arg.statement_block);
2467 after!(self, initial_declaration, arg);
2468 }
2469
2470 fn final_declaration(&mut self, arg: &FinalDeclaration) {
2472 before!(self, final_declaration, arg);
2473 self.r#final(&arg.r#final);
2474 self.statement_block(&arg.statement_block);
2475 after!(self, final_declaration, arg);
2476 }
2477
2478 fn inst_declaration(&mut self, arg: &InstDeclaration) {
2480 before!(self, inst_declaration, arg);
2481 self.inst(&arg.inst);
2482 self.component_instantiation(&arg.component_instantiation);
2483 self.semicolon(&arg.semicolon);
2484 after!(self, inst_declaration, arg);
2485 }
2486
2487 fn bind_declaration(&mut self, arg: &BindDeclaration) {
2489 before!(self, bind_declaration, arg);
2490 self.bind(&arg.bind);
2491 self.scoped_identifier(&arg.scoped_identifier);
2492 self.l_t_minus(&arg.l_t_minus);
2493 self.component_instantiation(&arg.component_instantiation);
2494 self.semicolon(&arg.semicolon);
2495 after!(self, bind_declaration, arg);
2496 }
2497
2498 fn component_instantiation(&mut self, arg: &ComponentInstantiation) {
2500 before!(self, component_instantiation, arg);
2501 self.identifier(&arg.identifier);
2502 self.colon(&arg.colon);
2503 if let Some(ref x) = arg.component_instantiation_opt {
2504 self.clock_domain(&x.clock_domain);
2505 }
2506 self.scoped_identifier(&arg.scoped_identifier);
2507 if let Some(ref x) = arg.component_instantiation_opt0 {
2508 self.array(&x.array);
2509 }
2510 if let Some(ref x) = arg.component_instantiation_opt1 {
2511 self.inst_parameter(&x.inst_parameter);
2512 }
2513 if let Some(ref x) = arg.component_instantiation_opt2 {
2514 self.inst_port(&x.inst_port);
2515 }
2516 after!(self, component_instantiation, arg);
2517 }
2518
2519 fn inst_parameter(&mut self, arg: &InstParameter) {
2521 before!(self, inst_parameter, arg);
2522 self.hash(&arg.hash);
2523 self.l_paren(&arg.l_paren);
2524 if let Some(ref x) = arg.inst_parameter_opt {
2525 self.inst_parameter_list(&x.inst_parameter_list);
2526 }
2527 self.r_paren(&arg.r_paren);
2528 after!(self, inst_parameter, arg);
2529 }
2530
2531 fn inst_parameter_list(&mut self, arg: &InstParameterList) {
2533 before!(self, inst_parameter_list, arg);
2534 self.inst_parameter_group(&arg.inst_parameter_group);
2535 for x in &arg.inst_parameter_list_list {
2536 self.comma(&x.comma);
2537 self.inst_parameter_group(&x.inst_parameter_group);
2538 }
2539 if let Some(ref x) = arg.inst_parameter_list_opt {
2540 self.comma(&x.comma);
2541 }
2542 after!(self, inst_parameter_list, arg);
2543 }
2544
2545 fn inst_parameter_group(&mut self, arg: &InstParameterGroup) {
2547 before!(self, inst_parameter_group, arg);
2548 for x in &arg.inst_parameter_group_list {
2549 self.attribute(&x.attribute);
2550 }
2551 match &*arg.inst_parameter_group_group {
2552 InstParameterGroupGroup::LBraceInstParameterListRBrace(x) => {
2553 self.l_brace(&x.l_brace);
2554 self.inst_parameter_list(&x.inst_parameter_list);
2555 self.r_brace(&x.r_brace);
2556 }
2557 InstParameterGroupGroup::InstParameterItem(x) => {
2558 self.inst_parameter_item(&x.inst_parameter_item)
2559 }
2560 }
2561 after!(self, inst_parameter_group, arg);
2562 }
2563
2564 fn inst_parameter_item(&mut self, arg: &InstParameterItem) {
2566 before!(self, inst_parameter_item, arg);
2567 self.identifier(&arg.identifier);
2568 if let Some(ref x) = arg.inst_parameter_item_opt {
2569 self.colon(&x.colon);
2570 self.expression(&x.expression);
2571 }
2572 after!(self, inst_parameter_item, arg);
2573 }
2574
2575 fn inst_port(&mut self, arg: &InstPort) {
2577 before!(self, inst_port, arg);
2578 self.l_paren(&arg.l_paren);
2579 if let Some(ref x) = arg.inst_port_opt {
2580 self.inst_port_list(&x.inst_port_list);
2581 }
2582 self.r_paren(&arg.r_paren);
2583 after!(self, inst_port, arg);
2584 }
2585
2586 fn inst_port_list(&mut self, arg: &InstPortList) {
2588 before!(self, inst_port_list, arg);
2589 self.inst_port_group(&arg.inst_port_group);
2590 for x in &arg.inst_port_list_list {
2591 self.comma(&x.comma);
2592 self.inst_port_group(&x.inst_port_group);
2593 }
2594 if let Some(ref x) = arg.inst_port_list_opt {
2595 self.comma(&x.comma);
2596 }
2597 after!(self, inst_port_list, arg);
2598 }
2599
2600 fn inst_port_group(&mut self, arg: &InstPortGroup) {
2602 before!(self, inst_port_group, arg);
2603 for x in &arg.inst_port_group_list {
2604 self.attribute(&x.attribute);
2605 }
2606 match &*arg.inst_port_group_group {
2607 InstPortGroupGroup::LBraceInstPortListRBrace(x) => {
2608 self.l_brace(&x.l_brace);
2609 self.inst_port_list(&x.inst_port_list);
2610 self.r_brace(&x.r_brace);
2611 }
2612 InstPortGroupGroup::InstPortItem(x) => self.inst_port_item(&x.inst_port_item),
2613 }
2614 after!(self, inst_port_group, arg);
2615 }
2616
2617 fn inst_port_item(&mut self, arg: &InstPortItem) {
2619 before!(self, inst_port_item, arg);
2620 self.identifier(&arg.identifier);
2621 if let Some(ref x) = arg.inst_port_item_opt {
2622 self.colon(&x.colon);
2623 self.expression(&x.expression);
2624 }
2625 after!(self, inst_port_item, arg);
2626 }
2627
2628 fn with_parameter(&mut self, arg: &WithParameter) {
2630 before!(self, with_parameter, arg);
2631 self.hash(&arg.hash);
2632 self.l_paren(&arg.l_paren);
2633 if let Some(ref x) = arg.with_parameter_opt {
2634 self.with_parameter_list(&x.with_parameter_list);
2635 }
2636 self.r_paren(&arg.r_paren);
2637 after!(self, with_parameter, arg);
2638 }
2639
2640 fn with_parameter_list(&mut self, arg: &WithParameterList) {
2642 before!(self, with_parameter_list, arg);
2643 self.with_parameter_group(&arg.with_parameter_group);
2644 for x in &arg.with_parameter_list_list {
2645 self.comma(&x.comma);
2646 self.with_parameter_group(&x.with_parameter_group);
2647 }
2648 if let Some(ref x) = arg.with_parameter_list_opt {
2649 self.comma(&x.comma);
2650 }
2651 after!(self, with_parameter_list, arg);
2652 }
2653
2654 fn with_parameter_group(&mut self, arg: &WithParameterGroup) {
2656 before!(self, with_parameter_group, arg);
2657 for x in &arg.with_parameter_group_list {
2658 self.attribute(&x.attribute);
2659 }
2660 match &*arg.with_parameter_group_group {
2661 WithParameterGroupGroup::LBraceWithParameterListRBrace(x) => {
2662 self.l_brace(&x.l_brace);
2663 self.with_parameter_list(&x.with_parameter_list);
2664 self.r_brace(&x.r_brace);
2665 }
2666 WithParameterGroupGroup::WithParameterItem(x) => {
2667 self.with_parameter_item(&x.with_parameter_item)
2668 }
2669 }
2670 after!(self, with_parameter_group, arg);
2671 }
2672
2673 fn with_parameter_item(&mut self, arg: &WithParameterItem) {
2675 before!(self, with_parameter_item, arg);
2676 match &*arg.with_parameter_item_group {
2677 WithParameterItemGroup::Param(x) => self.param(&x.param),
2678 WithParameterItemGroup::Const(x) => self.r#const(&x.r#const),
2679 };
2680 self.identifier(&arg.identifier);
2681 self.colon(&arg.colon);
2682 match &*arg.with_parameter_item_group0 {
2683 WithParameterItemGroup0::ArrayType(x) => {
2684 self.array_type(&x.array_type);
2685 }
2686 WithParameterItemGroup0::Type(x) => {
2687 self.r#type(&x.r#type);
2688 }
2689 }
2690 if let Some(ref x) = arg.with_parameter_item_opt {
2691 self.equ(&x.equ);
2692 self.expression(&x.expression);
2693 }
2694 after!(self, with_parameter_item, arg);
2695 }
2696
2697 fn generic_bound(&mut self, arg: &GenericBound) {
2699 before!(self, generic_bound, arg);
2700 match arg {
2701 GenericBound::Type(x) => self.r#type(&x.r#type),
2702 GenericBound::InstScopedIdentifier(x) => {
2703 self.inst(&x.inst);
2704 self.scoped_identifier(&x.scoped_identifier);
2705 }
2706 GenericBound::GenericProtoBound(x) => self.generic_proto_bound(&x.generic_proto_bound),
2707 }
2708 after!(self, generic_bound, arg);
2709 }
2710
2711 fn with_generic_parameter(&mut self, arg: &WithGenericParameter) {
2713 before!(self, with_generic_parameter, arg);
2714 self.colon_colon_l_angle(&arg.colon_colon_l_angle);
2715 self.with_generic_parameter_list(&arg.with_generic_parameter_list);
2716 self.r_angle(&arg.r_angle);
2717 after!(self, with_generic_parameter, arg);
2718 }
2719
2720 fn with_generic_parameter_list(&mut self, arg: &WithGenericParameterList) {
2722 before!(self, with_generic_parameter_list, arg);
2723 self.with_generic_parameter_item(&arg.with_generic_parameter_item);
2724 for x in &arg.with_generic_parameter_list_list {
2725 self.comma(&x.comma);
2726 self.with_generic_parameter_item(&x.with_generic_parameter_item);
2727 }
2728 if let Some(ref x) = arg.with_generic_parameter_list_opt {
2729 self.comma(&x.comma);
2730 }
2731 after!(self, with_generic_parameter_list, arg);
2732 }
2733
2734 fn with_generic_parameter_item(&mut self, arg: &WithGenericParameterItem) {
2736 before!(self, with_generic_parameter_item, arg);
2737 self.identifier(&arg.identifier);
2738 self.colon(&arg.colon);
2739 self.generic_bound(&arg.generic_bound);
2740 if let Some(ref x) = arg.with_generic_parameter_item_opt {
2741 self.equ(&x.equ);
2742 self.with_generic_argument_item(&x.with_generic_argument_item);
2743 }
2744 after!(self, with_generic_parameter_item, arg);
2745 }
2746
2747 fn generic_proto_bound(&mut self, arg: &GenericProtoBound) {
2749 before!(self, generic_proto_bound, arg);
2750 match arg {
2751 GenericProtoBound::ScopedIdentifier(x) => self.scoped_identifier(&x.scoped_identifier),
2752 GenericProtoBound::FixedType(x) => self.fixed_type(&x.fixed_type),
2753 }
2754 after!(self, generic_proto_bound, arg);
2755 }
2756
2757 fn with_generic_argument(&mut self, arg: &WithGenericArgument) {
2759 before!(self, with_generic_argument, arg);
2760 self.colon_colon_l_angle(&arg.colon_colon_l_angle);
2761 if let Some(x) = &arg.with_generic_argument_opt {
2762 self.with_generic_argument_list(&x.with_generic_argument_list);
2763 }
2764 self.r_angle(&arg.r_angle);
2765 after!(self, with_generic_argument, arg);
2766 }
2767
2768 fn with_generic_argument_list(&mut self, arg: &WithGenericArgumentList) {
2770 before!(self, with_generic_argument_list, arg);
2771 self.with_generic_argument_item(&arg.with_generic_argument_item);
2772 for x in &arg.with_generic_argument_list_list {
2773 self.comma(&x.comma);
2774 self.with_generic_argument_item(&x.with_generic_argument_item);
2775 }
2776 if let Some(ref x) = arg.with_generic_argument_list_opt {
2777 self.comma(&x.comma);
2778 }
2779 after!(self, with_generic_argument_list, arg);
2780 }
2781
2782 fn with_generic_argument_item(&mut self, arg: &WithGenericArgumentItem) {
2784 before!(self, with_generic_argument_item, arg);
2785 match arg {
2786 WithGenericArgumentItem::GenericArgIdentifier(x) => {
2787 self.generic_arg_identifier(&x.generic_arg_identifier);
2788 }
2789 WithGenericArgumentItem::FixedType(x) => {
2790 self.fixed_type(&x.fixed_type);
2791 }
2792 WithGenericArgumentItem::Number(x) => {
2793 self.number(&x.number);
2794 }
2795 WithGenericArgumentItem::BooleanLiteral(x) => {
2796 self.boolean_literal(&x.boolean_literal);
2797 }
2798 }
2799 after!(self, with_generic_argument_item, arg);
2800 }
2801
2802 fn port_declaration(&mut self, arg: &PortDeclaration) {
2804 before!(self, port_declaration, arg);
2805 self.l_paren(&arg.l_paren);
2806 if let Some(ref x) = arg.port_declaration_opt {
2807 self.port_declaration_list(&x.port_declaration_list);
2808 }
2809 self.r_paren(&arg.r_paren);
2810 after!(self, port_declaration, arg);
2811 }
2812
2813 fn port_declaration_list(&mut self, arg: &PortDeclarationList) {
2815 before!(self, port_declaration_list, arg);
2816 self.port_declaration_group(&arg.port_declaration_group);
2817 for x in &arg.port_declaration_list_list {
2818 self.comma(&x.comma);
2819 self.port_declaration_group(&x.port_declaration_group);
2820 }
2821 if let Some(ref x) = arg.port_declaration_list_opt {
2822 self.comma(&x.comma);
2823 }
2824 after!(self, port_declaration_list, arg);
2825 }
2826
2827 fn port_declaration_group(&mut self, arg: &PortDeclarationGroup) {
2829 before!(self, port_declaration_group, arg);
2830 for x in &arg.port_declaration_group_list {
2831 self.attribute(&x.attribute);
2832 }
2833 match &*arg.port_declaration_group_group {
2834 PortDeclarationGroupGroup::LBracePortDeclarationListRBrace(x) => {
2835 self.l_brace(&x.l_brace);
2836 self.port_declaration_list(&x.port_declaration_list);
2837 self.r_brace(&x.r_brace);
2838 }
2839 PortDeclarationGroupGroup::PortDeclarationItem(x) => {
2840 self.port_declaration_item(&x.port_declaration_item)
2841 }
2842 }
2843 after!(self, port_declaration_group, arg);
2844 }
2845
2846 fn port_declaration_item(&mut self, arg: &PortDeclarationItem) {
2848 before!(self, port_declaration_item, arg);
2849 self.identifier(&arg.identifier);
2850 self.colon(&arg.colon);
2851 match &*arg.port_declaration_item_group {
2852 PortDeclarationItemGroup::PortTypeConcrete(x) => {
2853 self.port_type_concrete(&x.port_type_concrete);
2854 }
2855 PortDeclarationItemGroup::PortTypeAbstract(x) => {
2856 self.port_type_abstract(&x.port_type_abstract);
2857 }
2858 }
2859 after!(self, port_declaration_item, arg);
2860 }
2861
2862 fn port_type_concrete(&mut self, arg: &PortTypeConcrete) {
2864 before!(self, port_type_concrete, arg);
2865 self.direction(&arg.direction);
2866 if let Some(ref x) = arg.port_type_concrete_opt {
2867 self.clock_domain(&x.clock_domain);
2868 }
2869 self.array_type(&arg.array_type);
2870 if let Some(ref x) = arg.port_type_concrete_opt0 {
2871 self.equ(&x.equ);
2872 self.port_default_value(&x.port_default_value);
2873 }
2874 after!(self, port_type_concrete, arg);
2875 }
2876
2877 fn port_default_value(&mut self, arg: &PortDefaultValue) {
2879 before!(self, port_default_value, arg);
2880 self.expression(&arg.expression);
2881 after!(self, port_default_value, arg);
2882 }
2883
2884 fn port_type_abstract(&mut self, arg: &PortTypeAbstract) {
2886 if let Some(ref x) = arg.port_type_abstract_opt {
2887 self.clock_domain(&x.clock_domain);
2888 }
2889 self.interface(&arg.interface);
2890 if let Some(ref x) = arg.port_type_abstract_opt0 {
2891 self.colon_colon(&x.colon_colon);
2892 self.identifier(&x.identifier);
2893 }
2894 if let Some(ref x) = arg.port_type_abstract_opt1 {
2895 self.array(&x.array);
2896 }
2897 }
2898
2899 fn direction(&mut self, arg: &Direction) {
2901 before!(self, direction, arg);
2902 match arg {
2903 Direction::Input(x) => self.input(&x.input),
2904 Direction::Output(x) => self.output(&x.output),
2905 Direction::Inout(x) => self.inout(&x.inout),
2906 Direction::Modport(x) => self.modport(&x.modport),
2907 Direction::Import(x) => self.import(&x.import),
2908 };
2909 after!(self, direction, arg);
2910 }
2911
2912 fn function_declaration(&mut self, arg: &FunctionDeclaration) {
2914 before!(self, function_declaration, arg);
2915 self.function(&arg.function);
2916 self.identifier(&arg.identifier);
2917 if let Some(ref x) = arg.function_declaration_opt {
2918 self.with_generic_parameter(&x.with_generic_parameter);
2919 }
2920 if let Some(ref x) = arg.function_declaration_opt0 {
2921 self.port_declaration(&x.port_declaration);
2922 }
2923 if let Some(ref x) = arg.function_declaration_opt1 {
2924 self.minus_g_t(&x.minus_g_t);
2925 self.scalar_type(&x.scalar_type);
2926 }
2927 self.statement_block(&arg.statement_block);
2928 after!(self, function_declaration, arg);
2929 }
2930
2931 fn import_declaration(&mut self, arg: &ImportDeclaration) {
2933 before!(self, import_declaration, arg);
2934 self.import(&arg.import);
2935 self.scoped_identifier(&arg.scoped_identifier);
2936 if let Some(ref x) = arg.import_declaration_opt {
2937 self.colon_colon(&x.colon_colon);
2938 match x.import_declaration_opt_group.as_ref() {
2939 ImportDeclarationOptGroup::Star(x) => self.star(&x.star),
2940 ImportDeclarationOptGroup::MultipleImportList(x) => {
2941 self.multiple_import_list(&x.multiple_import_list)
2942 }
2943 }
2944 }
2945 self.semicolon(&arg.semicolon);
2946 after!(self, import_declaration, arg);
2947 }
2948
2949 fn multiple_import_list(&mut self, arg: &MultipleImportList) {
2951 before!(self, multiple_import_list, arg);
2952 self.l_brace(&arg.l_brace);
2953 self.multiple_import_item(&arg.multiple_import_item);
2954 for x in &arg.multiple_import_list_list {
2955 self.comma(&x.comma);
2956 self.multiple_import_item(&x.multiple_import_item);
2957 }
2958 if let Some(ref x) = arg.multiple_import_list_opt {
2959 self.comma(&x.comma);
2960 }
2961 self.r_brace(&arg.r_brace);
2962 after!(self, multiple_import_list, arg);
2963 }
2964
2965 fn multiple_import_item(&mut self, arg: &MultipleImportItem) {
2967 before!(self, multiple_import_item, arg);
2968 self.identifier(&arg.identifier);
2969 after!(self, multiple_import_item, arg);
2970 }
2971
2972 fn mixin_declaration(&mut self, arg: &MixinDeclaration) {
2974 before!(self, mixin_declaration, arg);
2975 self.mixin(&arg.mixin);
2976 self.scoped_identifier(&arg.scoped_identifier);
2977 after!(self, mixin_declaration, arg);
2978 }
2979
2980 fn unsafe_block(&mut self, arg: &UnsafeBlock) {
2982 before!(self, unsafe_block, arg);
2983 self.r#unsafe(&arg.r#unsafe);
2984 self.l_paren(&arg.l_paren);
2985 self.identifier(&arg.identifier);
2986 self.r_paren(&arg.r_paren);
2987 self.l_brace(&arg.l_brace);
2988 for x in &arg.unsafe_block_list {
2989 self.generate_group(&x.generate_group);
2990 }
2991 self.r_brace(&arg.r_brace);
2992 after!(self, unsafe_block, arg);
2993 }
2994
2995 fn module_declaration(&mut self, arg: &ModuleDeclaration) {
2997 before!(self, module_declaration, arg);
2998 self.module(&arg.module);
2999 self.identifier(&arg.identifier);
3000 if let Some(ref x) = arg.module_declaration_opt {
3001 self.with_generic_parameter(&x.with_generic_parameter);
3002 }
3003 if let Some(ref x) = arg.module_declaration_opt0 {
3004 self.r#for(&x.r#for);
3005 self.scoped_identifier(&x.scoped_identifier);
3006 }
3007 if let Some(ref x) = arg.module_declaration_opt1 {
3008 self.with_parameter(&x.with_parameter);
3009 }
3010 if let Some(ref x) = arg.module_declaration_opt2 {
3011 self.port_declaration(&x.port_declaration);
3012 }
3013 self.l_brace(&arg.l_brace);
3014 for x in &arg.module_declaration_list {
3015 self.module_group(&x.module_group);
3016 }
3017 self.r_brace(&arg.r_brace);
3018 after!(self, module_declaration, arg);
3019 }
3020
3021 fn module_group(&mut self, arg: &ModuleGroup) {
3023 before!(self, module_group, arg);
3024 for x in &arg.module_group_list {
3025 self.attribute(&x.attribute);
3026 }
3027 match &*arg.module_group_group {
3028 ModuleGroupGroup::LBraceModuleGroupGroupListRBrace(x) => {
3029 self.l_brace(&x.l_brace);
3030 for x in &x.module_group_group_list {
3031 self.module_group(&x.module_group);
3032 }
3033 self.r_brace(&x.r_brace);
3034 }
3035 ModuleGroupGroup::ModuleItem(x) => {
3036 self.module_item(&x.module_item);
3037 }
3038 }
3039 after!(self, module_group, arg);
3040 }
3041
3042 fn module_item(&mut self, arg: &ModuleItem) {
3044 before!(self, module_item, arg);
3045 self.generate_item(&arg.generate_item);
3046 after!(self, module_item, arg);
3047 }
3048
3049 fn interface_declaration(&mut self, arg: &InterfaceDeclaration) {
3051 before!(self, interface_declaration, arg);
3052 self.interface(&arg.interface);
3053 self.identifier(&arg.identifier);
3054 if let Some(ref x) = arg.interface_declaration_opt {
3055 self.with_generic_parameter(&x.with_generic_parameter);
3056 }
3057 if let Some(ref x) = arg.interface_declaration_opt0 {
3058 self.r#for(&x.r#for);
3059 self.scoped_identifier(&x.scoped_identifier);
3060 }
3061 if let Some(ref x) = arg.interface_declaration_opt1 {
3062 self.with_parameter(&x.with_parameter);
3063 }
3064 self.l_brace(&arg.l_brace);
3065 for x in &arg.interface_declaration_list {
3066 self.interface_group(&x.interface_group);
3067 }
3068 self.r_brace(&arg.r_brace);
3069 after!(self, interface_declaration, arg);
3070 }
3071
3072 fn interface_group(&mut self, arg: &InterfaceGroup) {
3074 before!(self, interface_group, arg);
3075 for x in &arg.interface_group_list {
3076 self.attribute(&x.attribute);
3077 }
3078 match &*arg.interface_group_group {
3079 InterfaceGroupGroup::LBraceInterfaceGroupGroupListRBrace(x) => {
3080 self.l_brace(&x.l_brace);
3081 for x in &x.interface_group_group_list {
3082 self.interface_group(&x.interface_group);
3083 }
3084 self.r_brace(&x.r_brace);
3085 }
3086 InterfaceGroupGroup::InterfaceItem(x) => {
3087 self.interface_item(&x.interface_item);
3088 }
3089 }
3090 after!(self, interface_group, arg);
3091 }
3092
3093 fn interface_item(&mut self, arg: &InterfaceItem) {
3095 before!(self, interface_item, arg);
3096 match arg {
3097 InterfaceItem::GenerateItem(x) => self.generate_item(&x.generate_item),
3098 InterfaceItem::MixinDeclaration(x) => self.mixin_declaration(&x.mixin_declaration),
3099 InterfaceItem::ModportDeclaration(x) => {
3100 self.modport_declaration(&x.modport_declaration)
3101 }
3102 }
3103 after!(self, interface_item, arg);
3104 }
3105
3106 fn generate_if_declaration(&mut self, arg: &GenerateIfDeclaration) {
3108 before!(self, generate_if_declaration, arg);
3109 self.r#if(&arg.r#if);
3110 self.expression(&arg.expression);
3111 self.generate_named_block(&arg.generate_named_block);
3112 for x in &arg.generate_if_declaration_list {
3113 self.r#else(&x.r#else);
3114 self.r#if(&x.r#if);
3115 self.expression(&x.expression);
3116 self.generate_optional_named_block(&x.generate_optional_named_block);
3117 }
3118 if let Some(ref x) = arg.generate_if_declaration_opt {
3119 self.r#else(&x.r#else);
3120 self.generate_optional_named_block(&x.generate_optional_named_block);
3121 }
3122 after!(self, generate_if_declaration, arg);
3123 }
3124
3125 fn generate_for_declaration(&mut self, arg: &GenerateForDeclaration) {
3127 before!(self, generate_for_declaration, arg);
3128 self.r#for(&arg.r#for);
3129 self.identifier(&arg.identifier);
3130 self.r#in(&arg.r#in);
3131 if let Some(ref x) = arg.generate_for_declaration_opt {
3132 self.rev(&x.rev);
3133 }
3134 self.range(&arg.range);
3135 if let Some(ref x) = arg.generate_for_declaration_opt0 {
3136 self.step(&x.step);
3137 self.assignment_operator(&x.assignment_operator);
3138 self.expression(&x.expression);
3139 }
3140 self.generate_named_block(&arg.generate_named_block);
3141 after!(self, generate_for_declaration, arg);
3142 }
3143
3144 fn generate_block_declaration(&mut self, arg: &GenerateBlockDeclaration) {
3146 before!(self, generate_block_declaration, arg);
3147 self.generate_named_block(&arg.generate_named_block);
3148 after!(self, generate_block_declaration, arg);
3149 }
3150
3151 fn generate_named_block(&mut self, arg: &GenerateNamedBlock) {
3153 before!(self, generate_named_block, arg);
3154 self.colon(&arg.colon);
3155 self.identifier(&arg.identifier);
3156 self.l_brace(&arg.l_brace);
3157 for x in &arg.generate_named_block_list {
3158 self.generate_group(&x.generate_group);
3159 }
3160 self.r_brace(&arg.r_brace);
3161 after!(self, generate_named_block, arg);
3162 }
3163
3164 fn generate_optional_named_block(&mut self, arg: &GenerateOptionalNamedBlock) {
3166 before!(self, generate_optional_named_block, arg);
3167 if let Some(ref x) = arg.generate_optional_named_block_opt {
3168 self.colon(&x.colon);
3169 self.identifier(&x.identifier);
3170 }
3171 self.l_brace(&arg.l_brace);
3172 for x in &arg.generate_optional_named_block_list {
3173 self.generate_group(&x.generate_group);
3174 }
3175 self.r_brace(&arg.r_brace);
3176 after!(self, generate_optional_named_block, arg);
3177 }
3178
3179 fn generate_group(&mut self, arg: &GenerateGroup) {
3181 before!(self, generate_group, arg);
3182 for x in &arg.generate_group_list {
3183 self.attribute(&x.attribute);
3184 }
3185 match &*arg.generate_group_group {
3186 GenerateGroupGroup::LBraceGenerateGroupGroupListRBrace(x) => {
3187 self.l_brace(&x.l_brace);
3188 for x in &x.generate_group_group_list {
3189 self.generate_group(&x.generate_group);
3190 }
3191 self.r_brace(&x.r_brace);
3192 }
3193 GenerateGroupGroup::GenerateItem(x) => self.generate_item(&x.generate_item),
3194 }
3195 after!(self, generate_group, arg);
3196 }
3197
3198 fn generate_item(&mut self, arg: &GenerateItem) {
3200 before!(self, generate_item, arg);
3201 match arg {
3202 GenerateItem::LetDeclaration(x) => self.let_declaration(&x.let_declaration),
3203 GenerateItem::VarDeclaration(x) => self.var_declaration(&x.var_declaration),
3204 GenerateItem::InstDeclaration(x) => self.inst_declaration(&x.inst_declaration),
3205 GenerateItem::BindDeclaration(x) => self.bind_declaration(&x.bind_declaration),
3206 GenerateItem::ConstDeclaration(x) => self.const_declaration(&x.const_declaration),
3207 GenerateItem::GenDeclaration(x) => self.gen_declaration(&x.gen_declaration),
3208 GenerateItem::AlwaysFfDeclaration(x) => {
3209 self.always_ff_declaration(&x.always_ff_declaration)
3210 }
3211 GenerateItem::AlwaysCombDeclaration(x) => {
3212 self.always_comb_declaration(&x.always_comb_declaration)
3213 }
3214 GenerateItem::AssignDeclaration(x) => self.assign_declaration(&x.assign_declaration),
3215 GenerateItem::ConnectDeclaration(x) => self.connect_declaration(&x.connect_declaration),
3216 GenerateItem::FunctionDeclaration(x) => {
3217 self.function_declaration(&x.function_declaration)
3218 }
3219 GenerateItem::GenerateIfDeclaration(x) => {
3220 self.generate_if_declaration(&x.generate_if_declaration)
3221 }
3222 GenerateItem::GenerateForDeclaration(x) => {
3223 self.generate_for_declaration(&x.generate_for_declaration)
3224 }
3225 GenerateItem::GenerateBlockDeclaration(x) => {
3226 self.generate_block_declaration(&x.generate_block_declaration)
3227 }
3228 GenerateItem::TypeDefDeclaration(x) => {
3229 self.type_def_declaration(&x.type_def_declaration)
3230 }
3231 GenerateItem::EnumDeclaration(x) => self.enum_declaration(&x.enum_declaration),
3232 GenerateItem::StructUnionDeclaration(x) => {
3233 self.struct_union_declaration(&x.struct_union_declaration)
3234 }
3235 GenerateItem::ImportDeclaration(x) => self.import_declaration(&x.import_declaration),
3236 GenerateItem::AliasDeclaration(x) => self.alias_declaration(&x.alias_declaration),
3237 GenerateItem::InitialDeclaration(x) => self.initial_declaration(&x.initial_declaration),
3238 GenerateItem::FinalDeclaration(x) => self.final_declaration(&x.final_declaration),
3239 GenerateItem::UnsafeBlock(x) => self.unsafe_block(&x.unsafe_block),
3240 GenerateItem::EmbedDeclaration(x) => self.embed_declaration(&x.embed_declaration),
3241 };
3242 after!(self, generate_item, arg);
3243 }
3244
3245 fn package_declaration(&mut self, arg: &PackageDeclaration) {
3247 before!(self, package_declaration, arg);
3248 self.package(&arg.package);
3249 self.identifier(&arg.identifier);
3250 if let Some(ref x) = arg.package_declaration_opt {
3251 self.with_generic_parameter(&x.with_generic_parameter);
3252 }
3253 if let Some(ref x) = arg.package_declaration_opt0 {
3254 self.r#for(&x.r#for);
3255 self.scoped_identifier(&x.scoped_identifier);
3256 }
3257 self.l_brace(&arg.l_brace);
3258 for x in &arg.package_declaration_list {
3259 self.package_group(&x.package_group);
3260 }
3261 self.r_brace(&arg.r_brace);
3262 after!(self, package_declaration, arg);
3263 }
3264
3265 fn package_group(&mut self, arg: &PackageGroup) {
3267 before!(self, package_group, arg);
3268 for x in &arg.package_group_list {
3269 self.attribute(&x.attribute);
3270 }
3271 match &*arg.package_group_group {
3272 PackageGroupGroup::LBracePackageGroupGroupListRBrace(x) => {
3273 self.l_brace(&x.l_brace);
3274 for x in &x.package_group_group_list {
3275 self.package_group(&x.package_group);
3276 }
3277 self.r_brace(&x.r_brace);
3278 }
3279 PackageGroupGroup::PackageItem(x) => self.package_item(&x.package_item),
3280 }
3281 after!(self, package_group, arg);
3282 }
3283
3284 fn package_item(&mut self, arg: &PackageItem) {
3286 before!(self, package_item, arg);
3287 match arg {
3288 PackageItem::ConstDeclaration(x) => self.const_declaration(&x.const_declaration),
3289 PackageItem::GenDeclaration(x) => self.gen_declaration(&x.gen_declaration),
3290 PackageItem::TypeDefDeclaration(x) => {
3291 self.type_def_declaration(&x.type_def_declaration)
3292 }
3293 PackageItem::EnumDeclaration(x) => self.enum_declaration(&x.enum_declaration),
3294 PackageItem::StructUnionDeclaration(x) => {
3295 self.struct_union_declaration(&x.struct_union_declaration)
3296 }
3297 PackageItem::FunctionDeclaration(x) => {
3298 self.function_declaration(&x.function_declaration)
3299 }
3300 PackageItem::ImportDeclaration(x) => self.import_declaration(&x.import_declaration),
3301 PackageItem::AliasDeclaration(x) => self.alias_declaration(&x.alias_declaration),
3302 PackageItem::EmbedDeclaration(x) => self.embed_declaration(&x.embed_declaration),
3303 }
3304 after!(self, package_item, arg);
3305 }
3306
3307 fn alias_declaration(&mut self, arg: &AliasDeclaration) {
3309 before!(self, alias_declaration, arg);
3310 self.alias(&arg.alias);
3311 match &*arg.alias_declaration_group {
3312 AliasDeclarationGroup::Module(x) => self.module(&x.module),
3313 AliasDeclarationGroup::Interface(x) => self.interface(&x.interface),
3314 AliasDeclarationGroup::Package(x) => self.package(&x.package),
3315 }
3316 self.identifier(&arg.identifier);
3317 self.equ(&arg.equ);
3318 self.scoped_identifier(&arg.scoped_identifier);
3319 self.semicolon(&arg.semicolon);
3320 after!(self, alias_declaration, arg);
3321 }
3322
3323 fn proto_declaration(&mut self, arg: &ProtoDeclaration) {
3325 before!(self, proto_declaration, arg);
3326 self.proto(&arg.proto);
3327 match &*arg.proto_declaration_group {
3328 ProtoDeclarationGroup::ProtoModuleDeclaration(x) => {
3329 self.proto_module_declaration(&x.proto_module_declaration);
3330 }
3331 ProtoDeclarationGroup::ProtoInterfaceDeclaration(x) => {
3332 self.proto_interface_declaration(&x.proto_interface_declaration);
3333 }
3334 ProtoDeclarationGroup::ProtoPackageDeclaration(x) => {
3335 self.proto_package_declaration(&x.proto_package_declaration);
3336 }
3337 }
3338 after!(self, proto_declaration, arg);
3339 }
3340
3341 fn proto_module_declaration(&mut self, arg: &ProtoModuleDeclaration) {
3343 before!(self, proto_module_declaration, arg);
3344 self.module(&arg.module);
3345 self.identifier(&arg.identifier);
3346 if let Some(ref x) = arg.proto_module_declaration_opt {
3347 self.with_parameter(&x.with_parameter);
3348 }
3349 if let Some(ref x) = arg.proto_module_declaration_opt0 {
3350 self.port_declaration(&x.port_declaration);
3351 }
3352 self.semicolon(&arg.semicolon);
3353 after!(self, proto_module_declaration, arg);
3354 }
3355
3356 fn proto_interface_declaration(&mut self, arg: &ProtoInterfaceDeclaration) {
3358 before!(self, proto_interface_declaration, arg);
3359 self.interface(&arg.interface);
3360 self.identifier(&arg.identifier);
3361 if let Some(ref x) = arg.proto_interface_declaration_opt {
3362 self.with_parameter(&x.with_parameter);
3363 }
3364 self.l_brace(&arg.l_brace);
3365 for x in &arg.proto_interface_declaration_list {
3366 self.proto_interface_item(&x.proto_interface_item);
3367 }
3368 self.r_brace(&arg.r_brace);
3369 after!(self, proto_interface_declaration, arg);
3370 }
3371
3372 fn proto_interface_item(&mut self, arg: &ProtoInterfaceItem) {
3374 before!(self, proto_interface_item, arg);
3375 match arg {
3376 ProtoInterfaceItem::VarDeclaration(x) => {
3377 self.var_declaration(&x.var_declaration);
3378 }
3379 ProtoInterfaceItem::ProtoConstDeclaration(x) => {
3380 self.proto_const_declaration(&x.proto_const_declaration);
3381 }
3382 ProtoInterfaceItem::ProtoFunctionDeclaration(x) => {
3383 self.proto_function_declaration(&x.proto_function_declaration);
3384 }
3385 ProtoInterfaceItem::ProtoTypeDefDeclaration(x) => {
3386 self.proto_type_def_declaration(&x.proto_type_def_declaration);
3387 }
3388 ProtoInterfaceItem::ProtoAliasDeclaration(x) => {
3389 self.proto_alias_declaration(&x.proto_alias_declaration);
3390 }
3391 ProtoInterfaceItem::ModportDeclaration(x) => {
3392 self.modport_declaration(&x.modport_declaration);
3393 }
3394 ProtoInterfaceItem::ImportDeclaration(x) => {
3395 self.import_declaration(&x.import_declaration);
3396 }
3397 }
3398 after!(self, proto_interface_item, arg);
3399 }
3400
3401 fn proto_package_declaration(&mut self, arg: &ProtoPackageDeclaration) {
3403 before!(self, proto_package_declaration, arg);
3404 self.package(&arg.package);
3405 self.identifier(&arg.identifier);
3406 self.l_brace(&arg.l_brace);
3407 for x in &arg.proto_package_declaration_list {
3408 self.proto_pacakge_item(&x.proto_pacakge_item);
3409 }
3410 self.r_brace(&arg.r_brace);
3411 after!(self, proto_package_declaration, arg);
3412 }
3413
3414 fn proto_pacakge_item(&mut self, arg: &ProtoPacakgeItem) {
3416 before!(self, proto_pacakge_item, arg);
3417 match arg {
3418 ProtoPacakgeItem::ProtoConstDeclaration(x) => {
3419 self.proto_const_declaration(&x.proto_const_declaration);
3420 }
3421 ProtoPacakgeItem::ProtoTypeDefDeclaration(x) => {
3422 self.proto_type_def_declaration(&x.proto_type_def_declaration);
3423 }
3424 ProtoPacakgeItem::EnumDeclaration(x) => {
3425 self.enum_declaration(&x.enum_declaration);
3426 }
3427 ProtoPacakgeItem::StructUnionDeclaration(x) => {
3428 self.struct_union_declaration(&x.struct_union_declaration);
3429 }
3430 ProtoPacakgeItem::ProtoFunctionDeclaration(x) => {
3431 self.proto_function_declaration(&x.proto_function_declaration);
3432 }
3433 ProtoPacakgeItem::ProtoAliasDeclaration(x) => {
3434 self.proto_alias_declaration(&x.proto_alias_declaration);
3435 }
3436 ProtoPacakgeItem::ImportDeclaration(x) => {
3437 self.import_declaration(&x.import_declaration);
3438 }
3439 }
3440 after!(self, proto_pacakge_item, arg);
3441 }
3442
3443 fn proto_const_declaration(&mut self, arg: &ProtoConstDeclaration) {
3445 before!(self, proto_const_declaration, arg);
3446 self.r#const(&arg.r#const);
3447 self.identifier(&arg.identifier);
3448 self.colon(&arg.colon);
3449 match &*arg.proto_const_declaration_group {
3450 ProtoConstDeclarationGroup::ArrayType(x) => {
3451 self.array_type(&x.array_type);
3452 }
3453 ProtoConstDeclarationGroup::Type(x) => {
3454 self.r#type(&x.r#type);
3455 }
3456 }
3457 self.semicolon(&arg.semicolon);
3458 after!(self, proto_const_declaration, arg);
3459 }
3460
3461 fn proto_type_def_declaration(&mut self, arg: &ProtoTypeDefDeclaration) {
3463 before!(self, proto_type_def_declaration, arg);
3464 self.r#type(&arg.r#type);
3465 self.identifier(&arg.identifier);
3466 if let Some(ref x) = arg.proto_type_def_declaration_opt {
3467 self.equ(&x.equ);
3468 self.array_type(&x.array_type);
3469 }
3470 self.semicolon(&arg.semicolon);
3471 after!(self, proto_type_def_declaration, arg);
3472 }
3473
3474 fn proto_function_declaration(&mut self, arg: &ProtoFunctionDeclaration) {
3476 before!(self, proto_function_declaration, arg);
3477 self.function(&arg.function);
3478 self.identifier(&arg.identifier);
3479 if let Some(ref x) = arg.proto_function_declaration_opt {
3480 self.with_generic_parameter(&x.with_generic_parameter);
3481 }
3482 if let Some(ref x) = arg.proto_function_declaration_opt0 {
3483 self.port_declaration(&x.port_declaration);
3484 }
3485 if let Some(ref x) = arg.proto_function_declaration_opt1 {
3486 self.minus_g_t(&x.minus_g_t);
3487 self.scalar_type(&x.scalar_type);
3488 }
3489 self.semicolon(&arg.semicolon);
3490 after!(self, proto_function_declaration, arg);
3491 }
3492
3493 fn proto_alias_declaration(&mut self, arg: &ProtoAliasDeclaration) {
3495 before!(self, proto_alias_declaration, arg);
3496 self.alias(&arg.alias);
3497 match &*arg.proto_alias_declaration_group {
3498 ProtoAliasDeclarationGroup::Module(x) => self.module(&x.module),
3499 ProtoAliasDeclarationGroup::Interface(x) => self.interface(&x.interface),
3500 ProtoAliasDeclarationGroup::Package(x) => self.package(&x.package),
3501 }
3502 self.identifier(&arg.identifier);
3503 self.colon(&arg.colon);
3504 self.scoped_identifier(&arg.scoped_identifier);
3505 self.semicolon(&arg.semicolon);
3506 after!(self, proto_alias_declaration, arg);
3507 }
3508
3509 fn embed_declaration(&mut self, arg: &EmbedDeclaration) {
3511 before!(self, embed_declaration, arg);
3512 self.embed(&arg.embed);
3513 self.l_paren(&arg.l_paren);
3514 self.identifier(&arg.identifier);
3515 self.r_paren(&arg.r_paren);
3516 self.identifier(&arg.identifier0);
3517 self.embed_content(&arg.embed_content);
3518 after!(self, embed_declaration, arg);
3519 }
3520
3521 fn embed_content(&mut self, arg: &EmbedContent) {
3523 before!(self, embed_content, arg);
3524 self.triple_l_brace(&arg.triple_l_brace);
3525 for x in &arg.embed_content_list {
3526 self.embed_item(&x.embed_item);
3527 }
3528 self.triple_r_brace(&arg.triple_r_brace);
3529 after!(self, embed_content, arg);
3530 }
3531
3532 fn embed_scoped_identifier(&mut self, arg: &EmbedScopedIdentifier) {
3534 before!(self, embed_scoped_identifier, arg);
3535 self.escaped_l_brace(&arg.escaped_l_brace);
3536 self.scoped_identifier(&arg.scoped_identifier);
3537 self.escaped_r_brace(&arg.escaped_r_brace);
3538 after!(self, embed_scoped_identifier, arg);
3539 }
3540
3541 fn embed_item(&mut self, arg: &EmbedItem) {
3543 before!(self, embed_item, arg);
3544 match arg {
3545 EmbedItem::EmbedLBraceEmbedItemListEmbedRBrace(x) => {
3546 self.embed_l_brace(&x.embed_l_brace);
3547 for x in &x.embed_item_list {
3548 self.embed_item(&x.embed_item);
3549 }
3550 self.embed_r_brace(&x.embed_r_brace);
3551 }
3552 EmbedItem::EmbedScopedIdentifier(x) => {
3553 self.embed_scoped_identifier(&x.embed_scoped_identifier)
3554 }
3555 EmbedItem::Any(x) => self.any(&x.any),
3556 }
3557 after!(self, embed_item, arg);
3558 }
3559
3560 fn include_declaration(&mut self, arg: &IncludeDeclaration) {
3562 before!(self, include_declaration, arg);
3563 self.include(&arg.include);
3564 self.l_paren(&arg.l_paren);
3565 self.identifier(&arg.identifier);
3566 self.comma(&arg.comma);
3567 self.string_literal(&arg.string_literal);
3568 self.r_paren(&arg.r_paren);
3569 self.semicolon(&arg.semicolon);
3570 after!(self, include_declaration, arg);
3571 }
3572
3573 fn description_group(&mut self, arg: &DescriptionGroup) {
3575 if self.skip_description_group(arg) {
3576 return;
3577 }
3578 before!(self, description_group, arg);
3579 for x in &arg.description_group_list {
3580 self.attribute(&x.attribute);
3581 }
3582 match &*arg.description_group_group {
3583 DescriptionGroupGroup::LBraceDescriptionGroupGroupListRBrace(x) => {
3584 self.l_brace(&x.l_brace);
3585 for x in &x.description_group_group_list {
3586 self.description_group(&x.description_group);
3587 }
3588 self.r_brace(&x.r_brace);
3589 }
3590 DescriptionGroupGroup::DescriptionItem(x) => self.description_item(&x.description_item),
3591 }
3592 after!(self, description_group, arg);
3593 }
3594
3595 fn description_item(&mut self, arg: &DescriptionItem) {
3597 before!(self, description_item, arg);
3598 match arg {
3599 DescriptionItem::DescriptionItemOptPublicDescriptionItem(x) => {
3600 if let Some(ref x) = x.description_item_opt {
3601 self.r#pub(&x.r#pub);
3602 }
3603 self.public_description_item(&x.public_description_item);
3604 }
3605 DescriptionItem::ImportDeclaration(x) => self.import_declaration(&x.import_declaration),
3606 DescriptionItem::BindDeclaration(x) => self.bind_declaration(&x.bind_declaration),
3607 DescriptionItem::EmbedDeclaration(x) => self.embed_declaration(&x.embed_declaration),
3608 DescriptionItem::IncludeDeclaration(x) => {
3609 self.include_declaration(&x.include_declaration)
3610 }
3611 };
3612 after!(self, description_item, arg);
3613 }
3614
3615 fn public_description_item(&mut self, arg: &PublicDescriptionItem) {
3617 before!(self, public_description_item, arg);
3618 match arg {
3619 PublicDescriptionItem::ModuleDeclaration(x) => {
3620 self.module_declaration(&x.module_declaration)
3621 }
3622 PublicDescriptionItem::InterfaceDeclaration(x) => {
3623 self.interface_declaration(&x.interface_declaration)
3624 }
3625 PublicDescriptionItem::PackageDeclaration(x) => {
3626 self.package_declaration(&x.package_declaration)
3627 }
3628 PublicDescriptionItem::AliasDeclaration(x) => {
3629 self.alias_declaration(&x.alias_declaration)
3630 }
3631 PublicDescriptionItem::ProtoDeclaration(x) => {
3632 self.proto_declaration(&x.proto_declaration)
3633 }
3634 PublicDescriptionItem::FunctionDeclaration(x) => {
3635 self.function_declaration(&x.function_declaration)
3636 }
3637 };
3638 after!(self, public_description_item, arg);
3639 }
3640
3641 fn veryl(&mut self, arg: &Veryl) {
3643 before!(self, veryl, arg);
3644 self.start(&arg.start);
3645 for x in &arg.veryl_list {
3646 self.description_group(&x.description_group);
3647 }
3648 after!(self, veryl, arg);
3649 }
3650
3651 fn get_handlers(&mut self) -> Option<Vec<&mut dyn Handler>> {
3652 None
3653 }
3654
3655 fn skip_description_group(&mut self, _arg: &DescriptionGroup) -> bool {
3657 false
3658 }
3659}
3660
3661#[derive(Default)]
3662pub enum HandlerPoint {
3663 #[default]
3664 Before,
3665 After,
3666}
3667
3668pub trait Handler: VerylGrammarTrait {
3669 fn set_point(&mut self, p: HandlerPoint);
3670}