파서 (Parser)
파서에 대해 알아보자
프로그래밍 언어론문서나 데이터의 구조를 해석하여 원하는 값이나 의미 있는 데이터로 변환하는 프로그램 즉, 입력된 데이터를 컴퓨터가 이해할 수 있는 구조로 바꿈
예를 들면,
- XML 파서는 XML 문서를 분석해서 요소, 속성 등 구성 정보를 파악하고 필요한 데이터 추출
- JSON 파서는 JSON 형식의 데이터를 프로그램이 활용할 수 있는 객체 등으로 변환
데이터 처리 방식
- 데이터 입력
- 데이터 분해 (토큰화)
- 데이터를 토큰(작은 단위)로 쪼갬
- 대표적으로 구문자, 문법 규칙, 정규표현식을 활용
- e.g.) JSON의
{}, XML의<tag></tag>등
- 문법 및 구조 분석
- 자신만의 규칙 혹은 통계적 모델을 기준으로 구조를 분석
- 텍스트 기반은 정규표현식이나 스트링 파싱, 마크업 언어는 전용 파서를 사용
- 데이터 변환 및 추출
- 파싱된 내용을 구조화된 데이터로 변경
- 출력 (구조화된 데이터 반환)
파서가 만드는 데이터 구조
| 데이터 포맷 | 변환 전 | 파서가 만들어내는 구조 예시 |
|---|---|---|
| 텍스트 | "2024-07-16" | 문자열(str), 날짜 객체(DateTime) |
| CSV | name,age\nTom,25 | 2차원 배열(List of lists), 오브젝트 배열 |
| XML | <user><id>1</id></user> | 트리(Tree) 구조, 노드(객체), 딕셔너리(dict) |
| JSON | { "id":1, "name":"Tom" } | 딕셔너리(dict), 객체(Object) |
| HTML | <div>Text</div> | 트리 구조(노드, Element), 딕셔너리 |
- 트리 구조
- 대표적으로 XML, HTML 파싱후 생성되는 구조
- 각 요소와 속성이 계층적으로 연결된 객체로 변환
- 딕셔너리, 오브젝트
- JSON 파싱 결과, key-value 쌍 형태로 구조화
- 대부분의 언어에서 Map/Object 형으로 변환
- 배열, 리스트
- CSV, JSON의 배열 데이터 등에서 활용
e.g.) JSON 파싱
-
입력
{ "id": 1, "name": "Tom", "roles": ["admin", "user"] } -
파싱 후
{ "id": 1, "name": "Tom", "roles": ["admin", "user"] }