sv_parser_syntaxtree/instantiations/
module_instantiation.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub struct ModuleInstantiation {
7    pub nodes: (
8        ModuleIdentifier,
9        Option<ParameterValueAssignment>,
10        List<Symbol, HierarchicalInstance>,
11        Symbol,
12    ),
13}
14
15#[derive(Clone, Debug, PartialEq, Node)]
16pub struct ParameterValueAssignment {
17    pub nodes: (Symbol, Paren<Option<ListOfParameterAssignments>>),
18}
19
20#[derive(Clone, Debug, PartialEq, Node)]
21pub enum ListOfParameterAssignments {
22    Ordered(Box<ListOfParameterAssignmentsOrdered>),
23    Named(Box<ListOfParameterAssignmentsNamed>),
24}
25
26#[derive(Clone, Debug, PartialEq, Node)]
27pub struct ListOfParameterAssignmentsOrdered {
28    pub nodes: (List<Symbol, OrderedParameterAssignment>,),
29}
30
31#[derive(Clone, Debug, PartialEq, Node)]
32pub struct ListOfParameterAssignmentsNamed {
33    pub nodes: (List<Symbol, NamedParameterAssignment>,),
34}
35
36#[derive(Clone, Debug, PartialEq, Node)]
37pub struct OrderedParameterAssignment {
38    pub nodes: (ParamExpression,),
39}
40
41#[derive(Clone, Debug, PartialEq, Node)]
42pub struct NamedParameterAssignment {
43    pub nodes: (Symbol, ParameterIdentifier, Paren<Option<ParamExpression>>),
44}
45
46#[derive(Clone, Debug, PartialEq, Node)]
47pub struct HierarchicalInstance {
48    pub nodes: (NameOfInstance, Paren<Option<ListOfPortConnections>>),
49}
50
51#[derive(Clone, Debug, PartialEq, Node)]
52pub struct NameOfInstance {
53    pub nodes: (InstanceIdentifier, Vec<UnpackedDimension>),
54}
55
56#[derive(Clone, Debug, PartialEq, Node)]
57pub enum ListOfPortConnections {
58    Ordered(Box<ListOfPortConnectionsOrdered>),
59    Named(Box<ListOfPortConnectionsNamed>),
60}
61
62#[derive(Clone, Debug, PartialEq, Node)]
63pub struct ListOfPortConnectionsOrdered {
64    pub nodes: (List<Symbol, OrderedPortConnection>,),
65}
66
67#[derive(Clone, Debug, PartialEq, Node)]
68pub struct ListOfPortConnectionsNamed {
69    pub nodes: (List<Symbol, NamedPortConnection>,),
70}
71
72#[derive(Clone, Debug, PartialEq, Node)]
73pub struct OrderedPortConnection {
74    pub nodes: (Vec<AttributeInstance>, Option<Expression>),
75}
76
77#[derive(Clone, Debug, PartialEq, Node)]
78pub enum NamedPortConnection {
79    Identifier(Box<NamedPortConnectionIdentifier>),
80    Asterisk(Box<NamedPortConnectionAsterisk>),
81}
82
83#[derive(Clone, Debug, PartialEq, Node)]
84pub struct NamedPortConnectionIdentifier {
85    pub nodes: (
86        Vec<AttributeInstance>,
87        Symbol,
88        PortIdentifier,
89        Option<Paren<Option<Expression>>>,
90    ),
91}
92
93#[derive(Clone, Debug, PartialEq, Node)]
94pub struct NamedPortConnectionAsterisk {
95    pub nodes: (Vec<AttributeInstance>, Symbol),
96}