MCPcopy Create free account
hub / github.com/ForestHubAI/edge-agents / parseUnary

Method parseUnary

go/engine/expr/parser.go:244–270  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

242}
243
244func (p *parser) parseUnary() (Value, error) {
245 ch := p.peek()
246 if ch == '!' {
247 p.pos++
248 val, err := p.parseUnary()
249 if err != nil {
250 return Value{}, err
251 }
252 return BoolVal(!val.AsBool()), nil
253 }
254 if ch == '-' {
255 // Check it's not a two-char operator
256 if p.pos+1 < len(p.input) && p.input[p.pos+1] >= '0' && p.input[p.pos+1] <= '9' {
257 return p.parseAtom()
258 }
259 p.pos++
260 val, err := p.parseUnary()
261 if err != nil {
262 return Value{}, err
263 }
264 if val.Type == workflowapi.Float {
265 return FloatVal(-val.AsFloat()), nil
266 }
267 return IntVal(-val.AsInt()), nil
268 }
269 return p.parseAtom()
270}
271
272func (p *parser) parseAtom() (Value, error) {
273 p.skipWhitespace()

Callers 1

parseMulDivMethod · 0.95

Calls 8

peekMethod · 0.95
parseAtomMethod · 0.95
BoolValFunction · 0.85
FloatValFunction · 0.85
IntValFunction · 0.85
AsBoolMethod · 0.80
AsFloatMethod · 0.80
AsIntMethod · 0.80

Tested by

no test coverage detected