scarf_syntax/instantiations/
generated_instantiation.rs1use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct GenerateRegion<'a>(
9 pub Metadata<'a>, pub Vec<GenerateItem<'a>>,
11 pub Metadata<'a>, );
13
14#[derive(Clone, Debug, PartialEq)]
15pub struct LoopGenerateConstruct<'a>(
16 pub Metadata<'a>, pub Metadata<'a>, pub GenvarInitialization<'a>,
19 pub Metadata<'a>, pub GenvarExpression<'a>,
21 pub Metadata<'a>, pub GenvarIteration<'a>,
23 pub Metadata<'a>, pub GenerateBlock<'a>,
25);
26
27#[derive(Clone, Debug, PartialEq)]
28pub struct GenvarInitialization<'a>(
29 pub Option<Metadata<'a>>, pub GenvarIdentifier<'a>,
31 pub Metadata<'a>, pub ConstantExpression<'a>,
33);
34
35#[derive(Clone, Debug, PartialEq)]
36pub enum GenvarIteration<'a> {
37 Assignment(
38 Box<(
39 GenvarIdentifier<'a>,
40 AssignmentOperator<'a>,
41 GenvarExpression<'a>,
42 )>,
43 ),
44 Prefix(Box<(IncOrDecOperator<'a>, GenvarIdentifier<'a>)>),
45 Postfix(Box<(GenvarIdentifier<'a>, IncOrDecOperator<'a>)>),
46}
47
48#[derive(Clone, Debug, PartialEq)]
49pub enum ConditionalGenerateConstruct<'a> {
50 If(Box<IfGenerateConstruct<'a>>),
51 Case(Box<CaseGenerateConstruct<'a>>),
52}
53
54#[derive(Clone, Debug, PartialEq)]
55pub struct IfGenerateConstruct<'a>(
56 pub Metadata<'a>, pub Metadata<'a>, pub ConstantExpression<'a>,
59 pub Metadata<'a>, pub GenerateBlock<'a>,
61 pub Option<(
62 Metadata<'a>, GenerateBlock<'a>,
64 )>,
65);
66
67#[derive(Clone, Debug, PartialEq)]
68pub struct CaseGenerateConstruct<'a>(
69 pub Metadata<'a>, pub Metadata<'a>, pub ConstantExpression<'a>,
72 pub Metadata<'a>, pub CaseGenerateItem<'a>,
74 pub Vec<CaseGenerateItem<'a>>,
75 pub Metadata<'a>, );
77
78#[derive(Clone, Debug, PartialEq)]
79pub enum CaseGenerateItem<'a> {
80 Expression(
81 Box<(
82 ConstantExpression<'a>,
83 Vec<(
84 Metadata<'a>, ConstantExpression<'a>,
86 )>,
87 Metadata<'a>, GenerateBlock<'a>,
89 )>,
90 ),
91 Default(
92 Box<(
93 Metadata<'a>, Option<Metadata<'a>>, GenerateBlock<'a>,
96 )>,
97 ),
98}
99
100#[derive(Clone, Debug, PartialEq)]
101pub enum GenerateBlock<'a> {
102 Item(Box<GenerateItem<'a>>),
103 Block(
104 Box<(
105 Option<(
106 GenerateBlockIdentifier<'a>,
107 Metadata<'a>, )>,
109 Metadata<'a>, Option<(
111 Metadata<'a>, GenerateBlockIdentifier<'a>,
113 )>,
114 Vec<GenerateItem<'a>>,
115 Metadata<'a>, Option<(
117 Metadata<'a>, GenerateBlockIdentifier<'a>,
119 )>,
120 )>,
121 ),
122}
123
124#[derive(Clone, Debug, PartialEq)]
125pub enum GenerateItem<'a> {
126 Module(Box<ModuleOrGenerateItem<'a>>),
127 Interface(Box<InterfaceOrGenerateItem<'a>>),
128 Checker(Box<CheckerOrGenerateItem<'a>>),
129}