|
@@ -26,6 +26,7 @@ pub enum TokenType {
|
26
|
26
|
Identfiier,
|
27
|
27
|
Keyword,
|
28
|
28
|
Number,
|
|
29
|
+ Star,
|
29
|
30
|
String,
|
30
|
31
|
}
|
31
|
32
|
|
|
@@ -50,7 +51,8 @@ lazy_static! {
|
50
|
51
|
Matcher::new(r#""(.*)""#, TokenType::String),
|
51
|
52
|
Matcher::new(r#"(SELECT|FROM)"#, TokenType::Keyword),
|
52
|
53
|
Matcher::new(r#"[a-z][a-zA-Z_]*"#, TokenType::Identfiier),
|
53
|
|
- Matcher::new(r#"[0-9]+"#, TokenType::Number)
|
|
54
|
+ Matcher::new(r#"[0-9]+"#, TokenType::Number),
|
|
55
|
+ Matcher::new(r#"\*"#, TokenType::Star),
|
54
|
56
|
];
|
55
|
57
|
}
|
56
|
58
|
|
|
@@ -129,4 +131,9 @@ mod tests {
|
129
|
131
|
vec![Token::new(TokenType::Identfiier, "abc")]
|
130
|
132
|
)
|
131
|
133
|
}
|
|
134
|
+
|
|
135
|
+ #[test]
|
|
136
|
+ fn it_scans_a_star() {
|
|
137
|
+ assert_eq!(scan("*").unwrap(), vec![Token::new(TokenType::Star, "*")])
|
|
138
|
+ }
|
132
|
139
|
}
|