Skip to main content

lisette_syntax/parse/
identifiers.rs

1use ecow::EcoString;
2
3use super::Parser;
4use crate::lex::TokenKind::*;
5
6impl<'source> Parser<'source> {
7    pub fn read_identifier(&mut self) -> EcoString {
8        let identifier = self.current_token().text;
9
10        self.ensure(Identifier);
11
12        identifier.into()
13    }
14
15    pub fn read_identifier_sequence(&mut self) -> EcoString {
16        let mut name = self.current_token().text.to_string();
17        self.ensure(Identifier);
18
19        while self.advance_if(Dot) {
20            name.push('.');
21            name.push_str(self.current_token().text);
22            self.ensure(Identifier);
23        }
24
25        name.into()
26    }
27}