Treat numbers as numbers in expressions

This is is revert of the following two reverts
41155259edd18ef56a88d9b05370292bb9c79a38
d03bd9b68a0a0cff068eac28dbd7292e9ab5774f

The original commit had an issue where '' was treated as 0.