diff --git a/parser/src/grammar.pest b/parser/src/grammar.pest index 603f96d..fd5efbe 100644 --- a/parser/src/grammar.pest +++ b/parser/src/grammar.pest @@ -68,6 +68,7 @@ statement = _{ | if_stmt | while_stmt | c_for_stmt + | for_stmt | return_stmt | break_stmt | continue_stmt @@ -104,6 +105,10 @@ c_for_stmt = { "for" ~ "(" ~ statement ~ expr ~ semicolon ~ statement ~ ")" ~ statement } +for_stmt = { + "for" ~ "(" ~ identifier ~ "in" ~ expr ~ ")" ~ statement +} + // ================= 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 b739c17..ec6c405 100644 --- a/test/src/main.mist +++ b/test/src/main.mist @@ -1,5 +1,7 @@ void main() { - for (usize mut i = 0; i < 10; i = i + 1;) { + let iter = vec!(1, 2, 3, 4, 5); + + for (i in iter) { println!("{i}"); } }