David Peter 2 سال پیش
والد
کامیت
c884b1462a
2فایلهای تغییر یافته به همراه5 افزوده شده و 3 حذف شده
  1. 1 1
      numbat/src/parser.rs
  2. 4 2
      numbat/src/tokenizer.rs

+ 1 - 1
numbat/src/parser.rs

@@ -735,7 +735,7 @@ impl<'a> Parser<'a> {
 
     fn conversion(&mut self) -> Result<Expression> {
         let mut expr = self.comparison()?;
-        while self.match_exact(TokenKind::Arrow).is_some() {
+        while self.match_any(&[TokenKind::Arrow, TokenKind::To]).is_some() {
             let span_op = Some(self.last().unwrap().span);
             let rhs = self.comparison()?;
 

+ 4 - 2
numbat/src/tokenizer.rs

@@ -83,6 +83,8 @@ pub enum TokenKind {
     Unit,
     Use,
 
+    To,
+
     Bool,
     True,
     False,
@@ -320,7 +322,7 @@ impl Tokenizer {
         let keywords = KEYWORDS.get_or_init(|| {
             let mut m = HashMap::new();
             m.insert("per", TokenKind::Per);
-            m.insert("to", TokenKind::Arrow);
+            m.insert("to", TokenKind::To);
             m.insert("let", TokenKind::Let);
             m.insert("fn", TokenKind::Fn);
             m.insert("dimension", TokenKind::Dimension);
@@ -679,7 +681,7 @@ fn test_tokenize_basic() {
         tokenize_reduced("foo to bar"),
         [
             ("foo".to_string(), Identifier, (1, 1)),
-            ("to".to_string(), Arrow, (1, 5)),
+            ("to".to_string(), To, (1, 5)),
             ("bar".to_string(), Identifier, (1, 8)),
             ("".to_string(), Eof, (1, 11))
         ]