์ปดํ์ผ๋ฌ
- ์์ค์ฝ๋๋ฅผ ํ๊ฒ ์ธ์ด์ ์๋ฏธ๋ก ์ ์ผ๋ก ๋๋ฑํ๊ฒ ๋ฒ์ญํด์ฃผ๋ ํ๋ก๊ทธ๋จ
- ์ด๋ ํ ์ธ์ด์์ ๊ธฐ๊ณ์ด๋ก๋ง ๋ณํํ๋ ๊ฒ์ ๋ถ๋ฅด์ง ์์
- ์์
- C ์ธ์ด ์ปดํ์ผ๋ฌ (๊ธฐ๊ณ์ด๋ก ๋ณํ)
- Silicon Compiler
- ๋ ผ๋ฆฌ ๊ฒ์ดํธ ์ฐ์ฐ์ ์ํํ ๋ ์ฝ๊ฒํ๊ธฐ ์ํด ํด์ฃผ๋ ๋ ์
- OS Command language
- ๋ช ๋ น์ด ์ปค๋งจ๋๋ฅผ ์ดํ๋ถ์, ๊ตฌ๋ถ ๋ถ์์ ํตํด์ OS๊ฐ ์ดํดํ๋ ์ธ์ด๋ก ๋ณํํจ
- Query language
- ์ฟผ๋ฆฌ๋ฌธ ์์ฒด๋ฅผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๊ฐ ์ดํดํ๋ ์ธ์ด๋ก ๋ณ๊ฒฝํด์ค
์ปดํ์ผ๋ฌ ์ธ์ด
- ํ๋ฒ ์ปดํ์ผ์ด ์ค๋๊ฑธ๋ฆผ
- ํ์ง๋ง ์ปดํ์ผ ํ๊ณ ๋๋ฉด ์คํํ์ผ์ด ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๋ค์๋ถํฐ๋ ์๋๊ฐ ๋น ๋ฆ
- ์์ค์ฝ๋๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ค์ ์ปดํ์ผ์ ์งํํด์ผ ํจ
์ธํฐํ๋ฆฌํฐ ์ธ์ด
- ์์ค์ฝ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ๊ธฐ๊ณ์ด๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์ ์์ผ๋, ์คํํ์ผ๋ก ๋ง๋ค์ง ์์
- ์ฆ, ๋ง๋๋ ๊ณผ์ ์ด ์์
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ๋ผ์ธ๋ง์ ์คํ์ํฌ ๋๋ ์๊ฐ์ด ์ ๊ฒ ๊ฑธ๋ฆผ
- ํ์ง๋ง ์คํํ์ผ์ ๋ง๋ค์ง ์๊ธฐ ๋๋ฌธ์ ํด๋น ์์ ์ ๋ฐ๋ณต์ ์ผ๋ก ํ ๊ฒฝ์ฐ ๋น์ฐํ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ.
์์ค์ฝ๋์ ๋ณํ ๊ณผ์
preprocessors, compilers, assemblers, linkers
- ์์ค์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ๊ธฐ๊ณ์ด๋ก ๋ฐ๊พธ๋ ๊ณผ์
- ์ ํ์(Preprocessor)
- ๋ฉํฌ๋ก, ๊ทธ๋ฐ ๊ฒ๋ค์ ์ ํ์ฒ๋ฆฌ๋ฅผ ํด์ ์์ค์ฝ๋๋ก ๋ณ๊ฒฝํด์ฃผ๋ ๊ณผ์
- ์ปดํ์ผ๋ฌ
- ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ ๊ณผ์
- ์ด์
๋ธ๋ฌ
- ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ Object ํ์ผ๋ก ๋ง๋ค์ด์ค
- ๋ง์ปค
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋์ฒด๊ฐ๋ฅํ Object ํ์ผ๊ณผ ์ฐ๊ฒฐ
- ๊ธฐ๊ณ์ธ์ด
์ปดํ์ผ๋ฌ์ ๊ณผ์
- ๋ชฉ์ : ์์ค์ฝ๋๋ฅผ ๋ถ์ํ์ฌ, ์ํ๋ ์ธ์ด(์ฌ๊ธฐ์๋ ๊ธฐ๊ณ ์ธ์ด)๋ก ๋งคํํด์ฃผ๋ ๊ฒ
์ปดํ์ผ๋ฌ์ ๋จ๊ณ
- Scanner(Lexical Analysis)
- ์ดํ ๋ถ์์ ์คํํจ
- ์์์ ๋ถํฐ ํ๋์ฉ ์ฝ์ผ๋ฉด์, ํด๋น ํ ํฐ์ ์๋ฏธ๋ฅผ ๋ฐ์ํจ
- ์ฐ์ฐ์๋ฅผ ์ ์ธํ ๋ฌธ์์ด์ ๊ฒฝ์ฐ์๋ Token์ด๋ผ ๋ถ๋ฆ
- Token์ ์์ฝ์ด(if, else, while, do, switch..)์ ๋ณ์ ์ด๋ฆ์ผ๋ก ๋๋ ์ ์์
- Token์ผ๋ก ๋๋๋ ๊ฒ์ tokenizer, ์๋ฏธ๋ฅผ ๋ฐ์ํ๋ ๋ถ๋ถ์ lexer๋ผ๊ณ ์นญํ ์๋ ์์ ๋ฏ
- Parser
- ๋ง๋ค์ด์ง ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
- ๊ทธ๋ผ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ํธ๋ฆฌ ์์ฒด๊ฐ ์ด๋ ํ ํ ๋น์ ์๋ฏธํ๋ ํธ๋ฆฌ๊ฐ ๋๋ค.
- ๋ค๋ฅธ ๊ฒ๋ค๋ ๋น์ทํ๊ฒ ์ด๋ฐ ๊ฐ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๊ฒ
- ์๋ฅผ ๋ค์ด 100๊ฐ์ ๋ฌธ๋ฒ์ด ์๋ค๋ฉด Syntax๋ฅผ ๊ฐ์ง๊ณ ์์
- ์ด๋ฐ ๋ง๋ค์ด์ง ํธ๋ฆฌ๋ฅผ syntax tree๋ผ ๋ถ๋ฆ
- ์ด๋ฌํ syntax tree๋ฅผ ๊ฐ์ง๊ณ ๊ตฌ๋ถ๋ถ์ ์ ์งํํจ
- ๋ฌธ๋ฒ ๊ฒํ
- ์๋ฏธ ๋ถ์
- ์ง๊ธ ์ฌ์ง์์ ๋ง์ฝ์ sample์ ๋ณด์ด๋ ํธ๋ฆฌ์ค์
B+C
์ด ๋ถ๋ถ์ด, ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ๊ณ ์๋ syntax tree์ 65๋ฒ์งธ์ ๊ตฌ์กฐ๊ฐ ๊ฐ๋ค๋ฉด, 65๋ฒ์ด ๊ฐ์ง๋ ์๋ฏธ(lhs์ rhs๋ฅผ ๋ํด๋ผ)๋ฅผ ์์์ฐจ๋ฆด ์ ์๋ค.
- ์ง๊ธ ์ฌ์ง์์ ๋ง์ฝ์ sample์ ๋ณด์ด๋ ํธ๋ฆฌ์ค์
- ์ด๋ฐ ๊ฒ์
Parsing
์ด๋ผ ๋ถ๋ฅธ๋ค. - ์ด๋ ๊ฒ ๋ง๋ ํธ๋ฆฌ๋ฅผ parse tree๋ผ ๋ถ๋ฅธ๋ค.
- ์ด๊ฑธ ์ํํ๋ ๋ ์์ parser๋ผ ๋ถ๋ฅธ๋ค.
- ์ฌ๊ธฐ๊น์ง์ ์์ ์ด ๋ถ์(์ดํด) ์ด๋ผ ํ ์ ์์
- ์ค๊ฐ ๋จ๊ณ์์ ๋ฐ๊ฟ์ฃผ๋ ์์
(ํฉ์ฑ)
- ์ฌ๊ธฐ์๋ ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํด์ค
์ ์ฒด ๊ณผ์