2016-07-23 17:06:26 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
2017-02-11 17:24:02 +00:00
|
|
|
"github.com/mediocregopher/ginger/lang"
|
|
|
|
"github.com/mediocregopher/ginger/vm"
|
2016-07-23 17:06:26 +00:00
|
|
|
)
|
|
|
|
|
2017-02-11 17:24:02 +00:00
|
|
|
func main() {
|
2017-02-12 18:44:10 +00:00
|
|
|
mkcmd := func(a lang.Atom, args ...lang.Term) lang.Tuple {
|
|
|
|
return lang.Tuple{a, lang.Tuple{vm.Tuple, lang.Tuple(args)}}
|
|
|
|
}
|
|
|
|
mkint := func(i string) lang.Tuple {
|
|
|
|
return lang.Tuple{vm.Int, lang.Const(i)}
|
|
|
|
}
|
|
|
|
|
|
|
|
t := mkcmd(vm.Add, mkint("1"),
|
|
|
|
mkcmd(vm.Add, mkint("2"), mkint("3")))
|
2017-02-11 17:24:02 +00:00
|
|
|
|
|
|
|
mod, err := vm.Build(t)
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
defer mod.Dispose()
|
|
|
|
|
|
|
|
mod.Dump()
|
|
|
|
|
|
|
|
out, err := mod.Run()
|
|
|
|
fmt.Printf("\n\n########\nout: %v %v\n", out, err)
|
|
|
|
}
|