sv_parser_syntaxtree/behavioral_statements/
patterns.rs1use crate::*;
2
3#[derive(Clone, Debug, PartialEq, Node)]
6pub enum Pattern {
7 Variable(Box<PatternVariable>),
8 Asterisk(Box<Symbol>),
9 ConstantExpression(Box<ConstantExpression>),
10 Tagged(Box<PatternTagged>),
11 List(Box<PatternList>),
12 IdentifierList(Box<PatternIdentifierList>),
13}
14
15#[derive(Clone, Debug, PartialEq, Node)]
16pub struct PatternVariable {
17 pub nodes: (Symbol, VariableIdentifier),
18}
19
20#[derive(Clone, Debug, PartialEq, Node)]
21pub struct PatternTagged {
22 pub nodes: (Keyword, MemberIdentifier, Option<Pattern>),
23}
24
25#[derive(Clone, Debug, PartialEq, Node)]
26pub struct PatternList {
27 pub nodes: (ApostropheBrace<List<Symbol, Pattern>>,),
28}
29
30#[derive(Clone, Debug, PartialEq, Node)]
31pub struct PatternIdentifierList {
32 pub nodes: (ApostropheBrace<List<Symbol, (MemberIdentifier, Symbol, Pattern)>>,),
33}
34
35#[derive(Clone, Debug, PartialEq, Node)]
36pub enum AssignmentPattern {
37 List(Box<AssignmentPatternList>),
38 Structure(Box<AssignmentPatternStructure>),
39 Array(Box<AssignmentPatternArray>),
40 Repeat(Box<AssignmentPatternRepeat>),
41}
42
43#[derive(Clone, Debug, PartialEq, Node)]
44pub struct AssignmentPatternList {
45 pub nodes: (ApostropheBrace<List<Symbol, Expression>>,),
46}
47
48#[derive(Clone, Debug, PartialEq, Node)]
49pub struct AssignmentPatternStructure {
50 pub nodes: (ApostropheBrace<List<Symbol, (StructurePatternKey, Symbol, Expression)>>,),
51}
52
53#[derive(Clone, Debug, PartialEq, Node)]
54pub struct AssignmentPatternArray {
55 pub nodes: (ApostropheBrace<List<Symbol, (ArrayPatternKey, Symbol, Expression)>>,),
56}
57
58#[derive(Clone, Debug, PartialEq, Node)]
59pub struct AssignmentPatternRepeat {
60 pub nodes: (ApostropheBrace<(ConstantExpression, Brace<List<Symbol, Expression>>)>,),
61}
62
63#[derive(Clone, Debug, PartialEq, Node)]
64pub enum StructurePatternKey {
65 MemberIdentifier(Box<MemberIdentifier>),
66 AssignmentPatternKey(Box<AssignmentPatternKey>),
67}
68
69#[derive(Clone, Debug, PartialEq, Node)]
70pub enum ArrayPatternKey {
71 ConstantExpression(Box<ConstantExpression>),
72 AssignmentPatternKey(Box<AssignmentPatternKey>),
73}
74
75#[derive(Clone, Debug, PartialEq, Node)]
76pub enum AssignmentPatternKey {
77 SimpleType(Box<SimpleType>),
78 Default(Box<Keyword>),
79}
80
81#[derive(Clone, Debug, PartialEq, Node)]
82pub struct AssignmentPatternExpression {
83 pub nodes: (Option<AssignmentPatternExpressionType>, AssignmentPattern),
84}
85
86#[derive(Clone, Debug, PartialEq, Node)]
87pub enum AssignmentPatternExpressionType {
88 PsTypeIdentifier(Box<PsTypeIdentifier>),
89 PsParameterIdentifier(Box<PsParameterIdentifier>),
90 IntegerAtomType(Box<IntegerAtomType>),
91 TypeReference(Box<TypeReference>),
92}
93
94#[derive(Clone, Debug, PartialEq, Node)]
95pub struct ConstantAssignmentPatternExpression {
96 pub nodes: (AssignmentPatternExpression,),
97}
98
99#[derive(Clone, Debug, PartialEq, Node)]
100pub struct AssignmentPatternNetLvalue {
101 pub nodes: (ApostropheBrace<List<Symbol, NetLvalue>>,),
102}
103
104#[derive(Clone, Debug, PartialEq, Node)]
105pub struct AssignmentPatternVariableLvalue {
106 pub nodes: (ApostropheBrace<List<Symbol, VariableLvalue>>,),
107}