scarf_syntax/behavioral_statements/
conditional_statements.rs1use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct ConditionalStatement<'a>(
9 pub Option<UniquePriority<'a>>,
10 pub Metadata<'a>, pub Metadata<'a>, pub CondPredicate<'a>,
13 pub Metadata<'a>, pub StatementOrNull<'a>,
15 pub Vec<(
16 Metadata<'a>, Metadata<'a>, Metadata<'a>, CondPredicate<'a>,
20 Metadata<'a>, StatementOrNull<'a>,
22 )>,
23 pub Option<(
24 Metadata<'a>, StatementOrNull<'a>,
26 )>,
27);
28
29#[derive(Clone, Debug, PartialEq)]
30pub enum UniquePriority<'a> {
31 Unique(Metadata<'a>),
32 Unique0(Metadata<'a>),
33 Priority(Metadata<'a>),
34}
35
36#[derive(Clone, Debug, PartialEq)]
37pub struct CondPredicate<'a>(
38 pub ExpressionOrCondPattern<'a>,
39 pub Vec<(
40 Metadata<'a>, ExpressionOrCondPattern<'a>,
42 )>,
43);
44
45#[derive(Clone, Debug, PartialEq)]
46pub enum ExpressionOrCondPattern<'a> {
47 Expression(Box<Expression<'a>>),
48 CondPattern(Box<CondPattern<'a>>),
49}
50
51#[derive(Clone, Debug, PartialEq)]
52pub struct CondPattern<'a>(
53 pub Expression<'a>,
54 pub Metadata<'a>, pub Pattern<'a>,
56);