feat: implement for-loops with proper scope management

- Add support for C-style for loops: for (init; condition; increment) { body }
- Implement three-level scoping: loop context + per-iteration contexts
- Add semicolon disabler for increment statements using RAII guards
- Support break/continue/return control flow with scope validation
- Fix semicolon handling in parser for flexible for-loop syntax
This commit is contained in:
2025-12-21 22:55:46 +08:00
parent acc2d33dbc
commit 014803b705
13 changed files with 327 additions and 59 deletions

30
include/Ast/ForSt.hpp Normal file
View File

@@ -0,0 +1,30 @@
#pragma once
#include <Ast/astBase.hpp>
namespace Fig::Ast
{
class ForSt final : public StatementAst
{
public:
Statement initSt;
Expression condition;
Statement incrementSt;
BlockStatement body;
ForSt()
{
type = AstType::ForSt;
}
ForSt(Statement _initSt, Expression _condition, Statement _incrementSt, BlockStatement _body) :
initSt(std::move(_initSt)),
condition(std::move(_condition)),
incrementSt(std::move(_incrementSt)),
body(std::move(_body))
{
type = AstType::ForSt;
}
};
using For = std::shared_ptr<ForSt>;
};