Skip to content

Commit

Permalink
[이용우] 4주차 미션 제출 (#51)
Browse files Browse the repository at this point in the history
  • Loading branch information
wooy0ng authored Apr 28, 2024
1 parent e1fbf87 commit cde0d51
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions 8th_members/이용우/4주차.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# 4주차
### 목차
1. [Lexer](#lexer)
2. [중요한 용어들](#중요한-용어들)
3. [미션](#미션)
- [instaviz로 AST 시각화 해보기](#instaviz로-ast-시각화-해보기)
- ["거의 같음" 연산자를 문법에 추가하고 AlE 타입의 객체를 출력해보기](#거의-같음-연산자를-문법에-추가하고-ale타입의-객체를-출력-해보기)


<br><br><hr>


### Lexer
Lexer는 Tokenizer로 쪼개진 토큰들의 의미를 분석하는 역할을 한다.
Tokenizer를 거치며 의미있는 단위로 쪼개지고,
Lexer를 거치며 그 의미를 분석하는 과정을 통틀어서 Lexical Analyze라고 한다.

> 예를 들어 return 명령어를 분석해보자.
> - return이라는 단어에서 r, e, t, u, r, n은 각각 따로 놓고 보면 아무 의미도 가지지 않는다.
> - Tokenizer를 거치며 return이 의미 있는 단어가 된다. (Tokenizing)
> - Lexer를 거치며 이 토큰은 무언가를 반환하는 명령어임을 인지하게 된다.
>
> 위 과정을 거치며 생성된 오브젝트 {type: 명령어, value: "return", child: []}가 Parser에 전달된다.
<br>

- Tokenizer : 구문에서 의미 있는 요소들을 토큰으로 쪼깸
- Lexer : 토큰의 의미를 분석
- Parser : Lexical analyze된 후의 리턴값인 CST를 AST로 바꿔줌


<br><br><hr>

### 중요한 용어들

| 용어 | 설명 |
|----------| -------------------------------------------------|
|AST | 파이썬 문법과 문장들에 대한 문맥(Context) 있는 트리 표현 |
|CST | 토큰과 심볼에 대한 문맥(Context)이 없는 트리 표현 |
|Parse Tree | CST의 다른 이름 |
|Token | 심볼의 종류 중 하나 |
|Tokenizing | 텍스트를 토큰들로 변환하는 과정 |
|Parsing | 텍스트를 CST나 AST로 변환하는 과정 |

<br><br><hr>

### 미션
#### instaviz로 AST 시각화 해보기

<img width="650" alt="image" src="https://github.com/wooy0ng/wooy0ng/assets/37149278/72258beb-29b9-4703-b936-6f8418d34b7a">


<br><br><hr>

#### ‘거의 같음’ 연산자를 문법에 추가하고 AlE타입의 객체를 출력 해보기

<img width="650" alt="image" src="https://github.com/wooy0ng/wooy0ng/assets/37149278/9414665a-5e55-40a8-ac1a-7831d657014e">

0 comments on commit cde0d51

Please sign in to comment.