데이터를 사람이 읽을 수있는 데이터 (일반적으로 책, 프로그램에 따라 다름), 컴퓨터 및 기타 데이터 (이미지 또는 사운드 구문 분석)가 읽을 수있는 데이터의 세 가지 범주로 분류 해 보겠습니다.
첫 번째 범주의 경우 컴퓨터에서 사용할 수있는 것으로 처리해야합니다. 사람이 사용하는 언어는 일반적으로 파서에 의해 상대적으로 잘 이해 될 수 있으므로 일반적으로 파서를 사용합니다.
세 번째 범주의 데이터 예는 텍스트에서 구문 분석하려는 책에서 페이지의 스캔 이미지입니다. 이 범주의 경우 거의 항상 입력에 대한 매우 구체적인 지식이 필요하므로이를 분석하려면 특정 프로그램이 필요합니다. 표준 파싱 기술은 여기서 멀지 않습니다.
귀하의 질문은 두 번째 범주에 관한 것입니다. 이진 데이터가있는 경우 거의 항상 다른 컴퓨터 프로그램을위한 컴퓨터 프로그램의 제품입니다. 이것은 또한 데이터의 형식이 데이터 생성을 담당하는 프로그램에 의해 선택됨을 의미합니다.
컴퓨터 프로그램은 거의 항상 명확한 구조의 형식으로 데이터를 생성합니다. 입력을 구문 분석 하면 입력 의 구조 를 파악하려고합니다 . 이진 데이터를 사용하면이 구조는 일반적으로 컴퓨터로 매우 간단하고 구문 분석하기 쉽습니다.
다시 말해, 일반적으로 구조를 이미 알고있는 입력 구조를 파악하는 것은 약간의 낭비입니다. 구문 분석이 자유롭지 않기 때문에 (시간이 걸리고 프로그램이 복잡 해짐) 바이너리 데이터에 렉서 / 파서를 사용하는 것이 '너무 잘못'한 이유입니다.