그냥 블로그

[CS] 파싱/ 컴파일러 이론 본문

CS/기타

[CS] 파싱/ 컴파일러 이론

코딩하는 공대생 2024. 7. 17. 13:40
반응형
Parse란?

 

파싱이란 컴퓨터 과학 및 프로그래밍에서 특정 형식으로 구성된 데이터를 분석하고 그 의미를 이해하는 과정을 의미한다. 

프로그래밍 언어 소스 코드를 이해하거나 문서를 구조화하고 내용을 추출하는데 사용된다. 

 

 

1. 문자열 파싱 

  • 문자열에서 특정 데이터를 추출하거나 원하는 형식으로 변환하는 프로세스 ex) csv를 파싱해 표 데이터 추출, JSON 문자열을 객체로 변환하는 것. 

2. 언어 파싱

  • 프로그래밍 언어 또는 마크업 언어의 소스 코드를 해석하고, 구문 오류 확인, 실행 가능한 코드로 변환하는 프로세스. 컴파일러나 인터프리터

3. HYML/XML 파싱

  • 웹 페이지의 HTML 또는 XML 문서를 해석해 웹 브라우저가 문서를 렌더링하거나 웹 스크래핑 도구가 웹 사이트에서 데이터 추출. 

4. 구문 분석 (Parsing)

  • 자연어 처리에서 텍스트 문서를 분석해 문장 구조, 어휘, 문법, 의미 등 이해하는 과정 

5. 데이터 포맷 파싱

  • 특정 데이터 형식 (xml, json, yaml)을 분석해 데이터 추출, 처리 프로세스 

 

컴파일러 이론 (Toknizer, Lexer, Parser )

 

컴파일러 ? 소스코드를 기계어로 바꿔주는 역할

이때 구문 분석 -> 최적화 -> 코드생성 -> 링킹 과정을 진행하는데, 

구문 분석에서 소스코드는 Tokenizer, Lexer, Parser를 차례로 지나가며 구문분석을 한다. 

 

Toknizer

어떤 구문을 토큰화 하는 역할을 한다. 

토큰이란, 어휘 분석의 단위로 단어, 단어구, 문자열 등 의미있는 단위로 정해진다.

토큰은 요소들을 구조적으로 표현할 수 있도록 도와줌. 

 

Lexer

 

Tokenizer로 쪼개진 토큰들의 의미를 분석하는 역할이다.

Tokenizer를 거치며 의미있는 단위로 쪼개지고, Lexer를 거치며 그 결과의 의미를 분석하는 과정을 통틀어 lexical Analyze라 한다. 

 

Parser

Parser는 Lexical Analyze된 데이터를 구조적으로 나타낸다. 

이 과정에서 데이터가 올바른지 검증하는 역할도 수행하는데, 이를 통틀어 Syntax Analyze라 한다.

Parser에 의해 도출된 결과는 AST 형태로 생성된다. 

 

AST (Abstract Syntax Tree)

 

AST는 이름 그대로 위 과정을 거치며 분석된 구문을 트리 형태로 나타내는 자료구조다. 분석된 소스를 컴퓨터가 이해할 수 있는 구조로 변경시킨 트리. 

 

 

=> 요약 : 
그러니까, 컴파일러는 토크나이저 과정에서 코드를 읽고 각각 토큰화 하고, (INT 이런거 아닐까) 

Lexer에서 토큰화한 내용에 의미를 부여한다. 

그러면 그 부여된 의미를 파싱을 통해서 트리 형태로 제작한다. 

 

 

 

 

 

 

https://trumanfromkorea.tistory.com/79

 

[컴파일러 이론] Tokenizer, Lexer, Parser

[컴파일러 이론] Tokenizer, Lexer, Parser 컴파일러는 소스코드를 기계어로 바꿔주는 역할을 합니다. 이 때 구문분석 -> 최적화 -> 코드생성 -> 링킹 의 과정이 진행됩니다. 구문분석 과정에서 소스코드

trumanfromkorea.tistory.com

https://edykim.com/ko/post/the-super-tiny-compiler/

 

아주 조그마한 컴파일러 만들기 - 용균

프로그래밍을 한다면 컴파일러는 빼놓을 수 없는 부분입니다. 항상 사용하지만 어떻게 내부적으로 구현되어 있는지는 잘 알기 어려울 수 있습니다. 이 글은 작은 컴파일러를 직접 만들어보는

edykim.com