本文整理汇总了Golang中github.com/katydid/katydid/relapse/ast.Expr.GetBuiltIn方法的典型用法代码示例。如果您正苦于以下问题:Golang Expr.GetBuiltIn方法的具体用法?Golang Expr.GetBuiltIn怎么用?Golang Expr.GetBuiltIn使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/katydid/katydid/relapse/ast.Expr
的用法示例。
在下文中一共展示了Expr.GetBuiltIn方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: exprToName
func exprToName(e *ast.Expr) *ast.NameExpr {
if e.GetBuiltIn() != nil {
if e.GetBuiltIn().GetSymbol().String() == "==" {
if e.GetBuiltIn().GetExpr().GetTerminal() != nil {
t := e.GetBuiltIn().GetExpr().GetTerminal()
if t.DoubleValue != nil {
return ast.NewDoubleName(t.GetDoubleValue())
}
if t.IntValue != nil {
return ast.NewIntName(t.GetIntValue())
}
if t.UintValue != nil {
return ast.NewUintName(t.GetUintValue())
}
if t.BoolValue != nil {
return ast.NewBoolName(t.GetBoolValue())
}
if t.StringValue != nil {
return ast.NewStringName(t.GetStringValue())
}
if t.BytesValue != nil {
return ast.NewBytesName(t.GetBytesValue())
}
} else {
panic("todo")
}
} else {
panic("todo")
}
}
if e.GetFunction() != nil {
if e.GetFunction().GetName() == "not" {
return ast.NewAnyNameExcept(exprToName(e.GetFunction().GetParams()[0]))
}
if e.GetFunction().GetName() == "or" {
return ast.NewNameChoice(
exprToName(e.GetFunction().GetParams()[0]),
exprToName(e.GetFunction().GetParams()[1]),
)
}
panic("todo")
}
if e.GetTerminal() != nil {
if e.GetTerminal().BoolValue != nil {
if e.GetTerminal().GetBoolValue() {
return ast.NewAnyName()
} else {
panic("todo")
}
} else {
panic("todo")
}
}
panic("todo")
}
示例2: ConvertBuiltInIntoFunction
//ConvertBuiltInIntoFunction converts a BuiltIn Expr into a Function Expr.
func ConvertBuiltInIntoFunction(e *ast.Expr) (*ast.Expr, error) {
if e.BuiltIn == nil {
return e, nil
}
s := e.GetBuiltIn().GetSymbol().GetValue()
right := e.GetBuiltIn().GetExpr().Clone()
typ, err := Which(right)
if err != nil {
return nil, err
}
if types.IsList(typ) {
typ = types.ListToSingle(typ)
}
left := ast.NewVar(typ)
funcName := ast.BuiltInFunctionName(s)
e2 := ast.NewNestedFunction(funcName, left, right)
if funcName == "regex" {
e2 = ast.NewNestedFunction(funcName, right, ast.NewVar(types.SINGLE_STRING))
} else if funcName == "type" {
e2 = ast.NewNestedFunction(funcName, right)
}
return e2, nil
}