Classons les données en trois catégories: données lisibles par l'homme (généralement des textes, allant des livres aux programmes), données destinées à être lues par des ordinateurs et autres données (analyse d'images ou de son).
Pour la première catégorie, nous devons les transformer en quelque chose qu'un ordinateur peut utiliser. Comme les langages utilisés par les humains peuvent généralement être capturés relativement bien par les analyseurs, nous utilisons généralement des analyseurs pour cela.
Un exemple de données dans la troisième catégorie serait une image numérisée d'une page d'un livre que vous souhaitez analyser en texte. Pour cette catégorie, vous avez presque toujours besoin de connaissances très spécifiques sur votre entrée, et donc vous avez besoin d'un programme spécifique pour l'analyser. La technologie d'analyse standard ne vous mènera pas très loin ici.
Votre question concerne la deuxième catégorie: si nous avons des données en binaire, il s'agit presque toujours d'un produit d'un programme informatique, destiné à un autre programme informatique. Cela signifie également immédiatement que le format des données est choisi par le programme responsable de leur création.
Les programmes informatiques produisent presque toujours des données dans un format qui a une structure claire. Si nous analysons une entrée, nous essayons essentiellement de comprendre la structure de l'entrée. Avec les données binaires, cette structure est généralement très simple et facile à analyser par les ordinateurs.
En d'autres termes, il est normalement un peu inutile de comprendre la structure d'une entrée pour laquelle vous connaissez déjà la structure. Comme l'analyse n'est pas gratuite (cela prend du temps et ajoute de la complexité à votre programme), c'est pourquoi l'utilisation de lexers / parsers sur les données binaires est `` si mauvaise ''.