github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/lang/expressions/ast_test.go (about) 1 package expressions 2 3 import "fmt" 4 5 func (tree *ParserT) Dump() interface{} { 6 var ( 7 dump = make(map[string]interface{}) 8 nodes = make([]interface{}, len(tree.ast)) 9 ) 10 11 for i := range tree.ast { 12 node := make(map[string]interface{}) 13 node["key"] = tree.ast[i].key.String() 14 node["value"] = tree.ast[i].Value() 15 node["pos"] = tree.ast[i].pos 16 if tree.ast[i].dt != nil { 17 dt, err := tree.ast[i].dt.GetValue() 18 if err == nil && dt != nil { 19 node["dt.prim"] = dt.Primitive.String() 20 node["dt.murex"] = dt.DataType 21 node["dt.value"] = dt.Value 22 } else { 23 node["dt"] = fmt.Sprintf("%v", err) 24 } 25 } else { 26 node["dt"] = "unset" 27 } 28 29 nodes[i] = node 30 } 31 32 dump["ast"] = nodes 33 dump["charPos"] = tree.charPos 34 dump["charOffset"] = tree.charOffset 35 dump["astPos"] = tree.astPos 36 dump["expression"] = string(tree.expression) 37 dump["statement"] = map[string]interface{}{ 38 "command": tree.statement.String(), 39 "parameters": tree.statement.Parameters(), 40 } 41 42 return dump 43 }