From 0031fb715299f83c9d8bfa22edd941f15187b046 Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Tue, 19 May 2026 10:39:35 +0200 Subject: [PATCH 1/2] Fix: statement --- mist-test/src/main.mist | 2 ++ parser/src/grammar.pest | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mist-test/src/main.mist b/mist-test/src/main.mist index 853e686..2b59b1f 100644 --- a/mist-test/src/main.mist +++ b/mist-test/src/main.mist @@ -5,6 +5,8 @@ pub mod logger; pub mod event; void main() { + Vec args = env::args().collect(); + var mut app_instance = new app::Application("mist-app"); // greeting::register(&mut app_instance); diff --git a/parser/src/grammar.pest b/parser/src/grammar.pest index 75f9a3c..3d8e5fe 100644 --- a/parser/src/grammar.pest +++ b/parser/src/grammar.pest @@ -319,7 +319,6 @@ block = { statement = _{ match_stmt - | assign_statement | if_stmt | while_stmt | c_for_stmt @@ -331,6 +330,7 @@ statement = _{ | increment_statement | decrement_statement | var_decl_statement + | assign_statement | expr_stmt } From 8f820bfb507f3dfd444408a5defd09ce9e14c288 Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Tue, 19 May 2026 10:44:51 +0200 Subject: [PATCH 2/2] Fix: future ambiguities via !keyword --- mist-test/src/main.mist | 2 -- parser/src/grammar.pest | 27 ++++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/mist-test/src/main.mist b/mist-test/src/main.mist index 2b59b1f..853e686 100644 --- a/mist-test/src/main.mist +++ b/mist-test/src/main.mist @@ -5,8 +5,6 @@ pub mod logger; pub mod event; void main() { - Vec args = env::args().collect(); - var mut app_instance = new app::Application("mist-app"); // greeting::register(&mut app_instance); diff --git a/parser/src/grammar.pest b/parser/src/grammar.pest index 3d8e5fe..caac283 100644 --- a/parser/src/grammar.pest +++ b/parser/src/grammar.pest @@ -9,7 +9,32 @@ COMMENT = _{ "//" ~ (!"\n" ~ ANY)* } // PRIMITIVES // ------------------------------------------------------ -identifier = @{ (ASCII_ALPHA | "_") ~ (ASCII_ALPHANUMERIC | "_")* } +keyword = { + "if" + | "else" + | "for" + | "while" + | "match" + | "return" + | "break" + | "continue" + | "struct" + | "enum" + | "class" + | "trait" + | "impl" + | "pub" + | "mut" + | "var" + | "true" + | "false" + | "dyn" + | "self" +} + +identifier = @{ + !keyword ~ (ASCII_ALPHA | "_") ~ (ASCII_ALPHANUMERIC | "_")* +} integer = @{ ASCII_DIGIT+ }