vm

package
v0.0.0-...-95ae90b Latest Latest
Warning

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

Go to latest
Published: Jan 12, 2024 License: BSD-3-Clause Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetModule

func GetModule(name string) *object.Module

GetModule returns a Module object is a module with the given name is registered, otherwise nil.

func InstanceOf

func InstanceOf(class string, i *VMInstance) bool

func RegisterBuiltin

func RegisterBuiltin(name string, fn object.BuiltinFunction)

RegisterBuiltin allows other packages to register functions for availability in user code

func RegisterModule

func RegisterModule(name string, m *object.Module)

func RegisterNative

func RegisterNative(name string, fn object.BuiltinFunction)

func RegisterNativeMethod

func RegisterNativeMethod(name string, fn BuiltinMethodFunction)

Types

type BoundMethod

type BoundMethod struct {
	Method   object.ClassMethod
	Instance *VMInstance
	Parent   *VMClass
}

func (*BoundMethod) Dup

func (b *BoundMethod) Dup() object.Object

func (*BoundMethod) Inspect

func (b *BoundMethod) Inspect() string

func (*BoundMethod) Type

func (b *BoundMethod) Type() object.ObjectType

type BuiltinClass

type BuiltinClass struct {
	*VMClass
	Fields map[string]object.Object
}

type BuiltinMethod

type BuiltinMethod struct {
	Fn          BuiltinMethodFunction
	Name        string
	NumOfParams int
}

func MakeBuiltinMethod

func MakeBuiltinMethod(fn BuiltinMethodFunction, NumOfParams int) *BuiltinMethod

func (*BuiltinMethod) ClassMethod

func (b *BuiltinMethod) ClassMethod()

func (*BuiltinMethod) Dup

func (b *BuiltinMethod) Dup() object.Object

func (*BuiltinMethod) Inspect

func (b *BuiltinMethod) Inspect() string

func (*BuiltinMethod) Type

func (b *BuiltinMethod) Type() object.ObjectType

type BuiltinMethodFunction

type BuiltinMethodFunction func(i *VirtualMachine, self *VMInstance, env *object.Environment, args ...object.Object) object.Object

type ErrExitCode

type ErrExitCode struct {
	Code int
}

func (ErrExitCode) Error

func (e ErrExitCode) Error() string

type Frame

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

type Settings

type Settings struct {
	Debug            bool
	ReturnExceptions bool

	Stdin  io.Reader
	Stdout io.Writer
	Stderr io.Writer
}

func NewSettings

func NewSettings() *Settings

type VMClass

type VMClass struct {
	Name    string
	Parent  *VMClass
	Fields  *compiler.CodeBlock
	Methods map[string]object.ClassMethod
}

func (*VMClass) Dup

func (c *VMClass) Dup() object.Object

func (*VMClass) GetMethod

func (c *VMClass) GetMethod(name string) object.ClassMethod

func (*VMClass) Inspect

func (c *VMClass) Inspect() string

func (*VMClass) Type

func (c *VMClass) Type() object.ObjectType

type VMFunction

type VMFunction struct {
	Name       string
	Parameters []string
	Native     bool
	Body       *compiler.CodeBlock
	Env        *object.Environment
	Class      *VMClass
}

func (*VMFunction) ClassMethod

func (f *VMFunction) ClassMethod()

func (*VMFunction) Dup

func (f *VMFunction) Dup() object.Object

func (*VMFunction) Inspect

func (f *VMFunction) Inspect() string

func (*VMFunction) Type

func (f *VMFunction) Type() object.ObjectType

type VMInstance

type VMInstance struct {
	Class  *VMClass
	Fields *object.Environment
}

func (*VMInstance) Dup

func (i *VMInstance) Dup() object.Object

func (*VMInstance) GetBoundMethod

func (i *VMInstance) GetBoundMethod(name string) *BoundMethod

func (*VMInstance) GetMethod

func (i *VMInstance) GetMethod(name string) object.ClassMethod

func (*VMInstance) Inspect

func (i *VMInstance) Inspect() string

func (*VMInstance) Type

func (i *VMInstance) Type() object.ObjectType

type VirtualMachine

type VirtualMachine struct {
	Settings *Settings
	// contains filtered or unexported fields
}

func NewVM

func NewVM(settings *Settings) *VirtualMachine

func (*VirtualMachine) CallFunction

func (vm *VirtualMachine) CallFunction(argc uint16, fn object.Object, now bool, this *VMInstance, unwind bool)

func (*VirtualMachine) CurrentFrame

func (vm *VirtualMachine) CurrentFrame() *Frame

func (*VirtualMachine) Eval

func (vm *VirtualMachine) Eval(node ast.Node, env *object.Environment) object.Object

func (*VirtualMachine) Execute

func (vm *VirtualMachine) Execute(code *compiler.CodeBlock, env *object.Environment) (object.Object, error)

func (*VirtualMachine) Exit

func (vm *VirtualMachine) Exit(code int)

func (*VirtualMachine) GetCurrentScriptPath

func (vm *VirtualMachine) GetCurrentScriptPath() string

func (*VirtualMachine) GetInstanceVar

func (vm *VirtualMachine) GetInstanceVar(key string) interface{}

func (*VirtualMachine) GetOkInstanceVar

func (vm *VirtualMachine) GetOkInstanceVar(key string) (interface{}, bool)

func (*VirtualMachine) GetStderr

func (vm *VirtualMachine) GetStderr() io.Writer

func (*VirtualMachine) GetStdin

func (vm *VirtualMachine) GetStdin() io.Reader

func (*VirtualMachine) GetStdout

func (vm *VirtualMachine) GetStdout() io.Writer

func (*VirtualMachine) HasInstanceVar

func (vm *VirtualMachine) HasInstanceVar(key string) bool

func (*VirtualMachine) MakeFrame

func (vm *VirtualMachine) MakeFrame(code *compiler.CodeBlock, env *object.Environment) *Frame

func (*VirtualMachine) PopStack

func (vm *VirtualMachine) PopStack() object.Object

func (*VirtualMachine) RemoveInstanceVar

func (vm *VirtualMachine) RemoveInstanceVar(key string)

func (*VirtualMachine) RunFrame

func (vm *VirtualMachine) RunFrame(f *Frame, immediateReturn bool) (ret object.Object)

func (*VirtualMachine) SetGlobalEnv

func (vm *VirtualMachine) SetGlobalEnv(env *object.Environment)

func (*VirtualMachine) SetModuleProp

func (vm *VirtualMachine) SetModuleProp(modulePath string, prop string, val object.Object)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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