파서 컴비네이터로 텍스트 파싱 간단하게
원제 Parser Combinators
116 포인트댓글 51
Key Point
파서 컴비네이터 기법의 실제 구현으로, 복잡한 텍스트 파싱을 작은 함수 조합으로 간결하게 작성하는 방식을 보여준다.
핵심 요약
- 파서 컴비네이터는 작은 파서들을 조합해 복잡한 파싱 로직을 구축하는 기법이다.
- 기본 파서들로 정수, 소수, 문자열, 공백 등을 처리하는 pInteger, pDecimal, pString, pWhitespace를 정의한다.
- pString은 정확한 텍스트 매칭을 수행하고, pInteger는 정규식으로 연속된 숫자를 파싱한다.
- pDecimal은 정수 또는 소수점이 포함된 숫자 형식을 처리하며, 선택적 소수 부분을 지원한다.
- IPv4 주소 같은 복합 구조는 pByte(0~255 범위의 정수), pDot(점 문자), 그리고 pSeq로 이들을 순차적으로 조합해 파싱한다.
- pMap 함수로 파싱 결과를 변환하거나 검증할 수 있으며, IPv4 주소는 네 바이트를 올바른 형식으로 조합한다.
- 이 접근법으로 PING 응답처럼 반복되는 구조를 효율적으로 정의하고 재사용할 수 있다.