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<lbrace>\{)
|(?P<rbrace>\})
|(?P<objbrace>%\{)
|(?P<comma>,)
|(?P<eol>;)
|(?P<newline>\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);

View File

@@ -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",