summaryrefslogtreecommitdiff
path: root/src/lexer.rs
diff options
context:
space:
mode:
authorMike Buland <mike@xagasoft.com>2026-06-04 22:21:50 -0700
committerMike Buland <mike@xagasoft.com>2026-06-04 22:21:50 -0700
commit414681bc8b8ccbff81c0878fbf3ff193f7f55e0f (patch)
tree8d09ec9e8516f5daf8b01d8f273210398a8e2305 /src/lexer.rs
parent4c223b1c4ebfa7a14933229dd4537c825d9ea063 (diff)
downloadcrimtag-414681bc8b8ccbff81c0878fbf3ff193f7f55e0f.tar.gz
crimtag-414681bc8b8ccbff81c0878fbf3ff193f7f55e0f.tar.bz2
crimtag-414681bc8b8ccbff81c0878fbf3ff193f7f55e0f.tar.xz
crimtag-414681bc8b8ccbff81c0878fbf3ff193f7f55e0f.zip
Lexer is done for now. Now for the scaffold.
ALso the parser is next up. But I want to get some frontend done so it won't whine at me so much. The lexer has a lot more to go, I'm sure, but right now it does all the basics that I need it to do.
Diffstat (limited to 'src/lexer.rs')
-rw-r--r--src/lexer.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lexer.rs b/src/lexer.rs
index 46651c4..e80e461 100644
--- a/src/lexer.rs
+++ b/src/lexer.rs
@@ -39,7 +39,7 @@ fn is_valid_token_char( c: char ) -> bool {
39 return false; 39 return false;
40 } 40 }
41 match c { 41 match c {
42 'a'..'z' | 'A'..'Z' | '0'..'9' => true, 42 'a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '-' => true,
43 _ => false 43 _ => false
44 } 44 }
45} 45}
@@ -157,9 +157,14 @@ impl<'a> Lexer<'a> {
157 157
158 fn parse_token(&mut self) -> Option<Symbol<'a>> { 158 fn parse_token(&mut self) -> Option<Symbol<'a>> {
159 self.skip_ws(); 159 self.skip_ws();
160 if let Some(chr) = self.cur() && chr == '"' { 160 match self.cur() {
161 // Literal string 161 Some('"') => {
162 return self.parse_literal_str(); 162 return self.parse_literal_str();
163 }
164 Some('=') => {
165 return Some(Symbol::Equals);
166 }
167 _ => {}
163 } 168 }
164 let start = self.cur_index(); 169 let start = self.cur_index();
165 170