We should be able to handle empty strings.
Provide a helpful error if unrecognized characters are found.
Emit useful errors for undefined variables / functions.