Browse Source

Scan WHERE

main
Dylan Baker 3 years ago
parent
commit
bf101202fa
2 changed files with 7 additions and 11 deletions
  1. 5
    11
      src/lexer.rs
  2. 2
    0
      src/token.rs

+ 5
- 11
src/lexer.rs View File

@@ -25,6 +25,7 @@ lazy_static! {
25 25
         Matcher::new(r#"^"(.*)""#, TokenType::String),
26 26
         Matcher::new(r#"^SELECT"#, TokenType::Select),
27 27
         Matcher::new(r#"^FROM"#, TokenType::From),
28
+        Matcher::new(r#"^WHERE"#, TokenType::Where),
28 29
         Matcher::new(r#"^[a-z][a-zA-Z_\-.*]*"#, TokenType::Identfiier),
29 30
         Matcher::new(r#"^[0-9]+"#, TokenType::Number),
30 31
         Matcher::new(r#"^\*"#, TokenType::Star),
@@ -90,20 +91,13 @@ mod tests {
90 91
     }
91 92
 
92 93
     #[test]
93
-    fn it_scans_a_keyword() {
94
+    fn it_scans_keywords() {
94 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 97
             vec![
105 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 View File

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

Loading…
Cancel
Save