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