파싱(parsing: 구문 분석)은 하나의 프로그램을 런타임 환경(ex. 브라우저 내 자바스크립트 v8엔진 등)이 실제로 실행할 수 있는 내부 포맷으로 분석하고 변환하는 것을 의미한다. 즉, 파싱은 문서의 내용을 토큰(token)으로 분석하고, 문법적 의미와 구조를 반영한 파스 트리(parse tree)를 생성하는 과정.
브라우저는 HTML을 DOM TREE로 파싱한다. HTML parsing에는 토큰화와 tree 구조가 포함된다. HTML token에는 시작 태그와 마침 태그가 포함되며, 속성 이름과 값도 포함된다. 형식을 잘 갖춘 문서라면 파싱은 직관적이고 빠르게 진행될 것이다. 파서(parser)는 토큰화된 입력값을 문서에 parsing하며, 다큐먼트 tree를 구성한다.
HTML parser가 이미지와 같은 논블로킹 자료(non-blocking resources)를 발견할 경우, 브라우저는 해당 자료를 요청하고 계속 parsing을 진행한다. 파싱은 CSS 파일이 발견될 때까지 계속될 수 있으나, <script> tag는 렌더링을 차단하고, HTML parsing을 중단시킨다.(-async, defer 속성이 없을 경우)
브라우저가 CSS 스타일을 발견할 경우, 텍스트를 CSS 스타일링 레이아웃과 페인팅에 사용하는 데이터 구조인 Object Model로 parsing한다. 이후 브라우저는 스크린에 콘텐츠를 표시하기 위해 해당 구조로부터 렌더 tree를 생성한다. Javascript 또한 다운로드 되고, parsing 된 이후에 실행된다.
'CS' 카테고리의 다른 글
Object Oriented Programming 객체 지향 프로그래밍 (0) | 2023.01.02 |
---|---|
[SQL] WHERE 1=1 (0) | 2022.12.31 |
[Network] 인터넷 네트워크 구조 (IP,TCP,UDP,DNS,PORT) (0) | 2022.12.30 |
[OAuth] OAuth 2.0 이란 (0) | 2022.10.14 |
mysql-basic-command (0) | 2022.09.13 |