浏览代码

Allow case-insensitive keywords

main
Dylan Baker 4 年前
父节点
当前提交
9667b142be
共有 1 个文件被更改,包括 16 次插入4 次删除
  1. 16
    4
      src/lexer.rs

+ 16
- 4
src/lexer.rs 查看文件

23
     static ref WHITESPACE_REGEX: Regex = Regex::new(r"\s").unwrap();
23
     static ref WHITESPACE_REGEX: Regex = Regex::new(r"\s").unwrap();
24
     static ref MATCHERS: Vec<Matcher> = vec![
24
     static ref MATCHERS: Vec<Matcher> = vec![
25
         Matcher::new(r#"^"(.*)""#, TokenType::String),
25
         Matcher::new(r#"^"(.*)""#, TokenType::String),
26
-        Matcher::new(r#"^SELECT"#, TokenType::Select),
27
-        Matcher::new(r#"^FROM"#, TokenType::From),
28
-        Matcher::new(r#"^WHERE"#, TokenType::Where),
26
+        Matcher::new(r#"(?i)^SELECT"#, TokenType::Select),
27
+        Matcher::new(r#"(?i)^FROM"#, TokenType::From),
28
+        Matcher::new(r#"(?i)^WHERE"#, TokenType::Where),
29
         Matcher::new(r#"^[a-z][a-zA-Z_\-.*]*"#, TokenType::Identfiier),
29
         Matcher::new(r#"^[a-z][a-zA-Z_\-.*]*"#, TokenType::Identfiier),
30
         Matcher::new(r#"^[0-9]+"#, TokenType::Number),
30
         Matcher::new(r#"^[0-9]+"#, TokenType::Number),
31
         Matcher::new(r#"^\*"#, TokenType::Star),
31
         Matcher::new(r#"^\*"#, TokenType::Star),
91
     }
91
     }
92
 
92
 
93
     #[test]
93
     #[test]
94
-    fn it_scans_keywords() {
94
+    fn it_scans_uppercase_keywords() {
95
         assert_eq!(
95
         assert_eq!(
96
             scan("SELECT FROM WHERE").unwrap(),
96
             scan("SELECT FROM WHERE").unwrap(),
97
             vec![
97
             vec![
102
         )
102
         )
103
     }
103
     }
104
 
104
 
105
+    #[test]
106
+    fn it_scans_lowercase_keywords() {
107
+        assert_eq!(
108
+            scan("select from where").unwrap(),
109
+            vec![
110
+                Token::new(TokenType::Select, "select"),
111
+                Token::new(TokenType::From, "from"),
112
+                Token::new(TokenType::Where, "where"),
113
+            ]
114
+        )
115
+    }
116
+
105
     #[test]
117
     #[test]
106
     fn it_scans_an_identifier() {
118
     fn it_scans_an_identifier() {
107
         assert_eq!(
119
         assert_eq!(

正在加载...
取消
保存