Browse Source

Allow . and * in identifiers

main
Dylan Baker 3 years ago
parent
commit
f33e7471b3
2 changed files with 14 additions and 6 deletions
  1. 14
    4
      src/lexer.rs
  2. 0
    2
      src/token.rs

+ 14
- 4
src/lexer.rs View File

@@ -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]

+ 0
- 2
src/token.rs View File

@@ -26,7 +26,6 @@ impl std::fmt::Display for Token {
26 26
 #[derive(Clone, Copy, Debug, PartialEq)]
27 27
 pub enum TokenType {
28 28
     Comma,
29
-    Dot,
30 29
     From,
31 30
     Identfiier,
32 31
     Number,
@@ -42,7 +41,6 @@ impl std::fmt::Display for TokenType {
42 41
             "{}",
43 42
             match self {
44 43
                 TokenType::Comma => "Comma",
45
-                TokenType::Dot => "Dot",
46 44
                 TokenType::Identfiier => "Identifier",
47 45
                 TokenType::Number => "Number",
48 46
                 TokenType::Star => "Star",

Loading…
Cancel
Save