Packages
caffeine_lang
4.7.5
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_query_language/ast.gleam
/// Marker type for parsed CQL expressions (pre-substitution).
pub type CqlParsed
/// Marker type for substituted CQL expressions (post-substitution).
pub type Substituted
/// Arithmetic operators supported in CQL expressions.
pub type Operator {
Add
Sub
Mul
Div
}
/// Comparators for time slice expressions.
pub type Comparator {
LessThan
LessThanOrEqualTo
GreaterThan
GreaterThanOrEqualTo
}
/// Time slice specification containing query, comparator, threshold, and interval.
pub type TimeSliceExp {
TimeSliceExp(
query: String,
comparator: Comparator,
threshold: Float,
interval_seconds: Float,
)
}
/// An expression in the CQL AST, either an operator expression or a primary.
/// The phantom `state` parameter tracks whether words have been substituted.
pub type Exp(state) {
TimeSliceExpr(spec: TimeSliceExp)
OperatorExpr(
numerator: Exp(state),
denominator: Exp(state),
operator: Operator,
)
Primary(primary: Primary(state))
}
/// A primary expression, either a word (identifier) or a parenthesized expression.
/// The phantom `state` parameter mirrors the parent Exp's state.
pub type Primary(state) {
PrimaryWord(word: Word)
PrimaryExp(exp: Exp(state))
}
/// A word (identifier) in the expression.
pub type Word {
Word(value: String)
}