scarf_syntax/expressions/
concatenations.rs1use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct Concatenation<'a>(
9 pub Metadata<'a>, pub Expression<'a>,
11 pub Vec<(Metadata<'a>, Expression<'a>)>,
12 pub Metadata<'a>, );
14
15#[derive(Clone, Debug, PartialEq)]
16pub struct ConstantConcatenation<'a>(
17 pub Metadata<'a>, pub ConstantExpression<'a>,
19 pub Vec<(Metadata<'a>, ConstantExpression<'a>)>,
20 pub Metadata<'a>, );
22
23#[derive(Clone, Debug, PartialEq)]
24pub struct ConstantMultipleConcatenation<'a>(
25 pub Metadata<'a>, pub ConstantExpression<'a>,
27 pub ConstantConcatenation<'a>,
28 pub Metadata<'a>, );
30
31#[derive(Clone, Debug, PartialEq)]
32pub struct ModulePathConcatenation<'a>(
33 pub Metadata<'a>, pub ModulePathExpression<'a>,
35 pub Vec<(Metadata<'a>, ModulePathExpression<'a>)>,
36 pub Metadata<'a>, );
38
39#[derive(Clone, Debug, PartialEq)]
40pub struct ModulePathMultipleConcatenation<'a>(
41 pub Metadata<'a>, pub ConstantExpression<'a>,
43 pub ModulePathConcatenation<'a>,
44 pub Metadata<'a>, );
46
47#[derive(Clone, Debug, PartialEq)]
48pub struct MultipleConcatenation<'a>(
49 pub Metadata<'a>, pub Expression<'a>,
51 pub Concatenation<'a>,
52 pub Metadata<'a>, );
54
55#[derive(Clone, Debug, PartialEq)]
56pub struct StreamingConcatenation<'a>(
57 pub Metadata<'a>, pub StreamOperator<'a>,
59 pub Option<SliceSize<'a>>,
60 pub StreamConcatenation<'a>,
61 pub Metadata<'a>, );
63
64#[derive(Clone, Debug, PartialEq)]
65pub enum StreamOperator<'a> {
66 Right(Metadata<'a>),
67 Left(Metadata<'a>),
68}
69
70#[derive(Clone, Debug, PartialEq)]
71pub enum SliceSize<'a> {
72 Simple(Box<SimpleType<'a>>),
73 ConstExpr(Box<ConstantExpression<'a>>),
74}
75
76#[derive(Clone, Debug, PartialEq)]
77pub struct StreamConcatenation<'a>(
78 pub Metadata<'a>, pub StreamExpression<'a>,
80 pub Vec<(
81 Metadata<'a>, StreamExpression<'a>,
83 )>,
84 pub Metadata<'a>, );
86
87#[derive(Clone, Debug, PartialEq)]
88pub struct StreamExpression<'a>(
89 pub Expression<'a>,
90 pub Option<(
91 Metadata<'a>, Metadata<'a>, ArrayRangeExpression<'a>,
94 Metadata<'a>, )>,
96);
97
98#[derive(Clone, Debug, PartialEq)]
99pub enum ArrayRangeExpression<'a> {
100 Select(Box<Expression<'a>>),
101 Range(
102 Box<(
103 Expression<'a>,
104 Metadata<'a>, Expression<'a>,
106 )>,
107 ),
108 PlusRange(
109 Box<(
110 Expression<'a>,
111 Metadata<'a>, Expression<'a>,
113 )>,
114 ),
115 MinusRange(
116 Box<(
117 Expression<'a>,
118 Metadata<'a>, Expression<'a>,
120 )>,
121 ),
122}
123
124#[derive(Clone, Debug, PartialEq)]
125pub struct EmptyUnpackedArrayConcatenation<'a>(
126 pub Metadata<'a>, pub Metadata<'a>, );