Documentation ¶
Index ¶
- Constants
- Variables
- func IsTrue(obj Object) bool
- func ObjectToGoValue(obj Object, typ reflect.Type) reflect.Value
- func RegisterGoFunctions(name string, vars map[string]interface{}) error
- func RegisterGoVars(name string, vars map[string]interface{}) error
- func SetGlobalObj(name string, Obj Object)
- type Array
- type Boolean
- type Break
- type Builtin
- type BuiltinFunc
- type Continue
- type Error
- type Fallthrough
- type FileObject
- type Formatter
- type Function
- type GoFuncObject
- type GoObject
- type Hash
- type HashKey
- type HashPair
- type Hashable
- type Iterable
- type Nil
- type Number
- type Object
- type ObjectType
- type Os
- type RegEx
- type ReturnValue
- type Scope
- func (s *Scope) DebugPrint(indent string)
- func (s *Scope) Del(name string)
- func (s *Scope) Get(name string) (Object, bool)
- func (s *Scope) GetAllExported(anotherScope *Scope)
- func (s *Scope) GetKeys() []string
- func (s *Scope) GetStruct(name string) (*ast.StructStatement, bool)
- func (s *Scope) Set(name string, val Object) Object
- func (s *Scope) SetStruct(structStmt *ast.StructStatement) *ast.StructStatement
- type String
- type Struct
- type Throw
- type Tuple
Constants ¶
View Source
const ( NUMBER_OBJ = "NUMBER" NIL_OBJ = "NIL_OBJ" BOOLEAN_OBJ = "BOOLEAN" STRING_OBJ = "STRING" ERROR_OBJ = "ERROR" RETURN_VALUE_OBJ = "RETURN_VALUE" FUNCTION_OBJ = "FUNCTION" BUILTIN_OBJ = "BUILTIN" ARRAY_OBJ = "ARRAY" TUPLE_OBJ = "TUPLE" HASH_OBJ = "HASH" BREAK_OBJ = "BREAK" CONTINUE_OBJ = "CONTINUE" FALLTHROUGH_OBJ = "FALLTHROUGH" REGEX_OBJ = "REGEX" GO_OBJ = "GO_OBJ" GFO_OBJ = "GFO_OBJ" FILE_OBJ = "FILE" OS_OBJ = "OS_OBJ" STRUCT_OBJ = "STRUCT" THROW_OBJ = "THROW" )
Variables ¶
View Source
var ( ERR_ARGUMENT = "wrong number of arguments. expected=%d, got=%d" ERR_NOMETHOD = "undefined method '%s' for object %s" ERR_NOMETHODEX = "undefined method '%s.%s', Did you mean '%s.%s'?" ERR_INDEX = "index error: '%d' out of range" ERR_KEY = "key error: type %s is not hashable" ERR_PREFIXOP = "unsupported operator for prefix expression:'%s' and type: %s" ERR_INFIXOP = "unsupported operator for infix expression: %s '%s' %s" ERR_POSTFIXOP = "unsupported operator for postfix expression:'%s' and type: %s" ERR_UNKNOWNIDENT = "unknown identifier: '%s' is not defined" ERR_DIVIDEBYZERO = "divide by zero" ERR_NOTFUNCTION = "expect a function, got %s" ERR_PARAMTYPE = "%s argument for '%s' should be type %s. got=%s" ERR_NOTITERABLE = "foreach's operating type must be iterable" ERR_IMPORT = "import error: %s" ERR_NAMENOTEXPORTED = "cannot refer to unexported name %s.%s" ERR_INVALIDARG = "invalid argument supplied" ERR_NOINDEXABLE = "index error: type %s is not indexable" ERR_NOTREGEXP = "right type is not a regexp object, got %s" ERR_NOCONSTRUCTOR = "got %d parameters, but the struct has no 'init' method supplied" ERR_THROWNOTHANDLED = "throw object '%s' not handled" ERR_RANGETYPE = "range(..) type should be %s type, got %s" ERR_MULTIASSIGN = "the number of names and values are not equal" )
View Source
var ( ERR_HASDOT = errors.New("symbol contains '.'") ERR_VALUENOTFUNCTION = errors.New("symbol value not function") )
View Source
var ( TRUE = &Boolean{Bool: true} FALSE = &Boolean{Bool: false} BREAK = &Break{} CONTINUE = &Continue{} FALLTHROUGH = &Fallthrough{} NIL = &Nil{} )
Functions ¶
func ObjectToGoValue ¶
Magpie language Object to go language Value.
func RegisterGoFunctions ¶
func RegisterGoVars ¶
func SetGlobalObj ¶
Types ¶
type Array ¶
type Array struct {
Members []Object
}
func (*Array) CallMethod ¶
func (*Array) Type ¶
func (a *Array) Type() ObjectType
type Boolean ¶
type Boolean struct {
Bool bool
}
func NewBooleanObj ¶
func (*Boolean) CallMethod ¶
func (*Boolean) Type ¶
func (b *Boolean) Type() ObjectType
type Break ¶
type Break struct{}
func (*Break) CallMethod ¶
func (*Break) Type ¶
func (b *Break) Type() ObjectType
type Builtin ¶
type Builtin struct {
Fn BuiltinFunc
}
func (*Builtin) CallMethod ¶
func (*Builtin) Type ¶
func (b *Builtin) Type() ObjectType
type Continue ¶
type Continue struct{}
func (*Continue) CallMethod ¶
func (*Continue) Type ¶
func (c *Continue) Type() ObjectType
type Error ¶
type Error struct {
Message string
}
func (*Error) CallMethod ¶
func (*Error) Type ¶
func (e *Error) Type() ObjectType
type Fallthrough ¶
type Fallthrough struct{}
func (*Fallthrough) CallMethod ¶
func (*Fallthrough) Inspect ¶
func (f *Fallthrough) Inspect() string
func (*Fallthrough) Type ¶
func (f *Fallthrough) Type() ObjectType
type FileObject ¶
func (*FileObject) CallMethod ¶
func (*FileObject) Inspect ¶
func (f *FileObject) Inspect() string
func (*FileObject) Type ¶
func (f *FileObject) Type() ObjectType
type Formatter ¶
type Formatter struct {
Obj Object
}
This `Formatter` struct is mainly used to encapsulate golang `fmt` package's `Formatter` interface.
type Function ¶
type Function struct { Literal *ast.FunctionLiteral Scope *Scope }
func (*Function) CallMethod ¶
func (*Function) Type ¶
func (f *Function) Type() ObjectType
type GoFuncObject ¶
type GoFuncObject struct {
// contains filtered or unexported fields
}
wrapper for go functions
func NewGoFuncObject ¶
func NewGoFuncObject(fname string, fn interface{}) *GoFuncObject
func (*GoFuncObject) CallMethod ¶
func (*GoFuncObject) Inspect ¶
func (gfn *GoFuncObject) Inspect() string
func (*GoFuncObject) Type ¶
func (gfn *GoFuncObject) Type() ObjectType
type GoObject ¶
type GoObject struct {
// contains filtered or unexported fields
}
Wrapper for go object
func NewGoObject ¶
func NewGoObject(obj interface{}) *GoObject
func (*GoObject) CallMethod ¶
func (*GoObject) Type ¶
func (gobj *GoObject) Type() ObjectType
type HashKey ¶
type HashKey struct { Type ObjectType Value uint64 }
type Iterable ¶
type Iterable interface {
// contains filtered or unexported methods
}
Whether the Object is iterable (HASH, ARRAY, STRING, TUPLE, Some of the GoObject)
type Nil ¶
type Nil struct { }
func (*Nil) CallMethod ¶
func (*Nil) Type ¶
func (n *Nil) Type() ObjectType
type Number ¶
type Number struct {
Value float64
}
func (*Number) CallMethod ¶
func (*Number) Type ¶
func (n *Number) Type() ObjectType
type Object ¶
type Object interface { Type() ObjectType Inspect() string CallMethod(line string, scope *Scope, method string, args ...Object) Object }
func GetGlobalObj ¶
type ReturnValue ¶
type ReturnValue struct { Value Object // for old campatibility Values []Object // return multiple values }
func (*ReturnValue) CallMethod ¶
func (*ReturnValue) Inspect ¶
func (rv *ReturnValue) Inspect() string
func (*ReturnValue) Type ¶
func (rv *ReturnValue) Type() ObjectType
type Scope ¶
func (*Scope) DebugPrint ¶
func (*Scope) GetAllExported ¶
Get all exported to 'anotherScope'
func (*Scope) SetStruct ¶
func (s *Scope) SetStruct(structStmt *ast.StructStatement) *ast.StructStatement
type String ¶
type String struct {
String string
}
func (*String) CallMethod ¶
func (*String) Type ¶
func (s *String) Type() ObjectType
type Struct ¶
type Struct struct {
Scope *Scope //struct's scope
}
func (*Struct) CallMethod ¶
func (*Struct) Type ¶
func (s *Struct) Type() ObjectType
type Throw ¶
type Throw struct {
// contains filtered or unexported fields
}
func (*Throw) CallMethod ¶
func (*Throw) Type ¶
func (t *Throw) Type() ObjectType
type Tuple ¶
type Tuple struct { // Used in function return values. // if a function returns multiple values, they will wrap the results into a tuple, // the flag will be set to true IsMulti bool Members []Object }
func (*Tuple) CallMethod ¶
func (*Tuple) Type ¶
func (t *Tuple) Type() ObjectType
Source Files ¶
Click to show internal directories.
Click to hide internal directories.