Documentation
¶
Index ¶
- type Typechecker
- func (*Typechecker) BaseVisitor()
- func (t *Typechecker) Evaluate(expr ast.Expression) ddptypes.Type
- func (t *Typechecker) EvaluateSilent(expr ast.Expression) ddptypes.Type
- func (t *Typechecker) TypecheckNode(node ast.Node)
- func (t *Typechecker) VisitAssignStmt(stmt *ast.AssignStmt)
- func (t *Typechecker) VisitBadDecl(decl *ast.BadDecl)
- func (t *Typechecker) VisitBadExpr(expr *ast.BadExpr)
- func (t *Typechecker) VisitBadStmt(stmt *ast.BadStmt)
- func (t *Typechecker) VisitBinaryExpr(expr *ast.BinaryExpr)
- func (t *Typechecker) VisitBlockStmt(stmt *ast.BlockStmt)
- func (t *Typechecker) VisitBoolLit(expr *ast.BoolLit)
- func (t *Typechecker) VisitCastExpr(expr *ast.CastExpr)
- func (t *Typechecker) VisitCharLit(expr *ast.CharLit)
- func (t *Typechecker) VisitDeclStmt(stmt *ast.DeclStmt)
- func (t *Typechecker) VisitExprStmt(stmt *ast.ExprStmt)
- func (t *Typechecker) VisitFloatLit(expr *ast.FloatLit)
- func (t *Typechecker) VisitForRangeStmt(stmt *ast.ForRangeStmt)
- func (t *Typechecker) VisitForStmt(stmt *ast.ForStmt)
- func (t *Typechecker) VisitFuncCall(callExpr *ast.FuncCall)
- func (t *Typechecker) VisitFuncDecl(decl *ast.FuncDecl)
- func (t *Typechecker) VisitGrouping(expr *ast.Grouping)
- func (t *Typechecker) VisitIdent(expr *ast.Ident)
- func (t *Typechecker) VisitIfStmt(stmt *ast.IfStmt)
- func (t *Typechecker) VisitImportStmt(stmt *ast.ImportStmt)
- func (t *Typechecker) VisitIndexing(expr *ast.Indexing)
- func (t *Typechecker) VisitIntLit(expr *ast.IntLit)
- func (t *Typechecker) VisitListLit(expr *ast.ListLit)
- func (t *Typechecker) VisitReturnStmt(stmt *ast.ReturnStmt)
- func (t *Typechecker) VisitStringLit(expr *ast.StringLit)
- func (t *Typechecker) VisitTernaryExpr(expr *ast.TernaryExpr)
- func (t *Typechecker) VisitUnaryExpr(expr *ast.UnaryExpr)
- func (t *Typechecker) VisitVarDecl(decl *ast.VarDecl)
- func (t *Typechecker) VisitWhileStmt(stmt *ast.WhileStmt)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Typechecker ¶
type Typechecker struct {
ErrorHandler ddperror.Handler // function to which errors are passed
CurrentTable *ast.SymbolTable // SymbolTable of the current scope (needed for name type-checking)
Module *ast.Module // the module that is being typechecked
// contains filtered or unexported fields
}
holds state to check if the types of an AST are valid
func (*Typechecker) BaseVisitor ¶
func (*Typechecker) BaseVisitor()
func (*Typechecker) Evaluate ¶
func (t *Typechecker) Evaluate(expr ast.Expression) ddptypes.Type
Evaluates the type of an expression
func (*Typechecker) EvaluateSilent ¶
func (t *Typechecker) EvaluateSilent(expr ast.Expression) ddptypes.Type
calls Evaluate but uses ddperror.EmptyHandler as error handler and doesn't change the Module.Ast.Faulty flag
func (*Typechecker) TypecheckNode ¶
func (t *Typechecker) TypecheckNode(node ast.Node)
typecheck a single node
func (*Typechecker) VisitAssignStmt ¶
func (t *Typechecker) VisitAssignStmt(stmt *ast.AssignStmt)
func (*Typechecker) VisitBadDecl ¶
func (t *Typechecker) VisitBadDecl(decl *ast.BadDecl)
func (*Typechecker) VisitBadExpr ¶
func (t *Typechecker) VisitBadExpr(expr *ast.BadExpr)
func (*Typechecker) VisitBadStmt ¶
func (t *Typechecker) VisitBadStmt(stmt *ast.BadStmt)
func (*Typechecker) VisitBinaryExpr ¶
func (t *Typechecker) VisitBinaryExpr(expr *ast.BinaryExpr)
func (*Typechecker) VisitBlockStmt ¶
func (t *Typechecker) VisitBlockStmt(stmt *ast.BlockStmt)
func (*Typechecker) VisitBoolLit ¶
func (t *Typechecker) VisitBoolLit(expr *ast.BoolLit)
func (*Typechecker) VisitCastExpr ¶
func (t *Typechecker) VisitCastExpr(expr *ast.CastExpr)
func (*Typechecker) VisitCharLit ¶
func (t *Typechecker) VisitCharLit(expr *ast.CharLit)
func (*Typechecker) VisitDeclStmt ¶
func (t *Typechecker) VisitDeclStmt(stmt *ast.DeclStmt)
func (*Typechecker) VisitExprStmt ¶
func (t *Typechecker) VisitExprStmt(stmt *ast.ExprStmt)
func (*Typechecker) VisitFloatLit ¶
func (t *Typechecker) VisitFloatLit(expr *ast.FloatLit)
func (*Typechecker) VisitForRangeStmt ¶
func (t *Typechecker) VisitForRangeStmt(stmt *ast.ForRangeStmt)
func (*Typechecker) VisitForStmt ¶
func (t *Typechecker) VisitForStmt(stmt *ast.ForStmt)
func (*Typechecker) VisitFuncCall ¶
func (t *Typechecker) VisitFuncCall(callExpr *ast.FuncCall)
func (*Typechecker) VisitFuncDecl ¶
func (t *Typechecker) VisitFuncDecl(decl *ast.FuncDecl)
func (*Typechecker) VisitGrouping ¶
func (t *Typechecker) VisitGrouping(expr *ast.Grouping)
func (*Typechecker) VisitIdent ¶
func (t *Typechecker) VisitIdent(expr *ast.Ident)
func (*Typechecker) VisitIfStmt ¶
func (t *Typechecker) VisitIfStmt(stmt *ast.IfStmt)
func (*Typechecker) VisitImportStmt ¶
func (t *Typechecker) VisitImportStmt(stmt *ast.ImportStmt)
func (*Typechecker) VisitIndexing ¶
func (t *Typechecker) VisitIndexing(expr *ast.Indexing)
func (*Typechecker) VisitIntLit ¶
func (t *Typechecker) VisitIntLit(expr *ast.IntLit)
func (*Typechecker) VisitListLit ¶
func (t *Typechecker) VisitListLit(expr *ast.ListLit)
func (*Typechecker) VisitReturnStmt ¶
func (t *Typechecker) VisitReturnStmt(stmt *ast.ReturnStmt)
func (*Typechecker) VisitStringLit ¶
func (t *Typechecker) VisitStringLit(expr *ast.StringLit)
func (*Typechecker) VisitTernaryExpr ¶
func (t *Typechecker) VisitTernaryExpr(expr *ast.TernaryExpr)
func (*Typechecker) VisitUnaryExpr ¶
func (t *Typechecker) VisitUnaryExpr(expr *ast.UnaryExpr)
func (*Typechecker) VisitVarDecl ¶
func (t *Typechecker) VisitVarDecl(decl *ast.VarDecl)
func (*Typechecker) VisitWhileStmt ¶
func (t *Typechecker) VisitWhileStmt(stmt *ast.WhileStmt)
Click to show internal directories.
Click to hide internal directories.