2016-09-18 4 views
1

lex 도구를 배울 때 새로운 프로그래밍 언어를 만드는 것과 같은 텍스트 형식의 소스 파일을 구문 분석하는 데 도움이된다는 것을 알았습니다.이 도구를 사용하여 코덱/디코더 같은 일부 이진 입력 스트림을 분석하는 도구도 함께 사용합니다. .바이너리 형식 소스 파일을 구문 분석하는 데 lex/flex를 사용할 수 있습니까?

lex/flex/yacc/bison은 이러한 요구 사항을 지원합니까? 사용하려면 특수 명령 줄 옵션과 구문이 있습니까?

감사합니다.

답변

1

플렉스 (그리고 제가 익숙한 다른 묵시적 암시)는 NUL 문자를 포함하여 비 ASCII 문자에는 아무런 문제가 없습니다. 빠른 상태 테이블을 요청하지 않는 한 기본값이지만, 8bit 옵션을 사용해야 할 수도 있습니다.

그러나 대부분의 바이너리 형식은 길이가 접두사가 붙은 가변 길이 필드를 사용하며 정규 표현식에서는 표현할 수 없습니다. 게다가, fixed-lengtb 필드가 컨텍스트에 의존하는 것이 일반적입니다. 시작 조건을 사용하여 flex에서 상태 시스템을 구축 할 수는 있지만, 이는 많은 작업이며 시간과 flex의 기능을 낭비 할 수 있습니다.

+1

lex 대신 "length-prefixed variable length"필드가있는 바이너리 파일에 어떤 도구를 추천 하시겠습니까? – Janthelme

관련 문제