sv_parser_syntaxtree/behavioral_statements/
statements.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[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}