sv_parser_syntaxtree/behavioral_statements/
case_statements.rs1use crate::*;
2
3#[derive(Clone, Debug, PartialEq, Node)]
6pub enum CaseStatement {
7 Normal(Box<CaseStatementNormal>),
8 Matches(Box<CaseStatementMatches>),
9 Inside(Box<CaseStatementInside>),
10}
11
12#[derive(Clone, Debug, PartialEq, Node)]
13pub struct CaseStatementNormal {
14 pub nodes: (
15 Option<UniquePriority>,
16 CaseKeyword,
17 Paren<CaseExpression>,
18 CaseItem,
19 Vec<CaseItem>,
20 Keyword,
21 ),
22}
23
24#[derive(Clone, Debug, PartialEq, Node)]
25pub struct CaseStatementMatches {
26 pub nodes: (
27 Option<UniquePriority>,
28 CaseKeyword,
29 Paren<CaseExpression>,
30 Keyword,
31 CasePatternItem,
32 Vec<CasePatternItem>,
33 Keyword,
34 ),
35}
36
37#[derive(Clone, Debug, PartialEq, Node)]
38pub struct CaseStatementInside {
39 pub nodes: (
40 Option<UniquePriority>,
41 Keyword,
42 Paren<CaseExpression>,
43 Keyword,
44 CaseInsideItem,
45 Vec<CaseInsideItem>,
46 Keyword,
47 ),
48}
49
50#[derive(Clone, Debug, PartialEq, Node)]
51pub enum CaseKeyword {
52 Case(Box<Keyword>),
53 Casez(Box<Keyword>),
54 Casex(Box<Keyword>),
55}
56
57#[derive(Clone, Debug, PartialEq, Node)]
58pub struct CaseExpression {
59 pub nodes: (Expression,),
60}
61
62#[derive(Clone, Debug, PartialEq, Node)]
63pub enum CaseItem {
64 NonDefault(Box<CaseItemNondefault>),
65 Default(Box<CaseItemDefault>),
66}
67
68#[derive(Clone, Debug, PartialEq, Node)]
69pub struct CaseItemNondefault {
70 pub nodes: (List<Symbol, CaseItemExpression>, Symbol, StatementOrNull),
71}
72
73#[derive(Clone, Debug, PartialEq, Node)]
74pub struct CaseItemDefault {
75 pub nodes: (Keyword, Option<Symbol>, StatementOrNull),
76}
77
78#[derive(Clone, Debug, PartialEq, Node)]
79pub enum CasePatternItem {
80 NonDefault(Box<CasePatternItemNondefault>),
81 Default(Box<CaseItemDefault>),
82}
83
84#[derive(Clone, Debug, PartialEq, Node)]
85pub struct CasePatternItemNondefault {
86 pub nodes: (
87 Pattern,
88 Option<(Symbol, Expression)>,
89 Symbol,
90 StatementOrNull,
91 ),
92}
93
94#[derive(Clone, Debug, PartialEq, Node)]
95pub enum CaseInsideItem {
96 NonDefault(Box<CaseInsideItemNondefault>),
97 Default(Box<CaseItemDefault>),
98}
99
100#[derive(Clone, Debug, PartialEq, Node)]
101pub struct CaseInsideItemNondefault {
102 pub nodes: (OpenRangeList, Symbol, StatementOrNull),
103}
104
105#[derive(Clone, Debug, PartialEq, Node)]
106pub struct CaseItemExpression {
107 pub nodes: (Expression,),
108}
109
110#[derive(Clone, Debug, PartialEq, Node)]
111pub struct RandcaseStatement {
112 pub nodes: (Keyword, RandcaseItem, Vec<RandcaseItem>, Keyword),
113}
114
115#[derive(Clone, Debug, PartialEq, Node)]
116pub struct RandcaseItem {
117 pub nodes: (Expression, Symbol, StatementOrNull),
118}
119
120#[derive(Clone, Debug, PartialEq, Node)]
121pub struct OpenRangeList {
122 pub nodes: (List<Symbol, OpenValueRange>,),
123}
124
125#[derive(Clone, Debug, PartialEq, Node)]
126pub struct OpenValueRange {
127 pub nodes: (ValueRange,),
128}