diff --git a/src/syn/lexer.rs b/src/syn/lexer.rs index a117275..6112128 100644 --- a/src/syn/lexer.rs +++ b/src/syn/lexer.rs @@ -7,12 +7,11 @@ lazy_static! { r#"^( (?P[-+]?[0-9]+\.[0-9]+([eE][+\-][0-9]+)?) | (?P[-+]?[0-9]+) - | (?P=[a-zA-Z_?\-*+/.'@$%^&|][0-9a-zA-Z_?\-*+/=.'@$%^&|]*) + | (?P:[a-zA-Z_?\-*+/=.'@$%^&|][0-9a-zA-Z_?\-*+/=.'@$%^&|]*) | (?P%[a-zA-Z0-9\-_]+) | (?P[a-zA-Z_?\-*+/=.'@$%^&|][0-9a-zA-Z_?\-*+/=.'@$%^&|]*) | (?P\[) | (?P\]) - | (?P:) | (?P!) | (?P"([^"\\]|\\["'\\ntrb])*") )"# @@ -104,8 +103,6 @@ impl<'t> Lexer<'t> { self.make_token(Token::LQuote) } else if let Some(_) = cap.name("rquote") { self.make_token(Token::RQuote) - } else if let Some(_) = cap.name("colon") { - self.make_token(Token::Colon) } else if let Some(_) = cap.name("apply") { self.make_token(Token::Apply) } else { @@ -168,7 +165,7 @@ mod test { #[test] fn test_word() { - let mut lexer = Lexer::new(r"a b c d foo bar baz"); + let mut lexer = Lexer::new(r"a b c d foo bar baz = == === =a ==a ===a"); assert_token!(lexer, Token::Word, "a"); assert_token!(lexer, Token::Word, "b"); assert_token!(lexer, Token::Word, "c"); @@ -178,21 +175,24 @@ mod test { assert_token!(lexer, Token::Word, "bar"); assert_token!(lexer, Token::Word, "baz"); + assert_token!(lexer, Token::Word, "="); + assert_token!(lexer, Token::Word, "=="); + assert_token!(lexer, Token::Word, "==="); + assert_token!(lexer, Token::Word, "=a"); + assert_token!(lexer, Token::Word, "==a"); + assert_token!(lexer, Token::Word, "===a"); + assert!(lexer.is_eof()); } #[test] fn test_assign() { - let mut lexer = Lexer::new(r"= == === =a ==a ===a = a"); - assert_token!(lexer, Token::Word, "="); - assert_token!(lexer, Token::Word, "=="); - assert_token!(lexer, Token::Word, "==="); - assert_token!(lexer, Token::Assign, "=a"); - assert_token!(lexer, Token::Word, "==a"); - assert_token!(lexer, Token::Word, "===a"); - assert_token!(lexer, Token::Word, "="); - assert_token!(lexer, Token::Word, "a"); - + let mut lexer = Lexer::new(r":a := :foo :foo-bar :foo-bar-baz"); + assert_token!(lexer, Token::Assign, ":a"); + assert_token!(lexer, Token::Assign, ":="); + assert_token!(lexer, Token::Assign, ":foo"); + assert_token!(lexer, Token::Assign, ":foo-bar"); + assert_token!(lexer, Token::Assign, ":foo-bar-baz"); assert!(lexer.is_eof()); } @@ -240,22 +240,4 @@ mod test { assert_token!(lexer, Token::LQuote); assert!(lexer.is_eof()); } - - #[test] - fn test_colon() { - let mut lexer = Lexer::new(": :: ::: :::: some-name:"); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Colon); - assert_token!(lexer, Token::Word); - assert_token!(lexer, Token::Colon); - assert!(lexer.is_eof()); - } } diff --git a/src/syn/token.rs b/src/syn/token.rs index 60508ae..b9df218 100644 --- a/src/syn/token.rs +++ b/src/syn/token.rs @@ -24,9 +24,6 @@ pub enum Token { /// Quote end. RQuote, - /// Colon. - Colon, - /// Apply. Apply, @@ -45,7 +42,6 @@ impl Token { Str => "str", LQuote => "quote begin", RQuote => "quote end", - Colon => "colon", Apply => "apply", Meta => "meta", }