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

Function parseArithBinary

source code/utils/bash/bashParser.ts:4234–4264  ·  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

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

Callers 1

parseArithTernaryFunction · 0.85

Calls 8

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

Tested by

no test coverage detected