sv_parser_syntaxtree/declarations/
declaration_assignments.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub struct DefparamAssignment {
7    pub nodes: (
8        HierarchicalParameterIdentifier,
9        Symbol,
10        ConstantMintypmaxExpression,
11    ),
12}
13
14#[derive(Clone, Debug, PartialEq, Node)]
15pub struct NetDeclAssignment {
16    pub nodes: (
17        NetIdentifier,
18        Vec<UnpackedDimension>,
19        Option<(Symbol, Expression)>,
20    ),
21}
22
23#[derive(Clone, Debug, PartialEq, Node)]
24pub struct ParamAssignment {
25    pub nodes: (
26        ParameterIdentifier,
27        Vec<UnpackedDimension>,
28        Option<(Symbol, ConstantParamExpression)>,
29    ),
30}
31
32#[derive(Clone, Debug, PartialEq, Node)]
33pub enum SpecparamAssignment {
34    Mintypmax(Box<SpecparamAssignmentMintypmax>),
35    PulseControlSpecparam(Box<PulseControlSpecparam>),
36}
37
38#[derive(Clone, Debug, PartialEq, Node)]
39pub struct SpecparamAssignmentMintypmax {
40    pub nodes: (SpecparamIdentifier, Symbol, ConstantMintypmaxExpression),
41}
42
43#[derive(Clone, Debug, PartialEq, Node)]
44pub struct TypeAssignment {
45    pub nodes: (TypeIdentifier, Option<(Symbol, DataType)>),
46}
47
48#[derive(Clone, Debug, PartialEq, Node)]
49pub enum PulseControlSpecparam {
50    WithoutDescriptor(Box<PulseControlSpecparamWithoutDescriptor>),
51    WithDescriptor(Box<PulseControlSpecparamWithDescriptor>),
52}
53
54#[derive(Clone, Debug, PartialEq, Node)]
55pub struct PulseControlSpecparamWithoutDescriptor {
56    pub nodes: (
57        Symbol,
58        Symbol,
59        Paren<(RejectLimitValue, Option<(Symbol, ErrorLimitValue)>)>,
60    ),
61}
62
63#[derive(Clone, Debug, PartialEq, Node)]
64pub struct PulseControlSpecparamWithDescriptor {
65    pub nodes: (
66        Symbol,
67        SpecifyInputTerminalDescriptor,
68        Symbol,
69        SpecifyOutputTerminalDescriptor,
70        Symbol,
71        Paren<(RejectLimitValue, Option<(Symbol, ErrorLimitValue)>)>,
72    ),
73}
74
75#[derive(Clone, Debug, PartialEq, Node)]
76pub struct ErrorLimitValue {
77    pub nodes: (LimitValue,),
78}
79
80#[derive(Clone, Debug, PartialEq, Node)]
81pub struct RejectLimitValue {
82    pub nodes: (LimitValue,),
83}
84
85#[derive(Clone, Debug, PartialEq, Node)]
86pub struct LimitValue {
87    pub nodes: (ConstantMintypmaxExpression,),
88}
89
90#[derive(Clone, Debug, PartialEq, Node)]
91pub enum VariableDeclAssignment {
92    Variable(Box<VariableDeclAssignmentVariable>),
93    DynamicArray(Box<VariableDeclAssignmentDynamicArray>),
94    Class(Box<VariableDeclAssignmentClass>),
95}
96
97#[derive(Clone, Debug, PartialEq, Node)]
98pub struct VariableDeclAssignmentVariable {
99    pub nodes: (
100        VariableIdentifier,
101        Vec<VariableDimension>,
102        Option<(Symbol, Expression)>,
103    ),
104}
105
106#[derive(Clone, Debug, PartialEq, Node)]
107pub struct VariableDeclAssignmentDynamicArray {
108    pub nodes: (
109        DynamicArrayVariableIdentifier,
110        UnsizedDimension,
111        Vec<VariableDimension>,
112        Option<(Symbol, DynamicArrayNew)>,
113    ),
114}
115
116#[derive(Clone, Debug, PartialEq, Node)]
117pub struct VariableDeclAssignmentClass {
118    pub nodes: (ClassVariableIdentifier, (Symbol, ClassNew)),
119}
120
121#[derive(Clone, Debug, PartialEq, Node)]
122pub enum ClassNew {
123    Argument(Box<ClassNewArgument>),
124    Expression(Box<ClassNewExpression>),
125}
126
127#[derive(Clone, Debug, PartialEq, Node)]
128pub struct ClassNewArgument {
129    pub nodes: (Option<ClassScope>, Keyword, Option<Paren<ListOfArguments>>),
130}
131
132#[derive(Clone, Debug, PartialEq, Node)]
133pub struct ClassNewExpression {
134    pub nodes: (Keyword, Expression),
135}
136
137#[derive(Clone, Debug, PartialEq, Node)]
138pub struct DynamicArrayNew {
139    pub nodes: (Keyword, Bracket<Expression>, Option<Paren<Expression>>),
140}