should all these classes have a parent class of Token, or something similar? It might make the stack for the parser a little bit simpler and we could avoid duplicate code in these classes (identifier, noterminal, terminal)