本文整理汇总了Golang中github.com/katydid/katydid/relapse/ast.NewZAny函数的典型用法代码示例。如果您正苦于以下问题:Golang NewZAny函数的具体用法?Golang NewZAny怎么用?Golang NewZAny使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewZAny函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestSimplifyTree
func TestSimplifyTree(t *testing.T) {
left := ast.NewTreeNode(ast.NewStringName("A"),
ast.NewTreeNode(ast.NewStringName("B"), ast.NewContains(
ast.NewTreeNode(ast.NewStringName("C"), ast.NewZAny()),
)),
)
right := ast.NewTreeNode(ast.NewStringName("A"),
ast.NewTreeNode(ast.NewStringName("B"), ast.NewContains(
ast.NewTreeNode(ast.NewStringName("D"), ast.NewZAny()),
)),
)
input := ast.NewAnd(left, right)
expected := ast.NewTreeNode(ast.NewStringName("A"),
ast.NewTreeNode(ast.NewStringName("B"), ast.NewAnd(
ast.NewContains(
ast.NewTreeNode(ast.NewStringName("C"), ast.NewZAny()),
),
ast.NewContains(
ast.NewTreeNode(ast.NewStringName("D"), ast.NewZAny()),
),
)),
)
output := NewSimplifier(input.Grammar()).Simplify(input)
t.Logf("%v", output)
if !expected.Equal(output) {
t.Fatalf("expected %v, but got %v", expected, output)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:28,代码来源:simplify_test.go
示例2: TestSimplify1
func TestSimplify1(t *testing.T) {
c := ast.NewConcat(ast.NewNot(ast.NewZAny()), ast.NewZAny())
s := NewSimplifier(c.Grammar()).Simplify(c)
if !s.Equal(ast.NewNot(ast.NewZAny())) {
t.Fatalf("Expected EmptySet, but got %s", s)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:7,代码来源:simplify_test.go
示例3: TestSimplifyContainsFalseTreeNode
func TestSimplifyContainsFalseTreeNode(t *testing.T) {
input := ast.NewContains(ast.NewTreeNode(ast.NewAnyNameExcept(ast.NewAnyName()), ast.NewZAny()))
expected := ast.NewNot(ast.NewZAny())
output := NewSimplifier(input.Grammar()).Simplify(input)
t.Logf("%v", output)
if !expected.Equal(output) {
t.Fatalf("expected %v, but got %v", expected, output)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:9,代码来源:simplify_test.go
示例4: TestSimplifyTreeNodeWithNotZanyChild
func TestSimplifyTreeNodeWithNotZanyChild(t *testing.T) {
input := ast.NewTreeNode(ast.NewAnyName(), ast.NewNot(ast.NewZAny()))
expected := ast.NewNot(ast.NewZAny())
output := NewSimplifier(input.Grammar()).Simplify(input)
t.Logf("%v", output)
if !expected.Equal(output) {
t.Fatalf("expected %v, but got %v", expected, output)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:9,代码来源:simplify_test.go
示例5: TestKeyAnyName
func TestKeyAnyName(t *testing.T) {
p := ast.NewOr(
ast.NewTreeNode(ast.NewNameChoice(ast.NewAnyName(), ast.NewStringName("C")), ast.NewZAny()),
ast.NewTreeNode(ast.NewStringName("B"), ast.NewZAny()),
)
g := p.Grammar()
gkey, err := FieldNamesToNumbers("debug", "Debug", debug.DebugDescription(), g)
if err == nil {
t.Fatalf("Expected: Any Field Not Supported: Name: _, but got %v", gkey)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:11,代码来源:protonum_test.go
示例6: TestNotUnreachableArray
func TestNotUnreachableArray(t *testing.T) {
p := ast.NewTreeNode(ast.NewAnyNameExcept(ast.NewStringName("NotC")), ast.NewTreeNode(ast.NewStringName("F"),
ast.NewConcat(ast.NewZAny(), ast.NewTreeNode(ast.NewAnyName(),
ast.NewZAny(),
))))
g := p.Grammar()
gkey, err := FieldNamesToNumbers("debug", "Debug", debug.DebugDescription(), g)
if err == nil {
t.Fatalf("Expected: AnyNameExcept Not Supported Error: Name: !(NotC), but got %v", gkey)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:11,代码来源:protonum_test.go
示例7: TestAnyIndex
func TestAnyIndex(t *testing.T) {
p := ast.NewTreeNode(ast.NewStringName("KeyValue"), ast.NewTreeNode(ast.NewAnyName(), ast.NewConcat(
ast.NewTreeNode(ast.NewStringName("Key"), ast.NewZAny()),
ast.NewTreeNode(ast.NewStringName("Value"), ast.NewZAny()),
)))
gkey, err := FieldNamesToNumbers("protonum", "ProtoNum", ProtonumDescription(), p.Grammar())
if err != nil {
t.Fatal(err)
}
t.Logf("%v", gkey)
check(t, gkey)
}
开发者ID:katydid,项目名称:katydid,代码行数:12,代码来源:protonum_test.go
示例8: derivReturn
func derivReturn(refs ast.RefLookup, p *ast.Pattern, patterns []*ast.Pattern) (*ast.Pattern, []*ast.Pattern) {
typ := p.GetValue()
switch v := typ.(type) {
case *ast.Empty:
return ast.NewNot(ast.NewZAny()), patterns
case *ast.ZAny:
return ast.NewZAny(), patterns
case *ast.TreeNode:
if Nullable(refs, patterns[0]) {
return ast.NewEmpty(), patterns[1:]
}
return ast.NewNot(ast.NewZAny()), patterns[1:]
case *ast.LeafNode:
if Nullable(refs, patterns[0]) {
return ast.NewEmpty(), patterns[1:]
}
return ast.NewNot(ast.NewZAny()), patterns[1:]
case *ast.Concat:
l, leftRest := derivReturn(refs, v.GetLeftPattern(), patterns)
leftConcat := ast.NewConcat(l, v.GetRightPattern())
if !Nullable(refs, v.GetLeftPattern()) {
return leftConcat, leftRest
}
r, rightRest := derivReturn(refs, v.GetRightPattern(), leftRest)
return ast.NewOr(leftConcat, r), rightRest
case *ast.Or:
l, leftRest := derivReturn(refs, v.GetLeftPattern(), patterns)
r, rightRest := derivReturn(refs, v.GetRightPattern(), leftRest)
return ast.NewOr(l, r), rightRest
case *ast.And:
l, leftRest := derivReturn(refs, v.GetLeftPattern(), patterns)
r, rightRest := derivReturn(refs, v.GetRightPattern(), leftRest)
return ast.NewAnd(l, r), rightRest
case *ast.Interleave:
l, leftRest := derivReturn(refs, v.GetLeftPattern(), patterns)
r, rightRest := derivReturn(refs, v.GetRightPattern(), leftRest)
return ast.NewOr(ast.NewInterleave(l, v.GetRightPattern()), ast.NewInterleave(r, v.GetLeftPattern())), rightRest
case *ast.ZeroOrMore:
c, rest := derivReturn(refs, v.GetPattern(), patterns)
return ast.NewConcat(c, p), rest
case *ast.Reference:
return derivReturn(refs, refs[v.GetName()], patterns)
case *ast.Not:
c, rest := derivReturn(refs, v.GetPattern(), patterns)
return ast.NewNot(c), rest
case *ast.Contains:
return derivReturn(refs, ast.NewConcat(ast.NewZAny(), ast.NewConcat(v.GetPattern(), ast.NewZAny())), patterns)
case *ast.Optional:
return derivReturn(refs, ast.NewOr(v.GetPattern(), ast.NewEmpty()), patterns)
}
panic(fmt.Sprintf("unknown pattern typ %T", typ))
}
开发者ID:katydid,项目名称:katydid,代码行数:52,代码来源:deriv.go
示例9: TestTopsyTurvy
func TestTopsyTurvy(t *testing.T) {
p := ast.NewTreeNode(ast.NewAnyName(), ast.NewTreeNode(ast.NewStringName("A"), ast.NewZAny()))
gkey, err := FieldNamesToNumbers("protonum", "TopsyTurvy", ProtonumDescription(), p.Grammar())
if err == nil {
t.Fatalf("Expected: Any Field Not Supported: Name: _, but got %v", gkey)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:7,代码来源:protonum_test.go
示例10: simplifyContains
func simplifyContains(p *ast.Pattern) *ast.Pattern {
if isEmpty(p) || isZany(p) {
return ast.NewZAny()
}
if isNotZany(p) {
return p
}
return ast.NewContains(p)
}
开发者ID:katydid,项目名称:katydid,代码行数:9,代码来源:simplify.go
示例11: TestSimplifyFalseLeaf
func TestSimplifyFalseLeaf(t *testing.T) {
input := combinator.Value(funcs.And(funcs.StringEq(funcs.StringVar(), funcs.StringConst("a")), funcs.StringEq(funcs.StringVar(), funcs.StringConst("b"))))
expected := ast.NewNot(ast.NewZAny())
output := NewSimplifier(input.Grammar()).Simplify(input)
t.Logf("%v", output)
if !expected.Equal(output) {
t.Fatalf("expected %v, but got %v", expected, output)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:9,代码来源:simplify_test.go
示例12: TestKeyOr
func TestKeyOr(t *testing.T) {
p := ast.NewOr(
ast.NewTreeNode(ast.NewStringName("A"), ast.NewZAny()),
ast.NewTreeNode(ast.NewStringName("B"), ast.NewZAny()),
)
g := p.Grammar()
gkey, err := FieldNamesToNumbers("debug", "Debug", debug.DebugDescription(), g)
if err != nil {
t.Fatal(err)
}
t.Logf("%v", gkey)
check(t, gkey)
if gkey.GetTopPattern().GetOr().GetLeftPattern().GetTreeNode().GetName().GetName().GetUintValue() != 1 {
t.Fatalf("expected field 1, but got %v", gkey)
}
if gkey.GetTopPattern().GetOr().GetRightPattern().GetTreeNode().GetName().GetName().GetUintValue() != 2 {
t.Fatalf("expected field 2, but got %v", gkey)
}
}
开发者ID:katydid,项目名称:katydid,代码行数:19,代码来源:protonum_test.go
示例13: newList
func newList(nameOrPattern *NameOrPattern) *ast.Pattern {
regexStr, nullable, err := listToRegex(nameOrPattern)
if err != nil {
return ast.NewNot(ast.NewZAny())
}
val := combinator.Value(&list{nil, funcs.StringVar(), funcs.StringConst("^" + regexStr + "$")})
if !nullable {
return val
}
return ast.NewOr(val, ast.NewEmpty())
}
开发者ID:katydid,项目名称:relaxng,代码行数:11,代码来源:funcs.go
示例14: TestKeyAnyArrayIndex
func TestKeyAnyArrayIndex(t *testing.T) {
p := ast.NewConcat(
ast.NewZAny(),
ast.NewTreeNode(ast.NewStringName("E"),
ast.NewTreeNode(ast.NewAnyName(),
ast.NewConcat(
ast.NewTreeNode(ast.NewStringName("A"), ast.NewZAny()),
ast.NewTreeNode(ast.NewStringName("B"), ast.NewZAny()),
),
),
),
ast.NewZAny(),
)
g := p.Grammar()
gkey, err := FieldNamesToNumbers("debug", "Debug", debug.DebugDescription(), g)
if err != nil {
t.Fatal(err)
}
t.Logf("%v", gkey)
check(t, gkey)
}
开发者ID:katydid,项目名称:katydid,代码行数:21,代码来源:protonum_test.go
示例15: TestRepeatedMessageWithNoFieldsOfTypeMessage
func TestRepeatedMessageWithNoFieldsOfTypeMessage(t *testing.T) {
p := ast.NewConcat(
ast.NewZAny(),
ast.NewTreeNode(ast.NewStringName("KeyValue"),
ast.NewTreeNode(ast.NewAnyName(),
ast.NewConcat(
ast.NewTreeNode(ast.NewStringName("Key"), ast.NewZAny()),
ast.NewTreeNode(ast.NewStringName("Value"), ast.NewZAny()),
),
),
),
ast.NewZAny(),
)
g := p.Grammar()
gkey, err := FieldNamesToNumbers("protonum", "ProtoNum", ProtonumDescription(), g)
if err != nil {
t.Fatal(err)
}
t.Logf("%v", gkey)
check(t, gkey)
}
开发者ID:katydid,项目名称:katydid,代码行数:21,代码来源:protonum_test.go
示例16: derivCall
func derivCall(refs map[string]*ast.Pattern, getFunc func(*ast.Expr) funcs.Bool, p *ast.Pattern) []*ifExpr {
typ := p.GetValue()
switch v := typ.(type) {
case *ast.Empty:
return []*ifExpr{}
case *ast.ZAny:
return []*ifExpr{}
case *ast.TreeNode:
b := nameexpr.NameToFunc(v.GetName())
return []*ifExpr{{b, v.GetPattern(), ast.NewNot(ast.NewZAny())}}
case *ast.LeafNode:
b := getFunc(v.GetExpr())
return []*ifExpr{{b, ast.NewEmpty(), ast.NewNot(ast.NewZAny())}}
case *ast.Concat:
l := derivCall(refs, getFunc, v.GetLeftPattern())
if !interp.Nullable(refs, v.GetLeftPattern()) {
return l
}
r := derivCall(refs, getFunc, v.GetRightPattern())
return append(l, r...)
case *ast.Or:
return derivCall2(refs, getFunc, v.GetLeftPattern(), v.GetRightPattern())
case *ast.And:
return derivCall2(refs, getFunc, v.GetLeftPattern(), v.GetRightPattern())
case *ast.Interleave:
return derivCall2(refs, getFunc, v.GetLeftPattern(), v.GetRightPattern())
case *ast.ZeroOrMore:
return derivCall(refs, getFunc, v.GetPattern())
case *ast.Reference:
return derivCall(refs, getFunc, refs[v.GetName()])
case *ast.Not:
return derivCall(refs, getFunc, v.GetPattern())
case *ast.Contains:
return derivCall(refs, getFunc, ast.NewConcat(ast.NewZAny(), ast.NewConcat(v.GetPattern(), ast.NewZAny())))
case *ast.Optional:
return derivCall(refs, getFunc, ast.NewOr(v.GetPattern(), ast.NewEmpty()))
}
panic(fmt.Sprintf("unknown pattern typ %T", typ))
}
开发者ID:katydid,项目名称:katydid,代码行数:39,代码来源:deriv.go
示例17: TestKeyRecursive
func TestKeyRecursive(t *testing.T) {
p := ast.NewOr(
ast.NewTreeNode(ast.NewStringName("C"), ast.NewReference("main")),
ast.NewTreeNode(ast.NewStringName("A"), ast.NewZAny()),
)
g := p.Grammar()
gkey, err := FieldNamesToNumbers("debug", "Debug", debug.DebugDescription(), g)
if err != nil {
t.Fatal(err)
}
t.Logf("%v", gkey)
check(t, gkey)
}
开发者ID:katydid,项目名称:katydid,代码行数:13,代码来源:protonum_test.go
示例18: TestKeyLeftRecursive
func TestKeyLeftRecursive(t *testing.T) {
p := ast.NewOr(
ast.NewReference("a"),
ast.NewTreeNode(ast.NewStringName("C"), ast.NewReference("main")),
ast.NewTreeNode(ast.NewStringName("A"), ast.NewZAny()),
)
g := p.Grammar().AddRef("a", ast.NewReference("main"))
gkey, err := FieldNamesToNumbers("debug", "Debug", debug.DebugDescription(), g)
if err != nil {
t.Fatal(err)
}
t.Logf("%v", gkey)
if gkey.GetTopPattern().GetOr().GetRightPattern().GetOr().GetLeftPattern().GetTreeNode().GetName().GetName().GetUintValue() != 3 {
t.Fatalf("expected field 3, but got %v", gkey)
}
check(t, gkey)
}
开发者ID:katydid,项目名称:katydid,代码行数:17,代码来源:protonum_test.go
示例19: simplifyOr
func simplifyOr(refs ast.RefLookup, p1, p2 *ast.Pattern, record bool) *ast.Pattern {
if isNotZany(p1) {
return p2
}
if isNotZany(p2) {
return p1
}
if isZany(p1) || isZany(p2) {
return ast.NewZAny()
}
if isEmpty(p1) && Nullable(refs, p2) {
return p2
}
if isEmpty(p2) && Nullable(refs, p1) {
return p1
}
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("or", expr1, expr2))
}
}
left := getOrs(p1)
right := getOrs(p2)
list := append(left, right...)
list = ast.Set(list)
list = simplifyChildren(list, func(left, right *ast.Pattern) *ast.Pattern {
return simplifyOr(refs, left, right, record)
}, record)
ast.Sort(list)
var p *ast.Pattern = list[0]
for i := range list {
if i == 0 {
continue
}
p = ast.NewOr(p, list[i])
}
return p
}
开发者ID:katydid,项目名称:katydid,代码行数:40,代码来源:simplify.go
示例20: OptimizeForRecord
func (this *simplifier) OptimizeForRecord() Simplifier {
this.record = true
return this
}
func checkRef(refs ast.RefLookup, p *ast.Pattern) *ast.Pattern {
for name, rpat := range refs {
if rpat.Equal(p) {
return ast.NewReference(name)
}
}
return p
}
var emptyset = ast.NewNot(ast.NewZAny())
func (this *simplifier) simplify(p *ast.Pattern, top bool) *ast.Pattern {
cRef := func(cp *ast.Pattern) *ast.Pattern {
if top {
return cp
}
return checkRef(this.refs, cp)
}
cachesimp := func(sp *ast.Pattern) *ast.Pattern {
if _, ok := this.cache[sp]; ok {
return sp
}
s := this.simplify(sp, false)
this.cache[s] = struct{}{}
return s
开发者ID:katydid,项目名称:katydid,代码行数:30,代码来源:simplify.go
注:本文中的github.com/katydid/katydid/relapse/ast.NewZAny函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论