From 5622eb96bcb77021f82962db70ae31becf2a0b98 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Tue, 5 May 2020 16:43:38 -0400 Subject: [PATCH] Add ObjBrace token To distinguish between objects and code bodies, an object is delimited by curly braces, prefixed with a percent sign. Ex: obj = %{ key = value } Signed-off-by: Alek Ratzloff --- src/syn/lexer.rs | 3 +++ src/syn/token.rs | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/syn/lexer.rs b/src/syn/lexer.rs index ca34870..b100b30 100644 --- a/src/syn/lexer.rs +++ b/src/syn/lexer.rs @@ -95,6 +95,7 @@ impl<'t> Lexer<'t> { |(?P\]) |(?P\{) |(?P\}) + |(?P%\{) |(?P,) |(?P;) |(?P\n) @@ -119,6 +120,7 @@ impl<'t> Lexer<'t> { ("rbracket", TokenKind::RBracket), ("lbrace", TokenKind::LBrace), ("rbrace", TokenKind::RBrace), + ("objbrace", TokenKind::ObjBrace), ("comma", TokenKind::Comma), ("plus", TokenKind::Plus), ("minus", TokenKind::Minus), @@ -281,6 +283,7 @@ mod test { test_token!(")", TokenKind::RParen); test_token!("{", TokenKind::LBrace); test_token!("}", TokenKind::RBrace); + test_token!("%{", TokenKind::ObjBrace); test_token!("[", TokenKind::LBracket); test_token!("]", TokenKind::RBracket); test_token!(",", TokenKind::Comma); diff --git a/src/syn/token.rs b/src/syn/token.rs index 3fcc26d..b16553e 100644 --- a/src/syn/token.rs +++ b/src/syn/token.rs @@ -16,6 +16,7 @@ pub enum TokenKind { RBrace, LBracket, RBracket, + ObjBrace, Comma, Eq, @@ -50,6 +51,7 @@ impl Display for TokenKind { RParen => "right paren", LBrace => "left brace", RBrace => "right brace", + ObjBrace => "object brace", LBracket => "left bracket", RBracket => "right bracket", Comma => "comma",