Далі класифікуємо дані на три категорії: дані, які читаються людьми (зазвичай це тексти, що відрізняються від книг до програм), дані, призначені для читання на комп’ютерах, та інші дані (розбір зображень або звуку).
Для першої категорії нам потрібно переробити їх у те, що комп’ютер може використовувати. Оскільки мови, якими користуються люди, як правило, можуть бути досить чітко захоплені парсерами, ми зазвичай використовуємо для цього аналізатори.
Прикладом даних третьої категорії може бути відскановане зображення сторінки з книги, яку потрібно розібрати в текст. Для цієї категорії вам майже завжди потрібні дуже конкретні знання про ваш внесок, і тому вам потрібна конкретна програма для її розбору. Стандартна технологія розбору не приведе вас сюди дуже далеко.
Ваше запитання стосується другої категорії: якщо ми маємо дані, що є двійковими, це майже завжди продукт комп’ютерної програми, призначений для іншої комп'ютерної програми. Це негайно також означає, що формат, в якому є дані, вибирається програмою, відповідальною за їх створення.
Комп'ютерні програми майже завжди виробляють дані у форматі, який має чітку структуру. Якщо ми проаналізуємо деякий вхід, ми, по суті, намагаємося з’ясувати структуру введення. З двійковими даними ця структура, як правило, дуже проста і легко розбирається за допомогою комп'ютерів.
Іншими словами, це звичайно трохи марно розібратися в структурі входу, для якого ви вже знаєте структуру. Оскільки синтаксичний аналіз не є безкоштовним (це вимагає часу і додає складності вашій програмі), саме тому використання лексерів / аналізаторів на бінарних даних "так неправильно".