From 28f622a04c5af314c80bbe112dc22e8ae16f01ef Mon Sep 17 00:00:00 2001 From: Leo Tenenbaum Date: Mon, 6 Jan 2020 14:38:10 -0500 Subject: so: tuples need a different syntax because (int, int) could refer to a tuple type, or to the tuple of int and int. fixed stuff related to that --- parse.c | 8 ++++++-- test.toc | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/parse.c b/parse.c index 24253f0..f80e28e 100644 --- a/parse.c +++ b/parse.c @@ -692,7 +692,10 @@ static bool parser_is_definitely_type(Parser *p, Token **end) { } } break; - case KW_LPAREN: { + case KW_LT: { + /* no expression can start with < */ + return true; +#if 0 Token *child_end; ++t->token; ret = false; @@ -702,7 +705,7 @@ static bool parser_is_definitely_type(Parser *p, Token **end) { if (t->token->kw == KW_COMMA) { ++t->token; continue; - } else if (t->token->kw == KW_RPAREN) { + } else if (t->token->kw == KW_GT) { /* it *is* a tuple! */ ret = true; ++t->token; @@ -710,6 +713,7 @@ static bool parser_is_definitely_type(Parser *p, Token **end) { } } else break; } +#endif } break; case KW_FN: { ret = false; diff --git a/test.toc b/test.toc index b143ad4..d3f0f3e 100644 --- a/test.toc +++ b/test.toc @@ -13,5 +13,8 @@ foo ::= fn() { main ::= fn() { a, b := foo(); + x , y::= (int, int); puti(a); puti(b); + c:x = 7; + d:x = 18; }; \ No newline at end of file -- cgit v1.2.3