lisette_syntax/parse/
identifiers.rs1use 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}