forge: convenience functions / typed calls (PopI)
This commit is contained in:
parent
5626840630
commit
5ae3f3e645
3 changed files with 10 additions and 9 deletions
|
@ -28,24 +28,18 @@ func setup(f FE) *builtins {
|
|||
return forge.Register(voc, forge.GoFunc(name, fct))
|
||||
}
|
||||
b := builtins{
|
||||
Add: r("+", func(f FE, _ XT) {
|
||||
f.Push(f.Pop().(int) + f.Pop().(int))
|
||||
}),
|
||||
Add: r("+", func(f FE, _ XT) { f.Push(f.PopI() + f.PopI()) }),
|
||||
/*Append: r("append", func(f FE, _ XT) {
|
||||
item := f.Pop()
|
||||
f.Peek(0).(FPtr).Append(item)
|
||||
}),*/
|
||||
Body: r("body", func(f FE, _ XT) {
|
||||
f.Push(f.Pop().(XT).Code().New().Next())
|
||||
}),
|
||||
Body: r("body", func(f FE, _ XT) { f.Push(f.Pop().(XT).Code().New().Next()) }),
|
||||
Code: r("code", func(f FE, _ XT) { f.Push(f.Code()) }),
|
||||
Comp: r("comp", func(f FE, _ XT) { f.LatestXT().Code().Append(f.Pop()) }),
|
||||
Dup: r("dup", func(f FE, _ XT) { f.Push(f.Peek(0)) }),
|
||||
Get: r("@", func(f FE, _ XT) { f.Push(f.Pop().(FPtr).Value()) }),
|
||||
Lit: r("lit", func(f FE, _ XT) { f.Push(f.Literal()) }),
|
||||
Mult: r("*", func(f FE, _ XT) {
|
||||
f.Push(f.Pop().(int) * f.Pop().(int))
|
||||
}),
|
||||
Mult: r("*", func(f FE, _ XT) { f.Push(f.PopI() * f.PopI()) }),
|
||||
New1: r("new1", func(f FE, _ XT) { f.Push(f.NewVar()) }),
|
||||
Put: r("!", func(f FE, _ XT) { f.Pop().(FPtr).Set(f.Pop()) }),
|
||||
Reg: r("reg", func(f FE, _ XT) { reg(f) }),
|
||||
|
|
|
@ -96,6 +96,10 @@ func (f *forgeEnv) Pop() fitem {
|
|||
return f.ds.Pop()
|
||||
}
|
||||
|
||||
func (f *forgeEnv) PopI() int {
|
||||
return f.ds.Pop().(int)
|
||||
}
|
||||
|
||||
func (f *forgeEnv) Peek(d int) fitem {
|
||||
return f.ds.Peek(d)
|
||||
}
|
||||
|
|
|
@ -44,6 +44,9 @@ func CoreTest(t *testing.T) {
|
|||
t.AssertEqual(fe.Exec(seven).Pop(), 9)
|
||||
}
|
||||
|
||||
func ControlTest(t *testing.T) {
|
||||
}
|
||||
|
||||
func RepTest(t *testing.T) {
|
||||
src := rep.Code(4, 2, "+")
|
||||
c := src.Compile(fe)
|
||||
|
|
Loading…
Add table
Reference in a new issue