Fetch the repository succeeded.
This action will force synchronization from landy/qlang, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
package exec
import (
"qlang.io/qlang.spec.v1"
)
// -----------------------------------------------------------------------------
type tchan int
func (p tchan) OptimizableGetArity() int {
return 1
}
func (p tchan) Exec(stk *Stack, ctx *Context) {
n := len(stk.data) - 1
stk.data[n] = qlang.ChanOf(stk.data[n])
}
// Chan is an instruction that returns chan T.
//
var Chan Instr = tchan(0)
// -----------------------------------------------------------------------------
type slice int
func (p slice) OptimizableGetArity() int {
return 1
}
func (p slice) Exec(stk *Stack, ctx *Context) {
n := len(stk.data) - 1
stk.data[n] = qlang.Slice(stk.data[n])
}
// Slice is an instruction that returns []T.
//
var Slice Instr = slice(0)
// -----------------------------------------------------------------------------
type sliceFrom int
type sliceFromTy int
var nilVarSlice = make([]interface{}, 0)
func (p sliceFrom) Exec(stk *Stack, ctx *Context) {
if p == 0 {
stk.data = append(stk.data, nilVarSlice)
return
}
n := len(stk.data) - int(p)
stk.data[n] = qlang.SliceFrom(stk.data[n:]...)
stk.data = stk.data[:n+1]
}
func (p sliceFromTy) Exec(stk *Stack, ctx *Context) {
n := len(stk.data) - int(p)
stk.data[n] = qlang.SliceFromTy(stk.data[n:]...)
stk.data = stk.data[:n+1]
}
// SliceFrom is an instruction that creates slice in [a1, a2, ...] form.
//
func SliceFrom(arity int) Instr {
return sliceFrom(arity)
}
// SliceFromTy is an instruction that creates slice in []T{a1, a2, ...} form.
//
func SliceFromTy(arity int) Instr {
return sliceFromTy(arity)
}
// -----------------------------------------------------------------------------
// StructInit
type iStructInit int
func (p iStructInit) Exec(stk *Stack, ctx *Context) {
n := len(stk.data) - int(p)
stk.data[n] = qlang.StructInit(stk.data[n:]...)
stk.data = stk.data[:n+1]
}
// StructInit returns a StructInit instruction that means `&StructType{name1: expr1, name2: expr2, ...}`.
//
func StructInit(arity int) Instr {
return iStructInit(arity)
}
// -----------------------------------------------------------------------------
// MapInit
type iMapInit int
func (p iMapInit) Exec(stk *Stack, ctx *Context) {
n := len(stk.data) - int(p)
stk.data[n] = qlang.MapInit(stk.data[n:]...)
stk.data = stk.data[:n+1]
}
// MapInit returns a MapInit instruction that means `map[key]elem{key1: expr1, key2: expr2, ...}`.
//
func MapInit(arity int) Instr {
return iMapInit(arity)
}
// -----------------------------------------------------------------------------
type tmap int
func (p tmap) OptimizableGetArity() int {
return 2
}
func (p tmap) Exec(stk *Stack, ctx *Context) {
n := len(stk.data) - 1
stk.data[n-1] = qlang.Map(stk.data[n-1], stk.data[n])
stk.data = stk.data[:n]
}
// Map is an instruction that returns `map[key]elem`.
//
var Map Instr = tmap(0)
// -----------------------------------------------------------------------------
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。