Documentation
¶
Overview ¶
Package ast declares types representing a JavaScript AST.
Warning ¶
The parser and AST interfaces are still works-in-progress (particularly where node types are concerned) and may change in the future.
Index ¶
- type ArrayLiteral
- type AssignExpression
- type BadExpression
- type BadStatement
- type BinaryExpression
- type BlockStatement
- type BooleanLiteral
- type BracketExpression
- type BranchStatement
- type CallExpression
- type CaseStatement
- type CatchStatement
- type Comment
- type CommentMap
- type CommentPosition
- type Comments
- func (c *Comments) AddComment(comment *Comment)
- func (c *Comments) AfterBlock()
- func (c *Comments) AtLineBreak()
- func (c *Comments) Fetch() []*Comment
- func (c *Comments) FetchAll() []*Comment
- func (c *Comments) MarkComments(position CommentPosition)
- func (c *Comments) MarkPrimary()
- func (c *Comments) PostProcessNode(node Node)
- func (c *Comments) ResetLineBreak()
- func (c *Comments) SetExpression(node Expression)
- func (c *Comments) String() string
- func (c *Comments) Unset()
- type ConditionalExpression
- type DebuggerStatement
- type Declaration
- type DoWhileStatement
- type DotExpression
- type EmptyExpression
- type EmptyStatement
- type Expression
- type ExpressionStatement
- type ForInStatement
- type ForStatement
- type FunctionDeclaration
- type FunctionLiteral
- type FunctionStatement
- type Identifier
- type IfStatement
- type LabelledStatement
- type NewExpression
- type Node
- type NullLiteral
- type NumberLiteral
- type ObjectLiteral
- type ParameterList
- type Program
- type Property
- type RegExpLiteral
- type ReturnStatement
- type SequenceExpression
- type Statement
- type StringLiteral
- type SwitchStatement
- type ThisExpression
- type ThrowStatement
- type TryStatement
- type UnaryExpression
- type VariableDeclaration
- type VariableExpression
- type VariableStatement
- type WhileStatement
- type WithStatement
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ArrayLiteral ¶
type ArrayLiteral struct {
LeftBracket file.Idx
RightBracket file.Idx
Value []Expression
}
func (*ArrayLiteral) Idx0 ¶
func (self *ArrayLiteral) Idx0() file.Idx
func (*ArrayLiteral) Idx1 ¶
func (self *ArrayLiteral) Idx1() file.Idx
type AssignExpression ¶
type AssignExpression struct {
Operator token.Token
Left Expression
Right Expression
}
func (*AssignExpression) Idx0 ¶
func (self *AssignExpression) Idx0() file.Idx
func (*AssignExpression) Idx1 ¶
func (self *AssignExpression) Idx1() file.Idx
type BadExpression ¶
func (*BadExpression) Idx0 ¶
func (self *BadExpression) Idx0() file.Idx
func (*BadExpression) Idx1 ¶
func (self *BadExpression) Idx1() file.Idx
type BadStatement ¶
func (*BadStatement) Idx0 ¶
func (self *BadStatement) Idx0() file.Idx
func (*BadStatement) Idx1 ¶
func (self *BadStatement) Idx1() file.Idx
type BinaryExpression ¶
type BinaryExpression struct {
Operator token.Token
Left Expression
Right Expression
Comparison bool
}
func (*BinaryExpression) Idx0 ¶
func (self *BinaryExpression) Idx0() file.Idx
func (*BinaryExpression) Idx1 ¶
func (self *BinaryExpression) Idx1() file.Idx
type BlockStatement ¶
func (*BlockStatement) Idx0 ¶
func (self *BlockStatement) Idx0() file.Idx
func (*BlockStatement) Idx1 ¶
func (self *BlockStatement) Idx1() file.Idx
type BooleanLiteral ¶
func (*BooleanLiteral) Idx0 ¶
func (self *BooleanLiteral) Idx0() file.Idx
func (*BooleanLiteral) Idx1 ¶
func (self *BooleanLiteral) Idx1() file.Idx
type BracketExpression ¶
type BracketExpression struct {
Left Expression
Member Expression
LeftBracket file.Idx
RightBracket file.Idx
}
func (*BracketExpression) Idx0 ¶
func (self *BracketExpression) Idx0() file.Idx
func (*BracketExpression) Idx1 ¶
func (self *BracketExpression) Idx1() file.Idx
type BranchStatement ¶
type BranchStatement struct {
Idx file.Idx
Token token.Token
Label *Identifier
}
func (*BranchStatement) Idx0 ¶
func (self *BranchStatement) Idx0() file.Idx
func (*BranchStatement) Idx1 ¶
func (self *BranchStatement) Idx1() file.Idx
type CallExpression ¶
type CallExpression struct {
Callee Expression
LeftParenthesis file.Idx
ArgumentList []Expression
RightParenthesis file.Idx
}
func (*CallExpression) Idx0 ¶
func (self *CallExpression) Idx0() file.Idx
func (*CallExpression) Idx1 ¶
func (self *CallExpression) Idx1() file.Idx
type CaseStatement ¶
type CaseStatement struct {
Case file.Idx
Test Expression
Consequent []Statement
}
func (*CaseStatement) Idx0 ¶
func (self *CaseStatement) Idx0() file.Idx
func (*CaseStatement) Idx1 ¶
func (self *CaseStatement) Idx1() file.Idx
type CatchStatement ¶
type CatchStatement struct {
Catch file.Idx
Parameter *Identifier
Body Statement
}
func (*CatchStatement) Idx0 ¶
func (self *CatchStatement) Idx0() file.Idx
func (*CatchStatement) Idx1 ¶
func (self *CatchStatement) Idx1() file.Idx
type Comment ¶
type Comment struct {
Begin file.Idx
Text string
Position CommentPosition
}
Comment contains the data of the comment
func NewComment ¶
NewComment creates a new comment
type CommentMap ¶
CommentMap is the data structure where all found comments are stored
func (CommentMap) AddComment ¶
func (cm CommentMap) AddComment(node Node, comment *Comment)
AddComment adds a single comment to the map
func (CommentMap) AddComments ¶
func (cm CommentMap) AddComments(node Node, comments []*Comment, position CommentPosition)
AddComments adds a slice of comments, given a node and an updated position
func (CommentMap) MoveComments ¶
func (cm CommentMap) MoveComments(from, to Node, position CommentPosition)
MoveComments moves comments with a given position from a node to another
type CommentPosition ¶
type CommentPosition int
CommentPosition determines where the comment is in a given context
const ( LEADING CommentPosition // Before the pertinent expression TRAILING // After the pertinent expression KEY // Before a key in an object COLON // After a colon in a field declaration FINAL // Final comments in a block, not belonging to a specific expression or the comment after a trailing , in an array or object literal IF // After an if keyword WHILE // After a while keyword DO // After do keyword FOR // After a for keyword WITH // After a with keyword TBD )
func (CommentPosition) String ¶
func (cp CommentPosition) String() string
String returns a stringified version of the position
type Comments ¶
type Comments struct {
// CommentMap is a reference to the parser comment map
CommentMap CommentMap
// Comments lists the comments scanned, not linked to a node yet
Comments []*Comment
// Current is node for which comments are linked to
Current Expression
// contains filtered or unexported fields
}
Comments defines the current view of comments from the parser
func NewComments ¶
func NewComments() *Comments
func (*Comments) AddComment ¶
AddComment adds a comment to the view. Depending on the context, comments are added normally or as post line break.
func (*Comments) AfterBlock ¶
func (c *Comments) AfterBlock()
AfterBlock will mark the context as being after a block.
func (*Comments) FetchAll ¶
FetchAll returns all the currently scanned comments, including those from the next line
func (*Comments) MarkComments ¶
func (c *Comments) MarkComments(position CommentPosition)
MarkComments will mark the found comments as the given position.
func (*Comments) MarkPrimary ¶
func (c *Comments) MarkPrimary()
MarkPrimary will mark the context as processing a primary expression
func (*Comments) PostProcessNode ¶
PostProcessNode applies all found comments to the given node
func (*Comments) ResetLineBreak ¶
func (c *Comments) ResetLineBreak()
ResetLineBreak marks the beginning of a new statement
func (*Comments) SetExpression ¶
func (c *Comments) SetExpression(node Expression)
SetExpression sets the current expression. It is applied the found comments, unless the previous expression has not been unset. It is skipped if the node is already set or if it is a part of the previous node.
type ConditionalExpression ¶
type ConditionalExpression struct {
Test Expression
Consequent Expression
Alternate Expression
}
func (*ConditionalExpression) Idx0 ¶
func (self *ConditionalExpression) Idx0() file.Idx
func (*ConditionalExpression) Idx1 ¶
func (self *ConditionalExpression) Idx1() file.Idx
type DebuggerStatement ¶
func (*DebuggerStatement) Idx0 ¶
func (self *DebuggerStatement) Idx0() file.Idx
func (*DebuggerStatement) Idx1 ¶
func (self *DebuggerStatement) Idx1() file.Idx
type Declaration ¶
type Declaration interface {
// contains filtered or unexported methods
}
All declaration nodes implement the Declaration interface.
type DoWhileStatement ¶
type DoWhileStatement struct {
Do file.Idx
Test Expression
Body Statement
}
func (*DoWhileStatement) Idx0 ¶
func (self *DoWhileStatement) Idx0() file.Idx
func (*DoWhileStatement) Idx1 ¶
func (self *DoWhileStatement) Idx1() file.Idx
type DotExpression ¶
type DotExpression struct {
Left Expression
Identifier *Identifier
}
func (*DotExpression) Idx0 ¶
func (self *DotExpression) Idx0() file.Idx
func (*DotExpression) Idx1 ¶
func (self *DotExpression) Idx1() file.Idx
type EmptyExpression ¶
func (*EmptyExpression) Idx0 ¶
func (self *EmptyExpression) Idx0() file.Idx
func (*EmptyExpression) Idx1 ¶
func (self *EmptyExpression) Idx1() file.Idx
type EmptyStatement ¶
func (*EmptyStatement) Idx0 ¶
func (self *EmptyStatement) Idx0() file.Idx
func (*EmptyStatement) Idx1 ¶
func (self *EmptyStatement) Idx1() file.Idx
type Expression ¶
type Expression interface {
Node
// contains filtered or unexported methods
}
All expression nodes implement the Expression interface.
type ExpressionStatement ¶
type ExpressionStatement struct {
Expression Expression
}
func (*ExpressionStatement) Idx0 ¶
func (self *ExpressionStatement) Idx0() file.Idx
func (*ExpressionStatement) Idx1 ¶
func (self *ExpressionStatement) Idx1() file.Idx
type ForInStatement ¶
type ForInStatement struct {
For file.Idx
Into Expression
Source Expression
Body Statement
}
func (*ForInStatement) Idx0 ¶
func (self *ForInStatement) Idx0() file.Idx
func (*ForInStatement) Idx1 ¶
func (self *ForInStatement) Idx1() file.Idx
type ForStatement ¶
type ForStatement struct {
For file.Idx
Initializer Expression
Update Expression
Test Expression
Body Statement
}
func (*ForStatement) Idx0 ¶
func (self *ForStatement) Idx0() file.Idx
func (*ForStatement) Idx1 ¶
func (self *ForStatement) Idx1() file.Idx
type FunctionDeclaration ¶
type FunctionDeclaration struct {
Function *FunctionLiteral
}
type FunctionLiteral ¶
type FunctionLiteral struct {
Function file.Idx
Name *Identifier
ParameterList *ParameterList
Body Statement
Source string
DeclarationList []Declaration
}
func (*FunctionLiteral) Idx0 ¶
func (self *FunctionLiteral) Idx0() file.Idx
func (*FunctionLiteral) Idx1 ¶
func (self *FunctionLiteral) Idx1() file.Idx
type FunctionStatement ¶
type FunctionStatement struct {
Function *FunctionLiteral
}
func (*FunctionStatement) Idx0 ¶
func (self *FunctionStatement) Idx0() file.Idx
func (*FunctionStatement) Idx1 ¶
func (self *FunctionStatement) Idx1() file.Idx
type Identifier ¶
func (*Identifier) Idx0 ¶
func (self *Identifier) Idx0() file.Idx
func (*Identifier) Idx1 ¶
func (self *Identifier) Idx1() file.Idx
type IfStatement ¶
type IfStatement struct {
If file.Idx
Test Expression
Consequent Statement
Alternate Statement
}
func (*IfStatement) Idx0 ¶
func (self *IfStatement) Idx0() file.Idx
func (*IfStatement) Idx1 ¶
func (self *IfStatement) Idx1() file.Idx
type LabelledStatement ¶
type LabelledStatement struct {
Label *Identifier
Colon file.Idx
Statement Statement
}
func (*LabelledStatement) Idx0 ¶
func (self *LabelledStatement) Idx0() file.Idx
func (*LabelledStatement) Idx1 ¶
func (self *LabelledStatement) Idx1() file.Idx
type NewExpression ¶
type NewExpression struct {
New file.Idx
Callee Expression
LeftParenthesis file.Idx
ArgumentList []Expression
RightParenthesis file.Idx
}
func (*NewExpression) Idx0 ¶
func (self *NewExpression) Idx0() file.Idx
func (*NewExpression) Idx1 ¶
func (self *NewExpression) Idx1() file.Idx
type Node ¶
type Node interface {
Idx0() file.Idx // The index of the first character belonging to the node
Idx1() file.Idx // The index of the first character immediately after the node
}
All nodes implement the Node interface.
type NullLiteral ¶
func (*NullLiteral) Idx0 ¶
func (self *NullLiteral) Idx0() file.Idx
func (*NullLiteral) Idx1 ¶
func (self *NullLiteral) Idx1() file.Idx
type NumberLiteral ¶
func (*NumberLiteral) Idx0 ¶
func (self *NumberLiteral) Idx0() file.Idx
func (*NumberLiteral) Idx1 ¶
func (self *NumberLiteral) Idx1() file.Idx
type ObjectLiteral ¶
func (*ObjectLiteral) Idx0 ¶
func (self *ObjectLiteral) Idx0() file.Idx
func (*ObjectLiteral) Idx1 ¶
func (self *ObjectLiteral) Idx1() file.Idx
type ParameterList ¶
type ParameterList struct {
Opening file.Idx
List []*Identifier
Closing file.Idx
}
type Program ¶
type Program struct {
Body []Statement
DeclarationList []Declaration
File *file.File
Comments CommentMap
}
type Property ¶
type Property struct {
Key string
Kind string
Value Expression
}
type RegExpLiteral ¶
func (*RegExpLiteral) Idx0 ¶
func (self *RegExpLiteral) Idx0() file.Idx
func (*RegExpLiteral) Idx1 ¶
func (self *RegExpLiteral) Idx1() file.Idx
type ReturnStatement ¶
type ReturnStatement struct {
Return file.Idx
Argument Expression
}
func (*ReturnStatement) Idx0 ¶
func (self *ReturnStatement) Idx0() file.Idx
func (*ReturnStatement) Idx1 ¶
func (self *ReturnStatement) Idx1() file.Idx
type SequenceExpression ¶
type SequenceExpression struct {
Sequence []Expression
}
func (*SequenceExpression) Idx0 ¶
func (self *SequenceExpression) Idx0() file.Idx
func (*SequenceExpression) Idx1 ¶
func (self *SequenceExpression) Idx1() file.Idx
type Statement ¶
type Statement interface {
Node
// contains filtered or unexported methods
}
All statement nodes implement the Statement interface.
type StringLiteral ¶
func (*StringLiteral) Idx0 ¶
func (self *StringLiteral) Idx0() file.Idx
func (*StringLiteral) Idx1 ¶
func (self *StringLiteral) Idx1() file.Idx
type SwitchStatement ¶
type SwitchStatement struct {
Switch file.Idx
Discriminant Expression
Default int
Body []*CaseStatement
}
func (*SwitchStatement) Idx0 ¶
func (self *SwitchStatement) Idx0() file.Idx
func (*SwitchStatement) Idx1 ¶
func (self *SwitchStatement) Idx1() file.Idx
type ThisExpression ¶
func (*ThisExpression) Idx0 ¶
func (self *ThisExpression) Idx0() file.Idx
func (*ThisExpression) Idx1 ¶
func (self *ThisExpression) Idx1() file.Idx
type ThrowStatement ¶
type ThrowStatement struct {
Throw file.Idx
Argument Expression
}
func (*ThrowStatement) Idx0 ¶
func (self *ThrowStatement) Idx0() file.Idx
func (*ThrowStatement) Idx1 ¶
func (self *ThrowStatement) Idx1() file.Idx
type TryStatement ¶
type TryStatement struct {
Try file.Idx
Body Statement
Catch *CatchStatement
Finally Statement
}
func (*TryStatement) Idx0 ¶
func (self *TryStatement) Idx0() file.Idx
func (*TryStatement) Idx1 ¶
func (self *TryStatement) Idx1() file.Idx
type UnaryExpression ¶
type UnaryExpression struct {
Operator token.Token
Idx file.Idx // If a prefix operation
Operand Expression
Postfix bool
}
func (*UnaryExpression) Idx0 ¶
func (self *UnaryExpression) Idx0() file.Idx
func (*UnaryExpression) Idx1 ¶
func (self *UnaryExpression) Idx1() file.Idx
type VariableDeclaration ¶
type VariableDeclaration struct {
Var file.Idx
List []*VariableExpression
}
type VariableExpression ¶
type VariableExpression struct {
Name string
Idx file.Idx
Initializer Expression
}
func (*VariableExpression) Idx0 ¶
func (self *VariableExpression) Idx0() file.Idx
func (*VariableExpression) Idx1 ¶
func (self *VariableExpression) Idx1() file.Idx
type VariableStatement ¶
type VariableStatement struct {
Var file.Idx
List []Expression
}
func (*VariableStatement) Idx0 ¶
func (self *VariableStatement) Idx0() file.Idx
func (*VariableStatement) Idx1 ¶
func (self *VariableStatement) Idx1() file.Idx
type WhileStatement ¶
type WhileStatement struct {
While file.Idx
Test Expression
Body Statement
}
func (*WhileStatement) Idx0 ¶
func (self *WhileStatement) Idx0() file.Idx
func (*WhileStatement) Idx1 ¶
func (self *WhileStatement) Idx1() file.Idx
type WithStatement ¶
type WithStatement struct {
With file.Idx
Object Expression
Body Statement
}
func (*WithStatement) Idx0 ¶
func (self *WithStatement) Idx0() file.Idx
func (*WithStatement) Idx1 ¶
func (self *WithStatement) Idx1() file.Idx