Documentation
¶
Index ¶
- Constants
- type EarlyReturn
- type FunctionType
- type Interpreter
- func (i *Interpreter) Evaluate(stmt parser.Node) (domain.Value, error)
- func (i *Interpreter) ExecuteBlock(block *parser.Block, env *environment.Environment) error
- func (i *Interpreter) GetEnvironment() *environment.Environment
- func (i *Interpreter) REPL() error
- func (i *Interpreter) Run(program string) error
- func (i *Interpreter) VisitAssignment(a *parser.Assignment) error
- func (i *Interpreter) VisitBinary(b *parser.Binary) error
- func (i *Interpreter) VisitBlock(b *parser.Block) error
- func (i *Interpreter) VisitCallExpr(f *parser.CallExpr) error
- func (i *Interpreter) VisitClassDeclaration(c *parser.ClassDeclaration) error
- func (i *Interpreter) VisitFunctionDeclaration(f *parser.FunctionDeclaration) error
- func (i *Interpreter) VisitGrouping(g *parser.Grouping) error
- func (i *Interpreter) VisitIfStmt(ifStmt *parser.IfStmt) error
- func (i *Interpreter) VisitLiteral(l *parser.Literal) error
- func (i *Interpreter) VisitLogicalConjunction(c *parser.LogicalConjuction) error
- func (i *Interpreter) VisitPrintStmt(p *parser.PrintStmt) error
- func (i *Interpreter) VisitReturnStmt(r *parser.ReturnStmt) error
- func (i *Interpreter) VisitUnary(u *parser.Unary) error
- func (i *Interpreter) VisitVarStmt(v *parser.VarStmt) error
- func (i *Interpreter) VisitVariable(v *parser.Variable) error
- func (i *Interpreter) VisitWhileStmt(w *parser.WhileStmt) error
- type LoxFunction
- type Resolver
- func (r *Resolver) VisitAssignment(v *parser.Assignment) error
- func (r *Resolver) VisitBinary(b *parser.Binary) error
- func (r *Resolver) VisitBlock(b *parser.Block) error
- func (r *Resolver) VisitCallExpr(f *parser.CallExpr) error
- func (r *Resolver) VisitClassDeclaration(c *parser.ClassDeclaration) error
- func (r *Resolver) VisitFunctionDeclaration(f *parser.FunctionDeclaration) error
- func (r *Resolver) VisitGrouping(g *parser.Grouping) error
- func (r *Resolver) VisitIfStmt(i *parser.IfStmt) error
- func (r *Resolver) VisitLiteral(l *parser.Literal) error
- func (r *Resolver) VisitLogicalConjunction(v *parser.LogicalConjuction) error
- func (r *Resolver) VisitPrintStmt(p *parser.PrintStmt) error
- func (r *Resolver) VisitReturnStmt(rs *parser.ReturnStmt) error
- func (r *Resolver) VisitUnary(u *parser.Unary) error
- func (r *Resolver) VisitVarStmt(v *parser.VarStmt) error
- func (r *Resolver) VisitVariable(v *parser.Variable) error
- func (r *Resolver) VisitWhileStmt(w *parser.WhileStmt) error
- type Scope
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 Interpreter ¶
type Interpreter struct {
// contains filtered or unexported fields
}
func New ¶
func New(log *zap.SugaredLogger) *Interpreter
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 (l LoxFunction) Call(i parser.LoxInterpreter, args []domain.Value) (domain.Value, error)
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) VisitClassDeclaration ¶
func (r *Resolver) VisitClassDeclaration(c *parser.ClassDeclaration) error
func (*Resolver) VisitFunctionDeclaration ¶
func (r *Resolver) VisitFunctionDeclaration(f *parser.FunctionDeclaration) error
func (*Resolver) VisitLogicalConjunction ¶
func (r *Resolver) VisitLogicalConjunction(v *parser.LogicalConjuction) error
func (*Resolver) VisitReturnStmt ¶
func (r *Resolver) VisitReturnStmt(rs *parser.ReturnStmt) error
Click to show internal directories.
Click to hide internal directories.