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