aldrin_parser/ast/
lit_int.rs

1use crate::grammar::Rule;
2use crate::Span;
3use pest::iterators::Pair;
4
5#[derive(Debug, Clone)]
6pub struct LitInt {
7    span: Span,
8    value: String,
9}
10
11impl LitInt {
12    pub(crate) fn parse(pair: Pair<Rule>) -> Self {
13        assert_eq!(pair.as_rule(), Rule::lit_int);
14
15        Self {
16            span: Span::from_pair(&pair),
17            value: pair.as_str().to_owned(),
18        }
19    }
20
21    pub fn span(&self) -> Span {
22        self.span
23    }
24
25    pub fn value(&self) -> &str {
26        &self.value
27    }
28}
29
30#[derive(Debug, Clone)]
31pub struct LitPosInt {
32    span: Span,
33    value: String,
34}
35
36impl LitPosInt {
37    pub(crate) fn parse(pair: Pair<Rule>) -> Self {
38        assert_eq!(pair.as_rule(), Rule::lit_pos_int);
39
40        Self {
41            span: Span::from_pair(&pair),
42            value: pair.as_str().to_owned(),
43        }
44    }
45
46    pub fn span(&self) -> Span {
47        self.span
48    }
49
50    pub fn value(&self) -> &str {
51        &self.value
52    }
53}