unsigned -> size_t in loop
getting rid of an extra mapping layer for terminal symbols
added token stream to encapsulate the current token state and the
forging of tokens in error handling / made the token class imutable