aldrin_parser/ast/
ident.rs

1use crate::error::ExpectedIdentFoundReserved;
2use crate::grammar::Rule;
3use crate::validate::Validate;
4use crate::Span;
5use pest::iterators::Pair;
6
7#[derive(Debug, Clone)]
8pub struct Ident {
9    span: Span,
10    value: String,
11}
12
13impl Ident {
14    pub(crate) fn parse(pair: Pair<Rule>) -> Self {
15        assert_eq!(pair.as_rule(), Rule::ident);
16
17        Self {
18            span: Span::from_pair(&pair),
19            value: pair.as_str().to_owned(),
20        }
21    }
22
23    pub(crate) fn validate(&self, validate: &mut Validate) {
24        ExpectedIdentFoundReserved::validate(self, validate);
25    }
26
27    pub fn span(&self) -> Span {
28        self.span
29    }
30
31    pub fn value(&self) -> &str {
32        &self.value
33    }
34}