aldrin_parser/ast/
lit_int.rs1use 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}