Updated the lexer to take a simpler TokenDefinition data structure instead of inherited classes implementing an interface