New proposal for #3:
* removed the generic from last proposal
* add all tokens available in grammar
* removed the unary think, because this is not decidable by lexer
* no isNumToken() etc in TokenType because this is only relevant for four token
  names, therefore to much boilplating