From c3f7166d2887040b214f03c04063439a31970fbb Mon Sep 17 00:00:00 2001 From: Kasper Date: Tue, 6 Jul 2021 19:59:20 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20lexing=20of=20`=CF=80`=20with=20unit=20af?= =?UTF-8?q?terwards?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit e.g `πm` --- src/lexer.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/lexer.rs b/src/lexer.rs index 6b253f9..8b34479 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -127,6 +127,7 @@ pub fn parse_token(c: &str, lexer: &mut Lexer) -> Result<(), String> { // right_paren_count += 1; tokens.push(Token::Operator(RightParen)); }, + "π" => tokens.push(Token::Constant(Pi)), "'" => tokens.push(Token::Unit(Foot)), "\"" | "“" | "”" | "″" => tokens.push(Token::LexerKeyword(DoubleQuotes)), "Ω" | "Ω" => tokens.push(Token::Unit(Ohm)), @@ -167,7 +168,7 @@ pub fn parse_word(word: &str, lexer: &mut Lexer) -> Result<(), String> { "centillion" => Token::NamedNumber(Centillion), "googol" => Token::NamedNumber(Googol), - "π" | "pi" => Token::Constant(Pi), + "pi" => Token::Constant(Pi), "e" => Token::Constant(E), "plus" => Token::Operator(Plus), @@ -961,5 +962,7 @@ mod tests { run_lex("(2 + 3) * 4", vec![Token::Operator(LeftParen), numtok!(2), Token::Operator(Plus), numtok!(3), Token::Operator(RightParen), Token::Operator(Multiply), numtok!(4)]); run_lex("52 weeks * (12 hrs + 12 hours)", vec![numtok!(52), Token::Unit(Week), Token::Operator(Multiply), Token::Operator(LeftParen), numtok!(12), Token::Unit(Hour), Token::Operator(Plus), numtok!(12), Token::Unit(Hour), Token::Operator(RightParen)]); run_lex("12 pound+", vec![numtok!(12), Token::Unit(Pound), Token::Operator(Plus)]); + + run_lex("5 π m", vec![numtok!(5), Token::Constant(Pi), Token::Unit(Meter)]); } }