From a893f9a12dccf95b051e3bea3ea9e66104cef2f3 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 17 May 2026 05:43:16 +0200 Subject: [PATCH] Increment and decrement via ++ or -- --- mist-test/src/app.mist | 2 +- mist-test/src/main.mist | 2 -- parser/src/ast/statement.rs | 3 +++ parser/src/grammar.pest | 10 ++++++++++ parser/src/parser/common/statement.rs | 8 ++++++++ src/codegen.rs | 3 +++ 6 files changed, 25 insertions(+), 3 deletions(-) diff --git a/mist-test/src/app.mist b/mist-test/src/app.mist index 3358be9..42072ac 100644 --- a/mist-test/src/app.mist +++ b/mist-test/src/app.mist @@ -46,7 +46,7 @@ pub class Application { void tick(self mut*) { self.logger.info("tick"); - self.ticks += 1; + self.ticks++; var task = task::create_task("background-job"); diff --git a/mist-test/src/main.mist b/mist-test/src/main.mist index 6a71985..853e686 100644 --- a/mist-test/src/main.mist +++ b/mist-test/src/main.mist @@ -7,8 +7,6 @@ pub mod event; void main() { var mut app_instance = new app::Application("mist-app"); - i++; - // greeting::register(&mut app_instance); // statistics::register(&mut app_instance); diff --git a/parser/src/ast/statement.rs b/parser/src/ast/statement.rs index 69b12b1..3d5c565 100644 --- a/parser/src/ast/statement.rs +++ b/parser/src/ast/statement.rs @@ -43,6 +43,9 @@ pub enum Statement { Return(Option), Break, Continue, + + Increment(Expression), + Decrement(Expression), } #[derive(Debug, Clone, Serialize)] diff --git a/parser/src/grammar.pest b/parser/src/grammar.pest index b955b95..7add0ea 100644 --- a/parser/src/grammar.pest +++ b/parser/src/grammar.pest @@ -324,6 +324,8 @@ statement = _{ | continue_stmt | block | var_decl_statement + | increment_statement + | decrement_statement } // ------------------------------------------------------ @@ -354,6 +356,14 @@ assign_statement = { expr ~ "=" ~ expr ~ semicolon } +increment_statement = { + expr ~ "++" ~ semicolon +} + +decrement_statement = { + expr ~ "--" ~ semicolon +} + compound_assign = { "+=" | "-=" diff --git a/parser/src/parser/common/statement.rs b/parser/src/parser/common/statement.rs index 34d35f9..28ebb0f 100644 --- a/parser/src/parser/common/statement.rs +++ b/parser/src/parser/common/statement.rs @@ -114,6 +114,14 @@ impl<'a> TryFrom> for Statement { }) } + Rule::increment_statement => { + ast_expr!(Statement::Increment(inner.next().unwrap().try_into())) + } + + Rule::decrement_statement => { + ast_expr!(Statement::Decrement(inner.next().unwrap().try_into())) + } + Rule::unexpected_statement => { return Err(AstError { span: pair.as_span(), diff --git a/src/codegen.rs b/src/codegen.rs index 932a260..883abae 100644 --- a/src/codegen.rs +++ b/src/codegen.rs @@ -713,6 +713,9 @@ impl ToRust for Statement { Statement::Break => cg.add_indentedln("break;"), Statement::Continue => cg.add_indentedln("continue;"), + + Statement::Increment(e) => cg.add(&format!("{}+=1;", e.get_rust())), + Statement::Decrement(e) => cg.add(&format!("{}-=1;", e.get_rust())), } } }