C style for loop AST gen

This commit is contained in:
2026-05-05 16:41:59 +02:00
parent 9eeaabbf19
commit d9358ea38b
3 changed files with 9 additions and 2 deletions
+1 -1
View File
@@ -108,7 +108,7 @@ pub enum Statement {
While(StatementBranch), While(StatementBranch),
CStyleFor { CStyleFor {
init: Box<Statement>, init: Box<Statement>,
condition: Box<Expression>, condition: Expression,
update: Box<Statement>, update: Box<Statement>,
body: Box<Statement>, body: Box<Statement>,
}, },
+7
View File
@@ -333,6 +333,13 @@ impl From<pest::iterators::Pair<'_, Rule>> for Statement {
Rule::while_stmt => Statement::While(pair.into()), Rule::while_stmt => Statement::While(pair.into()),
Rule::c_for_stmt => Statement::CStyleFor {
init: Box::new(Statement::from(inner.next().unwrap())),
condition: inner.next().unwrap().into(),
update: Box::new(Statement::from(inner.next().unwrap())),
body: Box::new(Statement::from(inner.next().unwrap())),
},
Rule::assign_statement => Statement::VarAssign(VarAssignStmt { Rule::assign_statement => Statement::VarAssign(VarAssignStmt {
target: Expression::from(inner.next().unwrap()), target: Expression::from(inner.next().unwrap()),
value: Expression::from(inner.next().unwrap()), value: Expression::from(inner.next().unwrap()),
+1 -1
View File
@@ -1,5 +1,5 @@
void main() { void main() {
for (usize i; i < 10; i = i + 1;) { for (usize mut i = 0; i < 10; i = i + 1;) {
println!("{i}"); println!("{i}");
} }
} }