script

package
v0.0.0-...-b8f9f05 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2018 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// Decimal is the constant string for decimal type
	Decimal = `decimal.Decimal`
	// Interface is the constant string for interface type
	Interface = `interface`
)
View Source
const (

	// ObjUnknown is an unknown object. It means something wrong.
	ObjUnknown = iota
	// ObjContract is a contract object.
	ObjContract
	// ObjFunc is a function object. myfunc()
	ObjFunc
	// ObjExtFunc is an extended function object. $myfunc()
	ObjExtFunc
	// ObjVar is a variable. myvar
	ObjVar
	// ObjExtend is an extended variable. $myvar
	ObjExtend

	// CostCall is the cost of the function calling
	CostCall = 50
	// CostContract is the cost of the contract calling
	CostContract = 100
	// CostExtend is the cost of the extend function calling
	CostExtend = 10
	// CostDefault is the default maximum cost of F
	CostDefault = int64(10000000)

	// VMTypeSmart is smart vm type
	VMTypeSmart VMType = 1
	// VMTypeVDE is vde vm type
	VMTypeVDE VMType = 2
)

Variables

This section is empty.

Functions

func ContractsList

func ContractsList(value string) []string

func ExContract

func ExContract(rt *RunTime, state uint32, name string, params map[string]interface{}) (string, error)

ExContract executes the name contract in the state with specified parameters

func ExecContract

func ExecContract(rt *RunTime, name, txs string, params ...interface{}) (string, error)

ExecContract runs the name contract where txs contains the list of parameters and params are the values of parameters

func GetSettings

func GetSettings(rt *RunTime, cntname, name string) (interface{}, error)

GetSettings returns the value of the parameter

func ParseContract

func ParseContract(in string) (id uint64, name string)

ParseContract gets a state identifier and the name of the contract from the full name like @[id]name

func SetVMError

func SetVMError(eType string, eText interface{}) error

func StateName

func StateName(state uint32, name string) string

StateName checks the name of the contract and modifies it to @[state]name if it is necessary.

func ValueToDecimal

func ValueToDecimal(v interface{}) (ret decimal.Decimal)

ValueToDecimal converts interface (string, float64, Decimal or int64) to Decimal

func ValueToFloat

func ValueToFloat(v interface{}) (ret float64)

ValueToFloat converts interface (string, float64 or int64) to float64

func ValueToInt

func ValueToInt(v interface{}) (ret int64)

ValueToInt converts interface (string or int64) to int64

Types

type Block

type Block struct {
	Objects  map[string]*ObjInfo
	Type     int
	Owner    *OwnerInfo
	Info     interface{}
	Parent   *Block
	Vars     []reflect.Type
	Code     ByteCodes
	Children Blocks
}

Block contains all information about compiled block {...} and its children

type Blocks

type Blocks []*Block

Blocks is a slice of blocks

type ByteCode

type ByteCode struct {
	Cmd   uint16
	Value interface{}
}

ByteCode stores a command and an additional parameter.

type ByteCodes

type ByteCodes []*ByteCode

ByteCodes is the slice of ByteCode items

type ContractInfo

type ContractInfo struct {
	ID       uint32
	Name     string
	Owner    *OwnerInfo
	Used     map[string]bool // Called contracts
	Tx       *[]*FieldInfo
	Settings map[string]interface{}
}

ContractInfo contains the contract information

type ExtFuncInfo

type ExtFuncInfo struct {
	Name     string
	Params   []reflect.Type
	Results  []reflect.Type
	Auto     []string
	Variadic bool
	Func     interface{}
}

ExtFuncInfo is the structure for the extrended function

type ExtendData

type ExtendData struct {
	Objects  map[string]interface{}
	AutoPars map[string]string
}

ExtendData is used for the definition of the extended functions and variables

type FieldInfo

type FieldInfo struct {
	Name string
	Type reflect.Type
	Tags string
}

FieldInfo describes the field of the data structure

type FuncInfo

type FuncInfo struct {
	Params   []reflect.Type
	Results  []reflect.Type
	Names    *map[string]FuncName
	Variadic bool
	ID       uint32
}

FuncInfo contains the function information

type FuncName

type FuncName struct {
	Params   []reflect.Type
	Offset   []int
	Variadic bool
}

FuncName is storing param of FuncName

type FuncNameCmd

type FuncNameCmd struct {
	Name  string
	Count int
}

FuncNameCmd for cmdFuncName

type IndexInfo

type IndexInfo struct {
	VarOffset int
	Owner     *Block
	Extend    string
}

IndexInfo contains the information for SetIndex

type Lexem

type Lexem struct {
	Type   uint32      // Type of the lexem
	Value  interface{} // Value of lexem
	Line   uint32      // Line of the lexem
	Column uint32      // Position inside the line
}

Lexem contains information about language item

func (Lexem) GetLogger

func (l Lexem) GetLogger() *log.Entry

GetLogger returns logger

type Lexems

type Lexems []*Lexem

Lexems is a slice of lexems

type ObjInfo

type ObjInfo struct {
	Type  int
	Value interface{}
}

ObjInfo is the common object type

type OwnerInfo

type OwnerInfo struct {
	StateID  uint32 `json:"state"`
	Active   bool   `json:"active"`
	TableID  int64  `json:"tableid"`
	WalletID int64  `json:"walletid"`
	TokenID  int64  `json:"tokenid"`
}

OwnerInfo storing info about owner

type RunTime

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

RunTime is needed for the execution of the byte-code

func (*RunTime) Cost

func (rt *RunTime) Cost() int64

Cost return the remain cost of the execution.

func (*RunTime) Run

func (rt *RunTime) Run(block *Block, params []interface{}, extend *map[string]interface{}) (ret []interface{}, err error)

Run executes Block with the specified parameters and extended variables and functions

func (*RunTime) RunCode

func (rt *RunTime) RunCode(block *Block) (status int, err error)

RunCode executes Block

func (*RunTime) SetCost

func (rt *RunTime) SetCost(cost int64)

SetCost sets the max cost of the execution.

type VM

type VM struct {
	Block
	ExtCost     func(string) int64
	FuncCallsDB map[string]struct{}
	Extern      bool // extern mode of compilation
	// contains filtered or unexported fields
}

VM is the main type of the virtual machine

func NewVM

func NewVM() *VM

NewVM creates a new virtual machine

func (*VM) Call

func (vm *VM) Call(name string, params []interface{}, extend *map[string]interface{}) (ret []interface{}, err error)

Call executes the name object with the specified params and extended variables and functions

func (*VM) Compile

func (vm *VM) Compile(input []rune, owner *OwnerInfo) error

Compile compiles a source code and loads the byte-code into the virtual machine

func (*VM) CompileBlock

func (vm *VM) CompileBlock(input []rune, owner *OwnerInfo) (*Block, error)

CompileBlock compile the source code into the Block structure with a byte-code

func (*VM) CompileEval

func (vm *VM) CompileEval(input string, state uint32) error

CompileEval compiles conditional exppression

func (*VM) EvalIf

func (vm *VM) EvalIf(input string, state uint32, vars *map[string]interface{}) (bool, error)

EvalIf runs the conditional expression. It compiles the source code before that if that's necessary.

func (*VM) Extend

func (vm *VM) Extend(ext *ExtendData)

Extend sets the extended variables and functions

func (*VM) FlushBlock

func (vm *VM) FlushBlock(root *Block)

FlushBlock loads the compiled Block into the virtual machine

func (*VM) FlushExtern

func (vm *VM) FlushExtern()

FlushExtern switches off the extern mode of the compilation

func (*VM) RunInit

func (vm *VM) RunInit(cost int64) *RunTime

RunInit creates a new RunTime for the virtual machine

type VMError

type VMError struct {
	Type  string `json:"type"`
	Error string `json:"error"`
}

type VMType

type VMType int

VMType is virtual machine type

type VarInfo

type VarInfo struct {
	Obj   *ObjInfo
	Owner *Block
}

VarInfo contains the variable information

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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