Documentation
¶
Index ¶
- Variables
- type ArrayObject
- type BaseClass
- type BaseObject
- type BooleanObject
- type BuiltInMethod
- type Class
- type Error
- type ErrorClass
- type HashObject
- type IntegerObject
- type Method
- type Null
- type Object
- type Pointer
- type RArray
- type RBool
- type RClass
- type RHash
- type RInteger
- type RNull
- type RObject
- type RString
- type StringObject
- type VM
Constants ¶
This section is empty.
Variables ¶
var BuiltinClassMethods = []*BuiltInMethod{ { Fn: func(receiver Object) builtinMethodBody { return func(vm *VM, args []Object, blockFrame *callFrame) Object { module := args[0].(*RClass) class := receiver.(*RClass) module.superClass = class.superClass class.superClass = module return class } }, Name: "include", }, { Fn: func(receiver Object) builtinMethodBody { return func(vm *VM, args []Object, blockFrame *callFrame) Object { class := receiver.(*RClass) instance := class.initializeInstance() initMethod := class.lookupInstanceMethod("initialize") if initMethod != nil { instance.InitializeMethod = initMethod.(*Method) } return instance } }, Name: "new", }, { Fn: func(receiver Object) builtinMethodBody { return func(vm *VM, args []Object, blockFrame *callFrame) Object { name := receiver.(Class).ReturnName() nameString := initializeString(name) return nameString } }, Name: "name", }, { Fn: func(receiver Object) builtinMethodBody { return func(vm *VM, args []Object, blockFrame *callFrame) Object { return receiver.(Class).returnSuperClass() } }, Name: "superclass", }, }
Functions ¶
This section is empty.
Types ¶
type ArrayObject ¶
ArrayObject represents array instance
func (*ArrayObject) Inspect ¶
func (a *ArrayObject) Inspect() string
inspect returns detailed info of a array include elements it contains
type BaseClass ¶
type BaseClass struct {
// Name is the class's name
Name string
// Methods contains its instances' methods
Methods *environment
// ClassMethods contains this class's methods
ClassMethods *environment
// Class points to this class's class, which should be ClassClass
Class *RClass
// Singleton is a flag marks if this class a singleton class
Singleton bool
// contains filtered or unexported fields
}
BaseClass is a embedded struct that contains all the essential fields for a class
func (*BaseClass) Inspect ¶
inspect returns the basic inspected result (which is class name) of current class TODO: Singleton class's inspect() should also mark if it's a singleton class explicitly.
func (*BaseClass) ReturnName ¶
type BaseObject ¶
type BaseObject interface {
Object
// contains filtered or unexported methods
}
BaseObject is an interface that implements basic functions any object requires.
type BooleanObject ¶
BooleanObject represents boolean object in rooby
var ( // TRUE is shared boolean object that represents true TRUE *BooleanObject // FALSE is shared boolean object that represents false FALSE *BooleanObject )
func (*BooleanObject) Inspect ¶
func (b *BooleanObject) Inspect() string
inspect returns boolean object's value, which is either true or false.
type BuiltInMethod ¶
BuiltInMethod represents methods defined in go.
func (*BuiltInMethod) Inspect ¶
func (bim *BuiltInMethod) Inspect() string
type Class ¶
type Class interface {
ReturnName() string
BaseObject
// contains filtered or unexported methods
}
Class is an interface that implements a class's basic functions. - lookupClassMethod: search for current class's class method with given name. - lookupInstanceMethod: search for current class's instance method with given name. - ReturnName returns class's name
type Error ¶
type Error struct {
Class *ErrorClass
Message string
}
type ErrorClass ¶
type ErrorClass struct {
*BaseClass
}
type HashObject ¶
HashObject represents hash instances
func (*HashObject) Inspect ¶
func (h *HashObject) Inspect() string
func (*HashObject) Length ¶
func (h *HashObject) Length() int
type IntegerObject ¶
IntegerObject represents integer instances
func (*IntegerObject) Inspect ¶
func (i *IntegerObject) Inspect() string
type Method ¶
type Method struct {
Name string
// contains filtered or unexported fields
}
Method represents methods defined using rooby.
type RBool ¶
type RBool struct {
*BaseClass
}
RBool is the built in class of rooby's boolean objects.
type RClass ¶
type RClass struct {
// Scope contains current class's scope information
Scope *scope
*BaseClass
}
RClass represents normal (not built in) class object
type RObject ¶
type RObject struct {
Class *RClass
InstanceVariables *environment
Scope *scope
InitializeMethod *Method
}
RObject represents any non built-in class's instance.
type StringObject ¶
StringObject represents string instances
func (*StringObject) Inspect ¶
func (s *StringObject) Inspect() string
type VM ¶
type VM struct {
// contains filtered or unexported fields
}
VM represents a stack based virtual machine.
func (*VM) ExecBytecodes ¶
ExecBytecodes accepts a sequence of bytecodes and use vm to evaluate them.
func (*VM) GetExecResult ¶
GetExecResult returns stack's top most value. Normally it's used in tests.