scarf_syntax/expressions/
numbers.rs1use crate::*;
6
7#[derive(Clone, Debug, PartialEq)]
8pub enum Number<'a> {
9 Integral(Box<IntegralNumber<'a>>),
10 Real(Box<RealNumber<'a>>),
11}
12
13#[derive(Clone, Debug, PartialEq)]
14pub enum IntegralNumber<'a> {
15 Decimal(Box<DecimalNumber<'a>>),
16 Octal(Box<OctalNumber<'a>>),
17 Binary(Box<BinaryNumber<'a>>),
18 Hex(Box<HexNumber<'a>>),
19}
20
21#[derive(Clone, Debug, PartialEq)]
22pub enum DecimalNumber<'a> {
23 Sized(Box<(&'a str, Metadata<'a>)>),
24 Unsized(Box<UnsignedNumber<'a>>),
25}
26
27#[derive(Clone, Debug, PartialEq)]
28pub struct BinaryNumber<'a>(pub &'a str, pub Metadata<'a>);
29
30#[derive(Clone, Debug, PartialEq)]
31pub struct OctalNumber<'a>(pub &'a str, pub Metadata<'a>);
32
33#[derive(Clone, Debug, PartialEq)]
34pub struct HexNumber<'a>(pub &'a str, pub Metadata<'a>);
35
36#[derive(Clone, Debug, PartialEq)]
37pub enum RealNumber<'a> {
38 FixedPoint(Box<FixedPointNumber<'a>>),
39 Scientific(Box<ScientificNumber<'a>>),
40}
41
42#[derive(Clone, Debug, PartialEq)]
43pub struct FixedPointNumber<'a>(pub &'a str, pub Metadata<'a>);
44
45#[derive(Clone, Debug, PartialEq)]
46pub struct ScientificNumber<'a>(pub &'a str, pub Metadata<'a>);
47
48#[derive(Clone, Debug, PartialEq)]
49pub struct UnsignedNumber<'a>(pub &'a str, pub Metadata<'a>);
50
51#[derive(Clone, Debug, PartialEq)]
52pub struct UnbasedUnsizedLiteral<'a>(pub &'a str, pub Metadata<'a>);