diff --git a/HOME_EXAM.md b/HOME_EXAM.md index 7c1c0d11fd3559ac7b1c731b325b035c6a101553..b0a11c2b39cecd00e6bede5d66534f68a4d2ce64 100644 --- a/HOME_EXAM.md +++ b/HOME_EXAM.md @@ -86,7 +86,7 @@ The implemented langugage is desciribed usign EBNF grammar below. The language i #### EBNF ```ebnf Program - :Programs + :Program* |Function |Decl |Expr @@ -95,8 +95,7 @@ Program ```ebnf Stmt - :Function - |"if" Expr BlockExpr "else"? BlockExpr? + :"if" Expr BlockExpr ("else" BlockExpr)? |"while" Expr BlockExpr |Decl |Expr @@ -105,14 +104,14 @@ Stmt ```ebnf Function - :"fn" Id "(" Args ")" "->" Type BlockExpr + :"fn" Id "(" Arg* ")" "->" Type BlockExpr |"fn" Id "()" "->" "()" BlockExpr ; ``` ```ebnf BlockExpr - :"{" Stmts "}" + :"{" Stmt* "}" ; ``` @@ -134,18 +133,11 @@ Arg Expr :Expr ExprOp Factor |Expr LogicOp Factor - |Id "(" Exprs ")" - |PrefixOp "(" Expr ")" + |Id "(" Expr* ")" |Factor ; ``` -```ebnf -Prefix - :"-" - ; -``` - ```ebnf ExprOp :"+"