Verileri üç kategoriye ayıralım: insanlar tarafından okunabilen veriler (genellikle metinler, kitaplardan programlara değişir), bilgisayarlar ve diğer veriler tarafından okunması amaçlanan veriler (görüntü veya ses ayrıştırma).
İlk kategori için, bunları bir bilgisayarın kullanabileceği bir şey olarak işlememiz gerekir. İnsanlar tarafından kullanılan diller ayrıştırıcılar tarafından genellikle iyi yakalandığından, bunun için genellikle ayrıştırıcılar kullanırız.
Üçüncü kategorideki verilere örnek olarak, metinden ayrıştırmak istediğiniz bir kitabın dışındaki bir sayfanın taranmış görüntüsü verilebilir. Bu kategori için, girdileriniz hakkında neredeyse her zaman çok özel bilgiye ihtiyacınız vardır ve bu nedenle onu ayrıştırmak için belirli bir programa ihtiyacınız vardır. Standart ayrıştırma teknolojisi sizi bu kadar ileri götürmez.
Sorunuz ikinci kategori hakkında: ikili verilerimiz varsa, neredeyse her zaman başka bir bilgisayar programı için tasarlanmış bir bilgisayar programının ürünüdür. Bu, aynı zamanda, verilerin içinde bulunduğu biçimin oluşturulmasından sorumlu program tarafından seçildiği anlamına da gelir.
Bilgisayar programları neredeyse her zaman net bir yapıya sahip formatta veri üretir. Bir girdiyi ayrıştırırsak, temelde girdinin yapısını anlamaya çalışıyoruz . İkili verilerle, bu yapı genellikle çok basittir ve bilgisayarlar tarafından ayrıştırılması kolaydır.
Başka bir deyişle, yapıyı zaten bildiğiniz bir girdinin yapısını bulmak normalde biraz ziyan olur. Ayrıştırma ücretsiz olmadığından (zaman alır ve programınıza karmaşıklık katar), bu nedenle ikili verilerde lexers / ayrıştırıcıları kullanmak 'çok yanlıştır'.