|
@@ -50,7 +50,7 @@ lazy_static! {
|
50
|
50
|
static ref MATCHERS: Vec<Matcher> = vec![
|
51
|
51
|
Matcher::new(r#""(.*)""#, TokenType::String),
|
52
|
52
|
Matcher::new(r#"(SELECT|FROM)"#, TokenType::Keyword),
|
53
|
|
- Matcher::new(r#"[a-z][a-zA-Z_]*"#, TokenType::Identfiier),
|
|
53
|
+ Matcher::new(r#"[a-z][a-zA-Z_\-]*"#, TokenType::Identfiier),
|
54
|
54
|
Matcher::new(r#"[0-9]+"#, TokenType::Number),
|
55
|
55
|
Matcher::new(r#"\*"#, TokenType::Star),
|
56
|
56
|
];
|
|
@@ -132,6 +132,14 @@ mod tests {
|
132
|
132
|
)
|
133
|
133
|
}
|
134
|
134
|
|
|
135
|
+ #[test]
|
|
136
|
+ fn it_allows_hyphens_in_identifiers() {
|
|
137
|
+ assert_eq!(
|
|
138
|
+ scan("abc-def").unwrap(),
|
|
139
|
+ vec![Token::new(TokenType::Identfiier, "abc-def")]
|
|
140
|
+ )
|
|
141
|
+ }
|
|
142
|
+
|
135
|
143
|
#[test]
|
136
|
144
|
fn it_scans_a_star() {
|
137
|
145
|
assert_eq!(scan("*").unwrap(), vec![Token::new(TokenType::Star, "*")])
|