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 <alekratz@gmail.com>
This commit is contained in:
2020-05-05 16:43:38 -04:00
parent a4f289fb53
commit 5622eb96bc
2 changed files with 5 additions and 0 deletions

View File

@@ -95,6 +95,7 @@ impl<'t> Lexer<'t> {
|(?P<rbracket>\]) |(?P<rbracket>\])
|(?P<lbrace>\{) |(?P<lbrace>\{)
|(?P<rbrace>\}) |(?P<rbrace>\})
|(?P<objbrace>%\{)
|(?P<comma>,) |(?P<comma>,)
|(?P<eol>;) |(?P<eol>;)
|(?P<newline>\n) |(?P<newline>\n)
@@ -119,6 +120,7 @@ impl<'t> Lexer<'t> {
("rbracket", TokenKind::RBracket), ("rbracket", TokenKind::RBracket),
("lbrace", TokenKind::LBrace), ("lbrace", TokenKind::LBrace),
("rbrace", TokenKind::RBrace), ("rbrace", TokenKind::RBrace),
("objbrace", TokenKind::ObjBrace),
("comma", TokenKind::Comma), ("comma", TokenKind::Comma),
("plus", TokenKind::Plus), ("plus", TokenKind::Plus),
("minus", TokenKind::Minus), ("minus", TokenKind::Minus),
@@ -281,6 +283,7 @@ mod test {
test_token!(")", TokenKind::RParen); test_token!(")", TokenKind::RParen);
test_token!("{", TokenKind::LBrace); test_token!("{", TokenKind::LBrace);
test_token!("}", TokenKind::RBrace); test_token!("}", TokenKind::RBrace);
test_token!("%{", TokenKind::ObjBrace);
test_token!("[", TokenKind::LBracket); test_token!("[", TokenKind::LBracket);
test_token!("]", TokenKind::RBracket); test_token!("]", TokenKind::RBracket);
test_token!(",", TokenKind::Comma); test_token!(",", TokenKind::Comma);

View File

@@ -16,6 +16,7 @@ pub enum TokenKind {
RBrace, RBrace,
LBracket, LBracket,
RBracket, RBracket,
ObjBrace,
Comma, Comma,
Eq, Eq,
@@ -50,6 +51,7 @@ impl Display for TokenKind {
RParen => "right paren", RParen => "right paren",
LBrace => "left brace", LBrace => "left brace",
RBrace => "right brace", RBrace => "right brace",
ObjBrace => "object brace",
LBracket => "left bracket", LBracket => "left bracket",
RBracket => "right bracket", RBracket => "right bracket",
Comma => "comma", Comma => "comma",