sv_parser_syntaxtree/behavioral_statements/
parallel_and_sequential_blocks.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub enum ActionBlock {
7    StatementOrNull(Box<StatementOrNull>),
8    Else(Box<ActionBlockElse>),
9}
10
11#[derive(Clone, Debug, PartialEq, Node)]
12pub struct ActionBlockElse {
13    pub nodes: (Option<Statement>, Keyword, StatementOrNull),
14}
15
16#[derive(Clone, Debug, PartialEq, Node)]
17pub struct SeqBlock {
18    pub nodes: (
19        Keyword,
20        Option<(Symbol, BlockIdentifier)>,
21        Vec<BlockItemDeclaration>,
22        Vec<StatementOrNull>,
23        Keyword,
24        Option<(Symbol, BlockIdentifier)>,
25    ),
26}
27
28#[derive(Clone, Debug, PartialEq, Node)]
29pub struct ParBlock {
30    pub nodes: (
31        Keyword,
32        Option<(Symbol, BlockIdentifier)>,
33        Vec<BlockItemDeclaration>,
34        Vec<StatementOrNull>,
35        JoinKeyword,
36        Option<(Symbol, BlockIdentifier)>,
37    ),
38}
39
40#[derive(Clone, Debug, PartialEq, Node)]
41pub enum JoinKeyword {
42    Join(Box<Keyword>),
43    JoinAny(Box<Keyword>),
44    JoinNone(Box<Keyword>),
45}