scarf_syntax/general/
identifiers.rs

1// =======================================================================
2// identifiers.rs
3// =======================================================================
4// AST Nodes from 1800-2023 A.9.3
5
6use crate::*;
7
8#[derive(Clone, Debug, PartialEq)]
9pub struct ArrayIdentifier<'a>(pub Identifier<'a>);
10
11#[derive(Clone, Debug, PartialEq)]
12pub struct BlockIdentifier<'a>(pub Identifier<'a>);
13
14#[derive(Clone, Debug, PartialEq)]
15pub struct BinIdentifier<'a>(pub Identifier<'a>);
16
17pub struct CIdentifier<'a>(pub &'a str, pub Metadata<'a>);
18
19#[derive(Clone, Debug, PartialEq)]
20pub struct CellIdentifier<'a>(pub Identifier<'a>);
21
22#[derive(Clone, Debug, PartialEq)]
23pub struct CheckerIdentifier<'a>(pub Identifier<'a>);
24
25#[derive(Clone, Debug, PartialEq)]
26pub struct ClassIdentifier<'a>(pub Identifier<'a>);
27
28#[derive(Clone, Debug, PartialEq)]
29pub struct ClassVariableIdentifier<'a>(pub VariableIdentifier<'a>);
30
31#[derive(Clone, Debug, PartialEq)]
32pub struct ClockingIdentifier<'a>(pub Identifier<'a>);
33
34#[derive(Clone, Debug, PartialEq)]
35pub struct ConfigIdentifier<'a>(pub Identifier<'a>);
36
37#[derive(Clone, Debug, PartialEq)]
38pub struct ConstIdentifier<'a>(pub Identifier<'a>);
39
40#[derive(Clone, Debug, PartialEq)]
41pub struct ConstraintIdentifier<'a>(pub Identifier<'a>);
42
43#[derive(Clone, Debug, PartialEq)]
44pub struct CovergroupIdentifier<'a>(pub Identifier<'a>);
45
46#[derive(Clone, Debug, PartialEq)]
47pub struct CovergroupVariableIdentifier<'a>(pub VariableIdentifier<'a>);
48
49#[derive(Clone, Debug, PartialEq)]
50pub struct CoverPointIdentifier<'a>(pub Identifier<'a>);
51
52#[derive(Clone, Debug, PartialEq)]
53pub struct CrossIdentifier<'a>(pub Identifier<'a>);
54
55#[derive(Clone, Debug, PartialEq)]
56pub struct DynamicArrayVariableIdentifier<'a>(pub VariableIdentifier<'a>);
57
58#[derive(Clone, Debug, PartialEq)]
59pub struct EnumIdentifier<'a>(pub Identifier<'a>);
60
61pub type EscapedIdentifier<'a> = (&'a str, Metadata<'a>);
62
63#[derive(Clone, Debug, PartialEq)]
64pub struct FormalIdentifier<'a>(pub Identifier<'a>);
65
66#[derive(Clone, Debug, PartialEq)]
67pub struct FormalPortIdentifier<'a>(pub Identifier<'a>);
68
69#[derive(Clone, Debug, PartialEq)]
70pub struct FunctionIdentifier<'a>(pub Identifier<'a>);
71
72#[derive(Clone, Debug, PartialEq)]
73pub struct GenerateBlockIdentifier<'a>(pub Identifier<'a>);
74
75#[derive(Clone, Debug, PartialEq)]
76pub struct GenvarIdentifier<'a>(pub Identifier<'a>);
77
78#[derive(Clone, Debug, PartialEq)]
79pub struct HierarchicalArrayIdentifier<'a>(pub HierarchicalIdentifier<'a>);
80
81#[derive(Clone, Debug, PartialEq)]
82pub struct HierarchicalBlockIdentifier<'a>(pub HierarchicalIdentifier<'a>);
83
84#[derive(Clone, Debug, PartialEq)]
85pub struct HierarchicalEventIdentifier<'a>(pub HierarchicalIdentifier<'a>);
86
87#[derive(Clone, Debug, PartialEq)]
88pub struct HierarchicalIdentifier<'a>(
89    pub Metadata<'a>, // $root
90    pub Metadata<'a>, // .
91    pub  Vec<(
92        Identifier<'a>,
93        ConstantBitSelect<'a>,
94        Metadata<'a>, // .
95    )>,
96    pub Identifier<'a>,
97);
98
99#[derive(Clone, Debug, PartialEq)]
100pub struct HierarchicalNetIdentifier<'a>(pub HierarchicalIdentifier<'a>);
101
102#[derive(Clone, Debug, PartialEq)]
103pub struct HierarchicalParameterIdentifier<'a>(pub HierarchicalIdentifier<'a>);
104
105#[derive(Clone, Debug, PartialEq)]
106pub struct HierarchicalPropertyIdentifier<'a>(pub HierarchicalIdentifier<'a>);
107
108#[derive(Clone, Debug, PartialEq)]
109pub struct HierarchicalSequenceIdentifier<'a>(pub HierarchicalIdentifier<'a>);
110
111#[derive(Clone, Debug, PartialEq)]
112pub struct HierarchicalTaskIdentifier<'a>(pub HierarchicalIdentifier<'a>);
113
114#[derive(Clone, Debug, PartialEq)]
115pub struct HierarchicalTfIdentifier<'a>(pub HierarchicalIdentifier<'a>);
116
117#[derive(Clone, Debug, PartialEq)]
118pub struct HierarchicalVariableIdentifier<'a>(pub HierarchicalIdentifier<'a>);
119
120#[derive(Clone, Debug, PartialEq)]
121pub enum Identifier<'a> {
122    SimpleIdentifier(SimpleIdentifier<'a>),
123    EscapedIdentifier(EscapedIdentifier<'a>),
124}
125
126#[derive(Clone, Debug, PartialEq)]
127pub struct IndexVariableIdentifier<'a>(pub Identifier<'a>);
128
129#[derive(Clone, Debug, PartialEq)]
130pub struct InterfaceIdentifier<'a>(pub Identifier<'a>);
131
132#[derive(Clone, Debug, PartialEq)]
133pub struct InterfacePortIdentifier<'a>(pub Identifier<'a>);
134
135#[derive(Clone, Debug, PartialEq)]
136pub struct InoutPortIdentifier<'a>(pub Identifier<'a>);
137
138#[derive(Clone, Debug, PartialEq)]
139pub struct InputPortIdentifier<'a>(pub Identifier<'a>);
140
141#[derive(Clone, Debug, PartialEq)]
142pub struct InstanceIdentifier<'a>(pub Identifier<'a>);
143
144#[derive(Clone, Debug, PartialEq)]
145pub struct LibraryIdentifier<'a>(pub Identifier<'a>);
146
147#[derive(Clone, Debug, PartialEq)]
148pub struct MemberIdentifier<'a>(pub Identifier<'a>);
149
150#[derive(Clone, Debug, PartialEq)]
151pub struct MethodIdentifier<'a>(pub Identifier<'a>);
152
153#[derive(Clone, Debug, PartialEq)]
154pub struct ModportIdentifier<'a>(pub Identifier<'a>);
155
156#[derive(Clone, Debug, PartialEq)]
157pub struct ModuleIdentifier<'a>(pub Identifier<'a>);
158
159#[derive(Clone, Debug, PartialEq)]
160pub struct NetIdentifier<'a>(pub Identifier<'a>);
161
162#[derive(Clone, Debug, PartialEq)]
163pub struct NettypeIdentifier<'a>(pub Identifier<'a>);
164
165#[derive(Clone, Debug, PartialEq)]
166pub struct OutputPortIdentifier<'a>(pub Identifier<'a>);
167
168#[derive(Clone, Debug, PartialEq)]
169pub struct PackageIdentifier<'a>(pub Identifier<'a>);
170
171#[derive(Clone, Debug, PartialEq)]
172pub enum PackageScope<'a> {
173    Identifier(Box<(PackageIdentifier<'a>, Metadata<'a>)>),
174    Unit(Box<(Metadata<'a>, Metadata<'a>)>),
175}
176
177#[derive(Clone, Debug, PartialEq)]
178pub struct ParameterIdentifier<'a>(pub Identifier<'a>);
179
180#[derive(Clone, Debug, PartialEq)]
181pub struct PortIdentifier<'a>(pub Identifier<'a>);
182
183#[derive(Clone, Debug, PartialEq)]
184pub struct ProgramIdentifier<'a>(pub Identifier<'a>);
185
186#[derive(Clone, Debug, PartialEq)]
187pub struct PropertyIdentifier<'a>(pub Identifier<'a>);
188
189#[derive(Clone, Debug, PartialEq)]
190pub struct PsClassIdentifier<'a>(pub Option<PackageScope<'a>>, pub ClassIdentifier<'a>);
191
192#[derive(Clone, Debug, PartialEq)]
193pub struct PsCovergroupIdentifier<'a>(pub Option<PackageScope<'a>>, pub CovergroupIdentifier<'a>);
194
195#[derive(Clone, Debug, PartialEq)]
196pub struct PsCheckerIdentifier<'a>(pub Option<PackageScope<'a>>, pub CheckerIdentifier<'a>);
197
198#[derive(Clone, Debug, PartialEq)]
199pub struct PsIdentifier<'a>(pub Option<PackageScope<'a>>, pub Identifier<'a>);
200
201#[derive(Clone, Debug, PartialEq)]
202pub struct RsProductionIdentifier<'a>(pub Identifier<'a>);
203
204#[derive(Clone, Debug, PartialEq)]
205pub struct SequenceIdentifier<'a>(pub Identifier<'a>);
206
207#[derive(Clone, Debug, PartialEq)]
208pub struct SignalIdentifier<'a>(pub Identifier<'a>);
209
210pub type SimpleIdentifier<'a> = (&'a str, Metadata<'a>);
211
212#[derive(Clone, Debug, PartialEq)]
213pub struct SpecparamIdentifier<'a>(pub Identifier<'a>);
214
215pub type SystemTfIdentifier<'a> = (&'a str, Metadata<'a>);
216
217#[derive(Clone, Debug, PartialEq)]
218pub struct TaskIdentifier<'a>(pub Identifier<'a>);
219
220#[derive(Clone, Debug, PartialEq)]
221pub struct TfIdentifier<'a>(pub Identifier<'a>);
222
223#[derive(Clone, Debug, PartialEq)]
224pub struct TerminalIdentifier<'a>(pub Identifier<'a>);
225
226#[derive(Clone, Debug, PartialEq)]
227pub struct TopmoduleIdentifier<'a>(pub Identifier<'a>);
228
229#[derive(Clone, Debug, PartialEq)]
230pub struct TypeIdentifier<'a>(pub Identifier<'a>);
231
232#[derive(Clone, Debug, PartialEq)]
233pub struct UdpIdentifier<'a>(pub Identifier<'a>);
234
235#[derive(Clone, Debug, PartialEq)]
236pub struct VariableIdentifier<'a>(pub Identifier<'a>);