Reconnaissance des tokens de deux caractères
This commit is contained in:
@@ -12,7 +12,7 @@ struct Scanner {
|
|||||||
|
|
||||||
impl Scanner {
|
impl Scanner {
|
||||||
fn scan_tokens(&mut self) {
|
fn scan_tokens(&mut self) {
|
||||||
while (!self.is_at_end()) {
|
while !self.is_at_end() {
|
||||||
self.start = self.current;
|
self.start = self.current;
|
||||||
self.scan_token();
|
self.scan_token();
|
||||||
}
|
}
|
||||||
@@ -38,7 +38,11 @@ impl Scanner {
|
|||||||
'+' => self.add_simple_token( TokenType::Plus ),
|
'+' => self.add_simple_token( TokenType::Plus ),
|
||||||
';' => self.add_simple_token( TokenType::Semicolon ),
|
';' => self.add_simple_token( TokenType::Semicolon ),
|
||||||
'*' => self.add_simple_token( TokenType::Star ),
|
'*' => self.add_simple_token( TokenType::Star ),
|
||||||
_ => ()
|
'!' => { if self.matchnext('=') { self.add_simple_token( TokenType::BangEqual ) } else { self.add_simple_token( TokenType::Bang ) } },
|
||||||
|
'=' => { if self.matchnext('=') { self.add_simple_token( TokenType::EqualEqual ) } else { self.add_simple_token( TokenType::Equal ) } },
|
||||||
|
'<' => { if self.matchnext('=') { self.add_simple_token( TokenType::LessEqual ) } else { self.add_simple_token( TokenType::Less ) } },
|
||||||
|
'>' => { if self.matchnext('=') { self.add_simple_token( TokenType::GreaterEqual ) } else { self.add_simple_token( TokenType::Greater ) } },
|
||||||
|
_ => (), // report error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,6 +51,14 @@ impl Scanner {
|
|||||||
self.source[self.current]
|
self.source[self.current]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn matchnext(&mut self, expected: char) -> bool {
|
||||||
|
if self.is_at_end() { return false; }
|
||||||
|
if self.source[self.current]!=expected { return false; }
|
||||||
|
|
||||||
|
self.current += 1;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
fn add_simple_token(&mut self, t: TokenType) {
|
fn add_simple_token(&mut self, t: TokenType) {
|
||||||
self.add_token(t, String::from(""));
|
self.add_token(t, String::from(""));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user