sv_parser_syntaxtree/behavioral_statements/
procedural_blocks_and_assignments.rs1use crate::*;
2
3#[derive(Clone, Debug, PartialEq, Node)]
6pub struct InitialConstruct {
7 pub nodes: (Keyword, StatementOrNull),
8}
9
10#[derive(Clone, Debug, PartialEq, Node)]
11pub struct AlwaysConstruct {
12 pub nodes: (AlwaysKeyword, Statement),
13}
14
15#[derive(Clone, Debug, PartialEq, Node)]
16pub enum AlwaysKeyword {
17 Always(Box<Keyword>),
18 AlwaysComb(Box<Keyword>),
19 AlwaysLatch(Box<Keyword>),
20 AlwaysFf(Box<Keyword>),
21}
22
23#[derive(Clone, Debug, PartialEq, Node)]
24pub struct FinalConstruct {
25 pub nodes: (Keyword, FunctionStatement),
26}
27
28#[derive(Clone, Debug, PartialEq, Node)]
29pub enum BlockingAssignment {
30 Variable(Box<BlockingAssignmentVariable>),
31 NonrangeVariable(Box<BlockingAssignmentNonrangeVariable>),
32 HierarchicalVariable(Box<BlockingAssignmentHierarchicalVariable>),
33 OperatorAssignment(Box<OperatorAssignment>),
34}
35
36#[derive(Clone, Debug, PartialEq, Node)]
37pub struct BlockingAssignmentVariable {
38 pub nodes: (VariableLvalue, Symbol, DelayOrEventControl, Expression),
39}
40
41#[derive(Clone, Debug, PartialEq, Node)]
42pub struct BlockingAssignmentNonrangeVariable {
43 pub nodes: (NonrangeVariableLvalue, Symbol, DynamicArrayNew),
44}
45
46#[derive(Clone, Debug, PartialEq, Node)]
47pub struct BlockingAssignmentHierarchicalVariable {
48 pub nodes: (
49 Option<ImplicitClassHandleOrClassScopeOrPackageScope>,
50 HierarchicalVariableIdentifier,
51 Select,
52 Symbol,
53 ClassNew,
54 ),
55}
56
57#[derive(Clone, Debug, PartialEq, Node)]
58pub struct OperatorAssignment {
59 pub nodes: (VariableLvalue, AssignmentOperator, Expression),
60}
61
62#[derive(Clone, Debug, PartialEq, Node)]
63pub struct AssignmentOperator {
64 pub nodes: (Symbol,),
65}
66
67#[derive(Clone, Debug, PartialEq, Node)]
68pub struct NonblockingAssignment {
69 pub nodes: (
70 VariableLvalue,
71 Symbol,
72 Option<DelayOrEventControl>,
73 Expression,
74 ),
75}
76
77#[derive(Clone, Debug, PartialEq, Node)]
78pub enum ProceduralContinuousAssignment {
79 Assign(Box<ProceduralContinuousAssignmentAssign>),
80 Deassign(Box<ProceduralContinuousAssignmentDeassign>),
81 ForceVariable(Box<ProceduralContinuousAssignmentForceVariable>),
82 ForceNet(Box<ProceduralContinuousAssignmentForceNet>),
83 ReleaseVariable(Box<ProceduralContinuousAssignmentReleaseVariable>),
84 ReleaseNet(Box<ProceduralContinuousAssignmentReleaseNet>),
85}
86
87#[derive(Clone, Debug, PartialEq, Node)]
88pub struct ProceduralContinuousAssignmentAssign {
89 pub nodes: (Keyword, VariableAssignment),
90}
91
92#[derive(Clone, Debug, PartialEq, Node)]
93pub struct ProceduralContinuousAssignmentDeassign {
94 pub nodes: (Keyword, VariableLvalue),
95}
96
97#[derive(Clone, Debug, PartialEq, Node)]
98pub struct ProceduralContinuousAssignmentForceVariable {
99 pub nodes: (Keyword, VariableAssignment),
100}
101
102#[derive(Clone, Debug, PartialEq, Node)]
103pub struct ProceduralContinuousAssignmentForceNet {
104 pub nodes: (Keyword, NetAssignment),
105}
106
107#[derive(Clone, Debug, PartialEq, Node)]
108pub struct ProceduralContinuousAssignmentReleaseVariable {
109 pub nodes: (Keyword, VariableLvalue),
110}
111
112#[derive(Clone, Debug, PartialEq, Node)]
113pub struct ProceduralContinuousAssignmentReleaseNet {
114 pub nodes: (Keyword, NetLvalue),
115}
116
117#[derive(Clone, Debug, PartialEq, Node)]
118pub struct VariableAssignment {
119 pub nodes: (VariableLvalue, Symbol, Expression),
120}