기억하기 위한 기록

파싱이란? Parsing 의 뜻은 무엇일까? 본문

Front-end/js

파싱이란? Parsing 의 뜻은 무엇일까?

곽구 2020. 12. 16. 15:03

파싱 (Parsing : 구문분석) 은 하나의 프로그램을 런타임환경 (예를 들면, 브라우저 내 자바스크립트 엔진)이 실제로 행할 수 있는 내부 포맷으로 분석하고 변환하는 것을 의미합니다.

즉, 파싱은 문서의 내용을 *토큰(token)으로 분석하고, 문법적 의미와 구조를 반영한 *파스트리(parse tree)를 생성하는 과정입니다.

 

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

ex) JAVA에서 보면

public static void main(String [] args{ ... }

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

 

* 파스트리란 ? 어떤 문장을 트리구조로 나타낸 것을 의미한다. 파스트리, 파싱트리, 어원트리는 모두 같은 말이다.

여기서 트리란? 자료구조의 하나로서 일종의 그래프이다.     

 

브라우저는 HTML을 DOM트리로 파싱합니다. HTML파싱에는 토큰화와 트리구조가 포함됩니다.

HTML 토큰에는 시작태그와 마침태그가 포함되며, 속성이름과 값도 포함됩니다. 형식을 잘 갖춘 문서라면 파싱은 직관적이고 빠르게 진행 될 것입니다. 파서(parser)는 토큰화된 입력값을 문서에 파싱하며, 다큐먼트 트리를 구성합니다.

 

HTML 파서가 이미지와 같은 *비블로킹 자료(non-blocking resources)를 발견할 경우, 브라우저는 해당 자료를 요청하고 계속 파싱을 진행합니다. 파싱은 CSS파일이 발견할 떄까지 계속될 수 있으나, <script>태그(특별히 *async 또는 defer 속성이 없는)는 렌더링을 차단하고, HTML파싱을 중단시킵니다.

 

브라우저가 CSS스타일을 발견할 경우, 텍스트를 CSS스타일링 레이아웃과 페인팅에 사용하는 데이터구조인 Object Model (또는 cssom)으로 파싱합니다. 이후 브라우저는 스크린에 콘텐츠를 표시하기 위해 해당 구조로부터 렌더트리를 생성합니다. 자바스크립트 또한 다운로드되고, 파싱한다음, 실행됩니다.

 

자바스크립트 파싱은 메소드가 호출도는 과정인 컴파일타임 이나 파서가 호줄 될 떄 진행됩니다.

 

 

 

 

 

 

 

// 트리 잠고자료

gmlwjd9405.github.io/2018/08/12/data-structure-tree.html

 

 

// I/O 프로그래밍 자료

ju3un.github.io/network-basic-1/

 

블로킹(Blocking), 논블로킹(Non-Blocking) - I/O 모델 (1)

당분간 네트워크 관련 개념에 관한 포스팅으로 정리를 하려고 한다. 일단 네트워크 프로그래밍에서 가장 기본적인 개념에 대해 정리할 예정이다. 이번 포스팅에서는 Blocking/Non-Blocking Model에 대

ju3un.github.io

 

'Front-end > js' 카테고리의 다른 글

기본개념  (0) 2021.11.18
[웹사이트] 반응형 헤더 만들기 (toggle 버튼 간단 js활용)  (0) 2021.05.25