In this section, we’ll build an evaluator for simple arithmetic
expressions.
We’ll use an interface, `Expr`

, to represent any expression in
this language.
For now, this interface needs no methods, but we’ll add some later.

// An Expr is an arithmetic expression. type Expr interface{}

Our expression language consists of floating-point literals;
the binary operators `+`

, `-`

, `*`

, and `/`

;
the unary operators `-x`

and `+x`

;
function calls `pow(x,y)`

, `sin(x)`

, and `sqrt(x)`

;
variables such as `x`

and `pi`

;
and of course parentheses and standard operator precedence.
All values are of type `float64`

.
Here are some example expressions:

sqrt(A / pi) pow(x, 3) + pow(y, 3) (F - 32) * 5 / 9

The five concrete ...

Start Free Trial

No credit card required