ast

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Nov 22, 2025 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Walk

func Walk(node Node, f WalkFn)

Types

type ArrayAccess

type ArrayAccess struct {
	Token token.Token // The '${' token
	Left  Expression
	Index Expression
}

func (*ArrayAccess) String

func (aa *ArrayAccess) String() string

func (*ArrayAccess) TokenLiteral

func (aa *ArrayAccess) TokenLiteral() string

func (*ArrayAccess) TokenLiteralNode added in v0.0.4

func (n *ArrayAccess) TokenLiteralNode() token.Token

func (*ArrayAccess) Type added in v0.0.4

func (aa *ArrayAccess) Type() NodeType

type BlockStatement

type BlockStatement struct {
	Token      token.Token // the { token or then token
	Statements []Statement
}

func (*BlockStatement) String

func (bs *BlockStatement) String() string

func (*BlockStatement) TokenLiteral

func (bs *BlockStatement) TokenLiteral() string

func (*BlockStatement) TokenLiteralNode added in v0.0.4

func (n *BlockStatement) TokenLiteralNode() token.Token

func (*BlockStatement) Type added in v0.0.4

func (bs *BlockStatement) Type() NodeType

type Boolean

type Boolean struct {
	Token token.Token // the token.TRUE or token.FALSE token
	Value bool
}

func (*Boolean) String

func (b *Boolean) String() string

func (*Boolean) TokenLiteral

func (b *Boolean) TokenLiteral() string

func (*Boolean) TokenLiteralNode added in v0.0.4

func (n *Boolean) TokenLiteralNode() token.Token

func (*Boolean) Type added in v0.0.4

func (b *Boolean) Type() NodeType

type BracketExpression

type BracketExpression struct {
	Token       token.Token // The '[' token
	Expressions []Expression
}

func (*BracketExpression) String

func (be *BracketExpression) String() string

func (*BracketExpression) TokenLiteral

func (be *BracketExpression) TokenLiteral() string

func (*BracketExpression) TokenLiteralNode added in v0.0.4

func (n *BracketExpression) TokenLiteralNode() token.Token

func (*BracketExpression) Type added in v0.0.4

func (be *BracketExpression) Type() NodeType

type CallExpression

type CallExpression struct {
	Token     token.Token // The '(' token
	Function  Expression  // Identifier or FunctionLiteral
	Arguments []Expression
}

func (*CallExpression) String

func (ce *CallExpression) String() string

func (*CallExpression) TokenLiteral

func (ce *CallExpression) TokenLiteral() string

func (*CallExpression) TokenLiteralNode added in v0.0.4

func (n *CallExpression) TokenLiteralNode() token.Token

func (*CallExpression) Type added in v0.0.4

func (ce *CallExpression) Type() NodeType

type CaseClause added in v0.0.4

type CaseClause struct {
	Token    token.Token // The first token of pattern
	Patterns []Expression
	Body     *BlockStatement
}

func (*CaseClause) String added in v0.0.4

func (cc *CaseClause) String() string

func (*CaseClause) TokenLiteralNode added in v0.0.4

func (n *CaseClause) TokenLiteralNode() token.Token

type CaseStatement added in v0.0.4

type CaseStatement struct {
	Token   token.Token // The 'case' token
	Value   Expression
	Clauses []*CaseClause
}

func (*CaseStatement) String added in v0.0.4

func (cs *CaseStatement) String() string

func (*CaseStatement) TokenLiteral added in v0.0.4

func (cs *CaseStatement) TokenLiteral() string

func (*CaseStatement) TokenLiteralNode added in v0.0.4

func (n *CaseStatement) TokenLiteralNode() token.Token

func (*CaseStatement) Type added in v0.0.4

func (cs *CaseStatement) Type() NodeType

type CommandSubstitution

type CommandSubstitution struct {
	Token   token.Token // The ` or $() token
	Command Expression
}

func (*CommandSubstitution) String

func (cs *CommandSubstitution) String() string

func (*CommandSubstitution) TokenLiteral

func (cs *CommandSubstitution) TokenLiteral() string

func (*CommandSubstitution) TokenLiteralNode added in v0.0.4

func (n *CommandSubstitution) TokenLiteralNode() token.Token

func (*CommandSubstitution) Type added in v0.0.4

func (cs *CommandSubstitution) Type() NodeType

type ConcatenatedExpression added in v0.0.4

type ConcatenatedExpression struct {
	Token token.Token
	Parts []Expression
}

func (*ConcatenatedExpression) String added in v0.0.4

func (ce *ConcatenatedExpression) String() string

func (*ConcatenatedExpression) TokenLiteral added in v0.0.4

func (ce *ConcatenatedExpression) TokenLiteral() string

func (*ConcatenatedExpression) TokenLiteralNode added in v0.0.4

func (n *ConcatenatedExpression) TokenLiteralNode() token.Token

func (*ConcatenatedExpression) Type added in v0.0.4

func (ce *ConcatenatedExpression) Type() NodeType

type DollarParenExpression

type DollarParenExpression struct {
	Token   token.Token // The '$(' token
	Command Expression
}

func (*DollarParenExpression) String

func (dpe *DollarParenExpression) String() string

func (*DollarParenExpression) TokenLiteral

func (dpe *DollarParenExpression) TokenLiteral() string

func (*DollarParenExpression) TokenLiteralNode added in v0.0.4

func (n *DollarParenExpression) TokenLiteralNode() token.Token

func (*DollarParenExpression) Type added in v0.0.4

func (dpe *DollarParenExpression) Type() NodeType

type DoubleBracketExpression

type DoubleBracketExpression struct {
	Token       token.Token // The '[[' token
	Expressions []Expression
}

func (*DoubleBracketExpression) String

func (dbe *DoubleBracketExpression) String() string

func (*DoubleBracketExpression) TokenLiteral

func (dbe *DoubleBracketExpression) TokenLiteral() string

func (*DoubleBracketExpression) TokenLiteralNode added in v0.0.4

func (n *DoubleBracketExpression) TokenLiteralNode() token.Token

func (*DoubleBracketExpression) Type added in v0.0.4

func (dbe *DoubleBracketExpression) Type() NodeType

type Expression

type Expression interface {
	Node
	// contains filtered or unexported methods
}

type ExpressionStatement

type ExpressionStatement struct {
	Token      token.Token // the first token of the expression
	Expression Expression
}

func (*ExpressionStatement) String

func (es *ExpressionStatement) String() string

func (*ExpressionStatement) TokenLiteral

func (es *ExpressionStatement) TokenLiteral() string

func (*ExpressionStatement) TokenLiteralNode added in v0.0.4

func (n *ExpressionStatement) TokenLiteralNode() token.Token

func (*ExpressionStatement) Type added in v0.0.4

func (es *ExpressionStatement) Type() NodeType

type ForLoopStatement

type ForLoopStatement struct {
	Token     token.Token  // The 'for' token
	Init      Expression   // Variable name (for-each) or Init expr (arithmetic)
	Condition Expression   // Arithmetic condition
	Post      Expression   // Arithmetic post
	Items     []Expression // Items to iterate over (for-each)
	Body      *BlockStatement
}

func (*ForLoopStatement) String

func (fls *ForLoopStatement) String() string

func (*ForLoopStatement) TokenLiteral

func (fls *ForLoopStatement) TokenLiteral() string

func (*ForLoopStatement) TokenLiteralNode added in v0.0.4

func (n *ForLoopStatement) TokenLiteralNode() token.Token

func (*ForLoopStatement) Type added in v0.0.4

func (fls *ForLoopStatement) Type() NodeType

type FunctionDefinition added in v0.0.4

type FunctionDefinition struct {
	Token token.Token // The name token
	Name  *Identifier
	Body  Statement // The function body (usually BlockStatement)
}

func (*FunctionDefinition) String added in v0.0.4

func (fd *FunctionDefinition) String() string

func (*FunctionDefinition) TokenLiteral added in v0.0.4

func (fd *FunctionDefinition) TokenLiteral() string

func (*FunctionDefinition) TokenLiteralNode added in v0.0.4

func (n *FunctionDefinition) TokenLiteralNode() token.Token

func (*FunctionDefinition) Type added in v0.0.4

func (fd *FunctionDefinition) Type() NodeType

type FunctionLiteral

type FunctionLiteral struct {
	Token      token.Token // The 'fn' token
	Parameters []*Identifier
	Body       *BlockStatement
}

func (*FunctionLiteral) String

func (fl *FunctionLiteral) String() string

func (*FunctionLiteral) TokenLiteral

func (fl *FunctionLiteral) TokenLiteral() string

func (*FunctionLiteral) TokenLiteralNode added in v0.0.4

func (n *FunctionLiteral) TokenLiteralNode() token.Token

func (*FunctionLiteral) Type added in v0.0.4

func (fl *FunctionLiteral) Type() NodeType

type GroupedExpression added in v0.0.4

type GroupedExpression struct {
	Token token.Token // The '(' token
	Exp   Expression
}

func (*GroupedExpression) String added in v0.0.4

func (ge *GroupedExpression) String() string

func (*GroupedExpression) TokenLiteral added in v0.0.4

func (ge *GroupedExpression) TokenLiteral() string

func (*GroupedExpression) TokenLiteralNode added in v0.0.4

func (ge *GroupedExpression) TokenLiteralNode() token.Token

func (*GroupedExpression) Type added in v0.0.4

func (ge *GroupedExpression) Type() NodeType

type Identifier

type Identifier struct {
	Token token.Token // the token.IDENT token
	Value string
}

func (*Identifier) String

func (i *Identifier) String() string

func (*Identifier) TokenLiteral

func (i *Identifier) TokenLiteral() string

func (*Identifier) TokenLiteralNode added in v0.0.4

func (n *Identifier) TokenLiteralNode() token.Token

func (*Identifier) Type added in v0.0.4

func (i *Identifier) Type() NodeType

type IfStatement

type IfStatement struct {
	Token       token.Token // The 'if' token
	Condition   *BlockStatement
	Consequence *BlockStatement
	Alternative *BlockStatement
}

func (*IfStatement) String

func (is *IfStatement) String() string

func (*IfStatement) TokenLiteral

func (is *IfStatement) TokenLiteral() string

func (*IfStatement) TokenLiteralNode added in v0.0.4

func (n *IfStatement) TokenLiteralNode() token.Token

func (*IfStatement) Type added in v0.0.4

func (is *IfStatement) Type() NodeType

type IndexExpression added in v0.0.4

type IndexExpression struct {
	Token token.Token // The [ token
	Left  Expression
	Index Expression
}

func (*IndexExpression) String added in v0.0.4

func (ie *IndexExpression) String() string

func (*IndexExpression) TokenLiteral added in v0.0.4

func (ie *IndexExpression) TokenLiteral() string

func (*IndexExpression) TokenLiteralNode added in v0.0.4

func (n *IndexExpression) TokenLiteralNode() token.Token

func (*IndexExpression) Type added in v0.0.4

func (ie *IndexExpression) Type() NodeType

type InfixExpression

type InfixExpression struct {
	Token    token.Token // The operator token, e.g. +
	Left     Expression
	Operator string
	Right    Expression
}

func (*InfixExpression) String

func (ie *InfixExpression) String() string

func (*InfixExpression) TokenLiteral

func (ie *InfixExpression) TokenLiteral() string

func (*InfixExpression) TokenLiteralNode added in v0.0.4

func (n *InfixExpression) TokenLiteralNode() token.Token

func (*InfixExpression) Type added in v0.0.4

func (ie *InfixExpression) Type() NodeType

type IntegerLiteral

type IntegerLiteral struct {
	Token token.Token // the token.INT token
	Value int64
}

func (*IntegerLiteral) String

func (il *IntegerLiteral) String() string

func (*IntegerLiteral) TokenLiteral

func (il *IntegerLiteral) TokenLiteral() string

func (*IntegerLiteral) TokenLiteralNode added in v0.0.4

func (n *IntegerLiteral) TokenLiteralNode() token.Token

func (*IntegerLiteral) Type added in v0.0.4

func (il *IntegerLiteral) Type() NodeType

type InvalidArrayAccess

type InvalidArrayAccess struct {
	Token token.Token // The '$' token
	Left  Expression
	Index Expression
}

func (*InvalidArrayAccess) String

func (iaa *InvalidArrayAccess) String() string

func (*InvalidArrayAccess) TokenLiteral

func (iaa *InvalidArrayAccess) TokenLiteral() string

func (*InvalidArrayAccess) TokenLiteralNode added in v0.0.4

func (n *InvalidArrayAccess) TokenLiteralNode() token.Token

func (*InvalidArrayAccess) Type added in v0.0.4

func (iaa *InvalidArrayAccess) Type() NodeType

type LetStatement

type LetStatement struct {
	Token token.Token // the token.LET token
	Name  *Identifier
	Value Expression
}

func (*LetStatement) String

func (ls *LetStatement) String() string

func (*LetStatement) TokenLiteral

func (ls *LetStatement) TokenLiteral() string

func (*LetStatement) TokenLiteralNode added in v0.0.4

func (n *LetStatement) TokenLiteralNode() token.Token

func (*LetStatement) Type added in v0.0.4

func (ls *LetStatement) Type() NodeType

type Node

type Node interface {
	TokenLiteral() string
	String() string
	Type() NodeType
	TokenLiteralNode() token.Token
}

type NodeType added in v0.0.4

type NodeType int
const (
	ProgramNode NodeType = iota
	LetStatementNode
	ReturnStatementNode
	ExpressionStatementNode
	IdentifierNode
	IntegerLiteralNode
	BooleanNode
	PrefixExpressionNode
	PostfixExpressionNode
	InfixExpressionNode
	BlockStatementNode
	IfStatementNode
	ForLoopStatementNode
	WhileLoopStatementNode
	FunctionLiteralNode
	CallExpressionNode
	StringLiteralNode
	BracketExpressionNode
	DoubleBracketExpressionNode
	ArrayAccessNode
	InvalidArrayAccessNode
	CommandSubstitutionNode
	ShebangNode
	DollarParenExpressionNode
	SimpleCommandNode
	IndexExpressionNode
	ConcatenatedExpressionNode
	CaseStatementNode
	RedirectionNode
	FunctionDefinitionNode
	GroupedExpressionNode
)

type PostfixExpression

type PostfixExpression struct {
	Token    token.Token // The operator token, e.g. ++
	Left     Expression
	Operator string
}

func (*PostfixExpression) String

func (pe *PostfixExpression) String() string

func (*PostfixExpression) TokenLiteral

func (pe *PostfixExpression) TokenLiteral() string

func (*PostfixExpression) TokenLiteralNode added in v0.0.4

func (n *PostfixExpression) TokenLiteralNode() token.Token

func (*PostfixExpression) Type added in v0.0.4

func (pe *PostfixExpression) Type() NodeType

type PrefixExpression

type PrefixExpression struct {
	Token    token.Token // The operator token, e.g. !
	Operator string
	Right    Expression
}

func (*PrefixExpression) String

func (pe *PrefixExpression) String() string

func (*PrefixExpression) TokenLiteral

func (pe *PrefixExpression) TokenLiteral() string

func (*PrefixExpression) TokenLiteralNode added in v0.0.4

func (n *PrefixExpression) TokenLiteralNode() token.Token

func (*PrefixExpression) Type added in v0.0.4

func (pe *PrefixExpression) Type() NodeType

type Program

type Program struct {
	Statements []Statement
}

func (*Program) String

func (p *Program) String() string

func (*Program) TokenLiteral

func (p *Program) TokenLiteral() string

func (*Program) TokenLiteralNode added in v0.0.4

func (p *Program) TokenLiteralNode() token.Token

func (*Program) Type added in v0.0.4

func (p *Program) Type() NodeType

type Redirection added in v0.0.4

type Redirection struct {
	Token    token.Token
	Left     Expression
	Operator string
	Right    Expression
}

func (*Redirection) String added in v0.0.4

func (r *Redirection) String() string

func (*Redirection) TokenLiteral added in v0.0.4

func (r *Redirection) TokenLiteral() string

func (*Redirection) TokenLiteralNode added in v0.0.4

func (n *Redirection) TokenLiteralNode() token.Token

func (*Redirection) Type added in v0.0.4

func (r *Redirection) Type() NodeType

type ReturnStatement

type ReturnStatement struct {
	Token       token.Token // the token.RETURN token
	ReturnValue Expression
}

func (*ReturnStatement) String

func (rs *ReturnStatement) String() string

func (*ReturnStatement) TokenLiteral

func (rs *ReturnStatement) TokenLiteral() string

func (*ReturnStatement) TokenLiteralNode added in v0.0.4

func (n *ReturnStatement) TokenLiteralNode() token.Token

func (*ReturnStatement) Type added in v0.0.4

func (rs *ReturnStatement) Type() NodeType

type Shebang

type Shebang struct {
	Token token.Token // The #! token
	Path  string
}

func (*Shebang) String

func (s *Shebang) String() string

func (*Shebang) TokenLiteral

func (s *Shebang) TokenLiteral() string

func (*Shebang) TokenLiteralNode added in v0.0.4

func (n *Shebang) TokenLiteralNode() token.Token

func (*Shebang) Type added in v0.0.4

func (s *Shebang) Type() NodeType

type SimpleCommand

type SimpleCommand struct {
	Token     token.Token // The first token of the command
	Name      Expression
	Arguments []Expression
}

func (*SimpleCommand) String

func (sc *SimpleCommand) String() string

func (*SimpleCommand) TokenLiteral

func (sc *SimpleCommand) TokenLiteral() string

func (*SimpleCommand) TokenLiteralNode added in v0.0.4

func (n *SimpleCommand) TokenLiteralNode() token.Token

func (*SimpleCommand) Type added in v0.0.4

func (sc *SimpleCommand) Type() NodeType

type Statement

type Statement interface {
	Node
	// contains filtered or unexported methods
}

type StringLiteral

type StringLiteral struct {
	Token token.Token
	Value string
}

func (*StringLiteral) String

func (sl *StringLiteral) String() string

func (*StringLiteral) TokenLiteral

func (sl *StringLiteral) TokenLiteral() string

func (*StringLiteral) TokenLiteralNode added in v0.0.4

func (n *StringLiteral) TokenLiteralNode() token.Token

func (*StringLiteral) Type added in v0.0.4

func (sl *StringLiteral) Type() NodeType

type WalkFn

type WalkFn func(node Node) bool

type WhileLoopStatement added in v0.0.4

type WhileLoopStatement struct {
	Token     token.Token // The 'while' token
	Condition *BlockStatement
	Body      *BlockStatement
}

func (*WhileLoopStatement) String added in v0.0.4

func (wls *WhileLoopStatement) String() string

func (*WhileLoopStatement) TokenLiteral added in v0.0.4

func (wls *WhileLoopStatement) TokenLiteral() string

func (*WhileLoopStatement) TokenLiteralNode added in v0.0.4

func (n *WhileLoopStatement) TokenLiteralNode() token.Token

func (*WhileLoopStatement) Type added in v0.0.4

func (wls *WhileLoopStatement) Type() NodeType

Jump to

Keyboard shortcuts

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