import "github.com/hashicorp/hcl/hcl/ast"
Package ast declares the types used to represent syntax trees for HCL (HashiCorp Configuration Language)
Comment node represents a single //, # style or /*- style commment
CommentGroup node represents a sequence of comments with no other tokens and no empty lines between.
func (c *CommentGroup) Pos() token.Pos
type File struct { Node Node // usually a *ObjectList Comments []*CommentGroup // list of all comments in the source }
File represents a single HCL file
type ListType struct { Lbrack token.Pos // position of "[" Rbrack token.Pos // position of "]" List []Node // the elements in lexical order }
ListStatement represents a HCL List type
type LiteralType struct { Token token.Token // comment types, only used when in a list LeadComment *CommentGroup LineComment *CommentGroup }
LiteralType represents a literal of basic type. Valid types are: token.NUMBER, token.FLOAT, token.BOOL and token.STRING
func (l *LiteralType) Pos() token.Pos
Node is an element in the abstract syntax tree.
Walk traverses an AST in depth-first order: It starts by calling fn(node); node must not be nil. If fn returns true, Walk invokes fn recursively for each of the non-nil children of node, followed by a call of fn(nil). The returned node of fn can be used to rewrite the passed node to fn.
type ObjectItem struct { // keys is only one length long if it's of type assignment. If it's a // nested object it can be larger than one. In that case "assign" is // invalid as there is no assignments for a nested object. Keys []*ObjectKey // assign contains the position of "=", if any Assign token.Pos // val is the item itself. It can be an object,list, number, bool or a // string. If key length is larger than one, val can be only of type // Object. Val Node LeadComment *CommentGroup // associated lead comment LineComment *CommentGroup // associated line comment }
ObjectItem represents a HCL Object Item. An item is represented with a key (or keys). It can be an assignment or an object (both normal and nested)
func (o *ObjectItem) Pos() token.Pos
ObjectKeys are either an identifier or of type string.
type ObjectList struct { Items []*ObjectItem }
ObjectList represents a list of ObjectItems. An HCL file itself is an ObjectList.
func (o *ObjectList) Add(item *ObjectItem)
func (o *ObjectList) Children() *ObjectList
Children returns further nested objects (key length > 0) within this ObjectList. This should be used with Filter to get at child items.
func (o *ObjectList) Elem() *ObjectList
Elem returns items in the list that are direct element assignments (key length == 0). This should be used with Filter to get at elements.
func (o *ObjectList) Filter(keys ...string) *ObjectList
Filter filters out the objects with the given key list as a prefix.
The returned list of objects contain ObjectItems where the keys have this prefix already stripped off. This might result in objects with zero-length key lists if they have no children.
If no matches are found, an empty ObjectList (non-nil) is returned.
func (o *ObjectList) GoString() string
func (o *ObjectList) Pos() token.Pos
type ObjectType struct { Lbrace token.Pos // position of "{" Rbrace token.Pos // position of "}" List *ObjectList // the nodes in lexical order }
ObjectType represents a HCL Object Type
func (o *ObjectType) Pos() token.Pos
WalkFunc describes a function to be called for each node during a Walk. The returned node can be used to rewrite the AST. Walking stops the returned bool is false.
Package ast imports 3 packages (graph) and is imported by 507 packages. Updated 2020-10-15. Refresh now. Tools for package owners.