Anko is a scriptable interpreter written in Go.
(Picture licensed under CC BY-SA 3.0, photo by Ocdp)
Requires Go.
$ go get -u github.com/mattn/anko
# declare function
func plus(n){
return n + 1
}
# declare variables
x = 1
y = x + 1
# print values
println(x * (y + 2 * x + plus(x) / 2))
# if/else condition
if plus(y) > 1 {
println("こんにちわ世界")
} else {
println("Hello, World")
}
# array type
a = [1,2,3]
println(a[2])
println(len(a))
# map type
m = {"foo": "bar", "far": "boo"}
m.foo = "baz"
for k in keys(m) {
println(m[k])
}
See _examples/scripts
for more examples.
Embedding the interpreter into your own program:
var env = vm.NewEnv()
env.Define("foo", 1)
env.Define("bar", func() int {
return 2
})
val, err := env.Execute(`foo + bar()`)
if err != nil {
panic(err)
}
fmt.Println(val)
// output:
// 3
To import all core language builtins, allowing the example scripts to work:
import "github.com/mattn/anko/core"
var env = vm.NewEnv()
core.Import(env)
_, err := env.Execute(`println("test")`)
if err != nil {
panic(err)
}
// output:
// "test"
Running scripts using anko command-line tool:
$ anko script.ank
Yasuhiro Matsumoto (a.k.a mattn)
Please note that the master branch is not stable, the language and API may change at any time.
To mitigate breaking changes, please use tagged branches. New tagged branches will be created for breaking changes.