From 87d5d3117eba795be49b580582c188f69a20f106 Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Fri, 1 May 2026 18:20:25 +0200 Subject: [PATCH] Updated grammar --- parser/src/grammar.pest | 15 ++++++++++----- test/src/main.mist | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/parser/src/grammar.pest b/parser/src/grammar.pest index 0be7182..1019796 100644 --- a/parser/src/grammar.pest +++ b/parser/src/grammar.pest @@ -11,19 +11,24 @@ boolean = { "true" | "false" } string_lit = { "\"" ~ inner_str ~ "\"" } inner_str = @{ (!"\"" ~ ANY)* } +// ================= PREREQUISITES ================= +export = { "public" } +mutable = { "mut" } +var_decl_1 = { type_expr ~ mutable? ~ identifier } + // ================= TOP LEVEL ================= top_level = _{ import | function_decl | struct_decl } -export = { "public" } - import = { "import" ~ string_lit ~ ";" } -param_list = { param ~ ("," ~ param)* ~ ","? } -param = { export? ~ type_expr ~ identifier } +field_list = { field ~ ("," ~ field)* ~ ","? } +field = { export? ~ type_expr ~ identifier } + +param_list = { var_decl_1 ~ ("," ~ var_decl_1)* ~ ","? } struct_decl = { - export? ~ "struct" ~ identifier ~ "{" ~ param_list? ~ "}" + export? ~ "struct" ~ identifier ~ "{" ~ field_list? ~ "}" } function_decl = { diff --git a/test/src/main.mist b/test/src/main.mist index 8df4404..aaed729 100644 --- a/test/src/main.mist +++ b/test/src/main.mist @@ -3,7 +3,7 @@ public struct Idk { int b, } -int test(int a, int b) { +int test(int mut a, int b) { Idk bro = Idk { a: 10, b: 10 }; return a + b + bro.a; }