MCPcopy Create free account
hub / github.com/claude-code-best/claude-code / parseArithBinary

Function parseArithBinary

src/utils/bash/bashParser.ts:4228–4258  ·  view source on GitHub ↗

Precedence-climbing binary expression parser.

(
  P: ParseState,
  stop: string,
  minPrec: number,
  mode: ArithMode,
)

Source from the content-addressed store, hash-verified

4226
4227/** Precedence-climbing binary expression parser. */
4228function parseArithBinary(
4229 P: ParseState,
4230 stop: string,
4231 minPrec: number,
4232 mode: ArithMode,
4233): TsNode | null {
4234 let left = parseArithUnary(P, stop, mode)
4235 if (!left) return null
4236 while (true) {
4237 skipBlanks(P.L)
4238 if (isArithStop(P, stop)) break
4239 if (peek(P.L) === ',') break
4240 const opInfo = scanArithOp(P)
4241 if (!opInfo) break
4242 const [opText, opLen] = opInfo
4243 const prec = ARITH_PREC[opText]
4244 if (prec === undefined || prec < minPrec) break
4245 const os = P.L.b
4246 for (let k = 0; k < opLen; k++) advance(P.L)
4247 const op = mk(P, opText, os, P.L.b, [])
4248 const nextMin = ARITH_RIGHT_ASSOC.has(opText) ? prec : prec + 1
4249 const right = parseArithBinary(P, stop, nextMin, mode)
4250 if (!right) break
4251 left = mk(P, 'binary_expression', left.startIndex, right.endIndex, [
4252 left,
4253 op,
4254 right,
4255 ])
4256 }
4257 return left
4258}
4259
4260function parseArithUnary(
4261 P: ParseState,

Callers 1

parseArithTernaryFunction · 0.85

Calls 8

parseArithUnaryFunction · 0.85
skipBlanksFunction · 0.85
isArithStopFunction · 0.85
scanArithOpFunction · 0.85
advanceFunction · 0.85
peekFunction · 0.70
mkFunction · 0.70
hasMethod · 0.45

Tested by

no test coverage detected