[TIL] Parsing (파싱, 구문분석)

yurinnn·2024년 2월 7일
0

Today I Learn

목록 보기
6/11

파싱(Parsing)이란?

컴퓨터 과학 및 프로그래밍에서 특정 형식으로 구성된 데이터를 분석하고 그 의미를 이해하는 과정이다. 파싱은 주로 텍스트 기반 데이터를 해석하거나, 프로그래밍 언어의 소스 코드를 이해하거나, 문서를 구조화하고 내용을 추출하는 데 사용된다.
파싱은 compile 과정의 일부분으로, 프로그램을 compile하는 과정에서 특정 프로그래밍 언어가 제시하는 문법을 잘 지켜서 작성하였는지 compiler가 검사하는 것이다.
즉, 일련의 문자열을 의미있는 token(어휘 분석의 단위) 으로 분해하고 그것들로 이루어진 파스트리(Parse tree, 또는 Parser Tree, node tree)를 만드는 과정이다.

✔️ 파서(parser)란?

파서(parser)는 인터프리터나 컴파일러의 구성 요소 중 하나로, 입력 토큰에 내재된 자료 구조를 빌드하고 문법을 검사한다. 파서가 사용하는 대표적인 자료구조로 파서 트리(Parser Tree)가 있다.

  • 파서는 일련의 입력 문자로부터 토큰을 만들기 위해 별도의 낱말 분석기를 이용하기도 한다.
  • 파서는 수작업으로 프로그래밍되며 도구에 의해 (일부 프로그래밍 언어에서) (반)자동적으로 만들어질 수 있다.

결과적으로는 기계어로 바꾸기 직전단계까지의 과정을 파서가 담당하고 있는 것이다. 파서가 파싱을 통해 파싱트리가 완성되면 파싱트리를 가지고 컴파일러는 기계어로 변환하는 작업에 들어간다.

ex) XML parser는 XML 문서가 XML 문법에 맞게 작성되었는지 검사한다. XML 문서를 읽고 해석하여 태그명, 속성명, 속성값 및 엘리먼트 내용을 분리해 주는 프로그램이다.

✔️ 토큰(Token) 이란?

언어가 사용하는 기본 '단어'를 말한다. 토큰은 구문적으로 의미를 갖는 최소의 단위이며 우리가 작성하는 프로그램은 모두 이러한 토큰으로 이루어진다.

ex) JAVA에서 예시로 public static void main(String [] args{ ... }에서 토큰은 public, static, void, main, (, String, [, ], args, ), { ... 등이며 이러한 토큰을 제외한 공백문자(스페이스, 탭문자, 개행문자 등)는 문자열 내에서 사용되는 경우가 아닌 이상은 모두 아무런 의미를 가지지 않는다.

✔️ 파싱은 다양한 문맥에서 사용된다. 아래에서 예시를 확인해보자 :

  1. 문자열 파싱
    문자열에서 특정 데이터를 추출하거나 원하는 형식으로 변환하는 프로세스이다. 예를 들어, CSV 파일을 파싱하여 표 데이터를 추출하거나, JSON 문자열을 객체로 변환하는 것이 문자열 파싱의 예시이다.

  2. 언어 파싱
    프로그래밍 언어 또는 마크업 언어의 소스 코드를 해석하고, 구문 오류를 확인하며, 실행 가능한 코드로 변환하는 프로세스를 포함한다. 이는 컴파일러나 인터프리터에서 주로 수행된다.

  3. HTML 및 XML 파싱
    브라우저는 HTML을 DOM 트리로 파싱한다.
    웹 페이지의 HTML 또는 XML 문서를 해석하여 웹 브라우저가 문서를 렌더링하거나, 웹 스크래핑 도구가 웹 사이트에서 데이터를 추출하는 데 사용된다.

  4. 구문 분석 (Syntax Parsing)
    자연어 처리에서 텍스트 문서를 분석하여 문장 구조, 어휘, 문법, 의미 등을 이해하는 과정이다. 이를 통해 검색 엔진이 검색 쿼리를 이해하거나 기계 번역 시스템이 언어를 해석하는 데 사용된다.

  5. 데이터 포맷 파싱
    특정 데이터 형식(예: XML, JSON, YAML)을 분석하여 데이터를 추출하고 처리하는 프로세스이다. 이러한 형식은 데이터 교환 및 저장에 사용되며, 응용 프로그램 간에 데이터를 공유할 때 중요한 역할을 한다.

profile
슬기로운 개발 생활

0개의 댓글

관련 채용 정보