|
@@ -25,11 +25,10 @@ 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#"^[a-z][a-zA-Z_\-]*"#, TokenType::Identfiier),
|
|
28
|
+ Matcher::new(r#"^[a-z][a-zA-Z_\-.*]*"#, TokenType::Identfiier),
|
29
|
29
|
Matcher::new(r#"^[0-9]+"#, TokenType::Number),
|
30
|
30
|
Matcher::new(r#"^\*"#, TokenType::Star),
|
31
|
31
|
Matcher::new(r#"^,"#, TokenType::Comma),
|
32
|
|
- Matcher::new(r#"^\."#, TokenType::Dot),
|
33
|
32
|
];
|
34
|
33
|
}
|
35
|
34
|
|
|
@@ -136,8 +135,19 @@ mod tests {
|
136
|
135
|
}
|
137
|
136
|
|
138
|
137
|
#[test]
|
139
|
|
- fn it_scans_a_dot() {
|
140
|
|
- assert_eq!(scan(".").unwrap(), vec![Token::new(TokenType::Dot, ".")])
|
|
138
|
+ fn it_allows_dots_in_identifiers() {
|
|
139
|
+ assert_eq!(
|
|
140
|
+ scan("foo.bar").unwrap(),
|
|
141
|
+ vec![Token::new(TokenType::Identfiier, "foo.bar")]
|
|
142
|
+ )
|
|
143
|
+ }
|
|
144
|
+
|
|
145
|
+ #[test]
|
|
146
|
+ fn it_allows_stars_in_identifiers() {
|
|
147
|
+ assert_eq!(
|
|
148
|
+ scan("foo.*").unwrap(),
|
|
149
|
+ vec![Token::new(TokenType::Identfiier, "foo.*")]
|
|
150
|
+ )
|
141
|
151
|
}
|
142
|
152
|
|
143
|
153
|
#[test]
|