diff --git a/README.adoc b/README.adoc index 9b1b09d..3aa75dd 100644 --- a/README.adoc +++ b/README.adoc @@ -63,35 +63,37 @@ package main import ( "fmt" "strings" - "git.portale-stac.it/go-pkg/expr" ) func main() { ctx := expr.NewSimpleVarStore() - ctx.SetValue("var", int64(4)) + ctx.SetVar("var", int64(4)) source := `(3-1)*(10/5) == var` - r := strings.NewReader(source) - scanner := expr.NewScanner(r, DefaultTranslations()) + r := strings.NewReader(source) + scanner := expr.NewScanner(r, expr.DefaultTranslations()) parser := expr.NewParser(ctx) if ast, err := parser.Parse(scanner); err == nil { if result, err := ast.Eval(ctx); err == nil { - fmt.Printf("%q -> %v [%T]\n", source, result, result) - } else { - fmt.Println("Error calculating the expression:", err) - } + fmt.Printf("%q -> %v [%T]\n", source, result, result) + } else { + fmt.Println("Error calculating the expression:", err) + } } else { - fmt.Println("Error parsing the expression:", err) - } + fmt.Println("Error parsing the expression:", err) + } } ---- + The above program is equivalent to the following one. [source,go] ---- +package main + import ( "fmt" "git.portale-stac.it/go-pkg/expr" @@ -99,15 +101,38 @@ import ( func main() { ctx := expr.NewSimpleVarStore() - ctx.SetValue("var", int64(4)) + ctx.SetVar("var", int64(4)) source := `(3-1)*(10/5) == var` - if result, err := expr.EvalString(ctx, source); err == nil { - fmt.Printf("%q -> %v [%T]\n", source, result, result) - } else { - fmt.Println("Error calculating the expression:", err) - } + if result, err := expr.EvalString(ctx, source); err == nil { + fmt.Printf("%q -> %v [%T]\n", source, result, result) + } else { + fmt.Println("Error calculating the expression:", err) + } +} +---- + +Here is another equivalent version. + +[source,go] +---- +package main + +import ( + "fmt" + + "git.portale-stac.it/go-pkg/expr" +) + +func main() { + source := `(3-1)*(10/5) == var` + + if result, err := expr.EvalStringA(source, expr.Arg{"var", int64(4)}); err == nil { + fmt.Printf("%q -> %v [%T]\n", source, result, result) + } else { + fmt.Println("Error calculating the expression:", err) + } } ----