multiple expr per print
This commit is contained in:
19
parser.v
19
parser.v
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user