Given an expression such as expression = "e + 8 - a + 5 " and an evaluation map such as { "e ": 1} (given in terms of evalvars = [ "e "] and evalints = [1]), return a list of tokens representing the simplified expression, such as [ "-1a ", "14 "] An expression alternates chunks and symbols, with a space separating each chunk and symbol. A chunk is either an expression in parentheses, a variable, or a non-negative integer. A variable is a string of lowercase letters (not including digits.) Note that variables can be multiple letters, and note that variables never have a leading coefficient or unary operator like "2x " or "-x ". Expressions are evaluated in the usual order: brackets first, then multiplication, then addition and subtraction.