From f37d49367c1ce59ae35dda124d85f9732d0cb484 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Sat, 24 Aug 2024 03:08:23 +0800 Subject: Add tuples. --- grammar.bnf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'grammar.bnf') diff --git a/grammar.bnf b/grammar.bnf index a9e21cb..8715ad2 100644 --- a/grammar.bnf +++ b/grammar.bnf @@ -14,17 +14,21 @@ binop ::= '*' | '/' | '+' | '-' | '?=' | '/=' | '>' | '>=' | '<' | '<='; unop ::= '+' | '-' | '!'; simple-expression ::= '(' expression ')' | 'true' | 'false' - | '(' ')' | INTEGER | IDENTIFIER | STRING | array + | tuple | if-else-expression | let-in-expression | fn-expression | do-expression; array ::= '[' ']' | '[' expression (',' expression)* ','? ']'; +// Note that tuples always have either zero or at least two elements +// A tuple with only one element is just '(' expression ')' -- a parenthese-wrapped expression +// Also '(' expression ',' ')' is illegal +tuple ::= '(' ')' | '(' expression ',' expression (',' expression)* ','? ')'; if-else-expression ::= 'if' expression 'then' expression 'else' expression; let-in-expression ::= 'let' def-spec '=' expression ('and' def-spec '=' expression)* 'in' expression; -- cgit v1.2.3