|
@@ -23,9 +23,9 @@ lazy_static! {
|
23
|
23
|
static ref WHITESPACE_REGEX: Regex = Regex::new(r"\s").unwrap();
|
24
|
24
|
static ref MATCHERS: Vec<Matcher> = vec![
|
25
|
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
|
29
|
Matcher::new(r#"^[a-z][a-zA-Z_\-.*]*"#, TokenType::Identfiier),
|
30
|
30
|
Matcher::new(r#"^[0-9]+"#, TokenType::Number),
|
31
|
31
|
Matcher::new(r#"^\*"#, TokenType::Star),
|
|
@@ -91,7 +91,7 @@ mod tests {
|
91
|
91
|
}
|
92
|
92
|
|
93
|
93
|
#[test]
|
94
|
|
- fn it_scans_keywords() {
|
|
94
|
+ fn it_scans_uppercase_keywords() {
|
95
|
95
|
assert_eq!(
|
96
|
96
|
scan("SELECT FROM WHERE").unwrap(),
|
97
|
97
|
vec![
|
|
@@ -102,6 +102,18 @@ mod tests {
|
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
|
117
|
#[test]
|
106
|
118
|
fn it_scans_an_identifier() {
|
107
|
119
|
assert_eq!(
|