示例#1
0
文件: dnf.go 项目: pkdevboxy/query
func dnfComplexity(expr expression.Expression, max int) int {
	comp := 0

	switch expr := expr.(type) {
	case *expression.Or:
		comp = len(expr.Operands())
	}

	if comp < max {
		children := expr.Children()
		for _, child := range children {
			childComp := dnfComplexity(child, max-comp)
			comp += childComp
			if comp >= max {
				break
			}
		}
	}

	return comp
}