rl_lang/lexer/types/
identifier.rs1use crate::lexer::{tokenizer::Tokenizer, tokentypes::TokenType};
6
7impl Tokenizer {
8 pub fn identifier(&mut self) {
28 while self.peek().is_alphanumeric() || self.peek() == '_' {
29 self.advance();
30 }
31
32 let value: String = self.source[self.start..self.current].iter().collect();
33
34 match value.as_str() {
35 "fn" => self.add_token(TokenType::Fn),
36 "for" => self.add_token(TokenType::For),
37 "while" => self.add_token(TokenType::While),
38 "return" => self.add_token(TokenType::Return),
39 "continue" => self.add_token(TokenType::Continue),
40 "break" => self.add_token(TokenType::Break),
41 "get" => self.add_token(TokenType::Get),
42 "from" => self.add_token(TokenType::From),
43 "in" => self.add_token(TokenType::In),
44 "or" => self.add_token(TokenType::Or),
45 "and" => self.add_token(TokenType::And),
46 "null" => self.add_token(TokenType::Null),
47 "int" => self.add_token(TokenType::Int),
48 "CONST" => self.add_token(TokenType::Const),
49 "float" => self.add_token(TokenType::Float),
50 "bool" => self.add_token(TokenType::Bool),
51 "string" => self.add_token(TokenType::String),
52 "byte" => self.add_token(TokenType::Byte),
53 "char" => self.add_token(TokenType::Char),
54 "true" => self.add_token(TokenType::BoolLiteral(true)),
55 "false" => self.add_token(TokenType::BoolLiteral(false)),
56 "dec" => self.add_token(TokenType::Dec),
57 "if" => self.add_token(TokenType::If),
58 "else" => self.add_token(TokenType::Else),
59 "arr" => self.add_token(TokenType::Array),
60 "as" => self.add_token(TokenType::As),
61 "error" => self.add_token(TokenType::Error),
62 "result" => self.add_token(TokenType::Result),
63 "ok" => self.add_token(TokenType::Ok),
64 "err" => self.add_token(TokenType::Err),
65 "match" => self.add_token(TokenType::Match),
66 "record" => self.add_token(TokenType::Record),
67 "tag" => self.add_token(TokenType::Tag),
68 "map" => self.add_token(TokenType::Map),
69 "set" => self.add_token(TokenType::Set),
70 "_" => self.add_token(TokenType::Wildcard),
71
72 &_ => self.add_token(TokenType::Identifier(value)),
73 }
74 }
75}