Skip to main content

veryl_parser/
veryl_walker.rs

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