[개념] 파싱(Parsing)

iamhyunji·2022년 5월 5일
3
post-thumbnail

💡 파싱(Parsing)


파싱(Parsing)
= 구분 분석
= 분해와 분석 후 목적에 맞춰 구조를 결정하는 것

  • 문장이 이루고 있는 구성 성분을 분해하고 분해된 성분의 위계 관계를 분석하여 구조를 결정하는 것
  • 데이터를 분해 분석하여 원하는 형태로 조립하고 다시 빼내는 프로그램
  • 웹상에서 주어진 정보를 내가 원하는 형태로 가공하여 서버에서 불러들이는 것
  • 어떤 페이지(문서, html 등)에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출가공하는 것
  • 파서(parser)는 컴파일의 일부로서 원시 프로그램의 명령문이나 온라인 명령문, HTML 문서 등에서 Markup Tag 등을 입력으로 받아들여서 구문을 해석할 수 있는 단위와 여러 부분으로 분할해주는 역할을 하는데, 이러한 파서(parser) 역할을 하는 컴퓨터가 구문 트리(parse tree)로 재구성하는 구문 분석 과정

💡 파서(Parser)


파싱(Parsing)을 하는 역할
= 구분 분석을 하는 역할
= 분석 및 분해 후 목적에 맞춰 구조를 결정하는 역할

  • 컴파일러(compiler)의 일부
  • 원시 프로그램의 명령문이나 온라인 명령문, HTML 문서 등에서 Markup Tag 등을 입력(흔히 텍스트)으로 받아들여서 구분을 해석할 수 있는 단위로 여러 부분으로 해석해 주는 역할을 함
  • Compiler나 Interpreter에서 원시 프로그램을 읽어 들여, 그 문장이 구조를 알아내는 Parsing을 행하여 주는 프로그램
  • 다른 언어에서 해석하기 쉽게 작은 요소로 데이터를 분해하는 컴파일러나 인터프리터 컴포넌트
  • 토큰의 시퀀스 형태의 입력, 명령어와 상호작용 또는 프로그램 지시를 받아 프로그램의 다른 컴포넌트에서 사용 가능한 형태로 분해하는 것

💡 파싱 과정/방법


  1. 어휘 분석 (Lexical Analysis)
  • 입력된 문자열 스트림으로부터 토큰을 생성하기 위해 사용됨
  • 작은 컴포넌트들을 의미있는 단위로 분해하기 위함
    ❗️ 토큰? 프로그램에서 의미가 있는 가장 작은 형태이다
    ex) +, -, *, new 등
  1. 구문 분석 (Syntactic Analysis)
  • 생성된 토큰이 의미가 있는 형태인지 확인
  • 문맥-자유 문법(context-free grammar)를 사용함
  • 의미를 형성하고 토큰이 있어야 할 순서를 정의함
    ❗️ 문맥-자유 문법(context-free grammar) ?
    • 정규 문법에서는 생성규칙이 두 가지 면에서 제약되어 있음
    • 생성규칙의 좌변은 반드시 하나의 변수이어야 하는데 반하여, 우변은 반드시 특별한 형태이어야 함
    • 따라서 좀더 강력한 문법을 만들기 위해서는 이러한 제약 중 일부를 완화하여야 함
    • 생성규칙의 좌변의 제약은 그대로 두고, 우변에는 어떤 문자열이든 허용하는 것
  1. 의미 분석 (Semantic Analysis)
  • 파싱의 최종 단계
  • 의미있고, 유효한 표현들이 정해짐

💡 적용되는 사례


  • Java와 같은 프로그밍 언어
  • HTML과 XML
  • 상호작용 데이터 언어와 객체 정의 언어
  • SQL과 같은 데이터베이스 언어
  • 모델링 언어
  • 스크립터 언어
  • HTTP와 인터넷 원격 함수와 같은 프로토콜

✍🏻 오늘의 정리


  • 파싱(Parsing)은 분해하고 분석하여 목적에 맞게 구조를 결정하는 것
  • 파싱하는 역할을 파서라고 부름
  • 파싱 방법
  • 파서가 적용되는 다양한 사례

🔗 참고자료


profile
Lv0. 웹 개발 (❤️❤️❤️🤍)

0개의 댓글