sv_parser_syntaxtree/behavioral_statements/
patterns.rs

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