Skip to content

Commit 8e0e1b2

Browse files
Add Array and Tuple expressions to grammar
1 parent 46f2d92 commit 8e0e1b2

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

src/kep_grammar.ebnf

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ Expression = LiteralExpression
3030
| CallExpression
3131
| ReturnExpression
3232
| UnderscoreExpression
33-
| IfExpression ;
33+
| IfExpression
34+
| ArrayExpressions
35+
| TupleExpressions ;
3436
3537
LiteralExpression = STRING | INT | FLOAT | "true" | "false";
3638
@@ -50,7 +52,6 @@ LazyBooleanExpression = Expression, ( "||" | "&&" ), Expression;
5052
5153
AssignmentExpression = Expression, ("="), Expression;
5254
53-
5455
GroupedExpression = "(", Expression, ")";
5556
5657
CallExpression = Expression, "(", [ CallParams ], ")";
@@ -62,16 +63,23 @@ UnderscoreExpression = "_";
6263
6364
IfExpression = "if", Expression, BlockExpression, [ "else", ( BlockExpression | IfExpression ) ];
6465
66+
ArrayExpression = "[", [ ArrayElements ], "]" ;
67+
ArrayElements = Expression, ";", Expression
68+
| Expression, { ",", Expression }, [ "," ];
69+
70+
TupleExpression = "(", TupleElements, ")";
71+
TupleElements = Expression, ",", { Expression, "," }, [ Expression ];
72+
6573
(* Types *)
6674
Type = FunctionType | ArrayType | TupleType | GenericType | SimpleType;
6775
68-
SimpleType = Identifier;
76+
SimpleType = Identifier
6977

7078
GenericType = Identifier, "<", TypeList, ">";
7179
TypeList = Type, { ",", Type }, [","];
7280
7381
ArrayType = "[", Type, [ ";", INT ], "]";
7482
75-
TupleType = "(", Type, { ",", Type }, [","], ")";
83+
TupleType = "(", Type, "," { Type, "," }, [ Type ], ")";
7684
7785
FunctionType = "fn", "(", [ TypeList ], ")", "->", Type ;

0 commit comments

Comments
 (0)