typechecker

package
v0.0.2-pre Latest Latest
Warning

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

Go to latest
Published: Sep 12, 2023 License: MIT Imports: 5 Imported by: 0

Documentation

Index

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 New

func New(Mod *ast.Module, errorHandler ddperror.Handler, file string) *Typechecker

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)

Jump to

Keyboard shortcuts

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