multiple expr per print

This commit is contained in:
uan
2026-02-06 11:15:44 +01:00
parent a1c99b8b9e
commit 5602765b67
4 changed files with 54 additions and 31 deletions

View File

@@ -183,8 +183,8 @@ struct ParenExpr {
}
struct PrintExpr {
expr Expr
type string
exprs []Expr
types []string
}
struct FnCall {
@@ -408,9 +408,20 @@ fn (mut p Parser) parse_call(name string) FnCall {
fn (mut p Parser) parse_print() PrintExpr {
p.expect(.lparen)
expr := p.parse_expr(.lowest)
mut exprs := []Expr{}
mut types := []string{}
for p.peek().type != .rparen {
expr := p.parse_expr(.lowest)
exprs << expr
types << p.get_expr_type(expr)
if p.peek().type == .comma {
p.next()
} else {
break
}
}
p.expect(.rparen)
return PrintExpr{expr: expr, type: p.get_expr_type(expr)}
return PrintExpr{exprs: exprs, types: types}
}
fn (mut p Parser) parse_binary(left Expr, op string, prec Precedence) BinaryExpr {