mirror of
https://github.com/PaddiM8/kalker.git
synced 2025-06-25 12:11:39 +02:00
Removed self.advance()
code duplication in lexer.
This commit is contained in:
parent
cbc0b340a1
commit
3a8e939ac0
@ -70,63 +70,31 @@ impl<'a> Lexer<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let token = match c {
|
|
||||||
'+' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Plus, "")
|
|
||||||
}
|
|
||||||
'-' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Minus, "")
|
|
||||||
}
|
|
||||||
'*' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Star, "")
|
|
||||||
}
|
|
||||||
'/' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Slash, "")
|
|
||||||
}
|
|
||||||
'^' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Power, "")
|
|
||||||
}
|
|
||||||
'(' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::OpenParenthesis, "")
|
|
||||||
}
|
|
||||||
')' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::ClosedParenthesis, "")
|
|
||||||
}
|
|
||||||
'|' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Pipe, "")
|
|
||||||
}
|
|
||||||
'=' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Equals, "")
|
|
||||||
}
|
|
||||||
'!' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Exclamation, "")
|
|
||||||
}
|
|
||||||
',' => {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Comma, "")
|
|
||||||
}
|
|
||||||
_ => {
|
|
||||||
if c.is_digit(10) {
|
if c.is_digit(10) {
|
||||||
self.next_number_literal()
|
return self.next_number_literal();
|
||||||
} else if c.is_alphabetic() {
|
|
||||||
self.next_identifier()
|
|
||||||
} else {
|
|
||||||
self.advance();
|
|
||||||
build(TokenKind::Unknown, "")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.is_alphabetic() {
|
||||||
|
return self.next_identifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let token = match c {
|
||||||
|
'+' => build(TokenKind::Plus, ""),
|
||||||
|
'-' => build(TokenKind::Minus, ""),
|
||||||
|
'*' => build(TokenKind::Star, ""),
|
||||||
|
'/' => build(TokenKind::Slash, ""),
|
||||||
|
'^' => build(TokenKind::Power, ""),
|
||||||
|
'(' => build(TokenKind::OpenParenthesis, ""),
|
||||||
|
')' => build(TokenKind::ClosedParenthesis, ""),
|
||||||
|
'|' => build(TokenKind::Pipe, ""),
|
||||||
|
'=' => build(TokenKind::Equals, ""),
|
||||||
|
'!' => build(TokenKind::Exclamation, ""),
|
||||||
|
',' => build(TokenKind::Comma, ""),
|
||||||
|
_ => build(TokenKind::Unknown, ""),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.advance();
|
||||||
|
|
||||||
token
|
token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
kalk_cli/Cargo.lock
generated
12
kalk_cli/Cargo.lock
generated
@ -128,12 +128,6 @@ dependencies = [
|
|||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "lazy_static"
|
|
||||||
version = "1.4.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kalk"
|
name = "kalk"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
@ -151,6 +145,12 @@ dependencies = [
|
|||||||
"rustyline",
|
"rustyline",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.71"
|
version = "0.2.71"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user