forked from PuqiAR/Fig-TreeWalker
- 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
30 lines
694 B
C++
30 lines
694 B
C++
#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>;
|
|
}; |