์ธํฐํ๋ฆฌํฐ ํจํด๋์์ธ ํจํด
[๋์์ธ ํจํด] ์ธํฐํ๋ฆฌํฐ ํจํด
์ธํฐํ๋ฆฌํฐ ํจํด(Interpreter Pattern)
์ธํฐํ๋ฆฌํฐ ํจํด์ ๋ฌธ๋ฒ ๊ท์น์ด ์๋ ์ด๋ค ์ธ์ด๋ฅผ ํด์ํ๋ ํด์๊ธฐ๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ํ๋ ํจํด์ด์์. ๋ํ์ ์ผ๋ก SQL Parser, ์ ๊ท์ ์์ง, ๊ตฌ๋ฌธ ํด์๊ธฐ(Typescript ๊ฐ์ ์ธ์ด ํด์) ๊ฐ์ ๊ฒ๋ค์ด ์์ด์.
์ธํฐํ๋ฆฌํฐ ํจํด ๊ตฌ์กฐ
์ธํฐํ๋ฆฌํฐ ํจํด์ ํฌ๊ฒ 4๊ฐ์ง ์์๋ก ๊ตฌ์ฑ๋ผ์. Abstract Expression , Terminal Expression, Nonterminal Expression, Context๋ก ์ด๋ฃจ์ด์ ธ์.
๋ชจ๋ ํํ์์ด ๋ฐ๋ผ์ผํ interpret ๋ฉ์๋๋ฅผ ์ ์ํด์. ๋ฌธ๋ฒ ๊ตฌ์กฐ์ ์ต์ ์ธํฐํ์ด์ค ์ญํ ์ ํด์.
๋ฌธ๋ฒ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ ๋จ์(ํ ํฐ)์ ํด์ํ๋ ํด๋์ค์์. ์ซ์, ๋จ์ด ๊ฐ์ ๋จ์ผ ํ ํฐ์ ํด์ํด์. Interpreter ํจํด์ ๋๋ถ๋ถ์ด ์ด Terminal Expression์ผ๋ก ๊ตฌ์ฑ๋ผ์.
๋ณดํต ๋ฌธ๋ฒ ๊ท์น์ ์กฐํฉํ๋ ํํ์ ์ด์์. (+, -, *, %) ์ฌ๋ฌ Expression์ ์กฐํฉํด์ ๋ ํฐ ์๋ฏธ๋ฅผ ๊ตฌ์ฑํด์. ์ฌ๊ท์ ์ผ๋ก ํ์ Expression์ interpret ํธ์ถํด์ ์๋ฏธ๋ฅผ ๊ณ์ฐํด์.
ํด์ ๊ณผ์ ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ด์. ๋ณ์์ ๊ฐ, ํ๊ฒฝ ์ค์ , ์บ์ ๋ฑ์ ์ ์ฅํด์ ํ์ํ๋ฉด Expression์ ์ ๊ณตํด์.
์์๋ค
์ด๋ฒ์๋ ์ฝ๋ ์์๋ฅผ ์ง์ ๊ฐ์ ธ์ค์ง๋ ์์๊ฒ์. ์๋ํ๋ฉด ๊ฐ๋
์ ์ธ ์ดํด๊ฐ ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด์์. ์ด๊ฑด ํ๋ก๊ทธ๋๋จธ๋ก์ ๊ฐ์ฅ ๊ธฐ์ด์ ์ด๊ณ ์ค์ํ ๊ฐ๋
์ด๋ผ๊ณ ์๊ฐํด์. ๋ชจ๋ ์ธ์ด๊ฐ ๊ฑฐ์ ๊ฐ์ ๊ณผ์ ์ผ๋ก CPU์์ ์คํ ๊ฐ๋ฅํ๋๋ก ๊ธฐ๊ณ์ด๋ก ํน์ ์ธํฐํ๋ฆฌํฐ๋ฅผ ํตํ ์คํ์ ์ํ ๋ฐ์ดํธ ์ฝ๋๋ก ๋ฒ์ญํ ์ ...