Something went wrong. Try again.
🌱 A minimal programming language and compiler. git.urbach.dev/cli/q
high-performance programming-language compiler
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536package ast
import ( "git.urbach.dev/cli/q/src/errors" "git.urbach.dev/cli/q/src/expression" "git.urbach.dev/cli/q/src/fs" "git.urbach.dev/cli/q/src/token")
func parseLoop(tokens token.List, file *fs.File) (Node, error) { if len(tokens) < 3 { return nil, errors.New(InvalidInstruction, file, tokens) }
if tokens[1].Kind == token.Dot { control := &LoopControl{ Expression: expression.Parse(tokens[2:]), }
return control, nil }
blockStart, _, body, err := block(tokens, file) headTokens := tokens[1:blockStart]
loop := &Loop{ Head: nil, Body: body, }
if len(headTokens) > 0 { loop.Head = expression.Parse(headTokens) }
return loop, err}