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