basic for loop + examples -> era3

This commit is contained in:
Neemek 2026-07-13 10:01:13 +02:00
parent dd7af341a3
commit 0bc8b2ef55
Signed by: neemek
GPG key ID: 84FFE4D7D40AB25E
24 changed files with 222 additions and 201 deletions

View file

@ -34,6 +34,7 @@ const (
BlockNodeType
ConditionalNodeType
LoopNodeType
ForNodeType
AssignNodeType
InvokeNodeType
CallNodeType
@ -501,7 +502,7 @@ func (n ConditionalNode) Bounds() (Pos, Pos) {
return n.start, n.end
}
// LoopNode Loops (for/while)
// LoopNode While loops
type LoopNode struct {
condition Node
do Node
@ -522,6 +523,28 @@ func (n LoopNode) Bounds() (Pos, Pos) {
return n.start, n.end
}
// ForNode For loops
type ForNode struct {
counter Node
iterator Node
logic Node
start Pos
end Pos
}
func (n ForNode) Type() NodeType {
return ForNodeType
}
func (n ForNode) String() string {
return fmt.Sprintf("for %s in %s; %s", n.counter, n.iterator, n.logic)
}
func (n ForNode) Bounds() (Pos, Pos) {
return n.start, n.end
}
// AssignNode assignment
type AssignNode struct {
dest Node