interpreter

package
v0.0.0-...-2f1f9d4 Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const MAX_SCOPES = 255
View Source
const NilStatementErrorMessage = "can not evaluate a nil expression"

Variables

This section is empty.

Functions

This section is empty.

Types

type EarlyReturn

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

func (EarlyReturn) Error

func (e EarlyReturn) Error() string

type FunctionType

type FunctionType int
const (
	FT_NONE FunctionType = iota
	FT_FUNCTION
)

type Interpreter

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

func New

func New(log *zap.SugaredLogger) *Interpreter

func (*Interpreter) Evaluate

func (i *Interpreter) Evaluate(stmt parser.Node) (domain.Value, error)

func (*Interpreter) ExecuteBlock

func (i *Interpreter) ExecuteBlock(block *parser.Block, env *environment.Environment) error

ExecuteBlock takes a Block and an Environment, executing Block with specific Environment env

func (*Interpreter) GetEnvironment

func (i *Interpreter) GetEnvironment() *environment.Environment

func (*Interpreter) REPL

func (i *Interpreter) REPL() error

func (*Interpreter) Run

func (i *Interpreter) Run(program string) error

func (*Interpreter) VisitAssignment

func (i *Interpreter) VisitAssignment(a *parser.Assignment) error

func (*Interpreter) VisitBinary

func (i *Interpreter) VisitBinary(b *parser.Binary) error

func (*Interpreter) VisitBlock

func (i *Interpreter) VisitBlock(b *parser.Block) error

func (*Interpreter) VisitCallExpr

func (i *Interpreter) VisitCallExpr(f *parser.CallExpr) error

func (*Interpreter) VisitClassDeclaration

func (i *Interpreter) VisitClassDeclaration(c *parser.ClassDeclaration) error

func (*Interpreter) VisitFunctionDeclaration

func (i *Interpreter) VisitFunctionDeclaration(f *parser.FunctionDeclaration) error

func (*Interpreter) VisitGrouping

func (i *Interpreter) VisitGrouping(g *parser.Grouping) error

func (*Interpreter) VisitIfStmt

func (i *Interpreter) VisitIfStmt(ifStmt *parser.IfStmt) error

func (*Interpreter) VisitLiteral

func (i *Interpreter) VisitLiteral(l *parser.Literal) error

func (*Interpreter) VisitLogicalConjunction

func (i *Interpreter) VisitLogicalConjunction(c *parser.LogicalConjuction) error

func (*Interpreter) VisitPrintStmt

func (i *Interpreter) VisitPrintStmt(p *parser.PrintStmt) error

func (*Interpreter) VisitReturnStmt

func (i *Interpreter) VisitReturnStmt(r *parser.ReturnStmt) error

func (*Interpreter) VisitUnary

func (i *Interpreter) VisitUnary(u *parser.Unary) error

func (*Interpreter) VisitVarStmt

func (i *Interpreter) VisitVarStmt(v *parser.VarStmt) error

func (*Interpreter) VisitVariable

func (i *Interpreter) VisitVariable(v *parser.Variable) error

func (*Interpreter) VisitWhileStmt

func (i *Interpreter) VisitWhileStmt(w *parser.WhileStmt) error

type LoxFunction

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

func (LoxFunction) Arity

func (l LoxFunction) Arity() int

func (LoxFunction) Call

func (LoxFunction) String

func (l LoxFunction) String() string

type Resolver

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

func (*Resolver) VisitAssignment

func (r *Resolver) VisitAssignment(v *parser.Assignment) error

func (*Resolver) VisitBinary

func (r *Resolver) VisitBinary(b *parser.Binary) error

func (*Resolver) VisitBlock

func (r *Resolver) VisitBlock(b *parser.Block) error

func (*Resolver) VisitCallExpr

func (r *Resolver) VisitCallExpr(f *parser.CallExpr) error

func (*Resolver) VisitClassDeclaration

func (r *Resolver) VisitClassDeclaration(c *parser.ClassDeclaration) error

func (*Resolver) VisitFunctionDeclaration

func (r *Resolver) VisitFunctionDeclaration(f *parser.FunctionDeclaration) error

func (*Resolver) VisitGrouping

func (r *Resolver) VisitGrouping(g *parser.Grouping) error

func (*Resolver) VisitIfStmt

func (r *Resolver) VisitIfStmt(i *parser.IfStmt) error

func (*Resolver) VisitLiteral

func (r *Resolver) VisitLiteral(l *parser.Literal) error

func (*Resolver) VisitLogicalConjunction

func (r *Resolver) VisitLogicalConjunction(v *parser.LogicalConjuction) error

func (*Resolver) VisitPrintStmt

func (r *Resolver) VisitPrintStmt(p *parser.PrintStmt) error

func (*Resolver) VisitReturnStmt

func (r *Resolver) VisitReturnStmt(rs *parser.ReturnStmt) error

func (*Resolver) VisitUnary

func (r *Resolver) VisitUnary(u *parser.Unary) error

func (*Resolver) VisitVarStmt

func (r *Resolver) VisitVarStmt(v *parser.VarStmt) error

func (*Resolver) VisitVariable

func (r *Resolver) VisitVariable(v *parser.Variable) error

func (*Resolver) VisitWhileStmt

func (r *Resolver) VisitWhileStmt(w *parser.WhileStmt) error

type Scope

type Scope map[string]bool

Jump to

Keyboard shortcuts

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