瀏覽代碼

Scan WHERE

main
Dylan Baker 4 年之前
父節點
當前提交
bf101202fa
共有 2 個文件被更改,包括 7 次插入11 次删除
  1. 5
    11
      src/lexer.rs
  2. 2
    0
      src/token.rs

+ 5
- 11
src/lexer.rs 查看文件

25
         Matcher::new(r#"^"(.*)""#, TokenType::String),
25
         Matcher::new(r#"^"(.*)""#, TokenType::String),
26
         Matcher::new(r#"^SELECT"#, TokenType::Select),
26
         Matcher::new(r#"^SELECT"#, TokenType::Select),
27
         Matcher::new(r#"^FROM"#, TokenType::From),
27
         Matcher::new(r#"^FROM"#, TokenType::From),
28
+        Matcher::new(r#"^WHERE"#, TokenType::Where),
28
         Matcher::new(r#"^[a-z][a-zA-Z_\-.*]*"#, TokenType::Identfiier),
29
         Matcher::new(r#"^[a-z][a-zA-Z_\-.*]*"#, TokenType::Identfiier),
29
         Matcher::new(r#"^[0-9]+"#, TokenType::Number),
30
         Matcher::new(r#"^[0-9]+"#, TokenType::Number),
30
         Matcher::new(r#"^\*"#, TokenType::Star),
31
         Matcher::new(r#"^\*"#, TokenType::Star),
90
     }
91
     }
91
 
92
 
92
     #[test]
93
     #[test]
93
-    fn it_scans_a_keyword() {
94
+    fn it_scans_keywords() {
94
         assert_eq!(
95
         assert_eq!(
95
-            scan("SELECT").unwrap(),
96
-            vec![Token::new(TokenType::Select, "SELECT")]
97
-        )
98
-    }
99
-
100
-    #[test]
101
-    fn it_scans_two_keywords() {
102
-        assert_eq!(
103
-            scan("SELECT FROM").unwrap(),
96
+            scan("SELECT FROM WHERE").unwrap(),
104
             vec![
97
             vec![
105
                 Token::new(TokenType::Select, "SELECT"),
98
                 Token::new(TokenType::Select, "SELECT"),
106
-                Token::new(TokenType::From, "FROM")
99
+                Token::new(TokenType::From, "FROM"),
100
+                Token::new(TokenType::Where, "WHERE"),
107
             ]
101
             ]
108
         )
102
         )
109
     }
103
     }

+ 2
- 0
src/token.rs 查看文件

32
     Select,
32
     Select,
33
     Star,
33
     Star,
34
     String,
34
     String,
35
+    Where,
35
 }
36
 }
36
 
37
 
37
 impl std::fmt::Display for TokenType {
38
 impl std::fmt::Display for TokenType {
48
 
49
 
49
                 TokenType::Select => "SELECT",
50
                 TokenType::Select => "SELECT",
50
                 TokenType::From => "FROM",
51
                 TokenType::From => "FROM",
52
+                TokenType::Where => "WHERE",
51
             }
53
             }
52
         )
54
         )
53
     }
55
     }

Loading…
取消
儲存