本文整理匯總了Golang中github.com/katydid/katydid/relapse/ast.Pattern.GetLeafNode方法的典型用法代碼示例。如果您正苦於以下問題:Golang Pattern.GetLeafNode方法的具體用法?Golang Pattern.GetLeafNode怎麽用?Golang Pattern.GetLeafNode使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/katydid/katydid/relapse/ast.Pattern
的用法示例。
在下文中一共展示了Pattern.GetLeafNode方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: simplifyAnd
func simplifyAnd(refs ast.RefLookup, p1, p2 *ast.Pattern, record bool) *ast.Pattern {
if isNotZany(p1) || isNotZany(p2) {
return emptyset
}
if isZany(p1) {
return p2
}
if isZany(p2) {
return p1
}
if isEmpty(p1) {
if Nullable(refs, p2) {
return ast.NewEmpty()
} else {
return emptyset
}
}
if isEmpty(p2) {
if Nullable(refs, p1) {
return ast.NewEmpty()
} else {
return emptyset
}
}
if p1.GetLeafNode() != nil && p2.GetLeafNode() != nil {
expr1, err1 := compose.ConvertBuiltInIntoFunction(p1.GetLeafNode().GetExpr())
expr2, err2 := compose.ConvertBuiltInIntoFunction(p2.GetLeafNode().GetExpr())
if err1 == nil && err2 == nil {
return ast.NewLeafNode(ast.NewFunction("and", expr1, expr2))
}
}
left := getAnds(p1)
right := getAnds(p2)
list := append(left, right...)
list = ast.Set(list)
list = simplifyChildren(list, func(left, right *ast.Pattern) *ast.Pattern {
return simplifyAnd(refs, left, right, record)
}, record)
ast.Sort(list)
var p *ast.Pattern = list[0]
for i := range list {
if i == 0 {
continue
}
p = ast.NewAnd(p, list[i])
}
return p
}