From 28583bfff88ff1378a0e71030701071dcfd37462 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 2 Dec 2018 18:01:03 +0000 Subject: Change procedure group syntax from `proc[]` to `proc{}`; deprecate `proc[]` (raises warning currently) --- src/parser.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/parser.cpp') diff --git a/src/parser.cpp b/src/parser.cpp index e64c42ed5..bce0260cb 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -1742,8 +1742,31 @@ Ast *parse_operand(AstFile *f, bool lhs) { case Token_proc: { Token token = expect_token(f, Token_proc); - if (f->curr_token.kind == Token_OpenBracket) { // ProcGroup + if (f->curr_token.kind == Token_OpenBrace) { // ProcGroup + Token open = expect_token(f, Token_OpenBrace); + + auto args = array_make(heap_allocator()); + + while (f->curr_token.kind != Token_CloseBrace && + f->curr_token.kind != Token_EOF) { + Ast *elem = parse_expr(f, false); + array_add(&args, elem); + + if (!allow_token(f, Token_Comma)) { + break; + } + } + + Token close = expect_token(f, Token_CloseBrace); + + if (args.count == 0) { + syntax_error(token, "Expected a least 1 argument in a procedure group"); + } + + return ast_proc_group(f, token, open, close, args); + } else if (f->curr_token.kind == Token_OpenBracket) { // ProcGroup Token open = expect_token(f, Token_OpenBracket); + warning(open, "Procedure groups using [] are now deprecated, please use {} instead"); auto args = array_make(heap_allocator()); -- cgit v1.2.3