walker.go 503 B

12345678910111213141516171819202122232425
  1. package ini
  2. // Walk will traverse the AST using the v, the Visitor.
  3. func Walk(tree []AST, v Visitor) error {
  4. for _, node := range tree {
  5. switch node.Kind {
  6. case ASTKindExpr,
  7. ASTKindExprStatement:
  8. if err := v.VisitExpr(node); err != nil {
  9. return err
  10. }
  11. case ASTKindStatement,
  12. ASTKindCompletedSectionStatement,
  13. ASTKindNestedSectionStatement,
  14. ASTKindCompletedNestedSectionStatement:
  15. if err := v.VisitStatement(node); err != nil {
  16. return err
  17. }
  18. }
  19. }
  20. return nil
  21. }