From f98b9d7514b618ef31e104b218a8a4d54a9a4794 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Thu, 7 May 2026 22:32:53 +0200 Subject: [PATCH] match grammar --- parser/src/grammar.pest | 7 +++++++ test/src/main.mist | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/parser/src/grammar.pest b/parser/src/grammar.pest index 54c3d4b..e3e9c2d 100644 --- a/parser/src/grammar.pest +++ b/parser/src/grammar.pest @@ -98,6 +98,7 @@ statement_list = { statement* } statement = _{ expr_stmt + | match_stmt | var_decl_statement | assign_statement | if_stmt @@ -144,6 +145,12 @@ for_stmt = { "for" ~ "(" ~ identifier ~ "in" ~ expr ~ ")" ~ statement } +match_item = { pattern ~ "=>" ~ block } + +match_stmt = { + "match" ~ "(" ~ expr ~ ")" ~ match_item* +} + // ================= EXPRESSIONS ================= tuple_type = { "(" ~ (type_expr ~ ("," ~ type_expr)*)? ~ ")" } path_type = { static_path ~ ("<" ~ (type_expr ~ ("," ~ type_expr)*)? ~ ">")? } diff --git a/test/src/main.mist b/test/src/main.mist index 59a3194..43b0343 100644 --- a/test/src/main.mist +++ b/test/src/main.mist @@ -1,9 +1,10 @@ mod my_class; use ; +use ; void main() { var my_class = new MyClass("World"); my_class.greet(); - var (x, y) = (10, 20); + match (MyEnum::Tuple(10)) {} }