terraform/config/lang/ast/ast.go

26 lines
646 B
Go

package ast
// Node is the interface that all AST nodes must implement.
type Node interface {
// Accept is called to dispatch to the visitors.
Accept(Visitor)
}
// Visitors are just implementations of this function.
//
// Note that this isn't a true implementation of the visitor pattern, which
// generally requires proper type dispatch on the function. However,
// implementing this basic visitor pattern style is still very useful even
// if you have to type switch.
type Visitor func(Node)
//go:generate stringer -type=Type
// Type is the type of a literal.
type Type uint
const (
TypeInvalid Type = 0
TypeString = 1 << iota
)