MCPcopy Create free account
hub / github.com/brimdata/super / binary

Method binary

compiler/sfmt/ast.go:330–354  ·  view source on GitHub ↗
(e *ast.BinaryExpr, parent string)

Source from the content-addressed store, hash-verified

328}
329
330func (c *canon) binary(e *ast.BinaryExpr, parent string) {
331 switch e.Op {
332 case ".":
333 if !isThis(e.LHS) {
334 c.expr(e.LHS, "")
335 c.write(".")
336 }
337 c.expr(e.RHS, "")
338 case "and", "or", "in":
339 parens := needsparens(parent, e.Op)
340 c.maybewrite("(", parens)
341 c.expr(e.LHS, e.Op)
342 c.write(" %s ", e.Op)
343 c.expr(e.RHS, e.Op)
344 c.maybewrite(")", parens)
345 default:
346 parens := needsparens(parent, e.Op)
347 c.maybewrite("(", parens)
348 // do need parens calc
349 c.expr(e.LHS, e.Op)
350 c.write("%s", e.Op)
351 c.expr(e.RHS, e.Op)
352 c.maybewrite(")", parens)
353 }
354}
355
356func needsparens(parent, op string) bool {
357 return precedence(parent)-precedence(op) < 0

Callers 1

exprMethod · 0.95

Calls 5

exprMethod · 0.95
maybewriteMethod · 0.95
isThisFunction · 0.85
needsparensFunction · 0.85
writeMethod · 0.45

Tested by

no test coverage detected