ast

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2018 License: MPL-2.0 Imports: 3 Imported by: 1,226

Documentation

Overview

Package ast declares the types used to represent syntax trees for HCL (HashiCorp Configuration Language)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Comment

type Comment struct {
	Start token.Pos // position of / or #
	Text  string
}

Comment node represents a single //, # style or /*- style commment

func (*Comment) Pos

func (c *Comment) Pos() token.Pos

type CommentGroup

type CommentGroup struct {
	List []*Comment // len(List) > 0
}

CommentGroup node represents a sequence of comments with no other tokens and no empty lines between.

func (*CommentGroup) Pos

func (c *CommentGroup) Pos() token.Pos

type File

type File struct {
	Node     Node            // usually a *ObjectList
	Comments []*CommentGroup // list of all comments in the source
}

File represents a single HCL file

func (*File) Pos

func (f *File) Pos() token.Pos

type ListType

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

func (*ListType) Add

func (l *ListType) Add(node Node)

func (*ListType) Pos

func (l *ListType) Pos() token.Pos

type LiteralType

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 (*LiteralType) Pos

func (l *LiteralType) Pos() token.Pos

type Node

type Node interface {
	Pos() token.Pos
	// contains filtered or unexported methods
}

Node is an element in the abstract syntax tree.

func Walk

func Walk(node Node, fn WalkFunc) Node

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

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 (*ObjectItem) Pos

func (o *ObjectItem) Pos() token.Pos

type ObjectKey

type ObjectKey struct {
	Token token.Token
}

ObjectKeys are either an identifier or of type string.

func (*ObjectKey) GoString

func (o *ObjectKey) GoString() string

func (*ObjectKey) Pos

func (o *ObjectKey) Pos() token.Pos

type ObjectList

type ObjectList struct {
	Items []*ObjectItem
}

ObjectList represents a list of ObjectItems. An HCL file itself is an ObjectList.

func (*ObjectList) Add

func (o *ObjectList) Add(item *ObjectItem)

func (*ObjectList) Children

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 (*ObjectList) Elem

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 (*ObjectList) Filter

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 (*ObjectList) GoString

func (o *ObjectList) GoString() string

func (*ObjectList) Pos

func (o *ObjectList) Pos() token.Pos

type ObjectType

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 (*ObjectType) Pos

func (o *ObjectType) Pos() token.Pos

type WalkFunc

type WalkFunc func(Node) (Node, bool)

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL