bind

package
v0.0.0-...-cb985d4 Latest Latest
Warning

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

Go to latest
Published: Nov 16, 2023 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ALlPathReturn

func ALlPathReturn(body *BoundBlockStatements) bool

func NodeText

func NodeText(node BoundNode) string

func PrintBoundFunctions

func PrintBoundFunctions(w io.Writer, funcs map[*symbol.FunctionSymbol]*BoundBlockStatements) error

func PrintBoundProgram

func PrintBoundProgram(w io.Writer, funcs map[*symbol.FunctionSymbol]*BoundBlockStatements, statement BoundNode) error

func PrintBoundTree

func PrintBoundTree(w io.Writer, node BoundNode) error

func WriteAssignmentExpression

func WriteAssignmentExpression(w write.WriteIndent, node *BoundAssignmentExpression)

func WriteBinaryExpression

func WriteBinaryExpression(w write.WriteIndent, node *BoundBinaryExpression)

func WriteBlockStatement

func WriteBlockStatement(w write.WriteIndent, node *BoundBlockStatements)

func WriteCallExpression

func WriteCallExpression(w write.WriteIndent, node *BoundCallExpression)

func WriteConditionalGotoStatement

func WriteConditionalGotoStatement(w write.WriteIndent, node *ConditionalGotoStatement)

func WriteErrorExpression

func WriteErrorExpression(w write.WriteIndent, node *BoundErrorExpression)

func WriteExpressionStatement

func WriteExpressionStatement(w write.WriteIndent, node *BoundExpressStatements)

func WriteGotoStatement

func WriteGotoStatement(w write.WriteIndent, node *GotoStatement)

func WriteLabelStatement

func WriteLabelStatement(w write.WriteIndent, node *LabelStatement)

func WriteLiteralExpression

func WriteLiteralExpression(w write.WriteIndent, node *BoundLiteralExpression)

func WriteNestedExpression

func WriteNestedExpression(w write.WriteIndent, parentPrecedence int, expression BoundExpression)

func WriteNestedExpressionSon

func WriteNestedExpressionSon(w write.WriteIndent, parentPrecedence int, currentPrecedence int, expression BoundExpression)

func WriteReturnStatement

func WriteReturnStatement(w write.WriteIndent, node *BoundReturnStatements)

func WriteTo

func WriteTo(w io.Writer, node BoundNode)

func WriteUnaryExpression

func WriteUnaryExpression(w write.WriteIndent, node *BoundUnaryExpression)

func WriteVariableDeclaration

func WriteVariableDeclaration(w write.WriteIndent, node *BoundVariableDeclaration)

func WriteVariableExpression

func WriteVariableExpression(w write.WriteIndent, node *BoundVariableExpression)

Types

type BasicBlock

type BasicBlock struct {
	IsStart    bool
	IsEnd      bool
	Statements []Boundstatement
	Incoming   *DataMaps[BasicBlockBranch]
	Outgoing   *DataMaps[BasicBlockBranch]
}

func BuildBasicBlock

func BuildBasicBlock(block *BoundBlockStatements) []*BasicBlock

func NewBasicBlock

func NewBasicBlock(start bool, end bool) *BasicBlock

func (*BasicBlock) String

func (b *BasicBlock) String() string

type BasicBlockBranch

type BasicBlockBranch struct {
	From      *BasicBlock
	To        *BasicBlock
	Condition BoundExpression
}

func (*BasicBlockBranch) String

func (b *BasicBlockBranch) String() string

type Binder

type Binder struct {
	Diagnostics *diagnostic.DiagnosticBag
	// contains filtered or unexported fields
}

func NewBinder

func NewBinder(parent *BoundScope, function *symbol.FunctionSymbol) *Binder

func (*Binder) BindAssignmentExpress

func (b *Binder) BindAssignmentExpress(express *syntax.AssignmentExpress) BoundExpression

func (*Binder) BindBinaryOperator

func (b *Binder) BindBinaryOperator(express *syntax.BinaryExpress) BoundExpression

func (*Binder) BindBlockStatement

func (b *Binder) BindBlockStatement(s *syntax.BlockStatement) Boundstatement

func (*Binder) BindCallExpression

func (b *Binder) BindCallExpression(express *syntax.CallExpress) BoundExpression

func (*Binder) BindExpression

func (b *Binder) BindExpression(express syntax.Express, canBeUnit bool) BoundExpression

func (*Binder) BindExpressionAndCheckType

func (b *Binder) BindExpressionAndCheckType(express syntax.Express, targetType *symbol.TypeSymbol) BoundExpression

func (*Binder) BindExpressionInternal

func (b *Binder) BindExpressionInternal(express syntax.Express) BoundExpression

func (*Binder) BindExpressionStatement

func (b *Binder) BindExpressionStatement(es *syntax.ExpressStatement) Boundstatement

func (*Binder) BindForStatement

func (b *Binder) BindForStatement(s *syntax.ForStatement) Boundstatement

func (*Binder) BindFunctionDeclaration

func (b *Binder) BindFunctionDeclaration(s *syntax.FunctionDeclarationSyntax)

func (*Binder) BindIfStatement

func (b *Binder) BindIfStatement(s *syntax.IfStatement) Boundstatement

func (*Binder) BindLiteralExpress

func (b *Binder) BindLiteralExpress(express *syntax.LiteralExpress) BoundExpression

func (*Binder) BindLoopBody

func (b *Binder) BindLoopBody(body syntax.Statement) (res Boundstatement, breakLabel *BoundLabel, continueLabel *BoundLabel)

func (*Binder) BindNameExpress

func (b *Binder) BindNameExpress(express *syntax.NameExpress) BoundExpression

func (*Binder) BindReturnStatement

func (b *Binder) BindReturnStatement(s *syntax.ReturnStatement) Boundstatement

func (*Binder) BindStatement

func (b *Binder) BindStatement(s syntax.Statement) Boundstatement

func (*Binder) BindTypeClause

func (b *Binder) BindTypeClause(s *syntax.TypeClauseSyntax) *symbol.TypeSymbol

func (*Binder) BindUnaryExpress

func (b *Binder) BindUnaryExpress(express *syntax.UnaryExpress) BoundExpression

func (*Binder) BindUnitExpression

func (b *Binder) BindUnitExpression(express *syntax.UnitExpress) BoundExpression

func (*Binder) BindVariableDeclaration

func (b *Binder) BindVariableDeclaration(s *syntax.VariableDeclarationSyntax) Boundstatement

func (*Binder) BindVariableSymbol

func (b *Binder) BindVariableSymbol(identifier syntax.SyntaxToken, isReadOnly bool, tp *symbol.TypeSymbol) symbol.VariableSymbol

func (*Binder) BindWhileStatement

func (b *Binder) BindWhileStatement(s *syntax.WhileStatement) Boundstatement

type BoundAssignmentExpression

type BoundAssignmentExpression struct {
	Variable symbol.VariableSymbol
	Express  BoundExpression
}

func NewBoundAssignmentExpression

func NewBoundAssignmentExpression(variable symbol.VariableSymbol, express BoundExpression) *BoundAssignmentExpression

func (*BoundAssignmentExpression) GetChildren

func (b *BoundAssignmentExpression) GetChildren() []BoundNode

func (*BoundAssignmentExpression) GetProperties

func (b *BoundAssignmentExpression) GetProperties() []fmt.Stringer

func (*BoundAssignmentExpression) Kind

func (*BoundAssignmentExpression) Type

type BoundBinaryExpression

type BoundBinaryExpression struct {
	Left  BoundExpression
	Op    *BoundBinaryOperator
	Right BoundExpression
}

func (*BoundBinaryExpression) GetChildren

func (b *BoundBinaryExpression) GetChildren() []BoundNode

func (*BoundBinaryExpression) GetProperties

func (b *BoundBinaryExpression) GetProperties() []fmt.Stringer

func (*BoundBinaryExpression) Kind

func (*BoundBinaryExpression) Type

type BoundBinaryOperator

type BoundBinaryOperator struct {
	SyntaxKind syntax.SyntaxKind
	Kind       BoundBinaryOperatorKind
	LeftType   *symbol.TypeSymbol
	RightType  *symbol.TypeSymbol
	Type       *symbol.TypeSymbol
}

func BindBoundBinaryOperator

func BindBoundBinaryOperator(syntaxKind syntax.SyntaxKind, leftType, rightType *symbol.TypeSymbol) *BoundBinaryOperator

func (*BoundBinaryOperator) String

func (b *BoundBinaryOperator) String() string

type BoundBinaryOperatorKind

type BoundBinaryOperatorKind int
const (
	BoundBinaryKindAddition BoundBinaryOperatorKind = iota
	BoundBinaryKindSubtraction
	BoundBinaryKindMultiplication
	BoundBinaryKindDivision
	BoundBinaryKindLogicalAnd
	BoundBinaryKindLogicalOr
	BoundBinaryKindBitwiseAnd
	BoundBinaryKindBitwiseOr
	BoundBinaryKindBitwiseXor
	BoundBinaryKindEquals
	BoundBinaryKindNotEquals
	BoundBinaryKindLess
	BoundBinaryKindLessEqual
	BoundBinaryKindGreat
	BoundBinaryKindGreatEqual
	BoundBinaryKindStringAdd
	BoundBinaryKindStringEqual
	BoundBinaryKindStringNotEqual
)

func (BoundBinaryOperatorKind) String

func (b BoundBinaryOperatorKind) String() string

type BoundBlockStatements

type BoundBlockStatements struct {
	Statement []Boundstatement
}

func NewBoundBlockStatement

func NewBoundBlockStatement(statements []Boundstatement) *BoundBlockStatements

func (*BoundBlockStatements) GetChildren

func (b *BoundBlockStatements) GetChildren() []BoundNode

func (*BoundBlockStatements) GetProperties

func (b *BoundBlockStatements) GetProperties() []fmt.Stringer

func (*BoundBlockStatements) Kind

func (*BoundBlockStatements) Type

type BoundCallExpression

type BoundCallExpression struct {
	Function  *symbol.FunctionSymbol
	Arguments []BoundExpression
}

func NewBoundcallExpression

func NewBoundcallExpression(function *symbol.FunctionSymbol, arguments []BoundExpression) *BoundCallExpression

func (*BoundCallExpression) GetChildren

func (b *BoundCallExpression) GetChildren() []BoundNode

func (*BoundCallExpression) GetProperties

func (b *BoundCallExpression) GetProperties() []fmt.Stringer

func (*BoundCallExpression) Kind

func (*BoundCallExpression) Type

type BoundErrorExpression

type BoundErrorExpression struct {
}

func NewBoundErrorExpression

func NewBoundErrorExpression() *BoundErrorExpression

func (*BoundErrorExpression) GetChildren

func (b *BoundErrorExpression) GetChildren() []BoundNode

func (*BoundErrorExpression) GetProperties

func (b *BoundErrorExpression) GetProperties() []fmt.Stringer

func (*BoundErrorExpression) Kind

func (*BoundErrorExpression) Type

type BoundExpressStatements

type BoundExpressStatements struct {
	Express BoundExpression
}

func NewBoundExpressStatements

func NewBoundExpressStatements(express BoundExpression) *BoundExpressStatements

func (*BoundExpressStatements) GetChildren

func (b *BoundExpressStatements) GetChildren() []BoundNode

func (*BoundExpressStatements) GetProperties

func (b *BoundExpressStatements) GetProperties() []fmt.Stringer

func (*BoundExpressStatements) Kind

func (*BoundExpressStatements) Type

type BoundExpression

type BoundExpression interface {
	BoundNode
}

type BoundForStatements

type BoundForStatements struct {
	BoundLoopStatements
	InitCondition            Boundstatement
	EndCheckConditionExpress BoundExpression //must be bool
	UpdateCondition          Boundstatement
	Body                     Boundstatement
}

func NewBoundForStatements

func NewBoundForStatements(initCondition Boundstatement, endCondition BoundExpression, updateCondition Boundstatement, body Boundstatement, breakLabel *BoundLabel, continueLabel *BoundLabel) *BoundForStatements

func (*BoundForStatements) GetChildren

func (b *BoundForStatements) GetChildren() []BoundNode

func (*BoundForStatements) GetProperties

func (b *BoundForStatements) GetProperties() []fmt.Stringer

func (*BoundForStatements) Kind

func (*BoundForStatements) Type

type BoundGlobalScope

type BoundGlobalScope struct {
	Previous   *BoundGlobalScope
	Diagnostic *diagnostic.DiagnosticBag
	Functions  []*symbol.FunctionSymbol
	Variables  []symbol.VariableSymbol
	Statements []Boundstatement
}

func BindGlobalScope

func BindGlobalScope(previous *BoundGlobalScope, s *syntax.CompliationUnit) *BoundGlobalScope

func NewBoundGlobalScope

func NewBoundGlobalScope(previous *BoundGlobalScope,
	diagnostic *diagnostic.DiagnosticBag,
	functions []*symbol.FunctionSymbol,
	variables []symbol.VariableSymbol,
	statements []Boundstatement) *BoundGlobalScope

type BoundIfStatements

type BoundIfStatements struct {
	Condition     BoundExpression
	ThenStatement Boundstatement
	ElseStatement Boundstatement
}

func NewBoundIfStatements

func NewBoundIfStatements(condition BoundExpression, thenStatement, elseStatement Boundstatement) *BoundIfStatements

func (*BoundIfStatements) GetChildren

func (b *BoundIfStatements) GetChildren() []BoundNode

func (*BoundIfStatements) GetProperties

func (b *BoundIfStatements) GetProperties() []fmt.Stringer

func (*BoundIfStatements) Kind

func (b *BoundIfStatements) Kind() BoundNodeKind

func (*BoundIfStatements) Type

func (b *BoundIfStatements) Type() *symbol.TypeSymbol

type BoundLabel

type BoundLabel struct {
	Name string
}

func NewBoundLabel

func NewBoundLabel(name string) *BoundLabel

func (*BoundLabel) String

func (l *BoundLabel) String() string

type BoundLiteralExpression

type BoundLiteralExpression struct {
	Value any
}

func NewBoundLiteralExpression

func NewBoundLiteralExpression(value any) *BoundLiteralExpression

func (*BoundLiteralExpression) GetChildren

func (b *BoundLiteralExpression) GetChildren() []BoundNode

func (*BoundLiteralExpression) GetProperties

func (b *BoundLiteralExpression) GetProperties() []fmt.Stringer

func (*BoundLiteralExpression) Kind

func (*BoundLiteralExpression) Type

type BoundLoopStatements

type BoundLoopStatements struct {
	BreakLabel    *BoundLabel
	ContinueLabel *BoundLabel
}

func NewBoundLoopStatements

func NewBoundLoopStatements(breakLabel *BoundLabel, continueLabel *BoundLabel) *BoundLoopStatements

type BoundNode

type BoundNode interface {
	Type() *symbol.TypeSymbol
	Kind() BoundNodeKind
	NodePrint
}

type BoundNodeKind

type BoundNodeKind int
const (
	BoundNodeKindErrorExpress BoundNodeKind = iota
	BoundNodeKindLiteralExpress
	BoundNodeKindVariableExpress
	BoundNodeKindAssignmentExpress
	BoundNodeKindUnaryExpress
	BoundNodeKindBinaryExpress
	BoundNodeKindCallExpress
	BoundNodeKindUnitExpress

	BoundNodeKindBlockStatement
	BoundNodeKindVariableDeclaration
	BoundNodeKindIfStatement
	BoundNodeKindWhileStatement
	BoundNodeKindForStatement
	BoundNodeKindLabelStatement
	BoundNodeKindGotoStatement
	BoundNodeKindConditionalGotoStatement
	BoundNodeKindReturnStatement
	BoundNodeKindExpressionStatement
)

func (BoundNodeKind) String

func (b BoundNodeKind) String() string

type BoundReturnStatements

type BoundReturnStatements struct {
	Express BoundExpression
}

func NewBoundReturnStatements

func NewBoundReturnStatements(express BoundExpression) *BoundReturnStatements

func (*BoundReturnStatements) GetChildren

func (b *BoundReturnStatements) GetChildren() []BoundNode

func (*BoundReturnStatements) GetProperties

func (b *BoundReturnStatements) GetProperties() []fmt.Stringer

func (*BoundReturnStatements) Kind

func (*BoundReturnStatements) Type

type BoundScope

type BoundScope struct {
	Parent *BoundScope
	// contains filtered or unexported fields
}

func CreateParentScope

func CreateParentScope(previous *BoundGlobalScope) *BoundScope

func CreateRootScope

func CreateRootScope() *BoundScope

func NewBoundScope

func NewBoundScope(parent *BoundScope) *BoundScope

func (*BoundScope) GetDeclareFunctions

func (s *BoundScope) GetDeclareFunctions() []*symbol.FunctionSymbol

func (*BoundScope) GetDeclareVariables

func (s *BoundScope) GetDeclareVariables() []symbol.VariableSymbol

func (*BoundScope) TryDeclareFunction

func (s *BoundScope) TryDeclareFunction(function *symbol.FunctionSymbol) bool

func (*BoundScope) TryDeclareVariable

func (s *BoundScope) TryDeclareVariable(variable symbol.VariableSymbol) bool

func (*BoundScope) TryLookupFunction

func (s *BoundScope) TryLookupFunction(name string) (*symbol.FunctionSymbol, bool)

func (*BoundScope) TryLookupVariable

func (s *BoundScope) TryLookupVariable(name string) (symbol.VariableSymbol, bool)

type BoundUnaryExpression

type BoundUnaryExpression struct {
	Op      *BoundUnaryOperator
	Operand BoundExpression
}

func NewBoundUnaryExpression

func NewBoundUnaryExpression(op *BoundUnaryOperator, operand BoundExpression) *BoundUnaryExpression

func (*BoundUnaryExpression) GetChildren

func (b *BoundUnaryExpression) GetChildren() []BoundNode

func (*BoundUnaryExpression) GetProperties

func (b *BoundUnaryExpression) GetProperties() []fmt.Stringer

func (*BoundUnaryExpression) Kind

func (*BoundUnaryExpression) Type

type BoundUnaryOperator

type BoundUnaryOperator struct {
	Kind BoundUnaryOperatorKind
	// contains filtered or unexported fields
}

func BindBoundUnaryOperator

func BindBoundUnaryOperator(syntaxKind syntax.SyntaxKind, operandType *symbol.TypeSymbol) *BoundUnaryOperator

func (*BoundUnaryOperator) String

func (b *BoundUnaryOperator) String() string

type BoundUnaryOperatorKind

type BoundUnaryOperatorKind int
const (
	BoundUnaryOperatorKindIdentity BoundUnaryOperatorKind = iota
	BoundUnaryOperatorKindNegation
	BoundUnaryOperatorKindLogicalNegation
	BoundUnaryOperatorKindBitwiseOnesComplement
)

type BoundUnitExpression

type BoundUnitExpression struct {
	Unit *syntax.UnitExpress
}

func NewBoundUnitExpression

func NewBoundUnitExpression(unit *syntax.UnitExpress) *BoundUnitExpression

func (*BoundUnitExpression) GetChildren

func (b *BoundUnitExpression) GetChildren() []BoundNode

func (*BoundUnitExpression) GetProperties

func (b *BoundUnitExpression) GetProperties() []fmt.Stringer

func (*BoundUnitExpression) Kind

func (*BoundUnitExpression) Type

type BoundVariableDeclaration

type BoundVariableDeclaration struct {
	Variable    symbol.VariableSymbol
	Initializer BoundExpression
}

func NewBoundVariableDeclaration

func NewBoundVariableDeclaration(variable symbol.VariableSymbol, initializer BoundExpression) *BoundVariableDeclaration

func (*BoundVariableDeclaration) GetChildren

func (b *BoundVariableDeclaration) GetChildren() []BoundNode

func (*BoundVariableDeclaration) GetProperties

func (b *BoundVariableDeclaration) GetProperties() []fmt.Stringer

func (*BoundVariableDeclaration) Kind

func (*BoundVariableDeclaration) Type

type BoundVariableExpression

type BoundVariableExpression struct {
	Variable symbol.VariableSymbol
}

func NewBoundVariableExpression

func NewBoundVariableExpression(variable symbol.VariableSymbol) *BoundVariableExpression

func (*BoundVariableExpression) GetChildren

func (b *BoundVariableExpression) GetChildren() []BoundNode

func (*BoundVariableExpression) GetProperties

func (b *BoundVariableExpression) GetProperties() []fmt.Stringer

func (*BoundVariableExpression) Kind

func (*BoundVariableExpression) Type

type BoundWhileStatements

type BoundWhileStatements struct {
	BoundLoopStatements
	Condition BoundExpression
	Body      Boundstatement
}

func NewBoundWhileStatements

func NewBoundWhileStatements(condition BoundExpression, body Boundstatement, breakLabel *BoundLabel, continueLabel *BoundLabel) *BoundWhileStatements

func (*BoundWhileStatements) GetChildren

func (b *BoundWhileStatements) GetChildren() []BoundNode

func (*BoundWhileStatements) GetProperties

func (b *BoundWhileStatements) GetProperties() []fmt.Stringer

func (*BoundWhileStatements) Kind

func (*BoundWhileStatements) Type

type Boundstatement

type Boundstatement interface {
	BoundNode
}

func BindErrorStatement

func BindErrorStatement() Boundstatement

type ConditionalGotoStatement

type ConditionalGotoStatement struct {
	Label       *BoundLabel
	Condition   BoundExpression
	JumpIfFalse bool
}

func NewConditionalGotoSymbol

func NewConditionalGotoSymbol(label *BoundLabel, condition BoundExpression, jumpIfFalse bool) *ConditionalGotoStatement

func (*ConditionalGotoStatement) GetChildren

func (b *ConditionalGotoStatement) GetChildren() []BoundNode

func (*ConditionalGotoStatement) GetProperties

func (b *ConditionalGotoStatement) GetProperties() []fmt.Stringer

func (*ConditionalGotoStatement) Kind

func (*ConditionalGotoStatement) Type

type ControlFlowGraph

type ControlFlowGraph struct {
	Start    *BasicBlock
	End      *BasicBlock
	Blocks   *DataMaps[BasicBlock]
	Branches *DataMaps[BasicBlockBranch]
}

func CreateControlFlow

func CreateControlFlow(body *BoundBlockStatements) *ControlFlowGraph

func (*ControlFlowGraph) WriteTo

func (g *ControlFlowGraph) WriteTo(w *strings.Builder)

type DataMaps

type DataMaps[T any] struct {
	*list.List
	// contains filtered or unexported fields
}

func DataMapsFromSlice

func DataMapsFromSlice[T any](slices []*T) *DataMaps[T]

func NewDataMaps

func NewDataMaps[T any]() *DataMaps[T]

func (*DataMaps[T]) Add

func (b *DataMaps[T]) Add(block *T)

func (*DataMaps[T]) First

func (b *DataMaps[T]) First() *T

func (*DataMaps[T]) Iter

func (b *DataMaps[T]) Iter() *DataMapsIter[T]

func (*DataMaps[T]) Len

func (b *DataMaps[T]) Len() int

func (*DataMaps[T]) Next

func (b *DataMaps[T]) Next(block *T) *T

func (*DataMaps[T]) Remove

func (b *DataMaps[T]) Remove(block *T)

type DataMapsIter

type DataMapsIter[T any] struct {
	D *DataMaps[T]
	// contains filtered or unexported fields
}

func (*DataMapsIter[T]) HasNext

func (d *DataMapsIter[T]) HasNext() bool

func (*DataMapsIter[T]) Next

func (d *DataMapsIter[T]) Next() *T

type GotoStatement

type GotoStatement struct {
	Label *BoundLabel
}

func NewGotoSymbol

func NewGotoSymbol(label *BoundLabel) *GotoStatement

func (*GotoStatement) GetChildren

func (b *GotoStatement) GetChildren() []BoundNode

func (*GotoStatement) GetProperties

func (b *GotoStatement) GetProperties() []fmt.Stringer

func (*GotoStatement) Kind

func (b *GotoStatement) Kind() BoundNodeKind

func (*GotoStatement) Type

func (b *GotoStatement) Type() *symbol.TypeSymbol

type GraphBuilder

type GraphBuilder struct {
	// contains filtered or unexported fields
}

func NewGraphBuild

func NewGraphBuild() *GraphBuilder

func (*GraphBuilder) Build

func (g *GraphBuilder) Build(blocks *DataMaps[BasicBlock]) *ControlFlowGraph

func (*GraphBuilder) Connect

func (g *GraphBuilder) Connect(from, to *BasicBlock, condition BoundExpression)

func (*GraphBuilder) Negate

func (g *GraphBuilder) Negate(condition BoundExpression) BoundExpression

func (*GraphBuilder) RemoveBlock

func (g *GraphBuilder) RemoveBlock(blocks *DataMaps[BasicBlock], block *BasicBlock)

type LabelStatement

type LabelStatement struct {
	Label *BoundLabel
}

func NewLabelSymbol

func NewLabelSymbol(label *BoundLabel) *LabelStatement

func (*LabelStatement) GetChildren

func (b *LabelStatement) GetChildren() []BoundNode

func (*LabelStatement) GetProperties

func (b *LabelStatement) GetProperties() []fmt.Stringer

func (*LabelStatement) Kind

func (b *LabelStatement) Kind() BoundNodeKind

func (*LabelStatement) Type

func (b *LabelStatement) Type() *symbol.TypeSymbol

type NodePrint

type NodePrint interface {
	GetChildren() []BoundNode
	GetProperties() []fmt.Stringer
}

type Stringer

type Stringer string

func (Stringer) String

func (s Stringer) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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