MCPcopy Index your code
hub / github.com/expr-lang/expr / parseComparison

Method parseComparison

parser/parser.go:907–940  ·  view source on GitHub ↗
(left Node, token Token, precedence int)

Source from the content-addressed store, hash-verified

905 return node
906}
907func (p *Parser) parseComparison(left Node, token Token, precedence int) Node {
908 var rootNode Node
909 for {
910 comparator := p.parseExpression(precedence + 1)
911 cmpNode := p.createNode(&BinaryNode{
912 Operator: token.Value,
913 Left: left,
914 Right: comparator,
915 }, token.Location)
916 if cmpNode == nil {
917 return nil
918 }
919 if rootNode == nil {
920 rootNode = cmpNode
921 } else {
922 rootNode = p.createNode(&BinaryNode{
923 Operator: "&&",
924 Left: rootNode,
925 Right: cmpNode,
926 }, token.Location)
927 if rootNode == nil {
928 return nil
929 }
930 }
931
932 left = comparator
933 token = p.current
934 if !(token.Is(Operator) && operator.IsComparison(token.Value) && p.err == nil) {
935 break
936 }
937 p.next()
938 }
939 return rootNode
940}

Callers 1

parseExpressionMethod · 0.95

Calls 5

parseExpressionMethod · 0.95
createNodeMethod · 0.95
nextMethod · 0.95
IsComparisonFunction · 0.92
IsMethod · 0.80

Tested by

no test coverage detected