Define a mathematical expression in English
+2
−0
This challenge is currently under beta release. If given enough positivity, it will remain here and stand as a fully released challenge. Otherwise, it will be deleted and put back in the sandboxed post. Please fix the errors there instead.
Background
Inspired by this challenge that is also a mathematical English translator.
Challenge
Write a program that translates a mathematical expression using English with the following specifications:
 The expression can only take in numbers, letters from the English alphabet, the equal sign, and the arithmetic operators. No, exponents aren't arithmetic.
 If the target character(s) is a/are number(s):

 The number range can only be from
999
up to999
.
 The number range can only be from

 When in the tens place, use the dash (

) when there are spaced numberings. For example,21
istwentyone
.
 When in the tens place, use the dash (

 When in the hundreds place, add
and
to the string if the tens and/or the ones place aren't empty. For example,125
isone hundred and twentyfive
.
 When in the hundreds place, add

 If the number is negative, use
negative
before the number. For example,13
isnegative thirteen
.
 If the number is negative, use
 If the target character is a letter:

 The input should only take 1 letter.

 When put on the result, the letter must be capitalized.
 If the target character is a symbol:


+
isplus
.




isminus
.



*
istimes
.



/
isdivided by
.



=
isequals
oris equal to
.

 Parentheses shouldn't be inputted.
 Whitespaces are ignored.
 This is codegolf, so the shortest program for each language wins!
Test Cases
// Input
# Output
14
fourteen
1+2
one plus two
53 /3
fiftythree divided by three
6 +2* 7 =20
six plus two times seven equals twenty
8*8*8 * 8 * 8 1
eight times eight times eight times eight times eight minus one
= 4
is equal to four
x + y = z
X plus Y equals Z
5 + 6
negative five plus negative six
1 comment thread