sv_parser_syntaxtree/expressions/
concatenations.rs

1use crate::*;
2
3// -----------------------------------------------------------------------------
4
5#[derive(Clone, Debug, PartialEq, Node)]
6pub struct Concatenation {
7    pub nodes: (Brace<List<Symbol, Expression>>,),
8}
9
10#[derive(Clone, Debug, PartialEq, Node)]
11pub struct ConstantConcatenation {
12    pub nodes: (Brace<List<Symbol, ConstantExpression>>,),
13}
14
15#[derive(Clone, Debug, PartialEq, Node)]
16pub struct ConstantMultipleConcatenation {
17    pub nodes: (Brace<(ConstantExpression, ConstantConcatenation)>,),
18}
19
20#[derive(Clone, Debug, PartialEq, Node)]
21pub struct ModulePathConcatenation {
22    pub nodes: (Brace<List<Symbol, ModulePathExpression>>,),
23}
24
25#[derive(Clone, Debug, PartialEq, Node)]
26pub struct ModulePathMultipleConcatenation {
27    pub nodes: (Brace<(ConstantExpression, ModulePathConcatenation)>,),
28}
29
30#[derive(Clone, Debug, PartialEq, Node)]
31pub struct MultipleConcatenation {
32    pub nodes: (Brace<(Expression, Concatenation)>,),
33}
34
35#[derive(Clone, Debug, PartialEq, Node)]
36pub struct StreamingConcatenation {
37    pub nodes: (Brace<(StreamOperator, Option<SliceSize>, StreamConcatenation)>,),
38}
39
40#[derive(Clone, Debug, PartialEq, Node)]
41pub struct StreamOperator {
42    pub nodes: (Symbol,),
43}
44
45#[derive(Clone, Debug, PartialEq, Node)]
46pub enum SliceSize {
47    SimpleType(Box<SimpleType>),
48    ConstantExpression(Box<ConstantExpression>),
49}
50
51#[derive(Clone, Debug, PartialEq, Node)]
52pub struct StreamConcatenation {
53    pub nodes: (Brace<List<Symbol, StreamExpression>>,),
54}
55
56#[derive(Clone, Debug, PartialEq, Node)]
57pub struct StreamExpression {
58    pub nodes: (Expression, Option<(Keyword, Bracket<ArrayRangeExpression>)>),
59}
60
61#[derive(Clone, Debug, PartialEq, Node)]
62pub enum ArrayRangeExpression {
63    Expression(Box<Expression>),
64    Colon(Box<ArrayRangeExpressionColon>),
65    PlusColon(Box<ArrayRangeExpressionPlusColon>),
66    MinusColon(Box<ArrayRangeExpressionMinusColon>),
67}
68
69#[derive(Clone, Debug, PartialEq, Node)]
70pub struct ArrayRangeExpressionColon {
71    pub nodes: (Expression, Symbol, Expression),
72}
73
74#[derive(Clone, Debug, PartialEq, Node)]
75pub struct ArrayRangeExpressionPlusColon {
76    pub nodes: (Expression, Symbol, Expression),
77}
78
79#[derive(Clone, Debug, PartialEq, Node)]
80pub struct ArrayRangeExpressionMinusColon {
81    pub nodes: (Expression, Symbol, Expression),
82}
83
84#[derive(Clone, Debug, PartialEq, Node)]
85pub struct EmptyUnpackedArrayConcatenation {
86    pub nodes: (Symbol, Symbol),
87}