sv_parser_syntaxtree/behavioral_statements/
statements.rs1use crate::*;
2
3#[derive(Clone, Debug, PartialEq, Node)]
6pub enum StatementOrNull {
7 Statement(Box<Statement>),
8 Attribute(Box<StatementOrNullAttribute>),
9}
10
11#[derive(Clone, Debug, PartialEq, Node)]
12pub struct StatementOrNullAttribute {
13 pub nodes: (Vec<AttributeInstance>, Symbol),
14}
15
16#[derive(Clone, Debug, PartialEq, Node)]
17pub struct Statement {
18 pub nodes: (
19 Option<(BlockIdentifier, Symbol)>,
20 Vec<AttributeInstance>,
21 StatementItem,
22 ),
23}
24
25#[derive(Clone, Debug, PartialEq, Node)]
26pub enum StatementItem {
27 BlockingAssignment(Box<(BlockingAssignment, Symbol)>),
28 NonblockingAssignment(Box<(NonblockingAssignment, Symbol)>),
29 ProceduralContinuousAssignment(Box<(ProceduralContinuousAssignment, Symbol)>),
30 CaseStatement(Box<CaseStatement>),
31 ConditionalStatement(Box<ConditionalStatement>),
32 IncOrDecExpression(Box<(IncOrDecExpression, Symbol)>),
33 SubroutineCallStatement(Box<SubroutineCallStatement>),
34 DisableStatement(Box<DisableStatement>),
35 EventTrigger(Box<EventTrigger>),
36 LoopStatement(Box<LoopStatement>),
37 JumpStatement(Box<JumpStatement>),
38 ParBlock(Box<ParBlock>),
39 ProceduralTimingControlStatement(Box<ProceduralTimingControlStatement>),
40 SeqBlock(Box<SeqBlock>),
41 WaitStatement(Box<WaitStatement>),
42 ProceduralAssertionStatement(Box<ProceduralAssertionStatement>),
43 ClockingDrive(Box<(ClockingDrive, Symbol)>),
44 RandsequenceStatement(Box<RandsequenceStatement>),
45 RandcaseStatement(Box<RandcaseStatement>),
46 ExpectPropertyStatement(Box<ExpectPropertyStatement>),
47}
48
49#[derive(Clone, Debug, PartialEq, Node)]
50pub struct FunctionStatement {
51 pub nodes: (Statement,),
52}
53
54#[derive(Clone, Debug, PartialEq, Node)]
55pub enum FunctionStatementOrNull {
56 Statement(Box<FunctionStatement>),
57 Attribute(Box<FunctionStatementOrNullAttribute>),
58}
59
60#[derive(Clone, Debug, PartialEq, Node)]
61pub struct FunctionStatementOrNullAttribute {
62 pub nodes: (Vec<AttributeInstance>, Symbol),
63}
64
65#[derive(Clone, Debug, PartialEq, Node)]
66pub struct VariableIdentifierList {
67 pub nodes: (List<Symbol, VariableIdentifier>,),
68}