22.02.22 ํ์ ์คํฌ๋ฆฝํธ์ ์์
๐ ์ฑ
์ ์ฝ๊ฒ ๋ ๊ณ๊ธฐ
4์ฃผ ํ๋ก์ ํธ๋ฅผ ํ์ ์คํฌ๋ฆฝํธ๋ก ์งํํ๋ค.
ํ์ ์คํฌ์ ํธ๋ฅผ ๋์ ํ ์ด์ ๋, ํ๋ก๊ทธ๋จ์ด ๋ณต์กํด์ง ๊ฒ์ ์ฐ๋ คํด์๋ค.
์ฑ์ ์๋น ๋ถ๋ถ์์ ๋ฌธ์์ด, ์ซ์, ๋ฐฐ์ด ๋ฑ ๋ค์ํ ์๋ฃํ์ด ๊ฐ์ผ๋ก ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ data๋ก ๋ค๋ค๊ธฐ๋๋ฌธ์ด๋ค.
๊ฐ์ฒด ๋ด์ ๊ฐ์ ์กฐ์ํ๋ฉด์ ๋ฐ์ํ๋ ๋ค์ํ ์ค๋ฅ๋ค์ ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ก์์ค๊ฑฐ๋ผ ์๊ฐํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ํ๋ก๊ทธ๋จ์ ์คํํด์ผ๋ง ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ์ง๋ง
ํ์ ์คํฌ๋ฆฝํธ๋ ์ปดํ์ผ ๋จ๊ณ์์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋ฐ์ ๋ ํจ๊ณผ์ ์ผ๊ฑฐ๋ผ ํ๋จํ๋ค.
์์์ ์ข์์ผ๋ ! ์ธ์ด๋ฅผ ์ถฉ๋ถํ ์์งํ ์๊ฐ ์์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋๋ ํ๋ ๋ด๋ด ์ฐ์ฐํ๋ค.
๋ด๊ฐ ์๋ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ํ์ ๋ฒ์ ์์์๋ง ๋งด๋๊ณ ์๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
ํ์ ์คํฌ๋ฆฝํธ์ ์ฅ์ ์ ๋ฐฑ๋ถ ํ์ฉํ์ง ๋ชปํ ๋๋์ด ๋ค์๊ณ , ์ ์ ํ์ ์ธ์ด๋ฅผ ๊ณต๋ถํ ํ์์ฑ๋ ๊นจ๋ฌ์๋ค.
์ข ๋ ๊ทผ๋ณธ์ ์ธ ๊ฐ๋ ์ ๋ค์ง๊ณ ์ถ์ด์ ์ฑ ์ ์ฐพ๊ฒ ๋์๋ค.
(๊ทธ ์ธ ๋๊ธฐ์ค์ธ ์ฑ ๋ค : ์๊ฐํ๋ ํ๋ก๊ทธ๋๋ฐ, introduction to Algorithm)
๐ก ์ปดํ์ผ๋ฌ
์ปดํ์ผ๋ฌ๋ ์์ค์ฝ๋๋ฅผ ํ์ฑํด Abstract Syntax Tree(AST : ์ถ์ ๋ฌธ๋ฒ ํธ๋ฆฌ)๋ก ๋ณํ์ํจ๋ค.
๊ทธ๋ฆฌ๊ณ AST๋ฅผ bytecode(๋ฐ์ดํธ์ฝ๋)๋ก ๋ณํํ ํ runtime(๋ฐํ์)์๊ฒ ๋๊ฒจ์ค๋ค.
๋ฐํ์์ ์ด๋ฅผ ํ๊ฐํด ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ค.
→ ํ๋ก๊ทธ๋จ์ ์คํํ๋ค :
์ปดํ์ผ๋ฌ๊ฐ ์์ค์ฝ๋๋ฅผ ํ์ฑํด AST๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ ๊ฒ์ ๋ฐํ์์ด ํ๊ฐํ๋๋ก ์ง์ํ๋ค.
โ ํ๋ก๊ทธ๋จ์ด AST๋ก ํ์ฑ๋๋ค.
โ AST๊ฐ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ๋๋ค.
โ ๋ฐํ์์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ํ๊ฐํ๋ค.
๐ ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ (TSC)
ํ์ ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ์ธ์ด์ ๋ค๋ฅธ ์ ์,
์ปดํ์ผ๋ฌ๊ฐ ์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ๋ ๊ฒ์ด ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ๋ณํํ๋ค๋ ๊ฒ์ด๋ค ๐ฎ
๋ํ ๊ฒฐ๊ณผ ์ฝ๋๋ฅผ ๋ด๋๊ธฐ ์ ์ ํ์ ํ์ธ์ ๊ฑฐ์น๋ค. (ํ์ ๊ฒ์ฌ๊ธฐ)
๐ TSC๊ฐ ์ํ (์ปดํ์ผ๋ฌ)
โ ํ์ ์คํฌ๋ฆฝํธ ์์ค → ํ์ ์คํฌ๋ฆฝํธ AST
โ ํ์ ๊ฒ์ฌ๊ธฐ๊ฐ AST ํ์ธ
โ ํ์ ์คํฌ๋ฆฝํธ AST → ์๋ฐ์คํฌ๋ฆฝํธ ์์ค
--------------------------------------------------------
๐ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ํ (์ปดํ์ผ๋ฌ & ๋ฐํ์)
โ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค → ์๋ฐ์คํฌ๋ฆฝํธ AST
โ AST → ๋ฐ์ดํธ์ฝ๋
โ ๋ฐํ์์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ํ๊ฐ
โ๐ป ์ค๋ฅ ๋ฐ๋ก ์ก๊ธฐ
๐งจ ์ด๋ ธํ ์ด์ (value : type ํํ์ ํ์ ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ)์ ๋ ์ ์์ผ๋ฉด ๋ง์ด ์ ๋ ๊ฒ ์ข๋ค ?
๋ด๊ฐ ์๋ชป ์๊ฐํ๋ ๋ถ๋ถ.
a = 1; ์ฒ๋ผ ๋น์ฐํ ์ฝ๋์๋ a : number = 1; ์ด๋ ธํ ์ด์ ํํ๋ก ์ ์ธํด์ฃผ์๋ค.
ํ์ ์คํฌ๋ฆฝํธ์๊ฒ ์ด๋ ๊ฒ ๋ช ์์ ์ผ๋ก ํ์ ์ ์๋ ค์ค ์๋ ์์ง๋ง ํ์ ์คํฌ๋ฆฝํธ ํผ์ ํ์ ์ ์ถ๋ก ํ ์๋ ์๋ค !!!
๊ผญ ํ์ํ ๋์๋ง ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๊ณ , ๋๋จธ์ง๋ ํ์ ์คํฌ๋ฆฝํธ๊ฐ ํ์ ์ ์ถ๋ก ํ๊ฒ๋ ๋๋๋ ๊ฒ ์ข๋ค.