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 modport(&mut self, arg: &Modport) {
711 before!(self, modport, arg);
712 self.veryl_token(&arg.modport_token);
713 after!(self, modport, arg);
714 }
715
716 fn module(&mut self, arg: &Module) {
718 before!(self, module, arg);
719 self.veryl_token(&arg.module_token);
720 after!(self, module, arg);
721 }
722
723 fn msb(&mut self, arg: &Msb) {
725 before!(self, msb, arg);
726 self.veryl_token(&arg.msb_token);
727 after!(self, msb, arg);
728 }
729
730 fn output(&mut self, arg: &Output) {
732 before!(self, output, arg);
733 self.veryl_token(&arg.output_token);
734 after!(self, output, arg);
735 }
736
737 fn outside(&mut self, arg: &Outside) {
739 before!(self, outside, arg);
740 self.veryl_token(&arg.outside_token);
741 after!(self, outside, arg);
742 }
743
744 fn package(&mut self, arg: &Package) {
746 before!(self, package, arg);
747 self.veryl_token(&arg.package_token);
748 after!(self, package, arg);
749 }
750
751 fn param(&mut self, arg: &Param) {
753 before!(self, param, arg);
754 self.veryl_token(&arg.param_token);
755 after!(self, param, arg);
756 }
757
758 fn proto(&mut self, arg: &Proto) {
760 before!(self, proto, arg);
761 self.veryl_token(&arg.proto_token);
762 after!(self, proto, arg);
763 }
764
765 fn r#pub(&mut self, arg: &Pub) {
767 before!(self, r#pub, arg);
768 self.veryl_token(&arg.pub_token);
769 after!(self, r#pub, arg);
770 }
771
772 fn repeat(&mut self, arg: &Repeat) {
774 before!(self, repeat, arg);
775 self.veryl_token(&arg.repeat_token);
776 after!(self, repeat, arg);
777 }
778
779 fn reset(&mut self, arg: &Reset) {
781 before!(self, reset, arg);
782 self.veryl_token(&arg.reset_token);
783 after!(self, reset, arg);
784 }
785
786 fn reset_async_high(&mut self, arg: &ResetAsyncHigh) {
788 before!(self, reset_async_high, arg);
789 self.veryl_token(&arg.reset_async_high_token);
790 after!(self, reset_async_high, arg);
791 }
792
793 fn reset_async_low(&mut self, arg: &ResetAsyncLow) {
795 before!(self, reset_async_low, arg);
796 self.veryl_token(&arg.reset_async_low_token);
797 after!(self, reset_async_low, arg);
798 }
799
800 fn reset_sync_high(&mut self, arg: &ResetSyncHigh) {
802 before!(self, reset_sync_high, arg);
803 self.veryl_token(&arg.reset_sync_high_token);
804 after!(self, reset_sync_high, arg);
805 }
806
807 fn reset_sync_low(&mut self, arg: &ResetSyncLow) {
809 before!(self, reset_sync_low, arg);
810 self.veryl_token(&arg.reset_sync_low_token);
811 after!(self, reset_sync_low, arg);
812 }
813
814 fn r#return(&mut self, arg: &Return) {
816 before!(self, r#return, arg);
817 self.veryl_token(&arg.return_token);
818 after!(self, r#return, arg);
819 }
820
821 fn rev(&mut self, arg: &Rev) {
823 before!(self, rev, arg);
824 self.veryl_token(&arg.rev_token);
825 after!(self, rev, arg);
826 }
827
828 fn r#break(&mut self, arg: &Break) {
830 before!(self, r#break, arg);
831 self.veryl_token(&arg.break_token);
832 after!(self, r#break, arg);
833 }
834
835 fn same(&mut self, arg: &Same) {
837 before!(self, same, arg);
838 self.veryl_token(&arg.same_token);
839 after!(self, same, arg);
840 }
841
842 fn signed(&mut self, arg: &Signed) {
844 before!(self, signed, arg);
845 self.veryl_token(&arg.signed_token);
846 after!(self, signed, arg);
847 }
848
849 fn step(&mut self, arg: &Step) {
851 before!(self, step, arg);
852 self.veryl_token(&arg.step_token);
853 after!(self, step, arg);
854 }
855
856 fn strin(&mut self, arg: &Strin) {
858 before!(self, strin, arg);
859 self.veryl_token(&arg.string_token);
860 after!(self, strin, arg);
861 }
862
863 fn r#struct(&mut self, arg: &Struct) {
865 before!(self, r#struct, arg);
866 self.veryl_token(&arg.struct_token);
867 after!(self, r#struct, arg);
868 }
869
870 fn switch(&mut self, arg: &Switch) {
872 before!(self, switch, arg);
873 self.veryl_token(&arg.switch_token);
874 after!(self, switch, arg);
875 }
876
877 fn union(&mut self, arg: &Union) {
879 before!(self, union, arg);
880 self.veryl_token(&arg.union_token);
881 after!(self, union, arg);
882 }
883
884 fn r#unsafe(&mut self, arg: &Unsafe) {
886 before!(self, r#unsafe, arg);
887 self.veryl_token(&arg.unsafe_token);
888 after!(self, r#unsafe, arg);
889 }
890
891 fn tri(&mut self, arg: &Tri) {
893 before!(self, tri, arg);
894 self.veryl_token(&arg.tri_token);
895 after!(self, tri, arg);
896 }
897
898 fn r#true(&mut self, arg: &True) {
900 before!(self, r#true, arg);
901 self.veryl_token(&arg.true_token);
902 after!(self, r#true, arg);
903 }
904
905 fn r#type(&mut self, arg: &Type) {
907 before!(self, r#type, arg);
908 self.veryl_token(&arg.type_token);
909 after!(self, r#type, arg);
910 }
911
912 fn p8(&mut self, arg: &P8) {
914 before!(self, p8, arg);
915 self.veryl_token(&arg.p8_token);
916 after!(self, p8, arg);
917 }
918
919 fn p16(&mut self, arg: &P16) {
921 before!(self, p16, arg);
922 self.veryl_token(&arg.p16_token);
923 after!(self, p16, arg);
924 }
925
926 fn p32(&mut self, arg: &P32) {
928 before!(self, p32, arg);
929 self.veryl_token(&arg.p32_token);
930 after!(self, p32, arg);
931 }
932
933 fn p64(&mut self, arg: &P64) {
935 before!(self, p64, arg);
936 self.veryl_token(&arg.p64_token);
937 after!(self, p64, arg);
938 }
939
940 fn u8(&mut self, arg: &U8) {
942 before!(self, u8, arg);
943 self.veryl_token(&arg.u8_token);
944 after!(self, u8, arg);
945 }
946
947 fn u16(&mut self, arg: &U16) {
949 before!(self, u16, arg);
950 self.veryl_token(&arg.u16_token);
951 after!(self, u16, arg);
952 }
953
954 fn u32(&mut self, arg: &U32) {
956 before!(self, u32, arg);
957 self.veryl_token(&arg.u32_token);
958 after!(self, u32, arg);
959 }
960
961 fn u64(&mut self, arg: &U64) {
963 before!(self, u64, arg);
964 self.veryl_token(&arg.u64_token);
965 after!(self, u64, arg);
966 }
967
968 fn var(&mut self, arg: &Var) {
970 before!(self, var, arg);
971 self.veryl_token(&arg.var_token);
972 after!(self, var, arg);
973 }
974
975 fn dollar_identifier(&mut self, arg: &DollarIdentifier) {
977 before!(self, dollar_identifier, arg);
978 self.veryl_token(&arg.dollar_identifier_token);
979 after!(self, dollar_identifier, arg);
980 }
981
982 fn identifier(&mut self, arg: &Identifier) {
984 before!(self, identifier, arg);
985 self.veryl_token(&arg.identifier_token);
986 after!(self, identifier, arg);
987 }
988
989 fn any(&mut self, arg: &Any) {
991 before!(self, any, arg);
992 self.veryl_token(&arg.any_token);
993 after!(self, any, arg);
994 }
995
996 fn number(&mut self, arg: &Number) {
998 before!(self, number, arg);
999 match arg {
1000 Number::IntegralNumber(x) => self.integral_number(&x.integral_number),
1001 Number::RealNumber(x) => self.real_number(&x.real_number),
1002 };
1003 after!(self, number, arg);
1004 }
1005
1006 fn integral_number(&mut self, arg: &IntegralNumber) {
1008 before!(self, integral_number, arg);
1009 match arg {
1010 IntegralNumber::Based(x) => self.based(&x.based),
1011 IntegralNumber::BaseLess(x) => self.base_less(&x.base_less),
1012 IntegralNumber::AllBit(x) => self.all_bit(&x.all_bit),
1013 };
1014 after!(self, integral_number, arg);
1015 }
1016
1017 fn real_number(&mut self, arg: &RealNumber) {
1019 before!(self, real_number, arg);
1020 match arg {
1021 RealNumber::FixedPoint(x) => self.fixed_point(&x.fixed_point),
1022 RealNumber::Exponent(x) => self.exponent(&x.exponent),
1023 };
1024 after!(self, real_number, arg);
1025 }
1026
1027 fn hierarchical_identifier(&mut self, arg: &HierarchicalIdentifier) {
1029 before!(self, hierarchical_identifier, arg);
1030 self.identifier(&arg.identifier);
1031 for x in &arg.hierarchical_identifier_list {
1032 self.select(&x.select);
1033 }
1034 for x in &arg.hierarchical_identifier_list0 {
1035 self.dot(&x.dot);
1036 self.identifier(&x.identifier);
1037 for x in &x.hierarchical_identifier_list0_list {
1038 self.select(&x.select);
1039 }
1040 }
1041 after!(self, hierarchical_identifier, arg);
1042 }
1043
1044 fn scoped_identifier(&mut self, arg: &ScopedIdentifier) {
1046 before!(self, scoped_identifier, arg);
1047 match &*arg.scoped_identifier_group {
1048 ScopedIdentifierGroup::IdentifierScopedIdentifierOpt(x) => {
1049 self.identifier(&x.identifier);
1050 if let Some(ref x) = x.scoped_identifier_opt {
1051 self.with_generic_argument(&x.with_generic_argument);
1052 }
1053 }
1054 ScopedIdentifierGroup::DollarIdentifier(x) => {
1055 self.dollar_identifier(&x.dollar_identifier)
1056 }
1057 }
1058 for x in &arg.scoped_identifier_list {
1059 self.colon_colon(&x.colon_colon);
1060 self.identifier(&x.identifier);
1061 if let Some(ref x) = x.scoped_identifier_opt0 {
1062 self.with_generic_argument(&x.with_generic_argument);
1063 }
1064 }
1065 after!(self, scoped_identifier, arg);
1066 }
1067
1068 fn expression_identifier(&mut self, arg: &ExpressionIdentifier) {
1070 before!(self, expression_identifier, arg);
1071 self.scoped_identifier(&arg.scoped_identifier);
1072 if let Some(ref x) = arg.expression_identifier_opt {
1073 self.width(&x.width);
1074 }
1075 for x in &arg.expression_identifier_list {
1076 self.select(&x.select);
1077 }
1078 for x in &arg.expression_identifier_list0 {
1079 self.dot(&x.dot);
1080 self.identifier(&x.identifier);
1081 for x in &x.expression_identifier_list0_list {
1082 self.select(&x.select);
1083 }
1084 }
1085 after!(self, expression_identifier, arg);
1086 }
1087
1088 fn generic_arg_identifier(&mut self, arg: &GenericArgIdentifier) {
1090 before!(self, generic_arg_identifier, arg);
1091 self.scoped_identifier(&arg.scoped_identifier);
1092 for x in &arg.generic_arg_identifier_list {
1093 self.dot(&x.dot);
1094 self.identifier(&x.identifier);
1095 }
1096 after!(self, generic_arg_identifier, arg);
1097 }
1098
1099 fn expression(&mut self, arg: &Expression) {
1101 before!(self, expression, arg);
1102 self.if_expression(&arg.if_expression);
1103 after!(self, expression, arg);
1104 }
1105
1106 fn if_expression(&mut self, arg: &IfExpression) {
1108 before!(self, if_expression, arg);
1109 for x in &arg.if_expression_list {
1110 self.r#if(&x.r#if);
1111 self.expression(&x.expression);
1112 self.question(&x.question);
1113 self.expression(&x.expression0);
1114 self.colon(&x.colon);
1115 }
1116 self.expression01(&arg.expression01);
1117 after!(self, if_expression, arg);
1118 }
1119
1120 fn expression01(&mut self, arg: &Expression01) {
1122 before!(self, expression01, arg);
1123 self.expression02(&arg.expression02);
1124 for x in &arg.expression01_list {
1125 self.expression01_op(&x.expression01_op);
1126 self.expression02(&x.expression02);
1127 }
1128 after!(self, expression01, arg);
1129 }
1130
1131 fn expression01_op(&mut self, arg: &Expression01Op) {
1133 before!(self, expression01_op, arg);
1134 match arg {
1135 Expression01Op::Operator01(x) => self.operator01(&x.operator01),
1136 Expression01Op::Operator02(x) => self.operator02(&x.operator02),
1137 Expression01Op::Operator03(x) => self.operator03(&x.operator03),
1138 Expression01Op::Operator04(x) => self.operator04(&x.operator04),
1139 Expression01Op::Operator05(x) => self.operator05(&x.operator05),
1140 Expression01Op::Operator06(x) => self.operator06(&x.operator06),
1141 Expression01Op::Operator07(x) => self.operator07(&x.operator07),
1142 Expression01Op::Star(x) => self.star(&x.star),
1143 Expression01Op::Operator08(x) => self.operator08(&x.operator08),
1144 }
1145 after!(self, expression01_op, arg);
1146 }
1147
1148 fn expression02(&mut self, arg: &Expression02) {
1150 before!(self, expression02, arg);
1151 for x in &arg.expression02_list {
1152 self.expression02_op(&x.expression02_op);
1153 }
1154 self.factor(&arg.factor);
1155 if let Some(x) = &arg.expression02_opt {
1156 self.r#as(&x.r#as);
1157 self.casting_type(&x.casting_type);
1158 }
1159 after!(self, expression02, arg);
1160 }
1161
1162 fn expression02_op(&mut self, arg: &Expression02Op) {
1164 before!(self, expression02_op, arg);
1165 match arg {
1166 Expression02Op::UnaryOperator(x) => self.unary_operator(&x.unary_operator),
1167 Expression02Op::Operator06(x) => self.operator06(&x.operator06),
1168 Expression02Op::Operator05(x) => self.operator05(&x.operator05),
1169 Expression02Op::Operator03(x) => self.operator03(&x.operator03),
1170 Expression02Op::Operator04(x) => self.operator04(&x.operator04),
1171 }
1172 after!(self, expression02_op, arg);
1173 }
1174
1175 fn factor(&mut self, arg: &Factor) {
1177 before!(self, factor, arg);
1178 match arg {
1179 Factor::Number(x) => self.number(&x.number),
1180 Factor::BooleanLiteral(x) => self.boolean_literal(&x.boolean_literal),
1181 Factor::IdentifierFactor(x) => self.identifier_factor(&x.identifier_factor),
1182 Factor::LParenExpressionRParen(x) => {
1183 self.l_paren(&x.l_paren);
1184 self.expression(&x.expression);
1185 self.r_paren(&x.r_paren);
1186 }
1187 Factor::LBraceConcatenationListRBrace(x) => {
1188 self.l_brace(&x.l_brace);
1189 self.concatenation_list(&x.concatenation_list);
1190 self.r_brace(&x.r_brace);
1191 }
1192 Factor::QuoteLBraceArrayLiteralListRBrace(x) => {
1193 self.quote_l_brace(&x.quote_l_brace);
1194 self.array_literal_list(&x.array_literal_list);
1195 self.r_brace(&x.r_brace);
1196 }
1197 Factor::CaseExpression(x) => {
1198 self.case_expression(&x.case_expression);
1199 }
1200 Factor::SwitchExpression(x) => {
1201 self.switch_expression(&x.switch_expression);
1202 }
1203 Factor::StringLiteral(x) => {
1204 self.string_literal(&x.string_literal);
1205 }
1206 Factor::FactorGroup(x) => match &*x.factor_group {
1207 FactorGroup::Msb(x) => self.msb(&x.msb),
1208 FactorGroup::Lsb(x) => self.lsb(&x.lsb),
1209 },
1210 Factor::InsideExpression(x) => {
1211 self.inside_expression(&x.inside_expression);
1212 }
1213 Factor::OutsideExpression(x) => {
1214 self.outside_expression(&x.outside_expression);
1215 }
1216 Factor::TypeExpression(x) => {
1217 self.type_expression(&x.type_expression);
1218 }
1219 Factor::FactorTypeFactor(x) => {
1220 self.factor_type_factor(&x.factor_type_factor);
1221 }
1222 }
1223 after!(self, factor, arg);
1224 }
1225
1226 fn boolean_literal(&mut self, arg: &BooleanLiteral) {
1228 before!(self, boolean_literal, arg);
1229 match arg {
1230 BooleanLiteral::True(x) => self.r#true(&x.r#true),
1231 BooleanLiteral::False(x) => self.r#false(&x.r#false),
1232 }
1233 after!(self, boolean_literal, arg);
1234 }
1235
1236 fn identifier_factor(&mut self, arg: &IdentifierFactor) {
1238 before!(self, identifier_factor, arg);
1239 self.expression_identifier(&arg.expression_identifier);
1240 if let Some(ref x) = arg.identifier_factor_opt {
1241 match x.identifier_factor_opt_group.as_ref() {
1242 IdentifierFactorOptGroup::FunctionCall(x) => {
1243 self.function_call(&x.function_call);
1244 }
1245 IdentifierFactorOptGroup::StructConstructor(x) => {
1246 self.struct_constructor(&x.struct_constructor);
1247 }
1248 }
1249 }
1250 after!(self, identifier_factor, arg);
1251 }
1252
1253 fn factor_type_factor(&mut self, arg: &FactorTypeFactor) {
1255 before!(self, factor_type_factor, arg);
1256 for x in &arg.factor_type_factor_list {
1257 self.type_modifier(&x.type_modifier);
1258 }
1259 self.factor_type(&arg.factor_type);
1260 after!(self, factor_type_factor, arg);
1261 }
1262
1263 fn function_call(&mut self, arg: &FunctionCall) {
1265 before!(self, function_call, arg);
1266 self.l_paren(&arg.l_paren);
1267 if let Some(ref x) = arg.function_call_opt {
1268 self.argument_list(&x.argument_list);
1269 }
1270 self.r_paren(&arg.r_paren);
1271 after!(self, function_call, arg);
1272 }
1273
1274 fn argument_list(&mut self, arg: &ArgumentList) {
1276 before!(self, argument_list, arg);
1277 self.argument_item(&arg.argument_item);
1278 for x in &arg.argument_list_list {
1279 self.comma(&x.comma);
1280 self.argument_item(&x.argument_item);
1281 }
1282 if let Some(ref x) = arg.argument_list_opt {
1283 self.comma(&x.comma);
1284 }
1285 after!(self, argument_list, arg);
1286 }
1287
1288 fn argument_item(&mut self, arg: &ArgumentItem) {
1290 before!(self, argument_item, arg);
1291 self.argument_expression(&arg.argument_expression);
1292 if let Some(ref x) = arg.argument_item_opt {
1293 self.colon(&x.colon);
1294 self.expression(&x.expression);
1295 }
1296 after!(self, argument_item, arg);
1297 }
1298
1299 fn argument_expression(&mut self, arg: &ArgumentExpression) {
1301 before!(self, argument_expression, arg);
1302 self.expression(&arg.expression);
1303 after!(self, argument_expression, arg);
1304 }
1305
1306 fn struct_constructor(&mut self, arg: &StructConstructor) {
1308 before!(self, struct_constructor, arg);
1309 self.quote_l_brace(&arg.quote_l_brace);
1310 self.struct_constructor_list(&arg.struct_constructor_list);
1311 if let Some(ref x) = arg.struct_constructor_opt {
1312 self.dot_dot(&x.dot_dot);
1313 self.defaul(&x.defaul);
1314 self.l_paren(&x.l_paren);
1315 self.expression(&x.expression);
1316 self.r_paren(&x.r_paren);
1317 }
1318 self.r_brace(&arg.r_brace);
1319 after!(self, struct_constructor, arg);
1320 }
1321
1322 fn struct_constructor_list(&mut self, arg: &StructConstructorList) {
1324 before!(self, struct_constructor_list, arg);
1325 self.struct_constructor_item(&arg.struct_constructor_item);
1326 for x in &arg.struct_constructor_list_list {
1327 self.comma(&x.comma);
1328 self.struct_constructor_item(&x.struct_constructor_item);
1329 }
1330 if let Some(ref x) = arg.struct_constructor_list_opt {
1331 self.comma(&x.comma);
1332 }
1333 after!(self, struct_constructor_list, arg);
1334 }
1335
1336 fn struct_constructor_item(&mut self, arg: &StructConstructorItem) {
1338 before!(self, struct_constructor_item, arg);
1339 self.identifier(&arg.identifier);
1340 self.colon(&arg.colon);
1341 self.expression(&arg.expression);
1342 after!(self, struct_constructor_item, arg);
1343 }
1344
1345 fn concatenation_list(&mut self, arg: &ConcatenationList) {
1347 before!(self, concatenation_list, arg);
1348 self.concatenation_item(&arg.concatenation_item);
1349 for x in &arg.concatenation_list_list {
1350 self.comma(&x.comma);
1351 self.concatenation_item(&x.concatenation_item);
1352 }
1353 if let Some(ref x) = arg.concatenation_list_opt {
1354 self.comma(&x.comma);
1355 }
1356 after!(self, concatenation_list, arg);
1357 }
1358
1359 fn concatenation_item(&mut self, arg: &ConcatenationItem) {
1361 before!(self, concatenation_item, arg);
1362 self.expression(&arg.expression);
1363 if let Some(ref x) = arg.concatenation_item_opt {
1364 self.repeat(&x.repeat);
1365 self.expression(&x.expression);
1366 }
1367 after!(self, concatenation_item, arg);
1368 }
1369
1370 fn array_literal_list(&mut self, arg: &ArrayLiteralList) {
1372 before!(self, array_literal_list, arg);
1373 self.array_literal_item(&arg.array_literal_item);
1374 for x in &arg.array_literal_list_list {
1375 self.comma(&x.comma);
1376 self.array_literal_item(&x.array_literal_item);
1377 }
1378 if let Some(ref x) = arg.array_literal_list_opt {
1379 self.comma(&x.comma);
1380 }
1381 after!(self, array_literal_list, arg);
1382 }
1383
1384 fn array_literal_item(&mut self, arg: &ArrayLiteralItem) {
1386 before!(self, array_literal_item, arg);
1387 match &*arg.array_literal_item_group {
1388 ArrayLiteralItemGroup::ExpressionArrayLiteralItemOpt(x) => {
1389 self.expression(&x.expression);
1390 if let Some(ref x) = x.array_literal_item_opt {
1391 self.repeat(&x.repeat);
1392 self.expression(&x.expression);
1393 }
1394 }
1395 ArrayLiteralItemGroup::DefaulColonExpression(x) => {
1396 self.defaul(&x.defaul);
1397 self.colon(&x.colon);
1398 self.expression(&x.expression);
1399 }
1400 }
1401 after!(self, array_literal_item, arg);
1402 }
1403
1404 fn case_expression(&mut self, arg: &CaseExpression) {
1406 before!(self, case_expression, arg);
1407 self.case(&arg.case);
1408 self.expression(&arg.expression);
1409 self.l_brace(&arg.l_brace);
1410 self.case_condition(&arg.case_condition);
1411 self.colon(&arg.colon);
1412 self.expression(&arg.expression0);
1413 self.comma(&arg.comma);
1414 for x in &arg.case_expression_list {
1415 self.case_condition(&x.case_condition);
1416 self.colon(&x.colon);
1417 self.expression(&x.expression);
1418 self.comma(&x.comma);
1419 }
1420 self.defaul(&arg.defaul);
1421 self.colon(&arg.colon0);
1422 self.expression(&arg.expression1);
1423 if let Some(ref x) = arg.case_expression_opt {
1424 self.comma(&x.comma);
1425 }
1426 self.r_brace(&arg.r_brace);
1427 after!(self, case_expression, arg);
1428 }
1429
1430 fn switch_expression(&mut self, arg: &SwitchExpression) {
1432 before!(self, switch_expression, arg);
1433 self.switch(&arg.switch);
1434 self.l_brace(&arg.l_brace);
1435 self.switch_condition(&arg.switch_condition);
1436 self.colon(&arg.colon);
1437 self.expression(&arg.expression);
1438 self.comma(&arg.comma);
1439 for x in &arg.switch_expression_list {
1440 self.switch_condition(&x.switch_condition);
1441 self.colon(&x.colon);
1442 self.expression(&x.expression);
1443 self.comma(&x.comma);
1444 }
1445 self.defaul(&arg.defaul);
1446 self.colon(&arg.colon0);
1447 self.expression(&arg.expression0);
1448 if let Some(ref x) = arg.switch_expression_opt {
1449 self.comma(&x.comma);
1450 }
1451 self.r_brace(&arg.r_brace);
1452 after!(self, switch_expression, arg);
1453 }
1454
1455 fn type_expression(&mut self, arg: &TypeExpression) {
1457 before!(self, type_expression, arg);
1458 self.r#type(&arg.r#type);
1459 self.l_paren(&arg.l_paren);
1460 self.expression(&arg.expression);
1461 self.r_paren(&arg.r_paren);
1462 after!(self, type_expression, arg);
1463 }
1464
1465 fn inside_expression(&mut self, arg: &InsideExpression) {
1467 before!(self, inside_expression, arg);
1468 self.inside(&arg.inside);
1469 self.expression(&arg.expression);
1470 self.l_brace(&arg.l_brace);
1471 self.range_list(&arg.range_list);
1472 self.r_brace(&arg.r_brace);
1473 after!(self, inside_expression, arg);
1474 }
1475
1476 fn outside_expression(&mut self, arg: &OutsideExpression) {
1478 before!(self, outside_expression, arg);
1479 self.outside(&arg.outside);
1480 self.expression(&arg.expression);
1481 self.l_brace(&arg.l_brace);
1482 self.range_list(&arg.range_list);
1483 self.r_brace(&arg.r_brace);
1484 after!(self, outside_expression, arg);
1485 }
1486
1487 fn range_list(&mut self, arg: &RangeList) {
1489 before!(self, range_list, arg);
1490 self.range_item(&arg.range_item);
1491 for x in &arg.range_list_list {
1492 self.comma(&x.comma);
1493 self.range_item(&x.range_item);
1494 }
1495 if let Some(ref x) = arg.range_list_opt {
1496 self.comma(&x.comma);
1497 }
1498 after!(self, range_list, arg);
1499 }
1500
1501 fn range_item(&mut self, arg: &RangeItem) {
1503 before!(self, range_item, arg);
1504 self.range(&arg.range);
1505 after!(self, range_item, arg);
1506 }
1507
1508 fn select(&mut self, arg: &Select) {
1510 before!(self, select, arg);
1511 self.l_bracket(&arg.l_bracket);
1512 self.expression(&arg.expression);
1513 if let Some(ref x) = arg.select_opt {
1514 self.select_operator(&x.select_operator);
1515 self.expression(&x.expression);
1516 }
1517 self.r_bracket(&arg.r_bracket);
1518 after!(self, select, arg);
1519 }
1520
1521 fn select_operator(&mut self, arg: &SelectOperator) {
1523 before!(self, select_operator, arg);
1524 match arg {
1525 SelectOperator::Colon(x) => self.colon(&x.colon),
1526 SelectOperator::PlusColon(x) => self.plus_colon(&x.plus_colon),
1527 SelectOperator::MinusColon(x) => self.minus_colon(&x.minus_colon),
1528 SelectOperator::Step(x) => self.step(&x.step),
1529 }
1530 after!(self, select_operator, arg);
1531 }
1532
1533 fn width(&mut self, arg: &Width) {
1535 before!(self, width, arg);
1536 self.l_angle(&arg.l_angle);
1537 self.expression(&arg.expression);
1538 for x in &arg.width_list {
1539 self.comma(&x.comma);
1540 self.expression(&x.expression);
1541 }
1542 self.r_angle(&arg.r_angle);
1543 after!(self, width, arg);
1544 }
1545
1546 fn array(&mut self, arg: &Array) {
1548 before!(self, array, arg);
1549 self.l_bracket(&arg.l_bracket);
1550 self.expression(&arg.expression);
1551 for x in &arg.array_list {
1552 self.comma(&x.comma);
1553 self.expression(&x.expression);
1554 }
1555 self.r_bracket(&arg.r_bracket);
1556 after!(self, array, arg);
1557 }
1558
1559 fn range(&mut self, arg: &Range) {
1561 before!(self, range, arg);
1562 self.expression(&arg.expression);
1563 if let Some(ref x) = arg.range_opt {
1564 self.range_operator(&x.range_operator);
1565 self.expression(&x.expression);
1566 }
1567 after!(self, range, arg);
1568 }
1569
1570 fn range_operator(&mut self, arg: &RangeOperator) {
1572 before!(self, range_operator, arg);
1573 match arg {
1574 RangeOperator::DotDot(x) => self.dot_dot(&x.dot_dot),
1575 RangeOperator::DotDotEqu(x) => self.dot_dot_equ(&x.dot_dot_equ),
1576 }
1577 after!(self, range_operator, arg);
1578 }
1579
1580 fn fixed_type(&mut self, arg: &FixedType) {
1582 before!(self, fixed_type, arg);
1583 match arg {
1584 FixedType::P8(x) => self.p8(&x.p8),
1585 FixedType::P16(x) => self.p16(&x.p16),
1586 FixedType::P32(x) => self.p32(&x.p32),
1587 FixedType::P64(x) => self.p64(&x.p64),
1588 FixedType::U8(x) => self.u8(&x.u8),
1589 FixedType::U16(x) => self.u16(&x.u16),
1590 FixedType::U32(x) => self.u32(&x.u32),
1591 FixedType::U64(x) => self.u64(&x.u64),
1592 FixedType::I8(x) => self.i8(&x.i8),
1593 FixedType::I16(x) => self.i16(&x.i16),
1594 FixedType::I32(x) => self.i32(&x.i32),
1595 FixedType::I64(x) => self.i64(&x.i64),
1596 FixedType::F32(x) => self.f32(&x.f32),
1597 FixedType::F64(x) => self.f64(&x.f64),
1598 FixedType::BBool(x) => self.b_bool(&x.b_bool),
1599 FixedType::LBool(x) => self.l_bool(&x.l_bool),
1600 FixedType::Strin(x) => self.strin(&x.strin),
1601 };
1602 after!(self, fixed_type, arg);
1603 }
1604
1605 fn variable_type(&mut self, arg: &VariableType) {
1607 before!(self, variable_type, arg);
1608 match arg {
1609 VariableType::Clock(x) => self.clock(&x.clock),
1610 VariableType::ClockPosedge(x) => self.clock_posedge(&x.clock_posedge),
1611 VariableType::ClockNegedge(x) => self.clock_negedge(&x.clock_negedge),
1612 VariableType::Reset(x) => self.reset(&x.reset),
1613 VariableType::ResetAsyncHigh(x) => self.reset_async_high(&x.reset_async_high),
1614 VariableType::ResetAsyncLow(x) => self.reset_async_low(&x.reset_async_low),
1615 VariableType::ResetSyncHigh(x) => self.reset_sync_high(&x.reset_sync_high),
1616 VariableType::ResetSyncLow(x) => self.reset_sync_low(&x.reset_sync_low),
1617 VariableType::Logic(x) => self.logic(&x.logic),
1618 VariableType::Bit(x) => self.bit(&x.bit),
1619 };
1620 after!(self, variable_type, arg);
1621 }
1622
1623 fn user_defined_type(&mut self, arg: &UserDefinedType) {
1625 before!(self, user_defined_type, arg);
1626 self.scoped_identifier(&arg.scoped_identifier);
1627 after!(self, user_defined_type, arg);
1628 }
1629
1630 fn type_modifier(&mut self, arg: &TypeModifier) {
1632 before!(self, type_modifier, arg);
1633 match arg {
1634 TypeModifier::Tri(x) => self.tri(&x.tri),
1635 TypeModifier::Signed(x) => self.signed(&x.signed),
1636 TypeModifier::Defaul(x) => self.defaul(&x.defaul),
1637 }
1638 after!(self, type_modifier, arg);
1639 }
1640
1641 fn factor_type(&mut self, arg: &FactorType) {
1643 before!(self, factor_type, arg);
1644 match arg.factor_type_group.as_ref() {
1645 FactorTypeGroup::VariableTypeFactorTypeOpt(x) => {
1646 self.variable_type(&x.variable_type);
1647 if let Some(ref x) = x.factor_type_opt {
1648 self.width(&x.width);
1649 }
1650 }
1651 FactorTypeGroup::FixedType(x) => self.fixed_type(&x.fixed_type),
1652 }
1653 after!(self, factor_type, arg);
1654 }
1655
1656 fn scalar_type(&mut self, arg: &ScalarType) {
1658 before!(self, scalar_type, arg);
1659 for x in &arg.scalar_type_list {
1660 self.type_modifier(&x.type_modifier);
1661 }
1662 match &*arg.scalar_type_group {
1663 ScalarTypeGroup::UserDefinedTypeScalarTypeOpt(x) => {
1664 self.user_defined_type(&x.user_defined_type);
1665 if let Some(ref x) = x.scalar_type_opt {
1666 self.width(&x.width);
1667 }
1668 }
1669 ScalarTypeGroup::FactorType(x) => {
1670 self.factor_type(&x.factor_type);
1671 }
1672 }
1673 after!(self, scalar_type, arg);
1674 }
1675
1676 fn array_type(&mut self, arg: &ArrayType) {
1678 before!(self, array_type, arg);
1679 self.scalar_type(&arg.scalar_type);
1680 if let Some(ref x) = arg.array_type_opt {
1681 self.array(&x.array);
1682 }
1683 after!(self, array_type, arg);
1684 }
1685
1686 fn casting_type(&mut self, arg: &CastingType) {
1688 before!(self, casting_type, arg);
1689 match arg {
1690 CastingType::P8(x) => self.p8(&x.p8),
1691 CastingType::P16(x) => self.p16(&x.p16),
1692 CastingType::P32(x) => self.p32(&x.p32),
1693 CastingType::P64(x) => self.p64(&x.p64),
1694 CastingType::U8(x) => self.u8(&x.u8),
1695 CastingType::U16(x) => self.u16(&x.u16),
1696 CastingType::U32(x) => self.u32(&x.u32),
1697 CastingType::U64(x) => self.u64(&x.u64),
1698 CastingType::I8(x) => self.i8(&x.i8),
1699 CastingType::I16(x) => self.i16(&x.i16),
1700 CastingType::I32(x) => self.i32(&x.i32),
1701 CastingType::I64(x) => self.i64(&x.i64),
1702 CastingType::F32(x) => self.f32(&x.f32),
1703 CastingType::F64(x) => self.f64(&x.f64),
1704 CastingType::BBool(x) => self.b_bool(&x.b_bool),
1705 CastingType::LBool(x) => self.l_bool(&x.l_bool),
1706 CastingType::Clock(x) => self.clock(&x.clock),
1707 CastingType::ClockPosedge(x) => self.clock_posedge(&x.clock_posedge),
1708 CastingType::ClockNegedge(x) => self.clock_negedge(&x.clock_negedge),
1709 CastingType::Reset(x) => self.reset(&x.reset),
1710 CastingType::ResetAsyncHigh(x) => self.reset_async_high(&x.reset_async_high),
1711 CastingType::ResetAsyncLow(x) => self.reset_async_low(&x.reset_async_low),
1712 CastingType::ResetSyncHigh(x) => self.reset_sync_high(&x.reset_sync_high),
1713 CastingType::ResetSyncLow(x) => self.reset_sync_low(&x.reset_sync_low),
1714 CastingType::UserDefinedType(x) => self.user_defined_type(&x.user_defined_type),
1715 CastingType::Based(x) => self.based(&x.based),
1716 CastingType::BaseLess(x) => self.base_less(&x.base_less),
1717 }
1718 after!(self, casting_type, arg);
1719 }
1720
1721 fn clock_domain(&mut self, arg: &ClockDomain) {
1723 before!(self, clock_domain, arg);
1724 self.quote(&arg.quote);
1725 self.identifier(&arg.identifier);
1726 after!(self, clock_domain, arg);
1727 }
1728
1729 fn statement_block(&mut self, arg: &StatementBlock) {
1731 before!(self, statement_block, arg);
1732 self.l_brace(&arg.l_brace);
1733 for x in &arg.statement_block_list {
1734 self.statement_block_group(&x.statement_block_group);
1735 }
1736 self.r_brace(&arg.r_brace);
1737 after!(self, statement_block, arg);
1738 }
1739
1740 fn statement_block_group(&mut self, arg: &StatementBlockGroup) {
1742 before!(self, statement_block_group, arg);
1743 for x in &arg.statement_block_group_list {
1744 self.attribute(&x.attribute);
1745 }
1746 match arg.statement_block_group_group.as_ref() {
1747 StatementBlockGroupGroup::BlockLBraceStatementBlockGroupGroupListRBrace(x) => {
1748 self.block(&x.block);
1749 self.l_brace(&x.l_brace);
1750 for x in &x.statement_block_group_group_list {
1751 self.statement_block_group(&x.statement_block_group);
1752 }
1753 self.r_brace(&x.r_brace);
1754 }
1755 StatementBlockGroupGroup::StatementBlockItem(x) => {
1756 self.statement_block_item(&x.statement_block_item);
1757 }
1758 }
1759 after!(self, statement_block_group, arg);
1760 }
1761
1762 fn statement_block_item(&mut self, arg: &StatementBlockItem) {
1764 before!(self, statement_block_item, arg);
1765 match arg {
1766 StatementBlockItem::VarDeclaration(x) => self.var_declaration(&x.var_declaration),
1767 StatementBlockItem::LetStatement(x) => self.let_statement(&x.let_statement),
1768 StatementBlockItem::Statement(x) => self.statement(&x.statement),
1769 StatementBlockItem::ConstDeclaration(x) => self.const_declaration(&x.const_declaration),
1770 StatementBlockItem::GenDeclaration(x) => self.gen_declaration(&x.gen_declaration),
1771 StatementBlockItem::ConcatenationAssignment(x) => {
1772 self.concatenation_assignment(&x.concatenation_assignment)
1773 }
1774 }
1775 after!(self, statement_block_item, arg);
1776 }
1777
1778 fn statement(&mut self, arg: &Statement) {
1780 before!(self, statement, arg);
1781 match arg {
1782 Statement::IdentifierStatement(x) => self.identifier_statement(&x.identifier_statement),
1783 Statement::IfStatement(x) => self.if_statement(&x.if_statement),
1784 Statement::IfResetStatement(x) => self.if_reset_statement(&x.if_reset_statement),
1785 Statement::ReturnStatement(x) => self.return_statement(&x.return_statement),
1786 Statement::BreakStatement(x) => self.break_statement(&x.break_statement),
1787 Statement::ForStatement(x) => self.for_statement(&x.for_statement),
1788 Statement::CaseStatement(x) => self.case_statement(&x.case_statement),
1789 Statement::SwitchStatement(x) => self.switch_statement(&x.switch_statement),
1790 };
1791 after!(self, statement, arg);
1792 }
1793
1794 fn let_statement(&mut self, arg: &LetStatement) {
1796 before!(self, let_statement, arg);
1797 self.r#let(&arg.r#let);
1798 self.identifier(&arg.identifier);
1799 if let Some(ref x) = arg.let_statement_opt {
1800 self.colon(&x.colon);
1801 if let Some(ref y) = x.let_statement_opt0 {
1802 self.clock_domain(&y.clock_domain);
1803 }
1804 self.array_type(&x.array_type);
1805 }
1806 self.equ(&arg.equ);
1807 self.expression(&arg.expression);
1808 self.semicolon(&arg.semicolon);
1809 after!(self, let_statement, arg);
1810 }
1811
1812 fn identifier_statement(&mut self, arg: &IdentifierStatement) {
1814 before!(self, identifier_statement, arg);
1815 self.expression_identifier(&arg.expression_identifier);
1816 match &*arg.identifier_statement_group {
1817 IdentifierStatementGroup::FunctionCall(x) => {
1818 self.function_call(&x.function_call);
1819 }
1820 IdentifierStatementGroup::Assignment(x) => {
1821 self.assignment(&x.assignment);
1822 }
1823 }
1824 self.semicolon(&arg.semicolon);
1825 after!(self, identifier_statement, arg);
1826 }
1827
1828 fn concatenation_assignment(&mut self, arg: &ConcatenationAssignment) {
1830 before!(self, concatenation_assignment, arg);
1831 self.l_brace(&arg.l_brace);
1832 self.assign_concatenation_list(&arg.assign_concatenation_list);
1833 self.r_brace(&arg.r_brace);
1834 self.equ(&arg.equ);
1835 self.expression(&arg.expression);
1836 self.semicolon(&arg.semicolon);
1837 after!(self, concatenation_assignment, arg);
1838 }
1839
1840 fn assignment(&mut self, arg: &Assignment) {
1842 before!(self, assignment, arg);
1843 match &*arg.assignment_group {
1844 AssignmentGroup::Equ(x) => self.equ(&x.equ),
1845 AssignmentGroup::AssignmentOperator(x) => {
1846 self.assignment_operator(&x.assignment_operator)
1847 }
1848 AssignmentGroup::DiamondOperator(x) => {
1849 self.diamond_operator(&x.diamond_operator);
1850 }
1851 }
1852 self.expression(&arg.expression);
1853 after!(self, assignment, arg);
1854 }
1855
1856 fn if_statement(&mut self, arg: &IfStatement) {
1858 before!(self, if_statement, arg);
1859 self.r#if(&arg.r#if);
1860 self.expression(&arg.expression);
1861 self.statement_block(&arg.statement_block);
1862 for x in &arg.if_statement_list {
1863 self.r#else(&x.r#else);
1864 self.r#if(&x.r#if);
1865 self.expression(&x.expression);
1866 self.statement_block(&x.statement_block);
1867 }
1868 if let Some(ref x) = arg.if_statement_opt {
1869 self.r#else(&x.r#else);
1870 self.statement_block(&x.statement_block);
1871 }
1872 after!(self, if_statement, arg);
1873 }
1874
1875 fn if_reset_statement(&mut self, arg: &IfResetStatement) {
1877 before!(self, if_reset_statement, arg);
1878 self.if_reset(&arg.if_reset);
1879 self.statement_block(&arg.statement_block);
1880 for x in &arg.if_reset_statement_list {
1881 self.r#else(&x.r#else);
1882 self.r#if(&x.r#if);
1883 self.expression(&x.expression);
1884 self.statement_block(&x.statement_block);
1885 }
1886 if let Some(ref x) = arg.if_reset_statement_opt {
1887 self.r#else(&x.r#else);
1888 self.statement_block(&x.statement_block);
1889 }
1890 after!(self, if_reset_statement, arg);
1891 }
1892
1893 fn return_statement(&mut self, arg: &ReturnStatement) {
1895 before!(self, return_statement, arg);
1896 self.r#return(&arg.r#return);
1897 self.expression(&arg.expression);
1898 self.semicolon(&arg.semicolon);
1899 after!(self, return_statement, arg);
1900 }
1901
1902 fn break_statement(&mut self, arg: &BreakStatement) {
1904 before!(self, break_statement, arg);
1905 self.r#break(&arg.r#break);
1906 self.semicolon(&arg.semicolon);
1907 after!(self, break_statement, arg);
1908 }
1909
1910 fn for_statement(&mut self, arg: &ForStatement) {
1912 before!(self, for_statement, arg);
1913 self.r#for(&arg.r#for);
1914 self.identifier(&arg.identifier);
1915 self.r#in(&arg.r#in);
1916 if let Some(ref x) = arg.for_statement_opt {
1917 self.rev(&x.rev);
1918 }
1919 self.range(&arg.range);
1920 if let Some(ref x) = arg.for_statement_opt0 {
1921 self.step(&x.step);
1922 self.assignment_operator(&x.assignment_operator);
1923 self.expression(&x.expression);
1924 }
1925 self.statement_block(&arg.statement_block);
1926 after!(self, for_statement, arg);
1927 }
1928
1929 fn case_statement(&mut self, arg: &CaseStatement) {
1931 before!(self, case_statement, arg);
1932 self.case(&arg.case);
1933 self.expression(&arg.expression);
1934 self.l_brace(&arg.l_brace);
1935 for x in &arg.case_statement_list {
1936 self.case_item(&x.case_item);
1937 }
1938 self.r_brace(&arg.r_brace);
1939 after!(self, case_statement, arg);
1940 }
1941
1942 fn case_item(&mut self, arg: &CaseItem) {
1944 before!(self, case_item, arg);
1945 match &*arg.case_item_group {
1946 CaseItemGroup::CaseCondition(x) => self.case_condition(&x.case_condition),
1947 CaseItemGroup::Defaul(x) => self.defaul(&x.defaul),
1948 }
1949 self.colon(&arg.colon);
1950 match &*arg.case_item_group0 {
1951 CaseItemGroup0::Statement(x) => self.statement(&x.statement),
1952 CaseItemGroup0::StatementBlock(x) => self.statement_block(&x.statement_block),
1953 }
1954 after!(self, case_item, arg);
1955 }
1956
1957 fn case_condition(&mut self, arg: &CaseCondition) {
1959 before!(self, case_condition, arg);
1960 self.range_item(&arg.range_item);
1961 for x in &arg.case_condition_list {
1962 self.comma(&x.comma);
1963 self.range_item(&x.range_item);
1964 }
1965 after!(self, case_condition, arg);
1966 }
1967
1968 fn switch_statement(&mut self, arg: &SwitchStatement) {
1970 before!(self, switch_statement, arg);
1971 self.switch(&arg.switch);
1972 self.l_brace(&arg.l_brace);
1973 for x in &arg.switch_statement_list {
1974 self.switch_item(&x.switch_item);
1975 }
1976 self.r_brace(&arg.r_brace);
1977 after!(self, switch_statement, arg);
1978 }
1979
1980 fn switch_item(&mut self, arg: &SwitchItem) {
1982 before!(self, switch_item, arg);
1983 match &*arg.switch_item_group {
1984 SwitchItemGroup::SwitchCondition(x) => self.switch_condition(&x.switch_condition),
1985 SwitchItemGroup::Defaul(x) => self.defaul(&x.defaul),
1986 }
1987 self.colon(&arg.colon);
1988 match &*arg.switch_item_group0 {
1989 SwitchItemGroup0::Statement(x) => self.statement(&x.statement),
1990 SwitchItemGroup0::StatementBlock(x) => self.statement_block(&x.statement_block),
1991 }
1992 after!(self, switch_item, arg);
1993 }
1994
1995 fn switch_condition(&mut self, arg: &SwitchCondition) {
1997 before!(self, switch_condition, arg);
1998 self.expression(&arg.expression);
1999 for x in &arg.switch_condition_list {
2000 self.comma(&x.comma);
2001 self.expression(&x.expression);
2002 }
2003 after!(self, switch_condition, arg);
2004 }
2005
2006 fn attribute(&mut self, arg: &Attribute) {
2008 before!(self, attribute, arg);
2009 self.hash_l_bracket(&arg.hash_l_bracket);
2010 self.identifier(&arg.identifier);
2011 if let Some(ref x) = arg.attribute_opt {
2012 self.l_paren(&x.l_paren);
2013 self.attribute_list(&x.attribute_list);
2014 self.r_paren(&x.r_paren);
2015 }
2016 self.r_bracket(&arg.r_bracket);
2017 after!(self, attribute, arg);
2018 }
2019
2020 fn attribute_list(&mut self, arg: &AttributeList) {
2022 before!(self, attribute_list, arg);
2023 self.attribute_item(&arg.attribute_item);
2024 for x in &arg.attribute_list_list {
2025 self.comma(&x.comma);
2026 self.attribute_item(&x.attribute_item);
2027 }
2028 if let Some(ref x) = arg.attribute_list_opt {
2029 self.comma(&x.comma);
2030 }
2031 after!(self, attribute_list, arg);
2032 }
2033
2034 fn attribute_item(&mut self, arg: &AttributeItem) {
2036 before!(self, attribute_item, arg);
2037 match arg {
2038 AttributeItem::Identifier(x) => self.identifier(&x.identifier),
2039 AttributeItem::StringLiteral(x) => self.string_literal(&x.string_literal),
2040 }
2041 after!(self, attribute_item, arg);
2042 }
2043
2044 fn let_declaration(&mut self, arg: &LetDeclaration) {
2046 before!(self, let_declaration, arg);
2047 self.r#let(&arg.r#let);
2048 self.identifier(&arg.identifier);
2049 if let Some(ref x) = arg.let_declaration_opt {
2050 self.colon(&x.colon);
2051 if let Some(ref y) = x.let_declaration_opt0 {
2052 self.clock_domain(&y.clock_domain);
2053 }
2054 self.array_type(&x.array_type);
2055 }
2056 self.equ(&arg.equ);
2057 self.expression(&arg.expression);
2058 self.semicolon(&arg.semicolon);
2059 after!(self, let_declaration, arg);
2060 }
2061
2062 fn var_declaration(&mut self, arg: &VarDeclaration) {
2064 before!(self, var_declaration, arg);
2065 self.var(&arg.var);
2066 self.identifier(&arg.identifier);
2067 if let Some(ref x) = arg.var_declaration_opt {
2068 self.colon(&x.colon);
2069 if let Some(ref y) = x.var_declaration_opt0 {
2070 self.clock_domain(&y.clock_domain);
2071 }
2072 self.array_type(&x.array_type);
2073 }
2074 self.semicolon(&arg.semicolon);
2075 after!(self, var_declaration, arg);
2076 }
2077
2078 fn const_declaration(&mut self, arg: &ConstDeclaration) {
2080 before!(self, const_declaration, arg);
2081 self.r#const(&arg.r#const);
2082 self.identifier(&arg.identifier);
2083 if let Some(ref x) = arg.const_declaration_opt {
2084 self.colon(&x.colon);
2085 match &*x.const_declaration_opt_group {
2086 ConstDeclarationOptGroup::ArrayType(x) => {
2087 self.array_type(&x.array_type);
2088 }
2089 ConstDeclarationOptGroup::Type(x) => {
2090 self.r#type(&x.r#type);
2091 }
2092 }
2093 }
2094 self.equ(&arg.equ);
2095 self.expression(&arg.expression);
2096 self.semicolon(&arg.semicolon);
2097 after!(self, const_declaration, arg);
2098 }
2099
2100 fn gen_declaration(&mut self, arg: &GenDeclaration) {
2102 before!(self, gen_declaration, arg);
2103 self.r#gen(&arg.r#gen);
2104 self.identifier(&arg.identifier);
2105 self.colon(&arg.colon);
2106 match &*arg.gen_declaration_group {
2107 GenDeclarationGroup::GenericProtoBound(x) => {
2108 self.generic_proto_bound(&x.generic_proto_bound);
2109 }
2110 GenDeclarationGroup::Type(x) => {
2111 self.r#type(&x.r#type);
2112 }
2113 }
2114 self.equ(&arg.equ);
2115 self.expression(&arg.expression);
2116 self.semicolon(&arg.semicolon);
2117 after!(self, gen_declaration, arg);
2118 }
2119
2120 fn type_def_declaration(&mut self, arg: &TypeDefDeclaration) {
2122 before!(self, type_def_declaration, arg);
2123 self.r#type(&arg.r#type);
2124 self.identifier(&arg.identifier);
2125 self.equ(&arg.equ);
2126 self.array_type(&arg.array_type);
2127 self.semicolon(&arg.semicolon);
2128 after!(self, type_def_declaration, arg);
2129 }
2130
2131 fn always_ff_declaration(&mut self, arg: &AlwaysFfDeclaration) {
2133 before!(self, always_ff_declaration, arg);
2134 self.always_ff(&arg.always_ff);
2135 if let Some(ref x) = arg.always_ff_declaration_opt {
2136 self.always_ff_event_list(&x.always_ff_event_list);
2137 }
2138 self.statement_block(&arg.statement_block);
2139 after!(self, always_ff_declaration, arg);
2140 }
2141
2142 fn always_ff_event_list(&mut self, arg: &AlwaysFfEventList) {
2144 before!(self, always_ff_event_list, arg);
2145 self.l_paren(&arg.l_paren);
2146 self.always_ff_clock(&arg.always_ff_clock);
2147 if let Some(ref x) = arg.always_ff_event_list_opt {
2148 self.comma(&x.comma);
2149 self.always_ff_reset(&x.always_ff_reset);
2150 }
2151 self.r_paren(&arg.r_paren);
2152 after!(self, always_ff_event_list, arg);
2153 }
2154
2155 fn always_ff_clock(&mut self, arg: &AlwaysFfClock) {
2157 before!(self, always_ff_clock, arg);
2158 self.hierarchical_identifier(&arg.hierarchical_identifier);
2159 after!(self, always_ff_clock, arg);
2160 }
2161
2162 fn always_ff_reset(&mut self, arg: &AlwaysFfReset) {
2164 before!(self, always_ff_reset, arg);
2165 self.hierarchical_identifier(&arg.hierarchical_identifier);
2166 after!(self, always_ff_reset, arg);
2167 }
2168
2169 fn always_comb_declaration(&mut self, arg: &AlwaysCombDeclaration) {
2171 before!(self, always_comb_declaration, arg);
2172 self.always_comb(&arg.always_comb);
2173 self.statement_block(&arg.statement_block);
2174 after!(self, always_comb_declaration, arg);
2175 }
2176
2177 fn assign_declaration(&mut self, arg: &AssignDeclaration) {
2179 before!(self, assign_declaration, arg);
2180 self.assign(&arg.assign);
2181 self.assign_destination(&arg.assign_destination);
2182 self.equ(&arg.equ);
2183 self.expression(&arg.expression);
2184 self.semicolon(&arg.semicolon);
2185 after!(self, assign_declaration, arg);
2186 }
2187
2188 fn assign_destination(&mut self, arg: &AssignDestination) {
2190 before!(self, assign_destination, arg);
2191 match arg {
2192 AssignDestination::HierarchicalIdentifier(x) => {
2193 self.hierarchical_identifier(&x.hierarchical_identifier);
2194 }
2195 AssignDestination::LBraceAssignConcatenationListRBrace(x) => {
2196 self.l_brace(&x.l_brace);
2197 self.assign_concatenation_list(&x.assign_concatenation_list);
2198 self.r_brace(&x.r_brace);
2199 }
2200 }
2201 after!(self, assign_destination, arg);
2202 }
2203
2204 fn assign_concatenation_list(&mut self, arg: &AssignConcatenationList) {
2206 before!(self, assign_concatenation_list, arg);
2207 self.assign_concatenation_item(&arg.assign_concatenation_item);
2208 for x in &arg.assign_concatenation_list_list {
2209 self.comma(&x.comma);
2210 self.assign_concatenation_item(&x.assign_concatenation_item);
2211 }
2212 if let Some(ref x) = arg.assign_concatenation_list_opt {
2213 self.comma(&x.comma);
2214 }
2215 after!(self, assign_concatenation_list, arg);
2216 }
2217
2218 fn assign_concatenation_item(&mut self, arg: &AssignConcatenationItem) {
2220 before!(self, assign_concatenation_item, arg);
2221 self.hierarchical_identifier(&arg.hierarchical_identifier);
2222 after!(self, assign_concatenation_item, arg);
2223 }
2224
2225 fn connect_declaration(&mut self, arg: &ConnectDeclaration) {
2227 before!(self, connect_declaration, arg);
2228 self.connect(&arg.connect);
2229 self.hierarchical_identifier(&arg.hierarchical_identifier);
2230 self.diamond_operator(&arg.diamond_operator);
2231 self.expression(&arg.expression);
2232 self.semicolon(&arg.semicolon);
2233 after!(self, connect_declaration, arg);
2234 }
2235
2236 fn modport_declaration(&mut self, arg: &ModportDeclaration) {
2238 before!(self, modport_declaration, arg);
2239 self.modport(&arg.modport);
2240 self.identifier(&arg.identifier);
2241 self.l_brace(&arg.l_brace);
2242 if let Some(ref x) = arg.modport_declaration_opt {
2243 self.modport_list(&x.modport_list);
2244 }
2245 if let Some(ref x) = arg.modport_declaration_opt0 {
2246 self.dot_dot(&x.dot_dot);
2247 self.modport_default(&x.modport_default);
2248 }
2249 self.r_brace(&arg.r_brace);
2250 after!(self, modport_declaration, arg);
2251 }
2252
2253 fn modport_list(&mut self, arg: &ModportList) {
2255 before!(self, modport_list, arg);
2256 self.modport_group(&arg.modport_group);
2257 for x in &arg.modport_list_list {
2258 self.comma(&x.comma);
2259 self.modport_group(&x.modport_group);
2260 }
2261 if let Some(ref x) = arg.modport_list_opt {
2262 self.comma(&x.comma);
2263 }
2264 after!(self, modport_list, arg);
2265 }
2266
2267 fn modport_group(&mut self, arg: &ModportGroup) {
2269 before!(self, modport_group, arg);
2270 for x in &arg.modport_group_list {
2271 self.attribute(&x.attribute);
2272 }
2273 match &*arg.modport_group_group {
2274 ModportGroupGroup::LBraceModportListRBrace(x) => {
2275 self.l_brace(&x.l_brace);
2276 self.modport_list(&x.modport_list);
2277 self.r_brace(&x.r_brace);
2278 }
2279 ModportGroupGroup::ModportItem(x) => self.modport_item(&x.modport_item),
2280 }
2281 after!(self, modport_group, arg);
2282 }
2283
2284 fn modport_item(&mut self, arg: &ModportItem) {
2286 before!(self, modport_item, arg);
2287 self.identifier(&arg.identifier);
2288 self.colon(&arg.colon);
2289 self.direction(&arg.direction);
2290 after!(self, modport_item, arg);
2291 }
2292
2293 fn modport_default(&mut self, arg: &ModportDefault) {
2295 before!(self, modport_default, arg);
2296 match arg {
2297 ModportDefault::Input(x) => self.input(&x.input),
2298 ModportDefault::Output(x) => self.output(&x.output),
2299 ModportDefault::SameLParenModportDefaultListRParen(x) => {
2300 self.same(&x.same);
2301 self.l_paren(&x.l_paren);
2302 self.modport_default_list(&x.modport_default_list);
2303 self.r_paren(&x.r_paren);
2304 }
2305 ModportDefault::ConverseLParenModportDefaultListRParen(x) => {
2306 self.converse(&x.converse);
2307 self.l_paren(&x.l_paren);
2308 self.modport_default_list(&x.modport_default_list);
2309 self.r_paren(&x.r_paren);
2310 }
2311 }
2312 after!(self, modport_default, arg);
2313 }
2314
2315 fn modport_default_list(&mut self, arg: &ModportDefaultList) {
2317 before!(self, modport_default_list, arg);
2318 self.identifier(&arg.identifier);
2319 for x in &arg.modport_default_list_list {
2320 self.comma(&x.comma);
2321 self.identifier(&x.identifier);
2322 }
2323 if let Some(ref x) = arg.modport_default_list_opt {
2324 self.comma(&x.comma);
2325 }
2326 after!(self, modport_default_list, arg);
2327 }
2328
2329 fn enum_declaration(&mut self, arg: &EnumDeclaration) {
2331 before!(self, enum_declaration, arg);
2332 self.r#enum(&arg.r#enum);
2333 self.identifier(&arg.identifier);
2334 if let Some(ref x) = arg.enum_declaration_opt {
2335 self.colon(&x.colon);
2336 self.scalar_type(&x.scalar_type);
2337 }
2338 self.l_brace(&arg.l_brace);
2339 self.enum_list(&arg.enum_list);
2340 self.r_brace(&arg.r_brace);
2341 after!(self, enum_declaration, arg);
2342 }
2343
2344 fn enum_list(&mut self, arg: &EnumList) {
2346 before!(self, enum_list, arg);
2347 self.enum_group(&arg.enum_group);
2348 for x in &arg.enum_list_list {
2349 self.comma(&x.comma);
2350 self.enum_group(&x.enum_group);
2351 }
2352 if let Some(ref x) = arg.enum_list_opt {
2353 self.comma(&x.comma);
2354 }
2355 after!(self, enum_list, arg);
2356 }
2357
2358 fn enum_group(&mut self, arg: &EnumGroup) {
2360 before!(self, enum_group, arg);
2361 for x in &arg.enum_group_list {
2362 self.attribute(&x.attribute);
2363 }
2364 match &*arg.enum_group_group {
2365 EnumGroupGroup::LBraceEnumListRBrace(x) => {
2366 self.l_brace(&x.l_brace);
2367 self.enum_list(&x.enum_list);
2368 self.r_brace(&x.r_brace);
2369 }
2370 EnumGroupGroup::EnumItem(x) => self.enum_item(&x.enum_item),
2371 }
2372 after!(self, enum_group, arg);
2373 }
2374
2375 fn enum_item(&mut self, arg: &EnumItem) {
2377 before!(self, enum_item, arg);
2378 self.identifier(&arg.identifier);
2379 if let Some(ref x) = arg.enum_item_opt {
2380 self.equ(&x.equ);
2381 self.expression(&x.expression);
2382 }
2383 after!(self, enum_item, arg);
2384 }
2385
2386 fn struct_union_declaration(&mut self, arg: &StructUnionDeclaration) {
2388 before!(self, struct_union_declaration, arg);
2389 self.struct_union(&arg.struct_union);
2390 self.identifier(&arg.identifier);
2391 if let Some(ref x) = arg.struct_union_declaration_opt {
2392 self.with_generic_parameter(&x.with_generic_parameter);
2393 }
2394 self.l_brace(&arg.l_brace);
2395 self.struct_union_list(&arg.struct_union_list);
2396 self.r_brace(&arg.r_brace);
2397 after!(self, struct_union_declaration, arg);
2398 }
2399
2400 fn struct_union(&mut self, arg: &StructUnion) {
2401 before!(self, struct_union, arg);
2402 match arg {
2403 StructUnion::Struct(x) => {
2404 self.r#struct(&x.r#struct);
2405 }
2406 StructUnion::Union(x) => {
2407 self.union(&x.union);
2408 }
2409 }
2410 after!(self, struct_union, arg);
2411 }
2412
2413 fn struct_union_list(&mut self, arg: &StructUnionList) {
2415 before!(self, struct_union_list, arg);
2416 self.struct_union_group(&arg.struct_union_group);
2417 for x in &arg.struct_union_list_list {
2418 self.comma(&x.comma);
2419 self.struct_union_group(&x.struct_union_group);
2420 }
2421 if let Some(ref x) = arg.struct_union_list_opt {
2422 self.comma(&x.comma);
2423 }
2424 after!(self, struct_union_list, arg);
2425 }
2426
2427 fn struct_union_group(&mut self, arg: &StructUnionGroup) {
2429 before!(self, struct_union_group, arg);
2430 for x in &arg.struct_union_group_list {
2431 self.attribute(&x.attribute);
2432 }
2433 match &*arg.struct_union_group_group {
2434 StructUnionGroupGroup::LBraceStructUnionListRBrace(x) => {
2435 self.l_brace(&x.l_brace);
2436 self.struct_union_list(&x.struct_union_list);
2437 self.r_brace(&x.r_brace);
2438 }
2439 StructUnionGroupGroup::StructUnionItem(x) => {
2440 self.struct_union_item(&x.struct_union_item)
2441 }
2442 }
2443 after!(self, struct_union_group, arg);
2444 }
2445
2446 fn struct_union_item(&mut self, arg: &StructUnionItem) {
2448 before!(self, struct_union_item, arg);
2449 self.identifier(&arg.identifier);
2450 self.colon(&arg.colon);
2451 self.scalar_type(&arg.scalar_type);
2452 after!(self, struct_union_item, arg);
2453 }
2454
2455 fn initial_declaration(&mut self, arg: &InitialDeclaration) {
2457 before!(self, initial_declaration, arg);
2458 self.initial(&arg.initial);
2459 self.statement_block(&arg.statement_block);
2460 after!(self, initial_declaration, arg);
2461 }
2462
2463 fn final_declaration(&mut self, arg: &FinalDeclaration) {
2465 before!(self, final_declaration, arg);
2466 self.r#final(&arg.r#final);
2467 self.statement_block(&arg.statement_block);
2468 after!(self, final_declaration, arg);
2469 }
2470
2471 fn inst_declaration(&mut self, arg: &InstDeclaration) {
2473 before!(self, inst_declaration, arg);
2474 self.inst(&arg.inst);
2475 self.component_instantiation(&arg.component_instantiation);
2476 self.semicolon(&arg.semicolon);
2477 after!(self, inst_declaration, arg);
2478 }
2479
2480 fn bind_declaration(&mut self, arg: &BindDeclaration) {
2482 before!(self, bind_declaration, arg);
2483 self.bind(&arg.bind);
2484 self.scoped_identifier(&arg.scoped_identifier);
2485 self.l_t_minus(&arg.l_t_minus);
2486 self.component_instantiation(&arg.component_instantiation);
2487 self.semicolon(&arg.semicolon);
2488 after!(self, bind_declaration, arg);
2489 }
2490
2491 fn component_instantiation(&mut self, arg: &ComponentInstantiation) {
2493 before!(self, component_instantiation, arg);
2494 self.identifier(&arg.identifier);
2495 self.colon(&arg.colon);
2496 if let Some(ref x) = arg.component_instantiation_opt {
2497 self.clock_domain(&x.clock_domain);
2498 }
2499 self.scoped_identifier(&arg.scoped_identifier);
2500 if let Some(ref x) = arg.component_instantiation_opt0 {
2501 self.array(&x.array);
2502 }
2503 if let Some(ref x) = arg.component_instantiation_opt1 {
2504 self.inst_parameter(&x.inst_parameter);
2505 }
2506 if let Some(ref x) = arg.component_instantiation_opt2 {
2507 self.inst_port(&x.inst_port);
2508 }
2509 after!(self, component_instantiation, arg);
2510 }
2511
2512 fn inst_parameter(&mut self, arg: &InstParameter) {
2514 before!(self, inst_parameter, arg);
2515 self.hash(&arg.hash);
2516 self.l_paren(&arg.l_paren);
2517 if let Some(ref x) = arg.inst_parameter_opt {
2518 self.inst_parameter_list(&x.inst_parameter_list);
2519 }
2520 self.r_paren(&arg.r_paren);
2521 after!(self, inst_parameter, arg);
2522 }
2523
2524 fn inst_parameter_list(&mut self, arg: &InstParameterList) {
2526 before!(self, inst_parameter_list, arg);
2527 self.inst_parameter_group(&arg.inst_parameter_group);
2528 for x in &arg.inst_parameter_list_list {
2529 self.comma(&x.comma);
2530 self.inst_parameter_group(&x.inst_parameter_group);
2531 }
2532 if let Some(ref x) = arg.inst_parameter_list_opt {
2533 self.comma(&x.comma);
2534 }
2535 after!(self, inst_parameter_list, arg);
2536 }
2537
2538 fn inst_parameter_group(&mut self, arg: &InstParameterGroup) {
2540 before!(self, inst_parameter_group, arg);
2541 for x in &arg.inst_parameter_group_list {
2542 self.attribute(&x.attribute);
2543 }
2544 match &*arg.inst_parameter_group_group {
2545 InstParameterGroupGroup::LBraceInstParameterListRBrace(x) => {
2546 self.l_brace(&x.l_brace);
2547 self.inst_parameter_list(&x.inst_parameter_list);
2548 self.r_brace(&x.r_brace);
2549 }
2550 InstParameterGroupGroup::InstParameterItem(x) => {
2551 self.inst_parameter_item(&x.inst_parameter_item)
2552 }
2553 }
2554 after!(self, inst_parameter_group, arg);
2555 }
2556
2557 fn inst_parameter_item(&mut self, arg: &InstParameterItem) {
2559 before!(self, inst_parameter_item, arg);
2560 self.identifier(&arg.identifier);
2561 if let Some(ref x) = arg.inst_parameter_item_opt {
2562 self.colon(&x.colon);
2563 self.expression(&x.expression);
2564 }
2565 after!(self, inst_parameter_item, arg);
2566 }
2567
2568 fn inst_port(&mut self, arg: &InstPort) {
2570 before!(self, inst_port, arg);
2571 self.l_paren(&arg.l_paren);
2572 if let Some(ref x) = arg.inst_port_opt {
2573 self.inst_port_list(&x.inst_port_list);
2574 }
2575 self.r_paren(&arg.r_paren);
2576 after!(self, inst_port, arg);
2577 }
2578
2579 fn inst_port_list(&mut self, arg: &InstPortList) {
2581 before!(self, inst_port_list, arg);
2582 self.inst_port_group(&arg.inst_port_group);
2583 for x in &arg.inst_port_list_list {
2584 self.comma(&x.comma);
2585 self.inst_port_group(&x.inst_port_group);
2586 }
2587 if let Some(ref x) = arg.inst_port_list_opt {
2588 self.comma(&x.comma);
2589 }
2590 after!(self, inst_port_list, arg);
2591 }
2592
2593 fn inst_port_group(&mut self, arg: &InstPortGroup) {
2595 before!(self, inst_port_group, arg);
2596 for x in &arg.inst_port_group_list {
2597 self.attribute(&x.attribute);
2598 }
2599 match &*arg.inst_port_group_group {
2600 InstPortGroupGroup::LBraceInstPortListRBrace(x) => {
2601 self.l_brace(&x.l_brace);
2602 self.inst_port_list(&x.inst_port_list);
2603 self.r_brace(&x.r_brace);
2604 }
2605 InstPortGroupGroup::InstPortItem(x) => self.inst_port_item(&x.inst_port_item),
2606 }
2607 after!(self, inst_port_group, arg);
2608 }
2609
2610 fn inst_port_item(&mut self, arg: &InstPortItem) {
2612 before!(self, inst_port_item, arg);
2613 self.identifier(&arg.identifier);
2614 if let Some(ref x) = arg.inst_port_item_opt {
2615 self.colon(&x.colon);
2616 self.expression(&x.expression);
2617 }
2618 after!(self, inst_port_item, arg);
2619 }
2620
2621 fn with_parameter(&mut self, arg: &WithParameter) {
2623 before!(self, with_parameter, arg);
2624 self.hash(&arg.hash);
2625 self.l_paren(&arg.l_paren);
2626 if let Some(ref x) = arg.with_parameter_opt {
2627 self.with_parameter_list(&x.with_parameter_list);
2628 }
2629 self.r_paren(&arg.r_paren);
2630 after!(self, with_parameter, arg);
2631 }
2632
2633 fn with_parameter_list(&mut self, arg: &WithParameterList) {
2635 before!(self, with_parameter_list, arg);
2636 self.with_parameter_group(&arg.with_parameter_group);
2637 for x in &arg.with_parameter_list_list {
2638 self.comma(&x.comma);
2639 self.with_parameter_group(&x.with_parameter_group);
2640 }
2641 if let Some(ref x) = arg.with_parameter_list_opt {
2642 self.comma(&x.comma);
2643 }
2644 after!(self, with_parameter_list, arg);
2645 }
2646
2647 fn with_parameter_group(&mut self, arg: &WithParameterGroup) {
2649 before!(self, with_parameter_group, arg);
2650 for x in &arg.with_parameter_group_list {
2651 self.attribute(&x.attribute);
2652 }
2653 match &*arg.with_parameter_group_group {
2654 WithParameterGroupGroup::LBraceWithParameterListRBrace(x) => {
2655 self.l_brace(&x.l_brace);
2656 self.with_parameter_list(&x.with_parameter_list);
2657 self.r_brace(&x.r_brace);
2658 }
2659 WithParameterGroupGroup::WithParameterItem(x) => {
2660 self.with_parameter_item(&x.with_parameter_item)
2661 }
2662 }
2663 after!(self, with_parameter_group, arg);
2664 }
2665
2666 fn with_parameter_item(&mut self, arg: &WithParameterItem) {
2668 before!(self, with_parameter_item, arg);
2669 match &*arg.with_parameter_item_group {
2670 WithParameterItemGroup::Param(x) => self.param(&x.param),
2671 WithParameterItemGroup::Const(x) => self.r#const(&x.r#const),
2672 };
2673 self.identifier(&arg.identifier);
2674 self.colon(&arg.colon);
2675 match &*arg.with_parameter_item_group0 {
2676 WithParameterItemGroup0::ArrayType(x) => {
2677 self.array_type(&x.array_type);
2678 }
2679 WithParameterItemGroup0::Type(x) => {
2680 self.r#type(&x.r#type);
2681 }
2682 }
2683 if let Some(ref x) = arg.with_parameter_item_opt {
2684 self.equ(&x.equ);
2685 self.expression(&x.expression);
2686 }
2687 after!(self, with_parameter_item, arg);
2688 }
2689
2690 fn generic_bound(&mut self, arg: &GenericBound) {
2692 before!(self, generic_bound, arg);
2693 match arg {
2694 GenericBound::Type(x) => self.r#type(&x.r#type),
2695 GenericBound::InstScopedIdentifier(x) => {
2696 self.inst(&x.inst);
2697 self.scoped_identifier(&x.scoped_identifier);
2698 }
2699 GenericBound::GenericProtoBound(x) => self.generic_proto_bound(&x.generic_proto_bound),
2700 }
2701 after!(self, generic_bound, arg);
2702 }
2703
2704 fn with_generic_parameter(&mut self, arg: &WithGenericParameter) {
2706 before!(self, with_generic_parameter, arg);
2707 self.colon_colon_l_angle(&arg.colon_colon_l_angle);
2708 self.with_generic_parameter_list(&arg.with_generic_parameter_list);
2709 self.r_angle(&arg.r_angle);
2710 after!(self, with_generic_parameter, arg);
2711 }
2712
2713 fn with_generic_parameter_list(&mut self, arg: &WithGenericParameterList) {
2715 before!(self, with_generic_parameter_list, arg);
2716 self.with_generic_parameter_item(&arg.with_generic_parameter_item);
2717 for x in &arg.with_generic_parameter_list_list {
2718 self.comma(&x.comma);
2719 self.with_generic_parameter_item(&x.with_generic_parameter_item);
2720 }
2721 if let Some(ref x) = arg.with_generic_parameter_list_opt {
2722 self.comma(&x.comma);
2723 }
2724 after!(self, with_generic_parameter_list, arg);
2725 }
2726
2727 fn with_generic_parameter_item(&mut self, arg: &WithGenericParameterItem) {
2729 before!(self, with_generic_parameter_item, arg);
2730 self.identifier(&arg.identifier);
2731 self.colon(&arg.colon);
2732 self.generic_bound(&arg.generic_bound);
2733 if let Some(ref x) = arg.with_generic_parameter_item_opt {
2734 self.equ(&x.equ);
2735 self.with_generic_argument_item(&x.with_generic_argument_item);
2736 }
2737 after!(self, with_generic_parameter_item, arg);
2738 }
2739
2740 fn generic_proto_bound(&mut self, arg: &GenericProtoBound) {
2742 before!(self, generic_proto_bound, arg);
2743 match arg {
2744 GenericProtoBound::ScopedIdentifier(x) => self.scoped_identifier(&x.scoped_identifier),
2745 GenericProtoBound::FixedType(x) => self.fixed_type(&x.fixed_type),
2746 }
2747 after!(self, generic_proto_bound, arg);
2748 }
2749
2750 fn with_generic_argument(&mut self, arg: &WithGenericArgument) {
2752 before!(self, with_generic_argument, arg);
2753 self.colon_colon_l_angle(&arg.colon_colon_l_angle);
2754 if let Some(x) = &arg.with_generic_argument_opt {
2755 self.with_generic_argument_list(&x.with_generic_argument_list);
2756 }
2757 self.r_angle(&arg.r_angle);
2758 after!(self, with_generic_argument, arg);
2759 }
2760
2761 fn with_generic_argument_list(&mut self, arg: &WithGenericArgumentList) {
2763 before!(self, with_generic_argument_list, arg);
2764 self.with_generic_argument_item(&arg.with_generic_argument_item);
2765 for x in &arg.with_generic_argument_list_list {
2766 self.comma(&x.comma);
2767 self.with_generic_argument_item(&x.with_generic_argument_item);
2768 }
2769 if let Some(ref x) = arg.with_generic_argument_list_opt {
2770 self.comma(&x.comma);
2771 }
2772 after!(self, with_generic_argument_list, arg);
2773 }
2774
2775 fn with_generic_argument_item(&mut self, arg: &WithGenericArgumentItem) {
2777 before!(self, with_generic_argument_item, arg);
2778 match arg {
2779 WithGenericArgumentItem::GenericArgIdentifier(x) => {
2780 self.generic_arg_identifier(&x.generic_arg_identifier);
2781 }
2782 WithGenericArgumentItem::FixedType(x) => {
2783 self.fixed_type(&x.fixed_type);
2784 }
2785 WithGenericArgumentItem::Number(x) => {
2786 self.number(&x.number);
2787 }
2788 WithGenericArgumentItem::BooleanLiteral(x) => {
2789 self.boolean_literal(&x.boolean_literal);
2790 }
2791 }
2792 after!(self, with_generic_argument_item, arg);
2793 }
2794
2795 fn port_declaration(&mut self, arg: &PortDeclaration) {
2797 before!(self, port_declaration, arg);
2798 self.l_paren(&arg.l_paren);
2799 if let Some(ref x) = arg.port_declaration_opt {
2800 self.port_declaration_list(&x.port_declaration_list);
2801 }
2802 self.r_paren(&arg.r_paren);
2803 after!(self, port_declaration, arg);
2804 }
2805
2806 fn port_declaration_list(&mut self, arg: &PortDeclarationList) {
2808 before!(self, port_declaration_list, arg);
2809 self.port_declaration_group(&arg.port_declaration_group);
2810 for x in &arg.port_declaration_list_list {
2811 self.comma(&x.comma);
2812 self.port_declaration_group(&x.port_declaration_group);
2813 }
2814 if let Some(ref x) = arg.port_declaration_list_opt {
2815 self.comma(&x.comma);
2816 }
2817 after!(self, port_declaration_list, arg);
2818 }
2819
2820 fn port_declaration_group(&mut self, arg: &PortDeclarationGroup) {
2822 before!(self, port_declaration_group, arg);
2823 for x in &arg.port_declaration_group_list {
2824 self.attribute(&x.attribute);
2825 }
2826 match &*arg.port_declaration_group_group {
2827 PortDeclarationGroupGroup::LBracePortDeclarationListRBrace(x) => {
2828 self.l_brace(&x.l_brace);
2829 self.port_declaration_list(&x.port_declaration_list);
2830 self.r_brace(&x.r_brace);
2831 }
2832 PortDeclarationGroupGroup::PortDeclarationItem(x) => {
2833 self.port_declaration_item(&x.port_declaration_item)
2834 }
2835 }
2836 after!(self, port_declaration_group, arg);
2837 }
2838
2839 fn port_declaration_item(&mut self, arg: &PortDeclarationItem) {
2841 before!(self, port_declaration_item, arg);
2842 self.identifier(&arg.identifier);
2843 self.colon(&arg.colon);
2844 match &*arg.port_declaration_item_group {
2845 PortDeclarationItemGroup::PortTypeConcrete(x) => {
2846 self.port_type_concrete(&x.port_type_concrete);
2847 }
2848 PortDeclarationItemGroup::PortTypeAbstract(x) => {
2849 self.port_type_abstract(&x.port_type_abstract);
2850 }
2851 }
2852 after!(self, port_declaration_item, arg);
2853 }
2854
2855 fn port_type_concrete(&mut self, arg: &PortTypeConcrete) {
2857 before!(self, port_type_concrete, arg);
2858 self.direction(&arg.direction);
2859 if let Some(ref x) = arg.port_type_concrete_opt {
2860 self.clock_domain(&x.clock_domain);
2861 }
2862 self.array_type(&arg.array_type);
2863 if let Some(ref x) = arg.port_type_concrete_opt0 {
2864 self.equ(&x.equ);
2865 self.port_default_value(&x.port_default_value);
2866 }
2867 after!(self, port_type_concrete, arg);
2868 }
2869
2870 fn port_default_value(&mut self, arg: &PortDefaultValue) {
2872 before!(self, port_default_value, arg);
2873 self.expression(&arg.expression);
2874 after!(self, port_default_value, arg);
2875 }
2876
2877 fn port_type_abstract(&mut self, arg: &PortTypeAbstract) {
2879 if let Some(ref x) = arg.port_type_abstract_opt {
2880 self.clock_domain(&x.clock_domain);
2881 }
2882 self.interface(&arg.interface);
2883 if let Some(ref x) = arg.port_type_abstract_opt0 {
2884 self.colon_colon(&x.colon_colon);
2885 self.identifier(&x.identifier);
2886 }
2887 if let Some(ref x) = arg.port_type_abstract_opt1 {
2888 self.array(&x.array);
2889 }
2890 }
2891
2892 fn direction(&mut self, arg: &Direction) {
2894 before!(self, direction, arg);
2895 match arg {
2896 Direction::Input(x) => self.input(&x.input),
2897 Direction::Output(x) => self.output(&x.output),
2898 Direction::Inout(x) => self.inout(&x.inout),
2899 Direction::Modport(x) => self.modport(&x.modport),
2900 Direction::Import(x) => self.import(&x.import),
2901 };
2902 after!(self, direction, arg);
2903 }
2904
2905 fn function_declaration(&mut self, arg: &FunctionDeclaration) {
2907 before!(self, function_declaration, arg);
2908 self.function(&arg.function);
2909 self.identifier(&arg.identifier);
2910 if let Some(ref x) = arg.function_declaration_opt {
2911 self.with_generic_parameter(&x.with_generic_parameter);
2912 }
2913 if let Some(ref x) = arg.function_declaration_opt0 {
2914 self.port_declaration(&x.port_declaration);
2915 }
2916 if let Some(ref x) = arg.function_declaration_opt1 {
2917 self.minus_g_t(&x.minus_g_t);
2918 self.scalar_type(&x.scalar_type);
2919 }
2920 self.statement_block(&arg.statement_block);
2921 after!(self, function_declaration, arg);
2922 }
2923
2924 fn import_declaration(&mut self, arg: &ImportDeclaration) {
2926 before!(self, import_declaration, arg);
2927 self.import(&arg.import);
2928 self.scoped_identifier(&arg.scoped_identifier);
2929 if let Some(ref x) = arg.import_declaration_opt {
2930 self.colon_colon(&x.colon_colon);
2931 self.star(&x.star);
2932 }
2933 self.semicolon(&arg.semicolon);
2934 after!(self, import_declaration, arg);
2935 }
2936
2937 fn unsafe_block(&mut self, arg: &UnsafeBlock) {
2939 before!(self, unsafe_block, arg);
2940 self.r#unsafe(&arg.r#unsafe);
2941 self.l_paren(&arg.l_paren);
2942 self.identifier(&arg.identifier);
2943 self.r_paren(&arg.r_paren);
2944 self.l_brace(&arg.l_brace);
2945 for x in &arg.unsafe_block_list {
2946 self.generate_group(&x.generate_group);
2947 }
2948 self.r_brace(&arg.r_brace);
2949 after!(self, unsafe_block, arg);
2950 }
2951
2952 fn module_declaration(&mut self, arg: &ModuleDeclaration) {
2954 before!(self, module_declaration, arg);
2955 self.module(&arg.module);
2956 self.identifier(&arg.identifier);
2957 if let Some(ref x) = arg.module_declaration_opt {
2958 self.with_generic_parameter(&x.with_generic_parameter);
2959 }
2960 if let Some(ref x) = arg.module_declaration_opt0 {
2961 self.r#for(&x.r#for);
2962 self.scoped_identifier(&x.scoped_identifier);
2963 }
2964 if let Some(ref x) = arg.module_declaration_opt1 {
2965 self.with_parameter(&x.with_parameter);
2966 }
2967 if let Some(ref x) = arg.module_declaration_opt2 {
2968 self.port_declaration(&x.port_declaration);
2969 }
2970 self.l_brace(&arg.l_brace);
2971 for x in &arg.module_declaration_list {
2972 self.module_group(&x.module_group);
2973 }
2974 self.r_brace(&arg.r_brace);
2975 after!(self, module_declaration, arg);
2976 }
2977
2978 fn module_group(&mut self, arg: &ModuleGroup) {
2980 before!(self, module_group, arg);
2981 for x in &arg.module_group_list {
2982 self.attribute(&x.attribute);
2983 }
2984 match &*arg.module_group_group {
2985 ModuleGroupGroup::LBraceModuleGroupGroupListRBrace(x) => {
2986 self.l_brace(&x.l_brace);
2987 for x in &x.module_group_group_list {
2988 self.module_group(&x.module_group);
2989 }
2990 self.r_brace(&x.r_brace);
2991 }
2992 ModuleGroupGroup::ModuleItem(x) => {
2993 self.module_item(&x.module_item);
2994 }
2995 }
2996 after!(self, module_group, arg);
2997 }
2998
2999 fn module_item(&mut self, arg: &ModuleItem) {
3001 before!(self, module_item, arg);
3002 self.generate_item(&arg.generate_item);
3003 after!(self, module_item, arg);
3004 }
3005
3006 fn interface_declaration(&mut self, arg: &InterfaceDeclaration) {
3008 before!(self, interface_declaration, arg);
3009 self.interface(&arg.interface);
3010 self.identifier(&arg.identifier);
3011 if let Some(ref x) = arg.interface_declaration_opt {
3012 self.with_generic_parameter(&x.with_generic_parameter);
3013 }
3014 if let Some(ref x) = arg.interface_declaration_opt0 {
3015 self.r#for(&x.r#for);
3016 self.scoped_identifier(&x.scoped_identifier);
3017 }
3018 if let Some(ref x) = arg.interface_declaration_opt1 {
3019 self.with_parameter(&x.with_parameter);
3020 }
3021 self.l_brace(&arg.l_brace);
3022 for x in &arg.interface_declaration_list {
3023 self.interface_group(&x.interface_group);
3024 }
3025 self.r_brace(&arg.r_brace);
3026 after!(self, interface_declaration, arg);
3027 }
3028
3029 fn interface_group(&mut self, arg: &InterfaceGroup) {
3031 before!(self, interface_group, arg);
3032 for x in &arg.interface_group_list {
3033 self.attribute(&x.attribute);
3034 }
3035 match &*arg.interface_group_group {
3036 InterfaceGroupGroup::LBraceInterfaceGroupGroupListRBrace(x) => {
3037 self.l_brace(&x.l_brace);
3038 for x in &x.interface_group_group_list {
3039 self.interface_group(&x.interface_group);
3040 }
3041 self.r_brace(&x.r_brace);
3042 }
3043 InterfaceGroupGroup::InterfaceItem(x) => {
3044 self.interface_item(&x.interface_item);
3045 }
3046 }
3047 after!(self, interface_group, arg);
3048 }
3049
3050 fn interface_item(&mut self, arg: &InterfaceItem) {
3052 before!(self, interface_item, arg);
3053 match arg {
3054 InterfaceItem::GenerateItem(x) => self.generate_item(&x.generate_item),
3055 InterfaceItem::ModportDeclaration(x) => {
3056 self.modport_declaration(&x.modport_declaration)
3057 }
3058 }
3059 after!(self, interface_item, arg);
3060 }
3061
3062 fn generate_if_declaration(&mut self, arg: &GenerateIfDeclaration) {
3064 before!(self, generate_if_declaration, arg);
3065 self.r#if(&arg.r#if);
3066 self.expression(&arg.expression);
3067 self.generate_named_block(&arg.generate_named_block);
3068 for x in &arg.generate_if_declaration_list {
3069 self.r#else(&x.r#else);
3070 self.r#if(&x.r#if);
3071 self.expression(&x.expression);
3072 self.generate_optional_named_block(&x.generate_optional_named_block);
3073 }
3074 if let Some(ref x) = arg.generate_if_declaration_opt {
3075 self.r#else(&x.r#else);
3076 self.generate_optional_named_block(&x.generate_optional_named_block);
3077 }
3078 after!(self, generate_if_declaration, arg);
3079 }
3080
3081 fn generate_for_declaration(&mut self, arg: &GenerateForDeclaration) {
3083 before!(self, generate_for_declaration, arg);
3084 self.r#for(&arg.r#for);
3085 self.identifier(&arg.identifier);
3086 self.r#in(&arg.r#in);
3087 if let Some(ref x) = arg.generate_for_declaration_opt {
3088 self.rev(&x.rev);
3089 }
3090 self.range(&arg.range);
3091 if let Some(ref x) = arg.generate_for_declaration_opt0 {
3092 self.step(&x.step);
3093 self.assignment_operator(&x.assignment_operator);
3094 self.expression(&x.expression);
3095 }
3096 self.generate_named_block(&arg.generate_named_block);
3097 after!(self, generate_for_declaration, arg);
3098 }
3099
3100 fn generate_block_declaration(&mut self, arg: &GenerateBlockDeclaration) {
3102 before!(self, generate_block_declaration, arg);
3103 self.generate_named_block(&arg.generate_named_block);
3104 after!(self, generate_block_declaration, arg);
3105 }
3106
3107 fn generate_named_block(&mut self, arg: &GenerateNamedBlock) {
3109 before!(self, generate_named_block, arg);
3110 self.colon(&arg.colon);
3111 self.identifier(&arg.identifier);
3112 self.l_brace(&arg.l_brace);
3113 for x in &arg.generate_named_block_list {
3114 self.generate_group(&x.generate_group);
3115 }
3116 self.r_brace(&arg.r_brace);
3117 after!(self, generate_named_block, arg);
3118 }
3119
3120 fn generate_optional_named_block(&mut self, arg: &GenerateOptionalNamedBlock) {
3122 before!(self, generate_optional_named_block, arg);
3123 if let Some(ref x) = arg.generate_optional_named_block_opt {
3124 self.colon(&x.colon);
3125 self.identifier(&x.identifier);
3126 }
3127 self.l_brace(&arg.l_brace);
3128 for x in &arg.generate_optional_named_block_list {
3129 self.generate_group(&x.generate_group);
3130 }
3131 self.r_brace(&arg.r_brace);
3132 after!(self, generate_optional_named_block, arg);
3133 }
3134
3135 fn generate_group(&mut self, arg: &GenerateGroup) {
3137 before!(self, generate_group, arg);
3138 for x in &arg.generate_group_list {
3139 self.attribute(&x.attribute);
3140 }
3141 match &*arg.generate_group_group {
3142 GenerateGroupGroup::LBraceGenerateGroupGroupListRBrace(x) => {
3143 self.l_brace(&x.l_brace);
3144 for x in &x.generate_group_group_list {
3145 self.generate_group(&x.generate_group);
3146 }
3147 self.r_brace(&x.r_brace);
3148 }
3149 GenerateGroupGroup::GenerateItem(x) => self.generate_item(&x.generate_item),
3150 }
3151 after!(self, generate_group, arg);
3152 }
3153
3154 fn generate_item(&mut self, arg: &GenerateItem) {
3156 before!(self, generate_item, arg);
3157 match arg {
3158 GenerateItem::LetDeclaration(x) => self.let_declaration(&x.let_declaration),
3159 GenerateItem::VarDeclaration(x) => self.var_declaration(&x.var_declaration),
3160 GenerateItem::InstDeclaration(x) => self.inst_declaration(&x.inst_declaration),
3161 GenerateItem::BindDeclaration(x) => self.bind_declaration(&x.bind_declaration),
3162 GenerateItem::ConstDeclaration(x) => self.const_declaration(&x.const_declaration),
3163 GenerateItem::GenDeclaration(x) => self.gen_declaration(&x.gen_declaration),
3164 GenerateItem::AlwaysFfDeclaration(x) => {
3165 self.always_ff_declaration(&x.always_ff_declaration)
3166 }
3167 GenerateItem::AlwaysCombDeclaration(x) => {
3168 self.always_comb_declaration(&x.always_comb_declaration)
3169 }
3170 GenerateItem::AssignDeclaration(x) => self.assign_declaration(&x.assign_declaration),
3171 GenerateItem::ConnectDeclaration(x) => self.connect_declaration(&x.connect_declaration),
3172 GenerateItem::FunctionDeclaration(x) => {
3173 self.function_declaration(&x.function_declaration)
3174 }
3175 GenerateItem::GenerateIfDeclaration(x) => {
3176 self.generate_if_declaration(&x.generate_if_declaration)
3177 }
3178 GenerateItem::GenerateForDeclaration(x) => {
3179 self.generate_for_declaration(&x.generate_for_declaration)
3180 }
3181 GenerateItem::GenerateBlockDeclaration(x) => {
3182 self.generate_block_declaration(&x.generate_block_declaration)
3183 }
3184 GenerateItem::TypeDefDeclaration(x) => {
3185 self.type_def_declaration(&x.type_def_declaration)
3186 }
3187 GenerateItem::EnumDeclaration(x) => self.enum_declaration(&x.enum_declaration),
3188 GenerateItem::StructUnionDeclaration(x) => {
3189 self.struct_union_declaration(&x.struct_union_declaration)
3190 }
3191 GenerateItem::ImportDeclaration(x) => self.import_declaration(&x.import_declaration),
3192 GenerateItem::AliasDeclaration(x) => self.alias_declaration(&x.alias_declaration),
3193 GenerateItem::InitialDeclaration(x) => self.initial_declaration(&x.initial_declaration),
3194 GenerateItem::FinalDeclaration(x) => self.final_declaration(&x.final_declaration),
3195 GenerateItem::UnsafeBlock(x) => self.unsafe_block(&x.unsafe_block),
3196 GenerateItem::EmbedDeclaration(x) => self.embed_declaration(&x.embed_declaration),
3197 };
3198 after!(self, generate_item, arg);
3199 }
3200
3201 fn package_declaration(&mut self, arg: &PackageDeclaration) {
3203 before!(self, package_declaration, arg);
3204 self.package(&arg.package);
3205 self.identifier(&arg.identifier);
3206 if let Some(ref x) = arg.package_declaration_opt {
3207 self.with_generic_parameter(&x.with_generic_parameter);
3208 }
3209 if let Some(ref x) = arg.package_declaration_opt0 {
3210 self.r#for(&x.r#for);
3211 self.scoped_identifier(&x.scoped_identifier);
3212 }
3213 self.l_brace(&arg.l_brace);
3214 for x in &arg.package_declaration_list {
3215 self.package_group(&x.package_group);
3216 }
3217 self.r_brace(&arg.r_brace);
3218 after!(self, package_declaration, arg);
3219 }
3220
3221 fn package_group(&mut self, arg: &PackageGroup) {
3223 before!(self, package_group, arg);
3224 for x in &arg.package_group_list {
3225 self.attribute(&x.attribute);
3226 }
3227 match &*arg.package_group_group {
3228 PackageGroupGroup::LBracePackageGroupGroupListRBrace(x) => {
3229 self.l_brace(&x.l_brace);
3230 for x in &x.package_group_group_list {
3231 self.package_group(&x.package_group);
3232 }
3233 self.r_brace(&x.r_brace);
3234 }
3235 PackageGroupGroup::PackageItem(x) => self.package_item(&x.package_item),
3236 }
3237 after!(self, package_group, arg);
3238 }
3239
3240 fn package_item(&mut self, arg: &PackageItem) {
3242 before!(self, package_item, arg);
3243 match arg {
3244 PackageItem::ConstDeclaration(x) => self.const_declaration(&x.const_declaration),
3245 PackageItem::GenDeclaration(x) => self.gen_declaration(&x.gen_declaration),
3246 PackageItem::TypeDefDeclaration(x) => {
3247 self.type_def_declaration(&x.type_def_declaration)
3248 }
3249 PackageItem::EnumDeclaration(x) => self.enum_declaration(&x.enum_declaration),
3250 PackageItem::StructUnionDeclaration(x) => {
3251 self.struct_union_declaration(&x.struct_union_declaration)
3252 }
3253 PackageItem::FunctionDeclaration(x) => {
3254 self.function_declaration(&x.function_declaration)
3255 }
3256 PackageItem::ImportDeclaration(x) => self.import_declaration(&x.import_declaration),
3257 PackageItem::AliasDeclaration(x) => self.alias_declaration(&x.alias_declaration),
3258 PackageItem::EmbedDeclaration(x) => self.embed_declaration(&x.embed_declaration),
3259 }
3260 after!(self, package_item, arg);
3261 }
3262
3263 fn alias_declaration(&mut self, arg: &AliasDeclaration) {
3265 before!(self, alias_declaration, arg);
3266 self.alias(&arg.alias);
3267 match &*arg.alias_declaration_group {
3268 AliasDeclarationGroup::Module(x) => self.module(&x.module),
3269 AliasDeclarationGroup::Interface(x) => self.interface(&x.interface),
3270 AliasDeclarationGroup::Package(x) => self.package(&x.package),
3271 }
3272 self.identifier(&arg.identifier);
3273 self.equ(&arg.equ);
3274 self.scoped_identifier(&arg.scoped_identifier);
3275 self.semicolon(&arg.semicolon);
3276 after!(self, alias_declaration, arg);
3277 }
3278
3279 fn proto_declaration(&mut self, arg: &ProtoDeclaration) {
3281 before!(self, proto_declaration, arg);
3282 self.proto(&arg.proto);
3283 match &*arg.proto_declaration_group {
3284 ProtoDeclarationGroup::ProtoModuleDeclaration(x) => {
3285 self.proto_module_declaration(&x.proto_module_declaration);
3286 }
3287 ProtoDeclarationGroup::ProtoInterfaceDeclaration(x) => {
3288 self.proto_interface_declaration(&x.proto_interface_declaration);
3289 }
3290 ProtoDeclarationGroup::ProtoPackageDeclaration(x) => {
3291 self.proto_package_declaration(&x.proto_package_declaration);
3292 }
3293 }
3294 after!(self, proto_declaration, arg);
3295 }
3296
3297 fn proto_module_declaration(&mut self, arg: &ProtoModuleDeclaration) {
3299 before!(self, proto_module_declaration, arg);
3300 self.module(&arg.module);
3301 self.identifier(&arg.identifier);
3302 if let Some(ref x) = arg.proto_module_declaration_opt {
3303 self.with_parameter(&x.with_parameter);
3304 }
3305 if let Some(ref x) = arg.proto_module_declaration_opt0 {
3306 self.port_declaration(&x.port_declaration);
3307 }
3308 self.semicolon(&arg.semicolon);
3309 after!(self, proto_module_declaration, arg);
3310 }
3311
3312 fn proto_interface_declaration(&mut self, arg: &ProtoInterfaceDeclaration) {
3314 before!(self, proto_interface_declaration, arg);
3315 self.interface(&arg.interface);
3316 self.identifier(&arg.identifier);
3317 if let Some(ref x) = arg.proto_interface_declaration_opt {
3318 self.with_parameter(&x.with_parameter);
3319 }
3320 self.l_brace(&arg.l_brace);
3321 for x in &arg.proto_interface_declaration_list {
3322 self.proto_interface_item(&x.proto_interface_item);
3323 }
3324 self.r_brace(&arg.r_brace);
3325 after!(self, proto_interface_declaration, arg);
3326 }
3327
3328 fn proto_interface_item(&mut self, arg: &ProtoInterfaceItem) {
3330 before!(self, proto_interface_item, arg);
3331 match arg {
3332 ProtoInterfaceItem::VarDeclaration(x) => {
3333 self.var_declaration(&x.var_declaration);
3334 }
3335 ProtoInterfaceItem::ProtoConstDeclaration(x) => {
3336 self.proto_const_declaration(&x.proto_const_declaration);
3337 }
3338 ProtoInterfaceItem::ProtoFunctionDeclaration(x) => {
3339 self.proto_function_declaration(&x.proto_function_declaration);
3340 }
3341 ProtoInterfaceItem::ProtoTypeDefDeclaration(x) => {
3342 self.proto_type_def_declaration(&x.proto_type_def_declaration);
3343 }
3344 ProtoInterfaceItem::ProtoAliasDeclaration(x) => {
3345 self.proto_alias_declaration(&x.proto_alias_declaration);
3346 }
3347 ProtoInterfaceItem::ModportDeclaration(x) => {
3348 self.modport_declaration(&x.modport_declaration);
3349 }
3350 ProtoInterfaceItem::ImportDeclaration(x) => {
3351 self.import_declaration(&x.import_declaration);
3352 }
3353 }
3354 after!(self, proto_interface_item, arg);
3355 }
3356
3357 fn proto_package_declaration(&mut self, arg: &ProtoPackageDeclaration) {
3359 before!(self, proto_package_declaration, arg);
3360 self.package(&arg.package);
3361 self.identifier(&arg.identifier);
3362 self.l_brace(&arg.l_brace);
3363 for x in &arg.proto_package_declaration_list {
3364 self.proto_pacakge_item(&x.proto_pacakge_item);
3365 }
3366 self.r_brace(&arg.r_brace);
3367 after!(self, proto_package_declaration, arg);
3368 }
3369
3370 fn proto_pacakge_item(&mut self, arg: &ProtoPacakgeItem) {
3372 before!(self, proto_pacakge_item, arg);
3373 match arg {
3374 ProtoPacakgeItem::ProtoConstDeclaration(x) => {
3375 self.proto_const_declaration(&x.proto_const_declaration);
3376 }
3377 ProtoPacakgeItem::ProtoTypeDefDeclaration(x) => {
3378 self.proto_type_def_declaration(&x.proto_type_def_declaration);
3379 }
3380 ProtoPacakgeItem::EnumDeclaration(x) => {
3381 self.enum_declaration(&x.enum_declaration);
3382 }
3383 ProtoPacakgeItem::StructUnionDeclaration(x) => {
3384 self.struct_union_declaration(&x.struct_union_declaration);
3385 }
3386 ProtoPacakgeItem::ProtoFunctionDeclaration(x) => {
3387 self.proto_function_declaration(&x.proto_function_declaration);
3388 }
3389 ProtoPacakgeItem::ProtoAliasDeclaration(x) => {
3390 self.proto_alias_declaration(&x.proto_alias_declaration);
3391 }
3392 ProtoPacakgeItem::ImportDeclaration(x) => {
3393 self.import_declaration(&x.import_declaration);
3394 }
3395 }
3396 after!(self, proto_pacakge_item, arg);
3397 }
3398
3399 fn proto_const_declaration(&mut self, arg: &ProtoConstDeclaration) {
3401 before!(self, proto_const_declaration, arg);
3402 self.r#const(&arg.r#const);
3403 self.identifier(&arg.identifier);
3404 self.colon(&arg.colon);
3405 match &*arg.proto_const_declaration_group {
3406 ProtoConstDeclarationGroup::ArrayType(x) => {
3407 self.array_type(&x.array_type);
3408 }
3409 ProtoConstDeclarationGroup::Type(x) => {
3410 self.r#type(&x.r#type);
3411 }
3412 }
3413 self.semicolon(&arg.semicolon);
3414 after!(self, proto_const_declaration, arg);
3415 }
3416
3417 fn proto_type_def_declaration(&mut self, arg: &ProtoTypeDefDeclaration) {
3419 before!(self, proto_type_def_declaration, arg);
3420 self.r#type(&arg.r#type);
3421 self.identifier(&arg.identifier);
3422 if let Some(ref x) = arg.proto_type_def_declaration_opt {
3423 self.equ(&x.equ);
3424 self.array_type(&x.array_type);
3425 }
3426 self.semicolon(&arg.semicolon);
3427 after!(self, proto_type_def_declaration, arg);
3428 }
3429
3430 fn proto_function_declaration(&mut self, arg: &ProtoFunctionDeclaration) {
3432 before!(self, proto_function_declaration, arg);
3433 self.function(&arg.function);
3434 self.identifier(&arg.identifier);
3435 if let Some(ref x) = arg.proto_function_declaration_opt {
3436 self.with_generic_parameter(&x.with_generic_parameter);
3437 }
3438 if let Some(ref x) = arg.proto_function_declaration_opt0 {
3439 self.port_declaration(&x.port_declaration);
3440 }
3441 if let Some(ref x) = arg.proto_function_declaration_opt1 {
3442 self.minus_g_t(&x.minus_g_t);
3443 self.scalar_type(&x.scalar_type);
3444 }
3445 self.semicolon(&arg.semicolon);
3446 after!(self, proto_function_declaration, arg);
3447 }
3448
3449 fn proto_alias_declaration(&mut self, arg: &ProtoAliasDeclaration) {
3451 before!(self, proto_alias_declaration, arg);
3452 self.alias(&arg.alias);
3453 match &*arg.proto_alias_declaration_group {
3454 ProtoAliasDeclarationGroup::Module(x) => self.module(&x.module),
3455 ProtoAliasDeclarationGroup::Interface(x) => self.interface(&x.interface),
3456 ProtoAliasDeclarationGroup::Package(x) => self.package(&x.package),
3457 }
3458 self.identifier(&arg.identifier);
3459 self.colon(&arg.colon);
3460 self.scoped_identifier(&arg.scoped_identifier);
3461 self.semicolon(&arg.semicolon);
3462 after!(self, proto_alias_declaration, arg);
3463 }
3464
3465 fn embed_declaration(&mut self, arg: &EmbedDeclaration) {
3467 before!(self, embed_declaration, arg);
3468 self.embed(&arg.embed);
3469 self.l_paren(&arg.l_paren);
3470 self.identifier(&arg.identifier);
3471 self.r_paren(&arg.r_paren);
3472 self.identifier(&arg.identifier0);
3473 self.embed_content(&arg.embed_content);
3474 after!(self, embed_declaration, arg);
3475 }
3476
3477 fn embed_content(&mut self, arg: &EmbedContent) {
3479 before!(self, embed_content, arg);
3480 self.triple_l_brace(&arg.triple_l_brace);
3481 for x in &arg.embed_content_list {
3482 self.embed_item(&x.embed_item);
3483 }
3484 self.triple_r_brace(&arg.triple_r_brace);
3485 after!(self, embed_content, arg);
3486 }
3487
3488 fn embed_scoped_identifier(&mut self, arg: &EmbedScopedIdentifier) {
3490 before!(self, embed_scoped_identifier, arg);
3491 self.escaped_l_brace(&arg.escaped_l_brace);
3492 self.scoped_identifier(&arg.scoped_identifier);
3493 self.escaped_r_brace(&arg.escaped_r_brace);
3494 after!(self, embed_scoped_identifier, arg);
3495 }
3496
3497 fn embed_item(&mut self, arg: &EmbedItem) {
3499 before!(self, embed_item, arg);
3500 match arg {
3501 EmbedItem::EmbedLBraceEmbedItemListEmbedRBrace(x) => {
3502 self.embed_l_brace(&x.embed_l_brace);
3503 for x in &x.embed_item_list {
3504 self.embed_item(&x.embed_item);
3505 }
3506 self.embed_r_brace(&x.embed_r_brace);
3507 }
3508 EmbedItem::EmbedScopedIdentifier(x) => {
3509 self.embed_scoped_identifier(&x.embed_scoped_identifier)
3510 }
3511 EmbedItem::Any(x) => self.any(&x.any),
3512 }
3513 after!(self, embed_item, arg);
3514 }
3515
3516 fn include_declaration(&mut self, arg: &IncludeDeclaration) {
3518 before!(self, include_declaration, arg);
3519 self.include(&arg.include);
3520 self.l_paren(&arg.l_paren);
3521 self.identifier(&arg.identifier);
3522 self.comma(&arg.comma);
3523 self.string_literal(&arg.string_literal);
3524 self.r_paren(&arg.r_paren);
3525 self.semicolon(&arg.semicolon);
3526 after!(self, include_declaration, arg);
3527 }
3528
3529 fn description_group(&mut self, arg: &DescriptionGroup) {
3531 before!(self, description_group, arg);
3532 for x in &arg.description_group_list {
3533 self.attribute(&x.attribute);
3534 }
3535 match &*arg.description_group_group {
3536 DescriptionGroupGroup::LBraceDescriptionGroupGroupListRBrace(x) => {
3537 self.l_brace(&x.l_brace);
3538 for x in &x.description_group_group_list {
3539 self.description_group(&x.description_group);
3540 }
3541 self.r_brace(&x.r_brace);
3542 }
3543 DescriptionGroupGroup::DescriptionItem(x) => self.description_item(&x.description_item),
3544 }
3545 after!(self, description_group, arg);
3546 }
3547
3548 fn description_item(&mut self, arg: &DescriptionItem) {
3550 before!(self, description_item, arg);
3551 match arg {
3552 DescriptionItem::DescriptionItemOptPublicDescriptionItem(x) => {
3553 if let Some(ref x) = x.description_item_opt {
3554 self.r#pub(&x.r#pub);
3555 }
3556 self.public_description_item(&x.public_description_item);
3557 }
3558 DescriptionItem::ImportDeclaration(x) => self.import_declaration(&x.import_declaration),
3559 DescriptionItem::BindDeclaration(x) => self.bind_declaration(&x.bind_declaration),
3560 DescriptionItem::EmbedDeclaration(x) => self.embed_declaration(&x.embed_declaration),
3561 DescriptionItem::IncludeDeclaration(x) => {
3562 self.include_declaration(&x.include_declaration)
3563 }
3564 };
3565 after!(self, description_item, arg);
3566 }
3567
3568 fn public_description_item(&mut self, arg: &PublicDescriptionItem) {
3570 before!(self, public_description_item, arg);
3571 match arg {
3572 PublicDescriptionItem::ModuleDeclaration(x) => {
3573 self.module_declaration(&x.module_declaration)
3574 }
3575 PublicDescriptionItem::InterfaceDeclaration(x) => {
3576 self.interface_declaration(&x.interface_declaration)
3577 }
3578 PublicDescriptionItem::PackageDeclaration(x) => {
3579 self.package_declaration(&x.package_declaration)
3580 }
3581 PublicDescriptionItem::AliasDeclaration(x) => {
3582 self.alias_declaration(&x.alias_declaration)
3583 }
3584 PublicDescriptionItem::ProtoDeclaration(x) => {
3585 self.proto_declaration(&x.proto_declaration)
3586 }
3587 PublicDescriptionItem::FunctionDeclaration(x) => {
3588 self.function_declaration(&x.function_declaration)
3589 }
3590 };
3591 after!(self, public_description_item, arg);
3592 }
3593
3594 fn veryl(&mut self, arg: &Veryl) {
3596 before!(self, veryl, arg);
3597 self.start(&arg.start);
3598 for x in &arg.veryl_list {
3599 self.description_group(&x.description_group);
3600 }
3601 after!(self, veryl, arg);
3602 }
3603
3604 fn get_handlers(&mut self) -> Option<Vec<&mut dyn Handler>> {
3605 None
3606 }
3607}
3608
3609#[derive(Default)]
3610pub enum HandlerPoint {
3611 #[default]
3612 Before,
3613 After,
3614}
3615
3616pub trait Handler: VerylGrammarTrait {
3617 fn set_point(&mut self, p: HandlerPoint);
3618}