package visitor import ( "fmt" "github.com/z7zmey/php-parser/pkg/ast" "github.com/z7zmey/php-parser/pkg/token" "io" "sort" "strconv" "strings" ) type meta struct { singleNode bool } type Dump struct { writer io.Writer indent int depth int stack []meta } func NewDump(writer io.Writer) *Dump { return &Dump{writer: writer} } func (v *Dump) print(str string) { _, err := io.WriteString(v.writer, str) if err != nil { panic(err) } } func (v *Dump) printIndent(indentDepth int) { if indentDepth < 0 { indentDepth = 0 } v.print(strings.Repeat("\t", indentDepth)) } func (v *Dump) printIndentIfNotSingle(indentDepth int) { if indentDepth < 0 { indentDepth = 0 } if !v.stack[v.depth-1].singleNode { v.print(strings.Repeat("\t", indentDepth)) } } func (v *Dump) Enter(key string, singleNode bool) { if len(v.stack) < v.depth+1 { v.stack = append(v.stack, meta{}) } v.stack[v.depth].singleNode = singleNode v.printIndent(v.indent) v.print(key) v.print(": ") if !singleNode { v.print("[]ast.Vertex{\n") v.indent++ } } func (v *Dump) Leave(_ string, singleNode bool) { if !singleNode { v.indent-- v.printIndent(v.indent) v.print("},\n") } } func (v *Dump) EnterNode(n ast.Vertex) bool { v.indent++ v.depth++ if len(v.stack) < v.depth { v.stack = append(v.stack, meta{}) } n.Accept(v) return true } func (v *Dump) LeaveNode(_ ast.Vertex) { v.indent-- v.depth-- v.printIndent(v.indent) v.print("}") if v.depth != 0 { v.print(",") } v.print("\n") } func (v *Dump) printNode(n *ast.Node) { if n.Position == nil && n.Tokens == nil { return } v.printIndent(v.indent) v.print("Node: ast.Node{\n") if n.Tokens != nil { v.printIndent(v.indent + 1) v.print("Tokens: token.Collection{\n") keys := make([]int, 0, len(n.Tokens)) for k := range n.Tokens { keys = append(keys, int(k)) } sort.Ints(keys) for _, k := range keys { key := token.Position(k) v.printIndent(v.indent + 2) v.print("token." + key.String() + ": []*token.Token{\n") for _, tkn := range n.Tokens[key] { v.printIndent(v.indent + 3) v.print("{\n") v.printIndent(v.indent + 4) v.print("ID: token." + tkn.ID.String() + ",\n") v.printIndent(v.indent + 4) v.print("Value: []byte(" + strconv.Quote(string(tkn.Value)) + "),\n") v.printIndent(v.indent + 3) v.print("},\n") } v.printIndent(v.indent + 2) v.print("},\n") } v.printIndent(v.indent + 1) v.print("},\n") } if n.Position != nil { v.printIndent(v.indent + 1) v.print("Position: &position.Position{\n") v.printIndent(v.indent + 2) v.print("StartLine: " + strconv.Itoa(n.Position.StartLine) + ",\n") v.printIndent(v.indent + 2) v.print("EndLine: " + strconv.Itoa(n.Position.EndLine) + ",\n") v.printIndent(v.indent + 2) v.print("StartPos: " + strconv.Itoa(n.Position.StartPos) + ",\n") v.printIndent(v.indent + 2) v.print("EndPos: " + strconv.Itoa(n.Position.EndPos) + ",\n") v.printIndent(v.indent + 1) v.print("},\n") } v.printIndent(v.indent) v.print("},\n") } func (v *Dump) printToken(key string, t *token.Token) { if t == nil { return } v.printIndent(v.indent) v.print(key) v.print(": &token.Token{\n") v.printIndent(v.indent + 1) v.print("ID: token." + t.ID.String() + ",\n") v.printIndent(v.indent + 1) v.print("Value: []byte(" + strconv.Quote(string(t.Value)) + "),\n") v.printIndent(v.indent + 1) v.print("Skipped: []byte(" + strconv.Quote(string(t.Skipped)) + "),\n") v.printIndent(v.indent) v.print("},\n") } func (v *Dump) Root(n *ast.Root) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.Root{\n") v.printNode(n.GetNode()) } func (v *Dump) Nullable(n *ast.Nullable) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.Nullable{\n") v.printNode(n.GetNode()) } func (v *Dump) Parameter(n *ast.Parameter) { v.printIndent(v.indent - 1) v.print("&ast.Parameter{\n") v.printNode(n.GetNode()) } func (v *Dump) Identifier(n *ast.Identifier) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.Identifier{\n") v.printNode(n.GetNode()) v.printIndent(v.indent) v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value)) } func (v *Dump) Argument(n *ast.Argument) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.Argument{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtBreak(n *ast.StmtBreak) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtBreak{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtCase(n *ast.StmtCase) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtCase{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtCatch(n *ast.StmtCatch) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtCatch{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtClass(n *ast.StmtClass) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtClass{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtClassConstList(n *ast.StmtClassConstList) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtClassConstList{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtClassExtends(n *ast.StmtClassExtends) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtClassExtends{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtClassImplements(n *ast.StmtClassImplements) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtClassImplements{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtClassMethod(n *ast.StmtClassMethod) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtClassMethod{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtConstList(n *ast.StmtConstList) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtConstList{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtConstant(n *ast.StmtConstant) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtConstant{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtContinue(n *ast.StmtContinue) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtContinue{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtDeclare(n *ast.StmtDeclare) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtDeclare{\n") v.printNode(n.GetNode()) if n.Alt { v.printIndent(v.indent) v.print("Alt: true,\n") } } func (v *Dump) StmtDefault(n *ast.StmtDefault) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtDefault{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtDo(n *ast.StmtDo) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtDo{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtEcho(n *ast.StmtEcho) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtEcho{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtElse(n *ast.StmtElse) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtElse{\n") v.printNode(n.GetNode()) if n.Alt { v.printIndent(v.indent) v.print("Alt: true,\n") } } func (v *Dump) StmtElseIf(n *ast.StmtElseIf) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtElseIf{\n") v.printNode(n.GetNode()) if n.Alt { v.printIndent(v.indent) v.print("Alt: true,\n") } } func (v *Dump) StmtExpression(n *ast.StmtExpression) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtExpression{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtFinally(n *ast.StmtFinally) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtFinally{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtFor(n *ast.StmtFor) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtFor{\n") v.printNode(n.GetNode()) if n.Alt { v.printIndent(v.indent) v.print("Alt: true,\n") } } func (v *Dump) StmtForeach(n *ast.StmtForeach) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtForeach{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtFunction(n *ast.StmtFunction) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtFunction{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtGlobal(n *ast.StmtGlobal) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtGlobal{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtGoto(n *ast.StmtGoto) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtGoto{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtHaltCompiler(n *ast.StmtHaltCompiler) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtHaltCompiler{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtIf(n *ast.StmtIf) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtIf{\n") v.printNode(n.GetNode()) if n.Alt { v.printIndent(v.indent) v.print("Alt: true,\n") } } func (v *Dump) StmtInlineHtml(n *ast.StmtInlineHtml) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtInlineHtml{\n") v.printNode(n.GetNode()) v.printIndent(v.indent) v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value)) } func (v *Dump) StmtInterface(n *ast.StmtInterface) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtInterface{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtInterfaceExtends(n *ast.StmtInterfaceExtends) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtInterfaceExtends{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtLabel(n *ast.StmtLabel) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtLabel{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtNamespace(n *ast.StmtNamespace) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtNamespace{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtNop(n *ast.StmtNop) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtNop{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtProperty(n *ast.StmtProperty) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtProperty{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtPropertyList(n *ast.StmtPropertyList) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtPropertyList{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtReturn(n *ast.StmtReturn) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtReturn{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtStatic(n *ast.StmtStatic) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtStatic{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtStaticVar(n *ast.StmtStaticVar) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtStaticVar{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtStmtList(n *ast.StmtStmtList) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtStmtList{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtSwitch(n *ast.StmtSwitch) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtSwitch{\n") v.printNode(n.GetNode()) if n.Alt { v.printIndent(v.indent) v.print("Alt: true,\n") } } func (v *Dump) StmtThrow(n *ast.StmtThrow) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtThrow{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtTrait(n *ast.StmtTrait) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtTrait{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtTraitAdaptationList(n *ast.StmtTraitAdaptationList) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtTraitAdaptationList{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtTraitMethodRef(n *ast.StmtTraitMethodRef) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtTraitMethodRef{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtTraitUse(n *ast.StmtTraitUse) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtTraitUse{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtTraitUseAlias{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtTraitUsePrecedence(n *ast.StmtTraitUsePrecedence) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtTraitUsePrecedence{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtTry(n *ast.StmtTry) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtTry{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtUnset(n *ast.StmtUnset) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtUnset{\n") v.printNode(n.GetNode()) } func (v *Dump) StmtUse(n *ast.StmtUse) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtUse{\n") v.printNode(n.GetNode()) v.printToken("UseTkn", n.UseTkn) v.printToken("SemiColonTkn", n.SemiColonTkn) } func (v *Dump) StmtGroupUse(n *ast.StmtGroupUse) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtGroupUse{\n") v.printNode(n.GetNode()) v.printToken("UseTkn", n.UseTkn) v.printToken("LeadingNsSeparatorTkn", n.LeadingNsSeparatorTkn) v.printToken("NsSeparatorTkn", n.NsSeparatorTkn) v.printToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn) v.printToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn) v.printToken("SemiColonTkn", n.SemiColonTkn) } func (v *Dump) StmtUseDeclaration(n *ast.StmtUseDeclaration) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtUseDeclaration{\n") v.printNode(n.GetNode()) v.printToken("NsSeparatorTkn", n.NsSeparatorTkn) v.printToken("AsTkn", n.AsTkn) } func (v *Dump) StmtWhile(n *ast.StmtWhile) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.StmtWhile{\n") v.printNode(n.GetNode()) if n.Alt { v.printIndent(v.indent) v.print("Alt: true,\n") } } func (v *Dump) ExprArray(n *ast.ExprArray) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprArray{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprArrayDimFetch(n *ast.ExprArrayDimFetch) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprArrayDimFetch{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprArrayItem(n *ast.ExprArrayItem) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprArrayItem{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprArrowFunction(n *ast.ExprArrowFunction) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprArrowFunction{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBitwiseNot(n *ast.ExprBitwiseNot) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBitwiseNot{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBooleanNot(n *ast.ExprBooleanNot) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBooleanNot{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprClassConstFetch(n *ast.ExprClassConstFetch) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprClassConstFetch{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprClone(n *ast.ExprClone) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprClone{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprClosure(n *ast.ExprClosure) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprClosure{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprClosureUse(n *ast.ExprClosureUse) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprClosureUse{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprConstFetch(n *ast.ExprConstFetch) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprConstFetch{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprEmpty(n *ast.ExprEmpty) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprEmpty{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprErrorSuppress(n *ast.ExprErrorSuppress) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprErrorSuppress{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprEval(n *ast.ExprEval) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprEval{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprExit(n *ast.ExprExit) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprExit{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprFunctionCall(n *ast.ExprFunctionCall) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprFunctionCall{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprInclude(n *ast.ExprInclude) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprInclude{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprIncludeOnce(n *ast.ExprIncludeOnce) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprIncludeOnce{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprInstanceOf(n *ast.ExprInstanceOf) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprInstanceOf{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprIsset(n *ast.ExprIsset) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprIsset{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprList(n *ast.ExprList) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprList{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprMethodCall(n *ast.ExprMethodCall) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprMethodCall{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprNew(n *ast.ExprNew) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprNew{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprPostDec(n *ast.ExprPostDec) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprPostDec{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprPostInc(n *ast.ExprPostInc) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprPostInc{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprPreDec(n *ast.ExprPreDec) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprPreDec{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprPreInc(n *ast.ExprPreInc) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprPreInc{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprPrint(n *ast.ExprPrint) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprPrint{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprPropertyFetch(n *ast.ExprPropertyFetch) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprPropertyFetch{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprReference(n *ast.ExprReference) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprReference{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprRequire(n *ast.ExprRequire) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprRequire{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprRequireOnce(n *ast.ExprRequireOnce) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprRequireOnce{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprShellExec(n *ast.ExprShellExec) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprShellExec{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprStaticCall(n *ast.ExprStaticCall) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprStaticCall{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprStaticPropertyFetch(n *ast.ExprStaticPropertyFetch) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprStaticPropertyFetch{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprTernary(n *ast.ExprTernary) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprTernary{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprUnaryMinus(n *ast.ExprUnaryMinus) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprUnaryMinus{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprUnaryPlus(n *ast.ExprUnaryPlus) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprUnaryPlus{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprVariable(n *ast.ExprVariable) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprVariable{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprYield(n *ast.ExprYield) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprYield{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprYieldFrom(n *ast.ExprYieldFrom) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprYieldFrom{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssign(n *ast.ExprAssign) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssign{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignReference(n *ast.ExprAssignReference) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignReference{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignBitwiseAnd(n *ast.ExprAssignBitwiseAnd) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignBitwiseAnd{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignBitwiseOr(n *ast.ExprAssignBitwiseOr) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignBitwiseOr{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignBitwiseXor(n *ast.ExprAssignBitwiseXor) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignBitwiseXor{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignCoalesce(n *ast.ExprAssignCoalesce) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignCoalesce{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignConcat(n *ast.ExprAssignConcat) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignConcat{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignDiv(n *ast.ExprAssignDiv) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignDiv{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignMinus(n *ast.ExprAssignMinus) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignMinus{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignMod(n *ast.ExprAssignMod) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignMod{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignMul(n *ast.ExprAssignMul) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignMul{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignPlus(n *ast.ExprAssignPlus) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignPlus{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignPow(n *ast.ExprAssignPow) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignPow{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignShiftLeft(n *ast.ExprAssignShiftLeft) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignShiftLeft{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprAssignShiftRight(n *ast.ExprAssignShiftRight) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprAssignShiftRight{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryBitwiseAnd(n *ast.ExprBinaryBitwiseAnd) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryBitwiseAnd{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryBitwiseOr(n *ast.ExprBinaryBitwiseOr) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryBitwiseOr{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryBitwiseXor(n *ast.ExprBinaryBitwiseXor) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryBitwiseXor{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryBooleanAnd(n *ast.ExprBinaryBooleanAnd) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryBooleanAnd{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryBooleanOr(n *ast.ExprBinaryBooleanOr) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryBooleanOr{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryCoalesce(n *ast.ExprBinaryCoalesce) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryCoalesce{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryConcat(n *ast.ExprBinaryConcat) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryConcat{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryDiv(n *ast.ExprBinaryDiv) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryDiv{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryEqual(n *ast.ExprBinaryEqual) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryEqual{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryGreater(n *ast.ExprBinaryGreater) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryGreater{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryGreaterOrEqual(n *ast.ExprBinaryGreaterOrEqual) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryGreaterOrEqual{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryIdentical(n *ast.ExprBinaryIdentical) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryIdentical{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryLogicalAnd(n *ast.ExprBinaryLogicalAnd) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryLogicalAnd{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryLogicalOr(n *ast.ExprBinaryLogicalOr) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryLogicalOr{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryLogicalXor(n *ast.ExprBinaryLogicalXor) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryLogicalXor{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryMinus(n *ast.ExprBinaryMinus) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryMinus{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryMod(n *ast.ExprBinaryMod) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryMod{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryMul(n *ast.ExprBinaryMul) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryMul{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryNotEqual(n *ast.ExprBinaryNotEqual) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryNotEqual{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryNotIdentical(n *ast.ExprBinaryNotIdentical) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryNotIdentical{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryPlus(n *ast.ExprBinaryPlus) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryPlus{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryPow(n *ast.ExprBinaryPow) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryPow{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryShiftLeft(n *ast.ExprBinaryShiftLeft) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryShiftLeft{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinaryShiftRight(n *ast.ExprBinaryShiftRight) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinaryShiftRight{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinarySmaller(n *ast.ExprBinarySmaller) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinarySmaller{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinarySmallerOrEqual(n *ast.ExprBinarySmallerOrEqual) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinarySmallerOrEqual{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprBinarySpaceship(n *ast.ExprBinarySpaceship) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprBinarySpaceship{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprCastArray(n *ast.ExprCastArray) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprCastArray{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprCastBool(n *ast.ExprCastBool) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprCastBool{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprCastDouble(n *ast.ExprCastDouble) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprCastDouble{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprCastInt(n *ast.ExprCastInt) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprCastInt{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprCastObject(n *ast.ExprCastObject) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprCastObject{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprCastString(n *ast.ExprCastString) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprCastString{\n") v.printNode(n.GetNode()) } func (v *Dump) ExprCastUnset(n *ast.ExprCastUnset) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ExprCastUnset{\n") v.printNode(n.GetNode()) } func (v *Dump) ScalarDnumber(n *ast.ScalarDnumber) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarDnumber{\n") v.printNode(n.GetNode()) v.printIndent(v.indent) v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value)) } func (v *Dump) ScalarEncapsed(n *ast.ScalarEncapsed) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarEncapsed{\n") v.printNode(n.GetNode()) } func (v *Dump) ScalarEncapsedStringPart(n *ast.ScalarEncapsedStringPart) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarEncapsedStringPart{\n") v.printNode(n.GetNode()) v.printIndent(v.indent) v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value)) } func (v *Dump) ScalarHeredoc(n *ast.ScalarHeredoc) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarHeredoc{\n") v.printNode(n.GetNode()) } func (v *Dump) ScalarLnumber(n *ast.ScalarLnumber) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarLnumber{\n") v.printNode(n.GetNode()) v.printIndent(v.indent) v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value)) } func (v *Dump) ScalarMagicConstant(n *ast.ScalarMagicConstant) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarMagicConstant{\n") v.printNode(n.GetNode()) v.printIndent(v.indent) v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value)) } func (v *Dump) ScalarString(n *ast.ScalarString) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarString{\n") v.printNode(n.GetNode()) v.printIndent(v.indent) v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value)) } func (v *Dump) NameName(n *ast.NameName) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.NameName{\n") v.printNode(n.GetNode()) } func (v *Dump) NameFullyQualified(n *ast.NameFullyQualified) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.NameFullyQualified{\n") v.printNode(n.GetNode()) } func (v *Dump) NameRelative(n *ast.NameRelative) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.NameRelative{\n") v.printNode(n.GetNode()) } func (v *Dump) NameNamePart(n *ast.NameNamePart) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.NameNamePart{\n") v.printNode(n.GetNode()) v.printIndent(v.indent) v.print(fmt.Sprintf("Value: []byte(%q),\n", n.Value)) } func (v *Dump) ParserBrackets(n *ast.ParserBrackets) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ParserBrackets{\n") v.printNode(n.GetNode()) } func (v *Dump) ParserSeparatedList(n *ast.ParserSeparatedList) { // do nothing }