Skip to content

Instantly share code, notes, and snippets.

@jeremylowery
Created December 18, 2016 21:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeremylowery/2b7c68b9f15529c7b4e56c646db81857 to your computer and use it in GitHub Desktop.
Save jeremylowery/2b7c68b9f15529c7b4e56c646db81857 to your computer and use it in GitHub Desktop.
REPL for library at github.com/Knetic/govaluate
package main
import (
"fmt"
"github.com/Knetic/govaluate"
"os"
"bufio"
)
func main() {
reader := bufio.NewReader(os.Stdin)
parameters := make(map[string]interface{}, 8)
for {
fmt.Print("Expression> ")
expr, err := reader.ReadString('\n')
if err != nil { panic(err) }
if expr == "\n" { return }
expression, err := govaluate.NewEvaluableExpression(expr);
result, err := expression.Evaluate(parameters)
if err != nil { panic(err) }
fmt.Println(result)
fmt.Print("Save as (Enter for None)> ")
symbol, err := reader.ReadString('\n')
if err != nil { panic(err) }
if symbol == "\n" { continue }
symbol = symbol[:len(symbol)-1]
parameters[symbol] = result
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment