hcl/zcl/zclsyntax/node.go
Martin Atkins e957bff8de zclsyntax: Start to stub out the zclsyntax package
This package will grow to contain all of the gory details of the native
zcl syntax, including it AST, parser, etc. Most callers should access
this via the simpler API in the top-level package, which then gives
automatic support for other syntaxes too.
2017-05-23 08:05:44 -07:00

23 lines
638 B
Go

package zclsyntax
import (
"github.com/apparentlymart/go-zcl/zcl"
)
// Node is the abstract type that every AST node implements.
//
// This is a closed interface, so it cannot be implemented from outside of
// this package.
type Node interface {
// This is the mechanism by which the public-facing walk functions
// are implemented. Implementations should call the given function
// for each child node and then replace that node with its return value.
// The return value might just be the same node, for non-transforming
// walks.
walkChildNodes(w internalWalkFunc)
Range() zcl.Range
}
type internalWalkFunc func(Node) Node