Documentation
¶
Index ¶
- func Analyze(node ast.Node, logger logger.Logger)
- type SemanticAnalysisVisitor
- func (visitor *SemanticAnalysisVisitor) TypeCheckError(location string, key interface{}, params ...typing.Typing)
- func (visitor *SemanticAnalysisVisitor) VisitBooleanNode(node *ast.BooleanNode)
- func (visitor *SemanticAnalysisVisitor) VisitBreakNode(node *ast.BreakNode)
- func (visitor *SemanticAnalysisVisitor) VisitCharacterNode(node *ast.CharacterNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterAssignmentNode(node *ast.AssignmentNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterBinaryOepratorNode(node *ast.BinaryOperatorNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterBlockNode(node *ast.BlockNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterForStmtNode(node *ast.ForStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterForStmtNodeBeforeBlockNode(node *ast.ForStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterIfStmtNode(node *ast.IfStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterIncDecNode(node *ast.IncDecNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterPrintNode(node *ast.PrintNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterProgramNode(node *ast.ProgramNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterSwitchStmtNode(node *ast.SwitchStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterTernaryOperatorNode(node *ast.TernaryOperatorNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterUnaryOperatorNode(node *ast.UnaryOperatorNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterVariableDeclarationNode(node *ast.VariableDeclarationNode)
- func (visitor *SemanticAnalysisVisitor) VisitEnterWhileStmtNode(node *ast.WhileStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitErrorNode(node *ast.ErrorNode)
- func (visitor *SemanticAnalysisVisitor) VisitFloatNode(node *ast.FloatNode)
- func (visitor *SemanticAnalysisVisitor) VisitIdentifierNode(node *ast.IdentifierNode)
- func (visitor *SemanticAnalysisVisitor) VisitIntegerNode(node *ast.IntegerNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveAssignmentNode(node *ast.AssignmentNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveBinaryOperatorNode(node *ast.BinaryOperatorNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveBlockNode(node *ast.BlockNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveForStmtNode(node *ast.ForStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveIfStmtNode(node *ast.IfStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveIncDecNode(node *ast.IncDecNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeavePrintNode(node *ast.PrintNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveProgramNode(node *ast.ProgramNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveSwitchStmtNode(node *ast.SwitchStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveTernaryOperatorNode(node *ast.TernaryOperatorNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveUnaryOperatorNode(node *ast.UnaryOperatorNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveVariableDeclarationNode(node *ast.VariableDeclarationNode)
- func (visitor *SemanticAnalysisVisitor) VisitLeaveWhileStmtNode(node *ast.WhileStmtNode)
- func (visitor *SemanticAnalysisVisitor) VisitStringNode(node *ast.StringNode)
- func (visitor *SemanticAnalysisVisitor) VisitTypeLiteralNode(node *ast.TypeLiteralNode)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type SemanticAnalysisVisitor ¶
type SemanticAnalysisVisitor struct {
// contains filtered or unexported fields
}
SemanticAnalysisVisitor is the general semantic analyser using visitor pattern
func (*SemanticAnalysisVisitor) TypeCheckError ¶
func (visitor *SemanticAnalysisVisitor) TypeCheckError(location string, key interface{}, params ...typing.Typing)
func (*SemanticAnalysisVisitor) VisitBooleanNode ¶
func (visitor *SemanticAnalysisVisitor) VisitBooleanNode(node *ast.BooleanNode)
VisitBooleanNode do something
func (*SemanticAnalysisVisitor) VisitBreakNode ¶
func (visitor *SemanticAnalysisVisitor) VisitBreakNode(node *ast.BreakNode)
func (*SemanticAnalysisVisitor) VisitCharacterNode ¶
func (visitor *SemanticAnalysisVisitor) VisitCharacterNode(node *ast.CharacterNode)
VisitCharacterNode do something
func (*SemanticAnalysisVisitor) VisitEnterAssignmentNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterAssignmentNode(node *ast.AssignmentNode)
VisitEnterAssignmentNode do something
func (*SemanticAnalysisVisitor) VisitEnterBinaryOepratorNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterBinaryOepratorNode(node *ast.BinaryOperatorNode)
VisitEnterBinaryOepratorNode do something
func (*SemanticAnalysisVisitor) VisitEnterBlockNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterBlockNode(node *ast.BlockNode)
func (*SemanticAnalysisVisitor) VisitEnterForStmtNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterForStmtNode(node *ast.ForStmtNode)
func (*SemanticAnalysisVisitor) VisitEnterForStmtNodeBeforeBlockNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterForStmtNodeBeforeBlockNode(node *ast.ForStmtNode)
func (*SemanticAnalysisVisitor) VisitEnterIfStmtNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterIfStmtNode(node *ast.IfStmtNode)
func (*SemanticAnalysisVisitor) VisitEnterIncDecNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterIncDecNode(node *ast.IncDecNode)
func (*SemanticAnalysisVisitor) VisitEnterPrintNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterPrintNode(node *ast.PrintNode)
VisitEnterPrintNode do something
func (*SemanticAnalysisVisitor) VisitEnterProgramNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterProgramNode(node *ast.ProgramNode)
VisitEnterProgramNode creates program scope
func (*SemanticAnalysisVisitor) VisitEnterSwitchStmtNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterSwitchStmtNode(node *ast.SwitchStmtNode)
func (*SemanticAnalysisVisitor) VisitEnterTernaryOperatorNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterTernaryOperatorNode(node *ast.TernaryOperatorNode)
VisitEnterTernaryOperatorNode do something
func (*SemanticAnalysisVisitor) VisitEnterUnaryOperatorNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterUnaryOperatorNode(node *ast.UnaryOperatorNode)
VisitEnterUnaryOperatorNode do something
func (*SemanticAnalysisVisitor) VisitEnterVariableDeclarationNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterVariableDeclarationNode(node *ast.VariableDeclarationNode)
VisitEnterVariableDeclarationNode do something
func (*SemanticAnalysisVisitor) VisitEnterWhileStmtNode ¶
func (visitor *SemanticAnalysisVisitor) VisitEnterWhileStmtNode(node *ast.WhileStmtNode)
func (*SemanticAnalysisVisitor) VisitErrorNode ¶
func (visitor *SemanticAnalysisVisitor) VisitErrorNode(node *ast.ErrorNode)
VisitErrorNode do something
func (*SemanticAnalysisVisitor) VisitFloatNode ¶
func (visitor *SemanticAnalysisVisitor) VisitFloatNode(node *ast.FloatNode)
VisitFloatNode do something
func (*SemanticAnalysisVisitor) VisitIdentifierNode ¶
func (visitor *SemanticAnalysisVisitor) VisitIdentifierNode(node *ast.IdentifierNode)
VisitIdentifierNode do something
func (*SemanticAnalysisVisitor) VisitIntegerNode ¶
func (visitor *SemanticAnalysisVisitor) VisitIntegerNode(node *ast.IntegerNode)
VisitIntegerNode do something
func (*SemanticAnalysisVisitor) VisitLeaveAssignmentNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveAssignmentNode(node *ast.AssignmentNode)
VisitLeaveAssignmentNode do something
func (*SemanticAnalysisVisitor) VisitLeaveBinaryOperatorNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveBinaryOperatorNode(node *ast.BinaryOperatorNode)
VisitLeaveBinaryOperatorNode do something
func (*SemanticAnalysisVisitor) VisitLeaveBlockNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveBlockNode(node *ast.BlockNode)
func (*SemanticAnalysisVisitor) VisitLeaveForStmtNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveForStmtNode(node *ast.ForStmtNode)
func (*SemanticAnalysisVisitor) VisitLeaveIfStmtNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveIfStmtNode(node *ast.IfStmtNode)
func (*SemanticAnalysisVisitor) VisitLeaveIncDecNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveIncDecNode(node *ast.IncDecNode)
func (*SemanticAnalysisVisitor) VisitLeavePrintNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeavePrintNode(node *ast.PrintNode)
VisitLeavePrintNode do something
func (*SemanticAnalysisVisitor) VisitLeaveProgramNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveProgramNode(node *ast.ProgramNode)
VisitLeaveProgramNode closes program scope
func (*SemanticAnalysisVisitor) VisitLeaveSwitchStmtNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveSwitchStmtNode(node *ast.SwitchStmtNode)
func (*SemanticAnalysisVisitor) VisitLeaveTernaryOperatorNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveTernaryOperatorNode(node *ast.TernaryOperatorNode)
VisitLeaveTernaryOperatorNode do something
func (*SemanticAnalysisVisitor) VisitLeaveUnaryOperatorNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveUnaryOperatorNode(node *ast.UnaryOperatorNode)
VisitLeaveUnaryOperatorNode do something
func (*SemanticAnalysisVisitor) VisitLeaveVariableDeclarationNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveVariableDeclarationNode(node *ast.VariableDeclarationNode)
VisitLeaveVariableDeclarationNode do something
func (*SemanticAnalysisVisitor) VisitLeaveWhileStmtNode ¶
func (visitor *SemanticAnalysisVisitor) VisitLeaveWhileStmtNode(node *ast.WhileStmtNode)
func (*SemanticAnalysisVisitor) VisitStringNode ¶
func (visitor *SemanticAnalysisVisitor) VisitStringNode(node *ast.StringNode)
VisitStringNode do something
func (*SemanticAnalysisVisitor) VisitTypeLiteralNode ¶
func (visitor *SemanticAnalysisVisitor) VisitTypeLiteralNode(node *ast.TypeLiteralNode)
VisitTypeLiteralNode do something