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