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