Classifichiamo i dati in tre categorie: dati leggibili dall'uomo (di solito testi, che variano da libri a programmi), dati che devono essere letti da computer e altri dati (analisi di immagini o suoni).
Per la prima categoria, dobbiamo trasformarli in qualcosa che un computer può usare. Dato che le lingue usate dagli umani in genere possono essere catturate relativamente bene dai parser, di solito usiamo i parser per questo.
Un esempio di dati nella terza categoria potrebbe essere un'immagine digitalizzata di una pagina di un libro che si desidera analizzare nel testo. Per questa categoria, hai quasi sempre bisogno di conoscenze molto specifiche sui tuoi input, e quindi hai bisogno di un programma specifico per analizzarli. La tecnologia di analisi standard non ti porterà molto lontano qui.
La tua domanda riguarda la seconda categoria: se disponiamo di dati binari, è quasi sempre un prodotto di un programma per computer, destinato a un altro programma per computer. Ciò significa immediatamente anche che il formato in cui si trovano i dati è scelto dal programma responsabile della sua creazione.
I programmi per computer producono quasi sempre dati in un formato che ha una struttura chiara. Se analizziamo alcuni input, stiamo essenzialmente cercando di capire la struttura dell'input. Con i dati binari, questa struttura è generalmente molto semplice e facile da analizzare dai computer.
In altre parole, normalmente è un po 'uno spreco capire la struttura di un input per il quale già conosci la struttura. Poiché l'analisi non è gratuita (richiede tempo e aggiunge complessità al programma), è per questo che l'utilizzo di lexer / parser su dati binari è "così sbagliato".