parser
-
CS) Tokenizer,Lexer,Parser2023.02.08
CS) Tokenizer,Lexer,Parser
2023. 2. 8. 17:40
728x90
컴파일러
- 컴파일러란 고급언어로 작성된 프로그램을 번역해 기계어로된 프로그램을 만들어 주는 역활을 한다.
- 이때 구문분석 -> 최적화 -> 코드생성 -> 링킹의 과정을 거치는데, 구문분석 과정에서 소스코드는 Tokenizer, Lexer, Parser를 차례로 거친다. 이포스팅에선 구문분석에 대해 알아 보겠다.
Tokenizer, Lexer
- Tokenizer란 어떤 구문에서 의미있는 요소들을 의미있는 단위의 토큰으로 쪼개는 역활을 한며 Lexer는 토큰의 의미를 분석하는 역활을 한다 이두역활을 합쳐 Lexical Analyze라 한다.
- 예를들어 ex) Age is no guarantee of maturity 라는 문장에서 'A','g','e'을 따로 보면 어떠한 의미도없지만 Age라는 하나의 조각을 보면 의미를 갖게된다.
- 이렇게 의미가 있는 토큰 단위로 그 데이터를 Parser에게 넘겨주게 된다.
Parser
- Parser는 Lexical Analyze되어 Tokenizer된 데이터를 구조적으로 나타낸다.
- 이때 Parser에 의해 도출된 결과를 AST(Abstract Syntax Tree)라 한다.
- AST는 위와 같은 구조로 존재하며, Lexical Analyze된 데이터를 Parser를 통해 컴퓨터가 쉽게 이해할수 있는 구조로 나타낸것이며, 구문 분석 단계의 결과이다.
Reference
- Abstract syntax tree
https://en.wikipedia.org/wiki/Abstract_syntax_tree - [컴파일러] 토크나이저, 렉서, 파서 (Tokenizer, Lexer, Parser)
https://gobae.tistory.com/94
728x90
'CS' 카테고리의 다른 글
CS) Functional Programming (0) | 2023.02.08 |
---|---|
CS) Mutable,Immutable (0) | 2023.02.08 |
CS) DOM (0) | 2023.02.08 |
CS) HTML,XML (0) | 2023.02.08 |
CS) 객체지향(OOP) (0) | 2023.02.08 |