Evaluates the expression with the provided variables.
variables
@override num eval(Map<String, num> variables) => variables.containsKey(name) ? variables[name]! : throw 'Unknown variable $name';