浏览代码

Allow hyphens in identifiers

main
Dylan Baker 4 年前
父节点
当前提交
c00ba08cb1
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9
    1
      src/lexer.rs

+ 9
- 1
src/lexer.rs 查看文件

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, "*")])

正在加载...
取消
保存