Browse Source

Allow hyphens in identifiers

main
Dylan Baker 4 years ago
parent
commit
c00ba08cb1
1 changed files with 9 additions and 1 deletions
  1. 9
    1
      src/lexer.rs

+ 9
- 1
src/lexer.rs View File

50
     static ref MATCHERS: Vec<Matcher> = vec![
50
     static ref MATCHERS: Vec<Matcher> = vec![
51
         Matcher::new(r#""(.*)""#, TokenType::String),
51
         Matcher::new(r#""(.*)""#, TokenType::String),
52
         Matcher::new(r#"(SELECT|FROM)"#, TokenType::Keyword),
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
         Matcher::new(r#"[0-9]+"#, TokenType::Number),
54
         Matcher::new(r#"[0-9]+"#, TokenType::Number),
55
         Matcher::new(r#"\*"#, TokenType::Star),
55
         Matcher::new(r#"\*"#, TokenType::Star),
56
     ];
56
     ];
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
     #[test]
143
     #[test]
136
     fn it_scans_a_star() {
144
     fn it_scans_a_star() {
137
         assert_eq!(scan("*").unwrap(), vec![Token::new(TokenType::Star, "*")])
145
         assert_eq!(scan("*").unwrap(), vec![Token::new(TokenType::Star, "*")])

Loading…
Cancel
Save