Chapter 06
Transcript of Chapter 06
Chapter 06 ๊ตฌ๋ฌธ ๋ถ์
01 ๊ตฌ๋ฌธ ๋ถ์์ ๊ฐ์
02 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
03 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
04 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
๊ตฌ๋ฌธ ๋ถ์์ ์ข ๋ฅ์ ํน์ง์ ์ดํดํ ์ ์๋ค.
ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ ์ดํดํ ์ ์๋ค.
์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ ์ดํดํ ์ ์๋ค.
๋ชจํธํ ๋ฌธ๋ฒ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด์ ์ดํดํ ์ ์๋ค.
6.1 ๊ตฌ๋ฌธ ๋ถ์์ ๊ฐ์
๊ตฌ๋ฌธ๋ถ์(Syntax analysis)
์ฃผ์ด์ง ์ ๋ ฅ์ด ์ฌ๋ฐ๋ฅธ ํ๋ก๊ทธ๋จ์ธ๊ฐ๋ฅผ ๊ฒ์ฌํ๊ณ ๋ค์ ๋จ๊ณ์์ ํ์ํ ์ ๋ณด๋ฅผ
๊ตฌ์ฑํ๋ ๊ณผ์
์ค์บ๋์ ์ํด ์์ฑ๋ ํ ํฐ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ฃผ์ด์ง ๋ฌธ๋ฒ์ ๋ง๋์ง๋ฅผ ๊ฒ์ฌํ
๊ณ , ๋ฌธ๋ฒ์ ๋ง์ผ๋ฉด ํ์ค ํธ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๋ง์ง ์์ผ๋ฉด ์๋ฌ๋ฅผ ๋ด๋ ๋จ๊ณ
๊ตฌ๋ฌธ๋ถ์์ ๋ด๋นํ๋ ๋๊ตฌ๋ฅผ ๊ตฌ๋ฌธ๋ถ์๊ธฐ(Syntax analyzer) ํน์ ํ์(parser)
๋ผ๊ณ ํจ
4
6.1 ๊ตฌ๋ฌธ ๋ถ์์ ๊ฐ์
๊ตฌ๋ฌธ๋ถ์ ๋ฐฉ๋ฒ - ํ์ค ํธ๋ฆฌ๋ฅผ ์ด๋ค ์์๋ก ๋ง๋ค์ด ๊ฐ๋๋์ ๋ฐ๋ผ ๋ถ๋ฅ
ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์ :
โข ์ ๋ ฅ ๋ฌธ์์ด์ ํ๋ฒ์ ํ ์ฌ๋ฒ์ฉ ์ข์์ ์ฐ๋ก ๊ฒ์ฌ(left to right scanning)ํ๋ฉด์ ๋ฃจํธ
๋ ธ๋์์ ์์ํ์ฌ ํฐ๋ฏธ๋ ๋ ธ๋๋ก ๋ง๋ค์ด๋๊ฐ๋ ๋ฐฉ๋ฒ์ด๋ค.
โข ์ฆ ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ์์ ๊ธฐํธ S๋ก๋ถํฐ ๋ฌธ๋ฒ์ ๊ท์น์ ์ ์ฉํ์ฌ ์ข๋จ ์ ๋์ ์ํด
์ฃผ์ด์ง ๋ฌธ์ฅ์ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ์ด๊ณ ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ๊ฒฝ์ฐ ์ข๋จ ์ ๋์ ์ํ ์ขํ์ค
๊ฐ ์์ฑ๋๋ค.
์ํฅ์ ๊ตฌ๋ฌธ๋ถ์ :
โข ์ ๋ ฅ ๋ฌธ์์ด์ ํ๋ฒ์ ํ ์ฌ๋ฒ์ฉ ์ข์์ ์ฐ๋ก ๊ฒ์ฌ(left to right scanning)ํ๋ฉด์ ํฐ๋ฏธ
๋ ๋ ธ๋์์ ์์ํ์ฌ ๋ฃจํธ ๋ ธ๋๋ก ๋ง๋ค์ด๋๊ฐ๋ ๋ฐฉ๋ฒ์ด๋ค.
โข ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ ๋ ฅ๋ ๋ฌธ์ฅ์์ ๊ฐ์ถ์ ์ํด ์์ ๊ธฐํธ๋ฅผ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ
๋จ ์ ๋์ ์ญ์์ด ๋๋ค. ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ๊ฒฝ์ฐ ์ฐ๋จ ์ ๋์ ์ญ์์ ์ํ ์ฐํ์ค๊ฐ
์์ฑ๋๋ค.
5
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ์์ ๊ธฐํธ๋ก๋ถํฐ ์์ฑ ๊ท์น์ ์ข๋จ ์ ๋๋ง์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
์ผ๋ก ๊ตฌํ์ด ๊ฐ๋จํ์ฌ ํ์ตํ ๋๋ ์์ฃผ ์ฌ์ฉํ์ง๋ง, ์ญ์ถ์ ๋ฌธ์ ๋๋ฌธ์ ์์ ์
์ธ ์ฉ๋๋ก๋ ์ ์ฌ์ฉํ์ง ์๋๋ค.
์ผ๋ฐ์ ์ธ ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ
์น๋ค๊ณ ๊ฐ์ ํ๋ค.
โ ์์ ๊ธฐํธ์ ๋ํด ์์ฑ ๊ท์น์ ์ ์ฉํ๋ค. ์ด๋ ์์ฑ ๊ท์น์ด ์ฌ๋ฌ ๊ฐ ์กด์ฌํ๋ฉด ์ฒซ ๋ฒ์งธ์์ฑ ๊ท์น๋ถํฐ ์ ์ฉํ๋ค. ์์ฑ ๊ท์น์ ์ ์ฉํ ๋๋ง๋ค ๋ถ๋ถ ํ์ค ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํด๋๊ฐ๋ค.
โก ์์ฑ๋ ๋ฌธ์ฅ ํํ์ ๋ฌธ์์ด๊ณผ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ์ฐจ๋ก๋ก ๋น๊ตํ๋ค.
โข ๋ง์ฝ ์ ๋๋ ๋ฌธ์์ด๊ณผ ์ ๋ ฅ ๊ธฐํธ๊ฐ ๊ฐ์ผ๋ฉด ๊ณ์ ๋น๊ตํด๋๊ฐ๋ค.
โฃ ๋น๊ตํ ๋ ๊ธฐํธ๊ฐ ๊ฐ์ง ์์ผ๋ฉด ์์ฑ ๊ท์น์ ์๋ชป ์ ์ฉํ ๊ฒ์ด๋ฏ๋ก ํ์ฌ ์ ์ฉ๋ ์์ฑ๊ท์น์ ์ ๊ฑฐํ๊ณ ๋ค๋ฅธ ์์ฑ ๊ท์น์ ์ ์ฉํ๋ค. ์ด๋ ์ ๋ ฅ ๊ธฐํธ์ ์์น๋ ์ ๊ฑฐํ ์์ฑ ๊ท์น์์ ๋ณด์๋ ๊ธฐํธ์ ๊ฐ์๋งํผ ๋ค๋ก ์ด๋ํ๋๋ฐ ์ด๋ฅผ ์ญ์ถ์ ์ด๋ผ ํ๋ค.
โค ์ด์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค๊ฐ ๋ ์ด์ ์ ์ฉํ ์์ฑ ๊ท์น์ด ์์ผ๋ฉด ์ฃผ์ด์ง ๋ฌธ์ฅ์ ์ฃผ์ด์ง ๋ฌธ๋ฒ์ ์ฌ๋ฐ๋ฅด์ง ์์ ๋ฌธ์ฅ์ผ๋ก ์ธ์ํ๊ณ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ์์ฑ๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ฉด ์ฌ๋ฐ๋ฅธ ๋ฌธ์ฅ์ผ๋ก ์ธ์ํ๊ณ ํ์ค ํธ๋ฆฌ๋ฅผ ์ถ๋ ฅ์ผ๋ก ๋ด๋ณด๋ธ๋ค.
6
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-1]ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๋ค์ ๋ฌธ๋ฒ์ ๋ํด ๋ฌธ์์ด cabdd๊ฐ ๋ฌธ๋ฒ์ ๋ง๋ ๋ฌธ์ฅ์ธ์ง ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฒ์ฌํ๊ณ , ์ข๋จ ์ ๋๊ฐ ์ ์ฉ๋ ๋๋ง๋ค ํ์ค ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํด๋ณด์.
โ S โ cDd
โก D โ a
โข D โ aE
โฃ E โ bb
โค E โ bd
[ํ์ด]
1) ์์ ๊ธฐํธ๊ฐ S์ด๋ฏ๋ก S์ ์์ฑ ๊ท์น์ ์ ์ฉํ๋ค. ์์ฑ ๊ท์น S โ cDd์ ๋ํด S โ cDd๋ฅผ ์ ๋ํ๋ค. ์ ๋ ฅ c์ ์์ฑ๋ c๊ฐ ๊ฐ์ผ๋ฏ๋ก ์ ๋ ฅ ์์น๋ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋ ์ด๋ํ๊ณ ๋ค์๊ณผ ๊ฐ์ ํ์ค ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
7
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
2) ๋ค์ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ D์ ๋ํด D์ ์์ฑ ๊ท์น์ด 2๊ฐ ์กด์ฌํ๋ฏ๋ก ์ฒซ ๋ฒ์งธ ์์ฑ ๊ท์น์์ ์ฉํ๋ค. ์๋ก ์์ฑ๋ ๊ธฐํธ a์ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๊ฐ ๊ฐ์ผ๋ฏ๋ก ์ ๋ ฅ ์์น๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋กํ๋ ์ด๋ํ๋ค. ํ์ค ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค
3) ๋ค์์ผ๋ก ์์ฑ๋ ๊ธฐํธ d์ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๊ฐ ๋ง์ง ์์ผ๋ฏ๋ก ์ ์ฉ๋ ์์ฑ ๊ท์น์ ์ ๊ฑฐํ๊ณ , ์ ๊ฑฐํ ์ํ์์ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ D์ ๋ํ ๋ค๋ฅธ ์์ฑ ๊ท์น์ ์ ์ฉํ๋ค. ๋ฌผ๋ก ์ด์์ฑ ๊ท์น์ ์ ๋ ฅ ๊ธฐํธ์ ๋ง์์ผ ํ๋ฉฐ ์์ง ์ ์ฉํ์ง ์์ ๊ฒ ์ด์ด์ผ ํ๋ค. ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ D๋ก ๋์๊ฐ ๋๋ ์ฒ์์ D๋ก ๊ฐ์ ๋์ ์ ๋ ฅ ์์น๋ก ๊ฐ์ผ ํ๋ค. ์ด๋ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธD์ ๋ํ ํ๋ก์์ ๊ฐ ์ง์ญ ๋ณ์๋ก ์ ๋ ฅ ์ํ๋ฅผ ์ ์ฅํ๊ณ ์์ด์ผ ํ๋ค๋ ๋ป์ด๋ค. ์ฆ S โ cDd์ D โ aE๋ฅผ ์ ์ฉํ๋ฉด S โ cDd โ caEd๊ฐ ๋๋ค. ํ์ค ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
8
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
4) ์๋ก ์์ฑ๋ ๊ธฐํธ a์ ์ ๋ ฅ ๊ธฐํธ a๊ฐ ๋ง์ผ๋ฏ๋ก ์ ๋ ฅ ์์น๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋ ์ด๋ํ๋ค.
5) ๋ค์ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ E์ ๋ํด E์ ์ฒซ ๋ฒ์งธ ์์ฑ ๊ท์น์ธ E โ bb๋ฅผ ์ ์ฉํ๋ค. ํ์ค ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค
6) ์๋ก ์์ฑ๋ ๊ธฐํธ b์ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ b๊ฐ ๊ฐ์ผ๋ฏ๋ก ์ ๋ ฅ ์์น๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋์ด๋ํ๋ค
9
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
7) ๋ค์ ์์ฑ๋ ๊ธฐํธ b์ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๊ฐ ๋ง์ง ์์ผ๋ฏ๋ก ์ ์ฉ๋ ์์ฑ ๊ท์น์ ์ ๊ฑฐํ๊ณ , ์ ๊ฑฐ๋ ์ํ์์ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ E์ ๋ํด ๋ค์์ ์์ฑ ๊ท์น E โ bd ๋ฅผ ์ ์ฉํ๋ค. ํ์ฌ์ ์ ๋ ฅ ์์น๋ฅผ ์กฐ์ ํ๋ค. ํ์ค ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค
8) ์๋ก ์์ฑ๋ ๊ธฐํธ b์ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ b๊ฐ ๊ฐ์ผ๋ฏ๋ก ์ ๋ ฅ ์์น๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋์ด๋ํ๋ค
9) ๋ค์ ์์ฑ๋ ๊ธฐํธ d์ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ d๊ฐ ๊ฐ์ผ๋ฏ๋ก ์ ๋ ฅ ์์น๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋์ด๋ํ๋ค.
10
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
10) ๋ค์ ์์ฑ๋ ๊ธฐํธ d์ ์ ๋ ฅ ๊ธฐํธ d๊ฐ ์ผ์นํ๋ฏ๋ก ์ ๋ ฅ ๋ฌธ์์ด cabdd๋ ์ ์๋ ๋ฌธ๋ฒ์ ๋ง๋ ๋ฌธ์ฅ์ด๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ํ์ค ํธ๋ฆฌ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์์ ์ถ๋ ฅ์ผ๋ก ๋ด ๋ณด๋ธ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ์ผ๋ฐ์ ์ธ ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ญ์ถ์ ์ ํ๋ฉด์ ์ฐจ๋ก๋ก ์์ฑ ๊ท์น์์ ์ฉํ๋ค. ์ด๋ ์ฃผ์ด์ง ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ฌธ์์ด์ ์์ฑํ๋ฉด ์ฌ๋ฐ๋ฅธ ๋ฌธ์ฅ์ผ๋ก ์ธ์ํ๊ณ , ์์ ๊ธฐํธ๋ก๋ถํฐ ๋ชจ๋ ์์ฑ ๊ท์น์ ์ ์ฉํด๋ ์ฃผ์ด์ง ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ฌธ์์ด์ด ์์ฑ๋์ง ์์ผ๋ฉด ์ฃผ์ด์ง ๋ฌธ์์ด์ด ์ฃผ์ด์ง ๋ฌธ๋ฒ์ผ๋ก๋ถํฐ ์์ฑ๋ ์ ์๋ ๋ฌธ์ฅ์ด๋ผ๊ณ ํ๋จํ์ฌ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ด๋ณด๋ธ๋ค.
์ด ๊ณผ์ ์์ ์์ฑ ๊ท์น์ด ์๋ชป ์ ์ฉ๋์ด ์ฃผ์ด์ง ๋ฌธ์์ด์ ์์ฑํ ์ ์์ผ๋ฉด ๊ทธ์์ฑ ๊ท์น์์ ๋ณด์๋ ๋ฌธ์์ด์ ๋ค์ ๊ฒ์กฐํ๊ธฐ ์ํด ์ ๋ ฅ์ผ๋ก ๋ณด๋ด๋ฉฐ ๋ค๋ฅธ ์์ฑ๊ท์น์ ๊ฐ์ง๊ณ ์ ๋๋ฅผ ์๋ํ๋ค.
11
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์ด์ ๊ฐ์ ๊ณผ์ ์ ์ญ์ถ์ ์ด๋ผ ํ๋๋ฐ, ํ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํด์ ๊ฒ์กฐํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์์ฃผ ๋ง์ด ์์๋์ด ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ค์ ์ ์ธ ์ปดํ์ผ๋ฌ์๊ตฌ๋ฌธ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ฌ์ฉํ๊ธฐ์ ๋ถ์ ๋นํ๋ค.
๋ฐ๋ผ์ ์ญ์ถ์ ์ ํ์ง ์๊ณ ๊ฒฐ์ ์ ์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์์์๋ ๋ฌธ๋ฒ์ ์ด๋ค ์ ์ฝ์ ์ธ ์กฐ๊ฑด์ ๋ถ์ฌ์ ๊ฒฐ์ ์ ์ธ ๊ตฌ๋ฌธ ๋ถ์์ด ๊ฐ๋ฅํ๋ฐ ์ด๋ฐ ์ ์ฝ ์กฐ๊ฑด์ LL ์กฐ๊ฑด(LL condition)์ด๋ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ LL ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฌธ๋ฒ์ LL ๋ฌธ๋ฒ์ด๋ผ ํ๋ฉฐ, LL ๋ฌธ๋ฒ์ผ๋ก ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ๋ง๋ค์ด ๊ตฌ๋ฌธ ๋ถ์์ ํ๋ ๋ฐฉ๋ฒ์ LL ๊ตฌ๋ฌธ ๋ถ์์ด๋ผ ํ๋ค. LL์ ์ ๋ ฅ ๋ฌธ์์ด์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ์ด๊ฐ๋ฉฐ(left to right scanning) ์ขํ์ค๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ถ์ ์ด๋ฆ์ด๋ค.
LL ๋ฐฉ๋ฒ์ ์ฃผ์ด์ง ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ฌธ์ฅ์ ์์ฑํ๊ธฐ ์ํด ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ๋ณด๊ณ ์ ์ฉ๋ ์์ฑ ๊ท์น์ ๊ฒฐ์ ์ ์ผ๋ก ์ ํํ์ฌ ์ ๋ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ์ ์์ฑ๋ ํฐ๋ฏธ๋ ๊ธฐํธ๊ฐ ๊ฐ์ง ์์ผ๋ฉด ์ฃผ์ด์ง ๋ฌธ์ฅ์ ํ๋ฆฐ ๋ฌธ์ฅ์ผ๋ก ๊ฐ์ฃผํ๋ค. LL ์กฐ๊ฑด์ ์ ๋ ๊ณผ์ ์์ ๋ํ๋ ๋ฌธ์ฅ ํํ์์ ๋ ผํฐ๋ฏธ๋์ ๋์ฒดํ๋ ์์ฑ ๊ท์น์ ๊ฒฐ์ ์ ์ผ๋ก ์ ํํ๊ธฐ ์ํ ๊ฒ์ผ๋ก FIRST์ FOLLOW๋ฅผ ์ด์ฉํ๋ค.
๋จผ์ FIRST์ FOLLOW ๋ฑ ๋ช ๊ฐ์ง ์ฉ์ด๋ฅผ ์ ์ํ๊ณ LL ์กฐ๊ฑด์ ๋ํด ์ค๋ช ํ ๋ค์, LL ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ข ๋ฅ๋ฅผ ์ดํด๋ณด์.
12
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-1] FIRST
๋ฌธ๋ฒ G = (VN, VT, P, S)๊ฐ ๋ฌธ๋งฅ์์ ๋ฌธ๋ฒ์ผ ๋ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ A์ ๋ํ FIRST๋ ๋ค์๊ณผ๊ฐ๋ค.
FIRST(A) = {b โ VT โช {ฮต} | A โ bฮฒ, ฮฒ โ V*}
์ฆ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ A๋ก๋ถํฐ ์ ๋๋์ด ์ฒซ ๋ฒ์งธ๋ก ๋ํ๋ ์ ์๋ ํฐ๋ฏธ๋ ๊ธฐํธ์ ์งํฉ์ด๋ค.
[์์ 6-2] FIRST ๊ตฌํ๊ธฐ 1
๋ค์ ๋ฌธ๋ฒ์์ ๊ฐ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ FIRST๋ฅผ ๊ตฌํด๋ณด์.
S โ C | D
C โ aC | b
D โ cD | d
[ํ์ด] ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ๋ S, C, D์ด๋ฏ๋ก ์ด๊ฒ๋ค์ ๋ํ FIRST๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
S โ C โ aC๋ก ์ ๋๋๋ฏ๋ก a๋ S์ FIRST์ด๋ค.
S โ C โ b๋ก ์ ๋๋๋ฏ๋ก b๋ S์ FIRST์ด๋ค.
S โ D โ cD๋ก ์ ๋๋๋ฏ๋ก c๋ S์ FIRST์ด๋ค.
S โ D โ d๋ก ์ ๋๋๋ฏ๋ก d๋ S์ FIRST์ด๋ค.
โด FIRST(S) = {a, b, c, d}
13
*
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
C โ aC๋ก ์ ๋๋๋ฏ๋ก a๋ C์ FIRST์ด๋ค.
C โ b๋ก ์ ๋๋๋ฏ๋ก b๋ C์ FIRST์ด๋ค.
โด FIRST(C) = {a, b}
D โ cD๋ก ์ ๋๋๋ฏ๋ก c๋ D์ FIRST์ด๋ค.
D โ d๋ก ์ ๋๋๋ฏ๋ก d๋ D์ FIRST์ด๋ค.
โด FIRST(D) = {c, d}
๊ทธ๋ฌ๋ฏ๋ก FIRST(S) = {a, b, c, d} FIRST(C) = {a, b} FIRST(D) = {c, d}
14
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-3] FIRST ๊ตฌํ๊ธฐ 2
๋ค์ ๋ฌธ๋ฒ์์ ๊ฐ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ FIRST๋ฅผ ๊ตฌํด๋ณด์.
E โ TEโฒ
Eโฒ โ +TEโฒ | ฮต
T โ FTโฒ
Tโฒ โ *FTโฒ | ฮต
F โ (E) | id
[ํ์ด] ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ๋ E, Eโ, T, Tโ, F์ ๋ํ FIRST๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
E โ TEโฒ โ FTโฒEโฒ โ (E)TโฒEโฒ๋ก ์ ๋๋๋ฏ๋ก (๋ E์ FIRST์ด๋ค.
E โ TEโฒ โ FTโฒEโฒ โ idTโฒEโฒ๋ก ์ ๋๋๋ฏ๋ก id๋ E์ FIRST์ด๋ค.
โด FIRST(E) = {(, id}
Eโฒ โ +TEโฒ๋ก ์ ๋๋๋ฏ๋ก +๋ Eโฒ์ FIRST์ด๋ค.
Eโฒ โ ฮต์ผ๋ก ์ ๋๋๋ฏ๋ก ฮต์ Eโฒ์ FIRST์ด๋ค.
โด FIRST(Eโฒ) = {+, ฮต}
15
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
T โ FTโฒ โ (E)Tโฒ๋ก ์ ๋๋๋ฏ๋ก (๋ T์ FIRST์ด๋ค.
T โ FTโฒ โ idTโฒ๋ก ์ ๋๋๋ฏ๋ก id๋ T์ FIRST์ด๋ค.
โด FIRST(T) = {(, id}
Tโฒ โ *FTโฒ๋ก ์ ๋๋๋ฏ๋ก *๋ Tโฒ์ FIRST์ด๋ค.
Tโฒ โ ฮต์ผ๋ก ์ ๋๋๋ฏ๋ก ฮต์ Tโฒ์ FIRST์ด๋ค.
โด FIRST(Tโฒ) = {*, ฮต}
F โ (E)๋ก ์ ๋๋๋ฏ๋ก (๋ F์ FIRST์ด๋ค.
F โ id๋ก ์ ๋๋๋ฏ๋ก id๋ F์ FIRST์ด๋ค.
โด FIRST(F) = {(, id}
๊ทธ๋ฌ๋ฏ๋ก FIRST(E) = {(, id}
FIRST(Eโฒ) = {+, ฮต}
FIRST(T) = {(, id}
FIRST(Tโฒ) = {*, ฮต}
FIRST(F) = {(, id}
16
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-2] nullableํ๋ค
๋ ผํฐ๋ฏธ๋ A๊ฐ ์ ์ ๋ํ ์ ์์ผ๋ฉด A๋ฅผ nullableํ๋ค๊ณ ๋ถ๋ฅธ๋ค.
์ฆ, Aโ ์ด๋ฉด nullableํ๋ค.
[์์ 6-4] nullableํ์ง ๊ฒ์ฌํ๊ธฐ 1
[์์ 6-3]์ ๋ฌธ๋ฒ์์ E๋ nullable ํ๊ฐ?
[ํ์ด] E โ TEโฒ โ FTโฒEโฒ โ (E)TโฒEโฒ๋ก ์ ๋๋๋ฏ๋ก nullable ํ์ง ์๋ค.
[์ ์ 6-3] ring sum
1. A then A B = A
2. if A then A B = if (A โ {})โชB.
[์ ์ 6-4] FIRST(A1A2 ยทยทยท An)
FIRST(A1A2 ยทยทยท An) = FIRST(A1) FIRST(A2) ยทยทยท FIRST(An)
์ฆ, ์ด๋ค ๋ฌธ์์ด์ FIRST๋ ๋ฌธ์์ด์ ๊ฐ์ฅ ์ผ์ชฝ ๊ธฐํธ๋ก๋ถํฐ ์ ๋๋๋ ํฐ๋ฏธ๋๊ธฐํธ๋ฅผ ์ฐพ๋ ๊ณผ์ ์ด๋ค. ์ฆ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๊ธฐํธ๊ฐ nullable ํ๋ฉด ๊ทธ ๋ฌธ์์ด ๋ค์ ๊ธฐํธ์ FIRST๋ ํด๋น ๋ฌธ์ ์ด์ FIRST์ ์ํ๋ค. ์ด๋ ๊ฒ nullable์ด ์๋ ๋๊น์ง ๊ธฐํธ๋ค์ FIRST๋ฅผ ํฉ์งํฉํ ๊ฒ์ด ๋ฌธ์์ด์ FIRST๊ฐ ๋๋ค.
17
*
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
FIRST(X) ๊ณ์ฐ ๊ท์น
โ ๋ง์ฝ X๊ฐ ํ๋์ ํฐ๋ฏธ๋ ๊ธฐํธ์ด๋ฉด {X}๋ FIRST(X)์ ํฌํจ๋๋ค.
โก ๋ง์ฝ X๊ฐ ํ๋์ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ด๊ณ X โ aฮฒ์ ์์ฑ ๊ท์น์ด ์กด์ฌํ๋ฉด ํฐ๋ฏธ๋ ๊ธฐํธ์ธ {a}๋ FIRST(X)์ ์ํ๋ค.
โข ๋ง์ฝ X โ ฮต์ ์์ฑ ๊ท์น์ด ์กด์ฌํ๋ฉด {ฮต}๋ FIRST(X)์ ์ํ๋ค.
โฃ ๋ง์ฝ X โ Y1Y2 ยทยทยท Yk ์ ์์ฑ ๊ท์น์ด ์กด์ฌํ๋ฉด FIRST(X) = FIRST(X) โช FIRST(Y1Y2 ยทยทยท Yk )์ด๋ค.
[์์ 6-7] FIRST ๊ตฌํ๊ธฐ 2
[์์ 6-3]์ ๋ฌธ๋ฒ์์ ๊ฐ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ FIRST๋ฅผ FIRST(X) ๊ณ์ฐ ๊ท์น์ผ๋ก ๊ตฌํด๋ณด์.
[ํ์ด] ๋จผ์ ์์ฑ ๊ท์น ํํ์ ๋ฐ๋ผ โก๋ฒ ๊ท์น์ ์ ์ฉํ๋ฉด ๊ฐ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ๋ ๋ค์๊ณผ๊ฐ์ ์ด๊ธฐ๊ฐ์ ๊ฐ๋๋ค.
FIRST(E) = { }
FIRST(Eโฒ) = {๏ผ}
FIRST(T) = { }
18
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
FIRST(Tโฒ) = {๏ผ}
FIRST(F) = {(, id}
๋ค์์ผ๋ก โข๋ฒ ๊ท์น์ ์ ์ฉํ๋ฉด ๊ฐ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ๊ฐ๋๋ค.
FIRST(E) = { }
FIRST(Eโฒ) = {๏ผ, ฮต}
FIRST(T) = { }
FIRST(Tโฒ) = {๏ผ, ฮต}
FIRST(F) = {(, id}
๋ง์ง๋ง์ผ๋ก โฃ๋ฒ๊ณผ โ ๋ฒ ๊ท์น์ ์ ์ฉํ๋ค.
FIRST(E) = FIRST(E) โช FIRST(TEโฒ)
= FIRST(E) โช (FIRST(T) โ FIRST(Eโฒ))
= FIRST(E) โช FIRST(T)
FIRST(T) = FIRST(T) โช FIRST(FTโฒ)
= FIRST(T) โช (FIRST(F) โ FIRST(Tโฒ))
= FIRST(T) โช FIRST(F)
= {(, id}
19
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๊ทธ๋ฌ๋ฏ๋ก FIRST(E) = {(, id}
FIRST(Eโฒ) = {๏ผ, ฮต}
FIRST(T) = {(, id}
FIRST(Tโฒ) = {๏ผ, ฮต}
FIRST(F) = {(, id}
[์์ 6-3]์ ๊ฒฐ๊ณผ์ ๊ฐ๋ค.
20
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-5] FOLLOW(A)
๋ฌธ๋ฒ G = = (VN, VT, P, S)๊ฐ ๋ฌธ๋งฅ์์ ๋ฌธ๋ฒ์ผ ๋ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ A์FOLLOW(A)๋ ๋ค์๊ณผ ๊ฐ๋ค.
FOLLOW(A) = {a โ VT โช {$} | S โ ฮฑAaฮฒ, ฮฑ, ฮฒ โ V*}
FOLLOW(A)๋ ์ด๋ค ๋ฌธ์ฅ ํํ์์ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ A ๋ค์์ ๋์ค๋ ํฐ๋ฏธ๋ ๊ธฐํธ๋ค์ ์งํฉ์ด๋ค. ์ฌ๊ธฐ์ $๋ ์ ๋ ฅ ๋ฌธ์์ด์ ๋์ ๋ํ๋ด๋ ๊ธฐํธ์ด๊ณ , ์์ ๊ธฐํธ์ ๋ํFOLLOW๋ $์ด๋ค.
[์์ 6-9] FOLLOW ๊ตฌํ๊ธฐ 2
[์์ 6-3]์ ๋ฌธ๋ฒ์์ FOLLOW๋ฅผ ๊ตฌํด๋ณด์.
[ํ์ด] [์์ 6-3]์ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ์์ฑ ๊ท์น ๋ฒํธ๋ฅผ ๋ถ์ฌํ๋ค.
โ E โ TEโฒ
โก Eโฒ โ +TEโฒ | ฮต
โข T โ FTโฒ
โฃ Tโฒ โ *FTโฒ | ฮต
โค F โ (E) | id
21
*
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๋จผ์ FOLLOW(E)๋ฅผ ๊ตฌํ๋ค. E๊ฐ ์์ ๊ธฐํธ์ด๋ฏ๋ก ์ ๋ ฅ ๋ฌธ์์ด์ ๋์ $๊ฐ ์๋ค. ๋ํ โค๋ฒ ์์ฑ ๊ท์น์์ E ๋ค์์ )๊ฐ ์๋ค.
โด FOLLOW(E) = {$, )}
๋ค์์ผ๋ก FOLLOW(Eโฒ)๋ฅผ ๊ตฌํ๋ค. โ ๋ฒ ์์ฑ ๊ท์น E โ TEโฒ์์ Eโฒ ๋ค์์ ๋์ค๋ ๊ธฐํธ๋ E ๋ค์์ ๋์ค๋ ๊ธฐํธ๊ฐ ๋จ์ ์ ์ ์๋ค. ๋ฐ๋ผ์ FOLLOW(E)์ ์ํ๋ ๊ธฐํธ๋FOLLOW(Eโฒ)์๋ ์ํ๋ค. ์ฆ
FOLLOW(E) โ FOLLOW(Eโฒ)
๊ทธ ๋ฐ์ ๋ ์ด์ FOLLOW(Eโฒ)๊ฐ ์๋ค.
โด FOLLOW(Eโฒ) = FOLLOW(E)
๋ค์์ผ๋ก FOLLOW(T)๋ฅผ ๊ตฌํ๋ค. โ ๋ฒ ์์ฑ ๊ท์น E โ TEโฒ์์ FOLLOW(T) โ FIRST(Eโฒ) = {+} ์์ ์ ์ ์๋ค. ๋จ, ฮต์ ์ ์ธ๋๋ค. ๊ทธ๋ฐ๋ฐ โก๋ฒ ์์ฑ ๊ท์น์์ Eโฒ โ ฮต์ด๋ฏ๋ก โ ๋ฒ ์์ฑ ๊ท์น์ E โ T๊ฐ ๋๋ค. ๋ฐ๋ผ์ FOLLOW(E)์ ์ํ๋ ๊ธฐํธ๋ FOLLOW(T)์๋ ์ํ๋ค. ์ฆ
FOLLOW(T) โ FOLLOW(E) = {$, )}
โด FOLLOW(T) = {$, ), +}
๋ค์์ผ๋ก FOLLOW(Tโฒ)๋ฅผ ๊ตฌํ๋ค. โข๋ฒ ์์ฑ ๊ท์น T โ FTโฒ์์ FOLLOW(Tโฒ) โ FOLLOW(T) = {$, ), +}์์ ์ ์ ์๋ค.
โด FOLLOW(Tโฒ) = {$, ), +}
22
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๋ค์์ผ๋ก FOLLOW(F)๋ฅผ ๊ตฌํ๋ค. โข๋ฒ ์์ฑ ๊ท์น T โ FTโฒ์์ FOLLOW(F) โ FIRST(Tโฒ) = {*}์ ์ ์ ์ ์๋ค. ๋จ, ฮต์ ์ ์ธ๋๋ค. ๊ทธ๋ฐ๋ฐ โฃ๋ฒ ์์ฑ ๊ท์น์์ Tโฒ โ ฮต์ด๋ฏ๋ก โข๋ฒ ์์ฑ ๊ท์น์ T โ F๊ฐ ๋๋ค. ๋ฐ๋ผ์ FOLLOW(F) โ FOLLOW(T) = {$, ), +}์ด๋ค.
โด FOLLOW(F) = {$, ), +, *}
๊ทธ๋ฌ๋ฏ๋ก FOLLOW(E) = {$, )}
FOLLOW(Eโฒ) = {$, )}
FOLLOW(T) = {$, ), ๏ผ}
FOLLOW(Tโฒ) = {$, ), ๏ผ}
FOLLOW(F) = {$, ), ๏ผ, ๏ผ}
23
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
FOLLOW(A) ๊ณ์ฐ ๊ท์น
โ ๋ง์ฝ A๊ฐ ์์ ๊ธฐํธ์ด๋ฉด $๋ FOLLOW(A)์ ์ํ๋ค.
โก ๋ง์ฝ B โ ฮฑAฮฒ, ฮฒ โ ฮต์ธ ์์ฑ ๊ท์น์ด ์กด์ฌํ๋ฉด A์ FOLLOW์ ฮต์ ์ ์ธํFIRST(ฮฒ)๋ฅผ ์ฒจ๊ฐ ํ๋ค.
โข ๋ง์ฝ B โ ฮฑA์ด๊ฑฐ๋ B โ ฮฑAฮฒ์์ ฮฒ โ ฮต์ด๋ฉด B์ FOLLOW ์ ์ฒด๋ฅผ A์FOLLOW์ ์ฒจ๊ฐ ํ๋ค.
[์์ 6-11] FOLLOW ๊ตฌํ๊ธฐ 4
[์์ 6-3]์ ๋ฌธ๋ฒ์์ FOLLOW๋ฅผ ๊ตฌํด๋ณด์.
[ํ์ด] ๋จผ์ FOLLOW์ โ ๋ฒ ๊ท์น์ ์ํด FOLLOW(E) = {$}์ด๋ค. ๊ทธ๋ฆฌ๊ณ FOLLOW์ โก๋ฒ ๊ท์น์ ์ํด Eโฒ โ ๏ผTEโฒ, Tโฒ โ ๏ผFTโฒ, F โ (E)๋ฅผ ์ ์ฉํ๋ฉด ๋ค์์ ์ป๋๋ค.
FOLLOW(T) โ FIRST(Eโฒ) = {๏ผ} (ฮต์ ์ ์ธ)
FOLLOW(F) โ FIRST(Tโฒ) = {๏ผ} (ฮต์ ์ ์ธ)
FOLLOW(E) โ FIRST( )) = { )}
24
*
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๋ค์์ผ๋ก FOLLOW์ โข๋ฒ ๊ท์น์ ์ํด E โ TEโฒ, T โ FTโฒ๋ฅผ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
FOLLOW(Eโฒ) โ FOLLOW(E) = {$, )}
FOLLOW(Tโฒ) โ FOLLOW(T) = {๏ผ}
๋ํ FOLLOW์ โข๋ฒ ๊ท์น์ ์ํด E โ TEโฒ, Eโฒ โ ฮต๊ณผ T โ FTโฒ, Tโฒ โ ฮต์ด๋ค.
โด FOLLOW(T) โ FOLLOW(E) = {$, )}
FOLLOW(F) โ FOLLOW(T) = {๏ผ}
๊ทธ๋ฌ๋ฏ๋ก FOLLOW(E) = {$, )}
FOLLOW(Eโฒ) = {$, )}
FOLLOW(T) = {$, ), ๏ผ}
FOLLOW(Tโฒ) = {$, ), ๏ผ}
FOLLOW(F) = {$, ), ๏ผ, ๏ผ}
25
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-6] LL ์กฐ๊ฑด
LL ์กฐ๊ฑด์ ์์์ ์์ฑ ๊ท์น A โ ฮฑ | ฮฒ โ P์ ๋ํด ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค.
FIRST(ฮฑ) โฉ FIRST(ฮฒ) ๏ผรธ;
if ฮต โ FIRST(ฮฑ) then FOLLOW(A) โฉ FIRST(ฮฒ) ๏ผรธ
[์์ 6-13] LL ์กฐ๊ฑด ๊ฒ์ฌํ๊ธฐ
[์์ 6-3]์ ๋ฌธ๋ฒ์ด LL ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ์์๋ณด์.
[ํ์ด] [์์ 6-7]๊ณผ [์์ 6-11]์์ ๊ตฌํ FIRST์ FOLLOW๋ฅผ ์ด์ฉํ์ฌ ๊ฒ์ฌํ๋ค.
FIRST(E) = {(, id}
FIRST(Eโฒ) = {๏ผ, ฮต}
FIRST(T) = {(, id}
FIRST(Tโฒ) = {๏ผ, ฮต}
FIRST(F) = {(, id}
26
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
FOLLOW(E) = {$, )}
FOLLOW(Eโฒ) = {$, )}
FOLLOW(T) = {$, ), ๏ผ}
FOLLOW(Tโฒ) = {$, ), ๏ผ}
FOLLOW(F) = {$, ), ๏ผ, ๏ผ}
LL ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์์ฑ ๊ท์น Eโฒ โ +TEโฒ | ฮต์์ FIRST(+TEโฒ) โฉ FOLLOW(Eโฒ) = {+} โฉ {$, )} =รธ
์์ฑ ๊ท์น Tโฒ โ *FTโฒ | ฮต์์ FIRST(*FTโฒ) โฉ FOLLOW(Tโฒ) = {*} โฉ {$, ), +} =รธ
F โ (E) | id์์ FIRST((E)) โฉ FIRST(id) = {( } โฉ {id} =รธ
๊ทธ๋ฌ๋ฏ๋ก LL ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉฐ ์ด ๋ฌธ๋ฒ์ LL ๋ฌธ๋ฒ์ด๋ค
27
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ๋ถ์
LL ๋ฐฉ๋ฒ์ ์ค์ ๋ก ํ์ฑ์ผ๋ก ์ฌ์ฉํ๋ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ
โข ์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ๋ถ์(Recursive-descent parsing)
โข ์์ธก ๊ตฌ๋ฌธ๋ถ์(Predictive parsing)
์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ๋ถ์
โข LL ๋ฐฉ๋ฒ์ ์ผ์ข
โข ์ฃผ์ด์ง ์ ๋ ฅ ๋ฌธ์์ด์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํด ์ฌ๊ท์ ํ๋ก์์ ๋ฅผ ์ฌ์ฉ
โข ์ฌ๊ท์ ํ๋ก์์ ๋ ๊ฐ ๋ ผํฐ๋ฏธ๋์ ํด๋นํ๋ ๊ฒ์ผ๋ก ๋ ผํฐ๋ฏธ๋์ ๋ํ ์ ๋๋ฅผ ์ฌ๊ท์ ํ๋ก์์ ํธ์ถ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ๋ถ์๊ธฐ๋ฅผ ๊ตฌํ ํ๋ ๋ฐฉ๋ฒ
โข ๊ฐ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ ํ๋ก์์ ๋ฅผ ์์ฑํ๊ณ ํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ ํ๋ก์์ ๋ฅผ ์์ฑํ๋ค์ ์ด๋ฅผ ํตํฉํจ์ผ๋ก์จ ๊ตฌํํ ์ ์๋ค. ํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ ํ๋ก์์ ๋ ์์ฑ ๊ท์น์์๋ ํฐ๋ฏธ๋ ๊ธฐํธ์ ์ ๋ ฅ ๊ธฐํธ๊ฐ ๊ฐ์์ง ๋น๊ตํ์ฌ ๋ง์ผ ๊ฐ์ ๊ฒฝ์ฐ ๋ค์ ์ ๋ ฅ ๊ธฐํธ๋ฅผ์ฝ๊ฒ ํ๋ฉด ๋๋ค. ๋ํ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ ๊ฒฝ์ฐ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ์์ฑํ ์ ์๋ ์ ์ ํ ์์ฑ ๊ท์น์ด ์ ํ๋๋๋ก ํ๋ก์์ ๋ฅผ ์์ฑํ๋ค.
28
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ๋ถ์
์ฃผ์ด์ง ๋ฌธ์์ด์ ๋ํ ๊ตฌ๋ฌธ ๋ถ์์ ๋จผ์ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ๋ณด๊ณ ์์ ๊ธฐํธ์๋ํ ํ๋ก์์ ๋ฅผ ํธ์ถํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์๋ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๊ฐ ์ ๋ ฅ์ ๋์ ๋ํ๋ด๋ $์ด๋ฉด accept์ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฌ๋ก ์ฒ๋ฆฌํ๋ค.
์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ ๋ถ์์ ๋ฌธ๋ฒ์ผ๋ก๋ถํฐ ์ฌ๊ท์ ํ๋ก์์ ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ์ฝ๊ณ ๋ ๋น ๋ฅด๊ฒ ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์ ๋ค๋ ๊ฒ์ด์ฅ์ ์ด๋ค. ๋ฐ๋ฉด์ ํ๋ก์์ ๋ฅผ ๋ถ๋ฅด๋ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ ค์ ์๋๊ฐ ๋๋ฆฌ๊ณ ๊ตฌ๋ฌธ๋ถ์๊ธฐ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค๋ ๋จ์ ์ด ์๋ค. ๋ํ ๊ฒฐ์ ์ ์ธ ๊ตฌ๋ฌธ ๋ถ์์ด ๋์ง ์์์ญ์ถ์ ์ด ํ์ํ ์๋ ์๋ค. ๊ฒ๋ค๊ฐ ์์ฑ ๊ท์น์ ๋ํ ํ๋ก์์ ๋ฅผ ์์ฑํจ์ผ๋ก์จ ์์ฑ ๊ท์น์ด ๋ฐ๋ ๋๋ง๋ค ๊ตฌ๋ฌธ ๋ถ์๊ธฐ ์ ์ฒด๋ฅผ ๋ค์ ๊ณ ์ณ์ผ ํ๋ค.
[์์ 6-14] ์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ๋ง๋ค๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ
๋ค์ ๋ฌธ๋ฒ์ ๋ํด ์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ๋ง๋ค๊ณ ๋ฌธ์ฅ aaabbb$์ ๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด์.
S โ aAb
A โ aS
A โ b
29
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[ํ์ด] ๋จผ์ ๊ฐ ํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ ํ๋ก์์ ๋ฅผ ์์ฑํ๋ค.
1. ํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ ํ๋ก์์
procedure pa;
begin
if nextsymbol = qa then get_nextsymbol
else error
end;
procedure pb;
begin
if nextsymbol = qb then get_nextsymbol
else error
end;
30
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
2. ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ ๋ํ ํ๋ก์์
procedure PS;
begin
if nextsymbol = qa then
begin pa; PA: pb end;
else error
end;
procedure PA;
begin
case nextsymbol of
qa : begin pa; PS end;
qb : pb;
otherwise : error
end
end; 31
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
3. ์ฃผํ๋ก๊ทธ๋จ์ ๋ํ ํ๋ก์์
begin
get_nextsymbol;
PS;
if nextsymbol = q$ then accept
else error
end;
์ด๋ ๊ฒ ์์ฑ๋ ์ฌ๊ท์ ํ๊ฐ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์์ ๋ฌธ์์ด aaabbb$์ ๊ตฌ๋ฌธ ๋ถ์์ํด๋ณด์. ๋จผ์ ์ฃผํ๋ก๊ทธ๋จ์ ๋ํ ํ๋ก์์ ์์๋ get_nextsymbol์ ์ํดnextsymbol์ด a๊ฐ ๋๊ณ ํ๋ก์์ PS๋ฅผ ํธ์ถํ๋ค. PS์์ nextsymbol์ด a์ด๋ฏ๋ก get_nextsymbol์ ์ํด nextsymbol์ด b๊ฐ ๋๊ณ ํ๋ก์์ PA๋ฅผ ํธ์ถํ๋ค. PA์์ nextsymbol์ด b์ด๋ฏ๋ก get_nextsymbol์ ์ํด nextsymbol์ด ๋ค์ b๊ฐ ๋๊ณ ํ๋ก์์ PS๋ก ๋ฆฌํด๋๋ค. ๋ค์ PS์์ nextsymbol์ด b์ด๋ฏ๋กget_nextsymbol์ ์ํด nextsymbol์ด $๊ฐ ๋๊ณ ์ฃผ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฆฌํด๋๋ค. nextsymbol์ด $์ด๋ฏ๋ก accept ๋๋ค.
32
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์์ธก ๊ตฌ๋ฌธ๋ถ์
์์ฑ ๊ท์น์ด ๋ฐ๋๋๋ผ๋ ์ ์ฒด ๊ตฌ๋ฌธ๋ถ์๊ธฐ๋ฅผ ๊ณ ์น์ง ์๊ณ ๋จ์ง ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์ํ๋์ ์ ์ดํ๋ ํ์ฑ ํ ์ด๋ธ(parsing table)๋ง ์์ ํด์ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
์ค์ ๋ก ์คํ์ ์ด์ฉํ์ฌ ๊ตฌํํ๋ฉฐ ์ ๋ ฅ๊ณผ ์คํ, ํ์ฑ ํ ์ด๋ธ, ์ถ๋ ฅ์ผ๋ก ๊ตฌ์ฑ
โข ์ ๋ ฅ์ ๊ตฌ๋ฌธ ๋ถ์์ด ๋ ์ ๋ ฅ ๋ฌธ์์ด๊ณผ $์ ์ ์ฅํ๊ณ , ์คํ์ ๋ฌธ์ฅ ํํ์์์ ๋ ฅ ๋ฌธ์์ด๊ณผ ์์ง ๋งค์นญ๋์ง ์์ ๋ถ๋ถ์ ์ ์งํ๋ฉฐ bottom marker๋ก ์ญ์$๋ฅผ ๊ฐ๋๋ค.
โข ์ถ๋ ฅ์ ํ์ค ํธ๋ฆฌ๋ ๊ตฌ๋ฌธ ๋ถ์ ์ ์ ์ฉ๋ ์ผ๋ จ์ ์์ฑ ๊ท์น ๋ฒํธ(์ข ํ์ค)๊ฐ๋ ์ ์๋ค.
33
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ ์ฃผ์ด์ง ์ ๋ ฅ ๋ฌธ์์ด์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ๊ณ , ํ์ฌ ์ ๋ ฅ ๊ธฐํธ์ ์คํ์ ํฑ ๊ธฐํธ์ ๋ฐ๋ผ ํ์ฑํ์์ ์ฃผ์ด์ง ํ๋์ ์ทจํ๋ฉฐ ๊ตฌ๋ฌธ ๋ถ์์ ํ๋ค. ์์ธก ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์ ํ๋์ ์ ๊ฑฐ, ํ์ฅ, ์ธ์, ์๋ฌ ๋ฑ์ด๋ฉฐ ๊ทธ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ๋ค.
โข ์ ๊ฑฐ(pop) : ์คํ์ ํฑ๊ณผ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ก, ์คํ์ ํฑ ๊ธฐํธ๋ฅผ ์ ๊ฑฐํ๊ณ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ์ ๋ ฅ ๋ฌธ์์ด์์ ์ ๊ฑฐํ๋ค. ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ์ ๋ ฅ ๋ฌธ์์ด์์์ ๊ฑฐํ๋ค๋ ๊ฒ์ ์ ๋ ฅ ๋ฒํผ์ ์ ์ด๊ฐ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์๋ฆฌ ์ด๋ํ๊ณ ๋ค์ ๊ธฐํธ๋ฅผ ๊ฒ์กฐํ๋ค๋ ์๋ฏธ์ด๋ค.
โข ํ์ฅ(expand) : ์คํ์ ํฑ์ด ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ธ ๊ฒฝ์ฐ๋ก, ์์ฑ ๊ท์น์ ์ ์ฉํ์ฌ ํ์ฅํ๋ค. ์ฆ ์์ฑ ๊ท์น์ ์ผ์ชฝ ๊ธฐํธ ๋์ ์ ์ค๋ฅธ์ชฝ ๋ฌธ์์ด๋ก ๋์นํ๋ ๊ฒ์ด๋ค.
โข ์ธ์(accept) : ์คํ์ ํฑ๊ณผ ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๊ฐ ๋ชจ๋ $์ธ ๊ฒฝ์ฐ๋ก, ์ ๋ ฅ ๋ฌธ์์ด์ด ์ฌ๋ฐ๋ฅธ ๋ฌธ์์ด์์ ์๋ ค์ค๋ค. ์ฌ๊ธฐ์ $๋ ๋ฌธ์์ด์ ๋๊ณผ ์คํ์ ๋ฐ๋ฅ์ ๋ํ๋ธ๋ค. ์ฆ ๊ตฌ๋ฌธ๋ถ์ ์ ์คํ์ ์ด๊ธฐ ์ํ๋ $S๋ก ์ถ๋ฐํ๋ฉฐ ์ ๋ ฅ ๋ฌธ์์ด์ w$๋ก ํ์ํ๋ค.
โข ์๋ฌ(error) : ์คํ์ ํฑ์ด ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์ธ ๊ฒฝ์ฐ๋ก, ๊ทธ ๊ธฐํธ๋ก๋ถํฐ ํ์ฌ ๋ณด๊ณ ์๋ ๊ธฐํธ๋ฅผ ์ ๋ํ ์ ์์์ ๋ํ๋ธ๋ค.
34
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์๊ณ ๋ฆฌ์ฆ 6-1] ์์ธก ํ์ฑํ ๊ตฌ์ฑ ๋ฐฉ๋ฒ
[์ ๋ ฅ] LL ๋ฌธ๋ฒ
[์ถ๋ ฅ] ์์ธก ํ์ฑํ M
[๋ฐฉ๋ฒ] begin
for each A โ ฮฑ โ P do
begin
for a โ FIRST(ฮฑ) do M[A, a] = A โ ฮฑ;
if ฮฑ โ ฮต then
for b โ FOLLOW(A) do M[A, b] = A โ ฮฑ
end
end.
35
*
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-15] ์์ธก ํ์ฑํ ๊ตฌ์ฑํ๊ธฐ
36
6.2 ํํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-17] ์์ธก ๊ตฌ๋ฌธ ๋ถ์
37
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ฃผ์ด์ง ๋ฌธ์ฅ์ด ๋ฌธ๋ฒ์ ๋ง๋์ง ์๋์ง๋ฅผ ๊ฒ์ฌํ๊ธฐ ์ํด ์ ๋ ฅ
๋ ๋ฌธ์์ด์ ์ฝ์ด๊ฐ๋ฉด์ ๊ฐ์ถ์ ์ํด ์์ ๊ธฐํธ๋ฅผ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฃผ์ด์ง ๋ฌธ
์์ด์ด ์์ ๊ธฐํธ๋ก ๊ฐ์ถ๋๋ฉด ์ฌ๋ฐ๋ฅธ ๋ฌธ์ฅ์ด๋ผ๊ณ ํ๋จํ์ฌ ํ์ค ํธ๋ฆฌ๋ฅผ ์์ฑํ
๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ๋ฐ๋ฅด์ง ์์ ๋ฌธ์ฅ์ผ๋ก์ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค.
[์ ์ 6-7] ๊ฐ์ถ๊ณผ ํธ๋ค
S โ ฮฑAw โ ฮฑฮฒw์ ์ ๋ ๊ณผ์ ์ด ์กด์ฌํ ๋ ๋ฌธ์ฅ ํํ ฮฑฮฒw์์ ฮฒ๋ฅผ A๋ก ๋์ฒดํ๋ ๊ฒ์๊ฐ์ถ(reduce)์ด๋ผ ํ๊ณ , ฮฒ๋ฅผ ๋ฌธ์ฅ ํํ ฮฑฮฒw์ ํธ๋ค(handle)์ด๋ผ ํ๋ค. ์ฆ ํ ๋ฌธ์ฅ ํํ์์ ๊ฐ์ถ๋๋ ๋ถ๋ถ์ด ํธ๋ค์ด๋ค.
[์ ์ 6-18] ์ฐ๋จ ์ ๋์ ํธ๋ค ์ฐพ๊ธฐ
์์์ ์์ฃผ ์ฌ์ฉํ ๋ค์ ๋ฌธ๋ฒ์์ ๋ฌธ์ฅ id + id * id์ ๋ํด ์ฐ๋จ ์ ๋ ๊ณผ์ ์๋ณด์ด๊ณ ํธ๋ค์ ์ฐพ์๋ณด์.
โ E โ E + T โก E โ T
โข T โ T * F โฃ T โ F
โค F โ (E) โฅ F โ id
38
*
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[ํ์ด] ์ฐ์ ์ฐ๋จ ์ ๋๋ฅผ ํ์.
E โ E + T (1)
โ E + T * F (13)
โ E + T * id (136)
โ E + F * id (1364)
โ E + id * id(13646)
โ T + id * id(136462)
โ F + id * id(1364624)
โ id + id * id(13646246)
์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ฐ๋จ ์ ๋์ ์ญ์์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก id + id * id์ ๋ํ ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
39
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
40
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๋ค์์ผ๋ก ํธ๋ค์ ์ฐพ์๋ณด์. id๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํด id1, id2, id3์ด๋ผ๊ณ ํ๋ค.
41
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-8] ํธ๋ค ๋์ฒด
S โ 1 โ 2 โ ยทยทยท โ n-1 โn(=)์ ์ ๋ ๊ณผ์ ์ด ์์ ๋ ๊ฐ i์ ๋ฌธ์ฅ ํํ์์ ํธ๋ค์ ์ฐพ์ i-1 ๋ก ๊ฐ๋ฉด์ ์์ ์ฌ๋ฒ๋ก ๊ฐ์ถ๋๋ ๊ณผ์ ์ ํธ๋ค ๋์ฒด(handle pruning)๋ผ๊ณ ํ๋ค.
์ด๋-๊ฐ์ถ(shift-reduce) ๊ตฌ๋ฌธ ๋ถ์
์ด๋-๊ฐ์ถ ๊ตฌ๋ฌธ๋ถ์์ ์ํฅ์ ๋ฐฉ๋ฒ์ ์ผ์ข
์คํ(stack)๊ณผ ์ ๋ ฅ ๋ฒํผ(input buffer)๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ
โข ์คํ์ ๋ณดํต ํ์ฑ ์คํ(parsing stack)์ด๋ผ ๋ถ๋ฅด๋ฉฐ ๋ฌธ์ฅ ํํ์์ ํธ๋ค์ ์ฐพ์ ๋๊น์งํ์ํ ๋ฌธ๋ฒ ์ฌ๋ฒ๋ค์ ์ ์งํ๊ณ ์ ๋ ฅ ๋ฒํผ๋ ์ฃผ์ด์ง ๋ฌธ์์ด์ ๋ณด์
์ด๋-๊ฐ์ถ ๊ตฌ๋ฌธ๋ถ์๊ธฐ
42
rm rm rm rm rm
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์ด๋-๊ฐ์ถ ๊ตฌ๋ฌธ๋ถ์๊ธฐ์ ํ๋
โข ์ด๋(Shift) : ํ์ฌ์ ์ ๋ ฅ ๊ธฐํธ๋ฅผ ์คํ์ ํฑ์ ์ฎ๊ธฐ๋ ๊ฒ์ ์๋ฏธ
โ ์ด ๊ณผ์ ์ ์คํ์ ํฑ์ ํธ๋ค์ด ๋ํ๋ ๋๊น์ง ๊ณ์
โข ๊ฐ์ถ(Reduce) : ํธ๋ค์ด ์คํ์ ํฑ์ ๋ํ๋๋ฉด ์คํ์ ํฑ์ด ํธ๋ค์ ์ค๋ฅธ์ชฝ ๋์ด ๋๊ณ ,
ํธ๋ค์ ์ผ์ชฝ ๋์ ์ฐพ์์ ์์ ํ ํธ๋ค์ ์ฐพ์ ๋ค์ ํธ๋ค์ ํด๋น๋๋ ์์ฑ ๊ท์น์ ์ผ์ชฝ
์ ์๋ ๊ธฐํธ๋ก ๋์ฒด๋๋ ๊ฒ
โข ์๋ฝ(Accept) : ์ฃผ์ด์ง ๋ฌธ์์ด์ด ์ฃผ์ด์ง ๋ฌธ๋ฒ์ ๋ง๋ ๋ฌธ์ฅ์ด๋ผ๋ ๊ฒ์ ๋ํ๋.
โข ์๋ฌ(Error) : ์ฃผ์ด์ง ๋ฌธ์ฅ์ด ์ฃผ์ด์ง ๋ฌธ๋ฒ์ ๋ง์ง ์๋ ๋ฌธ์ฅ์์ ์๋ฏธํ๊ณ ์๋ฌ ์ฒ๋ฆฌ ํธ
์ถํ๋ค.
43
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๋ค์์ ์ด๋ -๊ฐ์ถ ๊ตฌ๋ฌธ ๋ถ์ ๊ณผ์ ์ ์ดํด๋ณด์.
โ ์ ๋ ฅ ๋ฌธ์์ด์ ์ฝ๊ณ ํธ๋ค์ ๋ฐ๊ฒฌํ๋ค.
โก ํธ๋ค์ ์ฐพ์ผ๋ฉด ๊ฐ์ถํ๊ณ ๋ถ๋ถ ํ์ค ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ค.
โข ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ์ ์งํํ๋ค.
โฃ ์ ๋ ฅ ๋ฌธ์์ด์ ๋ชจ๋ ์ฝ์ ํ ์์ ๊ธฐํธ๋ฅผ ๋ง๋๋ฉด ์ฃผ์ด์ง ๋ฌธ์ฅ์ ๋ง๋ ๋ฌธ์ฅ์ด ๋๋ค
[์์ 6-20] ์ด๋-๊ฐ์ถ ๊ตฌ๋ฌธ ๋ถ์ 2 ๋ค์ ๋ฌธ๋ฒ์์ ๋ฌธ์ฅ id + id * id์ ๋ํด ์ด๋ -๊ฐ์ถ ๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด์.
โ E โ E + E
โก E โ E * E
โข E โ id
โฃ E โ (E)
44
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[ํ์ด] ๊ตฌ๋ฌธ ๋ถ์์ ํ๊ธฐ ์ ์ ๋ฌธ์ฅ id ๏ผ id ๏ผ id๊ฐ ์์ฑ๋๋์ง ์ฐ๋จ ์ ๋๋ฅผ ํด๋ณธ๋ค.
E โ E + E
โ E + E * E
โ E + E * id
โ E + id * id
โ id + id * id
์์ ๊ธฐํธ๋ก๋ถํฐ ๋ฌธ์ฅ id ๏ผ id ๏ผ id๊ฐ ์์ฑ๋๋ฏ๋ก ์ฃผ์ด์ง ๋ฌธ์ฅ์ ์ด๋ -๊ฐ์ถ ๊ตฌ๋ฌธ๋ถ์์ ์ํด ๊ตฌ๋ฌธ ๋ถ์์ ํ๋ฉด ๋ง๋ ๋ฌธ์ฅ์ด๋ผ๊ณ ํด์ผ ํ ๊ฒ์ด๋ค. ๊ตฌ๋ฌธ ๋ถ์์ ํ๋ ค๋ฉด ํ์ฑํ๊ฐ ์์ด์ผ ํ์ง๋ง ํ์ฑํ ์์ด ์์์ ์ฐ๋จ ์ ๋ํ ์ญ์์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์์ ํ๋ค.
45
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๊ทธ๋ฐ๋ฐ [์์ 6-20]์ ๊ฒฝ์ฐ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋๋๋๋ค. ๋ ๋ฒ์งธ ์ค์ ๋ณด๋ฉด ํธ๋ค์ด id๊ฐ๋์ด id๋ฅผ E๋ก ๊ฐ์ถํ๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ์ ๊ฐ์ถํ์ง ์๊ณ +๋ฅผ ์ด๋ํ ์๋ ์๋ค. ์ฆ ๋๋ฒ์งธ ์ค์ ๊ฐ์ถํ ์๋ ์๊ณ ์ด๋ํ ์๋ ์๋ค๋ ๋ฌธ์ ์ ์ด ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ฏ ๋ฒ์งธ์ค์์ id ๊ฐ ํธ๋ค์ด ๋์ด E๋ก ๊ฐ์ถํ ์๋ ์๊ณ *๋ฅผ ์ด๋ํ ์๋ ์์ผ๋ฉฐ, ์ฌ์ฏ ๋ฒ์งธ ์ค์์๋ *๋ฅผ ์ด ๋ํ์ง๋ง E + E๊ฐ ํธ๋ค์ด ๋ ์๋ ์๋ค.
์ด์ ๊ฐ์ด ์ด๋ -๊ฐ์ถ ๊ตฌ๋ฌธ ๋ถ์์์๋ ํธ๋ค์ ์ด๋ป๊ฒ ์ฐพ์ ๊ฒ์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ฐพ์ ํธ๋ค์๋ํด ์์ฑ ๊ท์น์ด ์ฌ๋ฌ ๊ฐ ์กด์ฌํ๋ค๋ฉด ์ด๋ค ์์ฑ ๊ท์น์ ์ ์ฉํ ๊ฒ์ธ์ง์ ๋ํ ๋ฌธ์ ๊ฐ๋ฐ์ํ๋ค. ๋จผ์ ํธ๋ค์ ์ด๋ป๊ฒ ์ฐพ์ ๊ฒ์ธ๊ฐ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ์ ์์ ๊ตฌ๋ฌธ ๋ถ์๋ฐฉ๋ฒ์ด ๋ฑ์ฅํ๋ค.
46
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์ฐ์ฐ์ ์ฐ์ ์์ ๊ตฌ๋ฌธ ๋ถ์
์ฐ์ฐ์ ์ฐ์ ์์ ๊ตฌ๋ฌธ ๋ถ์(operator precedence parsing)์ ์ฐ์ฐ์ ์ํธ ๊ฐ์ ์ฐ์ ์์๊ด๊ณ(operator precedence relation)์ ์ํด ํธ๋ค์ ์ฐพ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ์ฐ์ ์ฐ์ ์์ ๋ฌธ๋ฒ์ด ํ์ํ๋ค.
[์ ์ 6-9] ์ฐ์ฐ์ ์ฐ์ ์์ ๋ฌธ๋ฒ
์ฐ์ฐ์ ์ฐ์ ์์ ๋ฌธ๋ฒ(operator precedence grammar)์ ์ฐ์ฐ์ ๋ฌธ๋ฒ์ด๋ฉด์ 2๊ฐ์ ํฐ๋ฏธ๋ ๊ธฐํธ ์ฌ์ด์ ๋ง์์ผ 1๊ฐ์ ์ฐ์ฐ์ ์ฐ์ ์์ ๊ด๊ณ๋ฅผ ๊ฐ๋ ๊ฒ์ ๋งํ๋ค. ์ด ๋ฌธ๋ฒ์ ์ํด ์ ์๋ ์ธ์ด๋ฅผ ์ฐ์ฐ์ ์ฐ์ ์์ ์ธ์ด๋ผ๊ณ ํ๋ค.
์ด๋ค ๋ฌธ๋ฒ์ด ์ฃผ์ด์ก์ ๋ ๊ทธ ๋ฌธ๋ฒ์ด ์ฐ์ฐ์ ์ฐ์ ์์ ๋ฌธ๋ฒ์ธ์ง ๋ฐ๋ก ์ ์๊ฐ์๋ค. ์ฐ์ฐ์ ์ฐ์ ์์ ๊ด๊ณ๋ ์ฐ์ฐ์ ์ฐ์ ์์ ํ์ฑํ๋ฅผ ๋ง๋ค์ด๋ด์ผ ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
47
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์ฐ์ฐ์ ์ฐ์ ์์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ์ ์ฐ์ฐ์ ์ฐ์ ์์ ๋ฌธ๋ฒ์ด ์ฃผ์ด์ก์ ๋ ์์ฑ๊ท์น์ ๋ฌธ๋ฒ ๊ธฐํธ ์ํธ ๊ฐ์ ์ฐ์ฐ์ ์ฐ์ ์์ ๊ด๊ณ์ ์ํด ํธ๋ค์ ์ฐพ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ์ด๋ค. ์ด ๋ฐฉ๋ฒ์ ํ์ฑํ๋ฅผ ์์ฑํ๊ธฐ๊ฐ ์ฝ๊ณ ์ฐ์ฐ์๊ฐ์ ์ฐ์ ์์๋ฅผ ์ ํ์ฌ ๊ตฌ๋ฌธ ๋ถ์์ ํ ์ ์์ด ์ฐ์ ์์ ์ํ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ์ผ๋ก ์์ฃผ ์ ๋นํ๋ค. ๋ฐ๋ฉด์ ๊ตฌ๋ฌธ ๋ถ์๋๋ ๋ฌธ๋ฒ์ ๋ฒ์๊ฐ ์๊ณ ํฐ๋ฏธ๋๊ณผ ํฐ๋ฏธ๋๋ง์ ์ฐ์ ์์ ๊ด๊ณ์ ์ํด ํธ๋ค์ ์ฐพ์ผ๋ฏ๋ก ๊ตฌ๋ฌธ ๋ถ์์ด ์์ ํ๊ฒ ๋์ง์๋๋ค๋ ๋จ์ ์ด ์๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋จ์์ฑ ๋๋ฌธ์ ์ฐ์ฐ์ ์ฐ์ ์์ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ ์ปดํ์ผ๋ฌ๊ฐ ๋ง์ด ๋ง๋ค์ด์ก๋ค.
์ฐ์ฐ์ ์ฐ์ ์์ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ ์ฐ์ฐ์ ์ฐ์ ์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์ฐ์ฐ์ ์ฐ์ ์์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ค. ์ฐ์ฐ์ ์ฐ์ ์์ ๊ตฌ๋ฌธ ๋ถ์์ด ์ ํํ ์ด๋ค์ง๋๋ก ์ฐ์ฐ์์ฐ์ ์์ ๊ด๊ณ๋ฅผ ๋ง๋๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. [์์ 6-20]์ ๋ฌธ๋ฒ์ ๋ํด ์ ํฉํ ์ฐ์ ์์ ๊ด๊ณ๋ฅผ ์ป๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝํ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด๋ณด์. [์์ 6-20]์ ์ฃผ์ด์ง ๋ฌธ๋ฒ์ ๋ชจํธํ ๋ฌธ๋ฒ์ด๋ค. ๋ค์ ๊ท์น์ ์ดํญ ์ฐ์ฐ์์ ๋ํด๊ฒฐํฉ ๋ฒ์น๊ณผ ์ฐ์ ์์๋ฅผ ๋ฐ์ํ์ฌ ์ ์ ํ ํธ๋ค์ ์ ํํ๊ฒ ํ ๊ฒ์ด๋ค.
48
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
โ ๋ง์ฝ ์ฐ์ฐ์ ฮธ1์ด ์ฐ์ฐ์ ฮธ2๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๋ค๋ฉด ฮธ1 โ ฮธ2 ๊ทธ๋ฆฌ๊ณ ฮธ2 โ ฮธ1์ด๋ค. ์๋ฅผ ๋ค์ด *๊ฐ +๋ณด๋ค ๋์ ์ฐ์ ์์์ผ ๋ * โ+ ๊ทธ๋ฆฌ๊ณ + โ *์ด๋ค. ์ด๋ฌํ ๊ด๊ณ๋ฅผ ํตํด ์E + E * E + E์์ ๊ฐ์ด๋ฐ์ ์๋ E * E๊ฐ ๊ฐ์ฅ ๋จผ์ ๊ฐ์ถ๋ ํธ๋ค์์ ์ ์ ์๋ค.
โก ๋ง์ฝ ์ฐ์ฐ์ ฮธ1๊ณผ ฮธ2๊ฐ ๋์ผํ ์ฐ์ ์์์ด๊ณ ์ฐ์ฐ์๋ค์ด ์ผ์ชฝ ๊ฒฐํฉ ๋ฒ์น์ ๊ฐ์ง๋ฉดฮธ1 โ ฮธ2 ๊ทธ๋ฆฌ๊ณ ฮธ2 โ ฮธ1์ด๋ค. ๋ํ ์ฐ์ฐ์๋ค์ด ์ค๋ฅธ์ชฝ ๊ฒฐํฉ ๋ฒ์น์ ๊ฐ์ง๋ฉด ฮธ1 โ ฮธ2 ๊ทธ๋ฆฌ๊ณ ฮธ2 โ ฮธ1์ด๋ค. ์๋ฅผ ๋ค์ด +๊ฐ ์ผ์ชฝ ๊ฒฐํฉ ๋ฒ์น์ ๊ฐ์ง๋ฉด + โ +์ด๋ค.
โข ๋ชจ๋ ์ฐ์ฐ์ ฮธ์ ๋ํด ฮธ โ id, id โ ฮธ, ฮธ โ (, ( โ ฮธ, ) โ ฮธ, ฮธ โ $, $ โ ฮธ์ด๋ค. ๋ํ ๋ค์๊ณผ๊ฐ์ด ๋๊ฒ ํ๋ค.
( โ ) $ โ ( $ โ id
( โ ( id โ $ ) โ $
( โ id id โ ) ) โ )
์ด ๊ท์น์ id์ (E)๋ฅผ ๋ชจ๋ E๋ก ์ถ์์ํจ๋ค. ๋ํ $์ $ ์ฌ์ด ์ด๋์์๋ ํธ๋ค์ด ๋ฐ๊ฒฌ๋์ด์ผ ํ๋ฏ๋ก $๋ ์คํ์ ํฑ๊ณผ ์ ๋ ฅ ๋ฒํผ ์ค๋ฅธ์ชฝ ๋์ ํ์(right endmarker)๋ก ์ฌ์ฉ๋๋ค.
49
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-22] ์ฐ์ฐ์ ์ฐ์ ์์ ๊ตฌ๋ฌธ๋ถ์ 2
[์์ 6-20]์ ๋ฌธ๋ฒ์ [์์ 6-21]์ ์ฐ์ฐ์ ์ฐ์ ์์ ํ์ฑํ๋ฅผ ์ ์ฉํ์ฌ ๋ฌธ์ฅ id ๏ผ id ๏ผ id์ ๋ํด ์ฐ์ฐ์ ์ฐ์ ์์ ๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด์.
โ E โ E + E
โก E โ E * E
โข E โ id
โฃ E โ (E)
[ํ์ด] ๋ฌธ์ฅ id ๏ผ id ๏ผ id๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ตฌ๋ฌธ ๋ถ์์ด ์์ ํ ์ด๋ฃจ์ด์ง์ง ์๋๋ค.
์ฐ์ ์์ ๋ฌธ๋ฒ์ ์ด์ฉํ ๋ฐฉ๋ฒ์ ๋ฌธ๋ฒ์ ์ ์ฝ์ด ๋ง๊ณ , ๊ตฌ๋ฌธ ๋ถ์ ์์๋ ์ด๋ป๊ฒ ํธ๋ค์์ ํ ํ๊ฒ ์ฐพ์ ๊ฒ์ธ์ง, ์ฌ๋ฌ ๊ฐ์ ํธ๋ค์ด ์กด์ฌํ๋ฉด ์ด๋ป๊ฒ ํธ๋ค์ ๊ฒฐ์ ํ ๊ฒ์ธ์ง ๋ฑ์๋ฌธ์ ๊ฐ ์๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก LR ๊ตฌ๋ฌธ ๋ถ์์ด๋ค
50
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
LR ๊ตฌ๋ฌธ ๋ถ์
๊ฒฐ์ ์ ์ธ ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ
LR (Left to right scanning and Right parse)์ ์ ๋ ฅ ๋ฌธ์์ด์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ์ด๊ฐ๋ฉฐ, ์ถ๋ ฅ์ผ๋ก ์ฐํ์ค๋ฅผ ์์ฑ
LR ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์์ ํํ๋ ๊ตฌ๋ฌธ๋ถ์๊ธฐ : LR parser
์ฃผ์ ๋ด์ฉ
์ฃผ์ด์ง ๋ฌธ๋ฒ์ผ๋ก๋ถํฐ ํ์ฑ ํ ์ด๋ธ์ ๊ตฌ์ฑํ๋ ์ด๋ก ๊ณผ ๋ฐฉ๋ฒ
ํ์ฑ ํ ์ด๋ธ์ด ์ฃผ์ด์ก์ ๋, LR ํ์๊ฐ ์ด๋ป๊ฒ ๋์ํ๋๊ฐ?
๋ชจํธํ ๋ฌธ๋ฒ์ผ๋ก๋ถํฐ ํ์ฑ ํ ์ด๋ธ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ
LR ํ์๋ฅผ ์ค์ ์ ์ธ ์ปดํ์ผ๋ฌ์ ๊ตฌ๋ฌธ๋ถ์๊ธฐ๋ก ๊ตฌํํ๋ ๋ด์ฉ
51
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
LR ๊ตฌ๋ฌธ ๋ถ์์ ์ฅ์
LR ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ ๋ชจํธํ์ง ์์ ๋ฌธ๋งฅ์์ ๋ฌธ๋ฒ์ผ๋ก ์ฐ์ธ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํด๊ตฌ์ฑ์ด ๊ฐ๋ฅํ๋ค.
LR ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ญ์ถ์ ์ด ์๋ ๊ฒฐ์ ์ ์ธ ์ด๋-๊ฐ์ถ ๊ตฌ๋ฌธ๋ถ์ ๋ฐฉ๋ฒ์ด๋ค.
LR ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ ์ ๋ ฅ์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฒ์กฐํ๋ฉด์ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ์ฝ๊ฒ๋ฐ๊ฒฌํ ์ ์๋ค.
LR ๊ตฌ๋ฌธ ๋ถ์์ ๋จ์
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํด LR ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ์ง์ ์์ฑํ๋ ์ผ์ด ๋๋ฌด ๋ฐฉ๋ํ ์์
LR ๊ตฌ๋ฌธ ๋ถ์ ์ข ๋ฅ - ํ์ฑํ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ๋๋์ ๋ฐ๋ผ
SLR(simple LR) ๊ตฌ๋ฌธ ๋ถ์ - LR(0) ํญ๋ชฉ์ ์งํฉ๊ณผ FOLLOW
CLR(canonical LR) ๊ตฌ๋ฌธ ๋ถ์ - LR(1) ํญ๋ชฉ์ ์งํฉ
LALR(lookahead LR) ๊ตฌ๋ฌธ ๋ถ์ - LR(0) ํญ๋ชฉ์ ์งํฉ๊ณผ lookahead๋ก๋ถํฐ
๋๋ LR(1) ํญ๋ชฉ์ ์งํฉ
52
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
LR ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์ ๊ตฌ์ฑ
์ด๋-๊ฐ์ถ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌ๋ ํ๋ก๊ทธ๋จ ๋ฐ action๊ณผ GOTO ๋ ๋ถ๋ถ์ ํฌํจํ ํ์ฑํ๋ก ๊ตฌ์ฑ๋๊ณ ํ์ฑํ์ ํ๋๋ ์ด๋ -๊ฐ์ถ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์ ๋๊ฐ๋ค. ๊ตฌ๋ ํ๋ก๊ทธ๋จ์ LR ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๊ฐ ๋ชจ๋ ๊ฐ์ง๋ง ํ์ฑํ๋ ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.
LR ๊ตฌ๋ฌธ ๋ถ์์ ๋ํ ์ฅ๋จ์
SLR ๋ฐฉ๋ฒ์ ๊ตฌํํ๊ธฐ๊ฐ ์ฝ์ง๋ง ๊ฐ๋ ฅํ์ง ๋ชปํ๋ฉฐ, CLR ๋ฐฉ๋ฒ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ์ง๋ง ๊ตฌํํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต๋ค. LALR ๋ฐฉ๋ฒ์ SLR๊ณผ CLR์ ์ค๊ฐ ํํ๋ก ๊ฐ๋ ฅํจ์ CLR๊ณผ ์ ์ฌํ๊ณ ํ์ฑํ์ ํฌ๊ธฐ๋ SLR ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ.
์ด ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ถ๋ถ์งํฉ ๊ด๊ณ๋ [๊ทธ๋ฆผ 6-4]์ ๊ฐ๋ค.
53
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
LR ํ์ฑํ ํ๋ ๊ตฌ์ฑ
LR ํ์ฑํ์ 4๊ฐ์ง ํ๋
1. ์ด๋ : ACTION[Sm, ai] = ์ด๋ S
Sm ์ํ์์ ์ ๋ ฅ ๊ธฐํธ ai๋ฅผ ๋ณธ ํ๋์ด ์ด๋ S๋ผ๋ ๊ฒ์ โ์ ๋ ฅ ๊ธฐํธ๋ฅผ ์คํ์ผ๋ก ์ด๋ํ๊ณ ๋ค์ ์ํ๋ฅผ S๋ก ๋ง๋ค๊ธฐ ์ํด S๋ stack์ ๋ฃ๋๋ค.โ๋ ์๋ฏธ
2. ๊ฐ์ถ : ACTION[Sm, ai] = ๊ฐ์ถ A โ
Sm ์ํ์์ ์ ๋ ฅ ๊ธฐํธ ai๋ฅผ ๋ณธ ํ๋์ด ๊ฐ์ถ A โ ๋ผ๋ ์๋ฏธ๋ ์คํ์์ ํธ๋ค ๋ฅผ
์ ๊ฑฐ ํ๊ณ ์คํ์ ์์ฑ ๊ท์น์ ์ค๋ฅธ์ชฝ ๋ถ๋ถ์ ๋ค์ ์ํ์ ํจ๊ป ์คํ์ ๋ฃ๋๋ค.
54
์๋ฌ(error)
์๋ฝ(accept)2
๊ฐ์ถ(reduce)1์ํ๋ฒํธ
์ด๋(shift)0
VNVTโช{$}
GOTO ํACTION ํ๊ธฐํธ
์ํ๋ฒํธ
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
3. ์๋ฝ : ACTION[Sm, ai] = ์๋ฝ
Sm ์ํ์์ ์ ๋ ฅ ๊ธฐํธ ai๋ฅผ ๋ณธ ํ๋์ด ์๋ฝ์ด๋ผ๋ฉด ์ฃผ์ด์ง ๋ฌธ์์ด์ด ์ฌ๋ฐ๋ฅธ ๋ฌธ์์ด์ด๋ผ๋ ์๋ฏธ์ด๋ฉฐ parsing์ ๋๋ธ๋ค.
4. ์๋ฌ : ACTION[Sm, ai] = ์๋ฌ
Sm ์ํ์์ ์ ๋ ฅ ๊ธฐํธ ai๋ฅผ ๋ณธ ํ๋์ด ์๋ฌ๋ผ๋ฉด ์ ๋ ฅ ๋ฌธ์์ด์ด ํ๋ฆฐ ๋ฌธ์์ด์ด๋ผ๋์๋ฏธ์ด๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด์ ๋ถ๋ฌ ์ฒ๋ฆฌ
[์ ์ 6-10] LR(k) ๋ฌธ๋ฒ
LR(k) ๋ฌธ๋ฒ์ ๋ชจ๋ ํญ๋ชฉ(entry)์ ๋ํด ์ ์ผํ๊ฒ ์ ์๋๋ ํ์ฑํ๋ฅผ ๋ง๋ค ์ ์๋ ๋ฌธ๋ฒ์๋งํ๋ค. ์ฌ๊ธฐ์ k๋ฅผ lookahead์ ๊ธธ์ด์ด๋ค.
[์ ์ 6-11] ์ฆ๊ฐ ๋ฌธ๋ฒ
G = (VN, VT, P, S)์์ G์ ์ถ๊ฐ๋ ๋ฌธ๋ฒ์ผ๋ก G' = (VNโช{S'}, VT, Pโช{S'โS}, S') ์ด๋ค.
โข S' : ์๋ก์ด ์์ ๊ธฐํธ
โข S'โS : ์ถ๊ฐ๋ ์์ฑ ๊ท์น
โข ์์ฑ ๊ท์นS'โS๋ฅผ ๋๋ ์ด์ - ์ฃผ์ด์ง ๋ฌธ์ฅ์ด ์์ ํ๊ฒ ์๋ฝ๋๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉ55
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-23] ์ฆ๊ฐ ๋ฌธ๋ฒ ๋ง๋ค๊ธฐ
๋ค์ ๋ฌธ๋ฒ์ ๋ํด ์ฆ๊ฐ ๋ฌธ๋ฒ์ ๋ง๋ค์ด๋ณด์.
โ E โ E + E
โก E โ E * E
โข E โ id
โฃ E โ (E)
[ํ์ด]
Sโฒ โ E
โ E โ E + E
โก E โ E * E
โข E โ id
โฃ E โ (E)
56
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-12] LR(0) ํญ๋ชฉ
LR(0) ํญ๋ชฉ์ ์์ฑ ๊ท์น์ ์ค๋ฅธ์ชฝ์ ์ ๊ธฐํธ(dot symbol)๋ฅผ ๊ฐ์ง ์์ฑ ๊ท์น์ด๋ค
[์์ 6-24] LR(0) ํญ๋ชฉ ๊ตฌํ๊ธฐ
์์ฑ ๊ท์น A โ BCD์ ๋ํด LR(0) ํญ๋ชฉ์ ๊ตฌํด๋ณด์.
[ํ์ด]
LR(0) ํญ๋ชฉ์ ์์ฑ ๊ท์น์ ์ค๋ฅธ์ชฝ์ ์ ๊ธฐํธ๋ฅผ ๊ฐ์ง ๊ฒ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด4 ๊ฐ๊ฐ ์กด์ฌํ๋ค.
[A โ โขBCD], [A โ BโขCD], [A โ BCโขD], [A โ BCDโข]
LR(0) ํญ๋ชฉ A โ BโขCD์ ๊ฒฝ์ฐ B๋ ์ด๋ฏธ ์ฝ์๊ณ CD๋ ์์ผ๋ก ์ฝ์ ๊ธฐํธ์์ ๋ํ๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ LR(0) ํญ๋ชฉ A โ BCDโข๋ ๋ฌธ์์ด BCD๋ฅผ ๋ชจ๋ ์ฝ์๊ณ ์ด์ BCD๋ฅผ A๋ก ๊ฐ์ถํ ์ ์์์ ์๋ฏธํ๋ค. LR(0) ํญ๋ชฉ์ ๋ง๋ค๊ธฐ ์ํด ์์ฑ ๊ท์น์ ์ค๋ฅธ์ชฝ์ ์ ๊ธฐํธ๋ฅผ ์ฐ๋ ๊ฒ์ ๋ง(marking)ํ๋ค๊ณ ํ๋ค. ๋ํ LR(0) ํญ๋ชฉ์์ ์ ๊ธฐํธ ๋ค์์ ์๋ ๊ธฐํธ๋ฅผ ๋งํฌ ๊ธฐํธ(mark symbol)๋ผ ๋ถ๋ฅธ๋ค.
57
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-13] LR(0) ํญ๋ชฉ์ ์ธ๊ฐ์ง ์ข ๋ฅ
LR(0) ํญ๋ชฉ [A โ ฮฑโขฮฒ]์์ ฮฑโ ฮต์ด๊ฑฐ๋ A = Sโฒ(Sโฒ๋ ์ฆ๊ฐ ๋ฌธ๋ฒ์ ์์ ๊ธฐํธ)์ด๋ฉด ์ด ํญ๋ชฉ์์ปค๋(kernel) ํญ๋ชฉ
LR(0) ํญ๋ชฉ [A โโขฮฑ]์ ๊ฐ์ด ์ ๊ธฐํธ๊ฐ ์์ฑ ๊ท์น ์ฒ์์ ์๋ ํญ๋ชฉ์ ํด๋ก์ (closure) ํญ๋ชฉ
LR(0) ํญ๋ชฉ [A โ ฮฑโข]์ ๊ฐ์ด ์์ฑ ๊ท์น ๋์ ์ ๊ธฐํธ๊ฐ ์๋ ํญ๋ชฉ์ ๊ฐ์ถ ํญ๋ชฉ
์ ๊ท ํญ๋ชฉ ์งํฉ(canonical collection)์ด๋ผ ๋ถ๋ฆฌ๋, ์ด๋ค ๋ฌธ๋ฒ์ ๋ํ
LR(0) ํญ๋ชฉ์ผ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ LR ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ๋ฐ๋์ ํ์ํ
๋ค. ์ฃผ์ด์ง ๋ฌธ๋ฒ์ ๋ํ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ๊ตฌ์ฑํ๋ ค๋ฉด ํ๋์ ์ฆ๊ฐ ๋ฌธ๋ฒ
๊ณผ 2๊ฐ์ ํจ์ CLOSURE, GOTO๋ฅผ ์ ์ํด์ผ ํ๋ค.
58
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-14] CLOSURE(I)๋ฅผ ๊ตฌํ๋ ๊ท์น
I๊ฐ ๋ฌธ๋ฒ G์ ๋ํ LR(0) ํญ๋ชฉ์ผ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ด๋ฉด CLOSURE(I)๋ ๋ค์ ๋ ๊ฐ์ง ๊ท์น์๋ฐ๋ผ ๊ตฌํ๋ค.
โข ์ด๊ธฐ์ I์ ์ํ ๋ชจ๋ LR(0) ํญ๋ชฉ์ CLOSURE(I)์ ์ถ๊ฐํ๋ค.
โข [A โ ฮฑโขBฮฒ]๊ฐ CLOSURE(I)์ ํฌํจ๋์ด ์๊ณ B โ ฮณ์ ์์ฑ ๊ท์น์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ, B โโขฮณ๊ฐCLOSURE(I)์ ํฌํจ๋์ด ์์ง ์์ผ๋ฉด ์ด ํญ๋ชฉ์ CLOSURE(I)์ ์ถ๊ฐํ๋ค. ์ด๋ฌํ ๊ท์น์ ์๋ก์ดLR(0) ํญ๋ชฉ์ด CLOSURE(I)์ ๋ ์ด์ ์ถ๊ฐ๋ ์ ์์ ๋๊น์ง ๋ฐ๋ณต์ ์ผ๋ก ๊ณ์ ์ ์ฉ๋๋ค.
โข ์ฆ, CLOSURE(I) = I โช {[B โ .] | [A โ .B] โ CLOSUR(I), Bโ โP}
CLOSURE(I)๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ [์๊ณ ๋ฆฌ์ฆ 6-4]์ ๊ฐ๋ค.
[์์ 6-25] CLOSURE ๊ตฌํ๊ธฐ ๋ค์ ๋ฌธ๋ฒ์์ LR(0) ํญ๋ชฉ Eโฒ โโขE์ E โ E ๏ผโขT์ CLOSURE๋ฅผ ๊ตฌํด๋ณด์.
Eโฒ โ E
E โ E ๏ผ T | T
T โ T ๏ผ F | F
F โ (E) | id
59
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[ํ์ด]
CLOSURE([Eโฒ โโขE]) = { [Eโฒ โโขE], [E โโขE๏ผT}, [E โโขT], [T โโขT๏ผF], [T โโขF], [F โโข(E)], [F โโขid]}
CLOSURE([E โ E๏ผโขT]) = {[E โ E ๏ผโขT], [T โโขT๏ผF], [T โโขF], [F โโข(E)], [F โโขid]
[์ ์ 6-15] GOTO ํจ์
LR(0) ํญ๋ชฉ์ GOTO ํจ์๋ I๊ฐ ํญ๋ชฉ์ ์งํฉ์ด๊ณ X โ V์ด๋ฉด GOTO(I, X) = CLOSURE({[A โ ฮฑXโขฮฒ] | [A โ ฮฑโขXฮฒ โ I})์ด๋ค.
[์์ 6-26] GOTO ํจ์ ๊ณ์ฐํ๊ธฐ
[์์ 6-25]์ ๋ฌธ๋ฒ์์ I = {[Eโฒ โ Eโข], [E โ Eโข๏ผ T]}์ผ ๋ GOTO(I, ๏ผ)๋ฅผ ๊ณ์ฐํด๋ณด์.
[ํ์ด] GOTO(I, ๏ผ) = CLOSURE([E โ E ๏ผโขT]}
= {[E โ E ๏ผโขT], [T โโขT๏ผF], [T โโขF], [F โโข(E)], [F โโขid]}
60
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-16] LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ
LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ C0์ผ๋ก ํ๊ธฐํ๋ฉฐ, C0 = {CLOSURE ({[Sโฒ โโขS])} โช {GOTO (I, X) | I โ C0 , X โ V}์ด๋ค.
[์์ 6-27] LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ ๊ตฌํ๊ธฐ
๋ค์ ๋ฌธ๋ฒ์์ LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ๊ตฌํด๋ณด์.
โ E โ E ๏ผ T โก E โ T โข T โ T ๏ผ F โฃ T โ F โค F โ (E) โฅ F โ id
[ํ์ด] 1. ๋จผ์ ์ฆ๊ฐ ๋ฌธ๋ฒ์ ๋ง๋ ๋ค.
Sโฒ โ E โ E โ E ๏ผ T โก E โ T โข T โ T ๏ผ F โฃ T โ F โค F โ (E) โฅ F โ id
2. LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
I0 : CLOSURE([Sโฒ โโขE]) = {[Sโฒ โโขE], [E โโขE๏ผT], [E โโขT], [T โโข T๏ผF], [T โโขF], [F โโข(E)], [F โโขid]}
GOTO(I0, E) = I1 = CLOSURE([Sโฒ โ Eโข], [E โ Eโข๏ผT])
= {[Sโฒ โ Eโข], [E โ Eโข๏ผT]}
GOTO(I0, T) = I2 = CLOSURE([E โ Tโข], [T โ Tโข๏ผT])
= {[E โ Tโข], [T โ Tโข๏ผT]}
61
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
GOTO(I0, F) = I3 = CLOSURE([T โ Fโข])
= {[T โ Fโข]}
GOTO(I0, ( ) = I4 = CLOSURE([F โ (โขE)])
= {[F โ (โขE)], [E โโขE๏ผT], [E โโขT], [T โโขT๏ผF], [T โโขF], [F โโข(E)], [F โโขid]}
GOTO(I0, id) = I5 = CLOSURE([F โ idโข])
= {[F โ idโข]}
GOTO(I1, ๏ผ) = I6 = CLOSURE([E โ E๏ผโขT])
= {[E โ E๏ผโขT], [T โโขT๏ผF], [T โโขF], [F โโข(E)], [F โโขid]}
GOTO(I2, ๏ผ) = I7 = CLOSURE([T โ T๏ผโขF])
= {[T โ T๏ผโขF], [F โโข(E)], [F โโขid]}
GOTO(I4, E) = I8 = CLOSURE([F โ (Eโข)], [E โ Eโข๏ผT])
= {[F โ (Eโข)], [E โ Eโข๏ผT]}
GOTO(I4, T) = I2
GOTO(I4, F) = I3
GOTO(I4, ( ) = I4
62
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
GOTO(I4, id) = I5
GOTO(I6, T) = I9 = CLOSURE([E โ E๏ผTโข], [T โ Tโข๏ผT])
= {[E โ E๏ผTโข], [T โ Tโข๏ผT]}
GOTO(I6, F) = I3
GOTO(I6, ( ) = I4
GOTO(I6, id) = I5
GOTO(I7, F) = I10 = CLOSURE([T โ T๏ผFโข])
= {[T โ T๏ผFโข]}
GOTO(I7, ( ) = I4
GOTO(I7, id) = I5
GOTO(I8, )) = I11 = CLOSURE([F โ (E)โข])
= {[F โ (E)โข]}
GOTO(I8, ๏ผ) = I6
GOTO(I9, ๏ผ) = I7
63
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
SLR ๊ตฌ๋ฌธ ๋ถ์
SLR ๊ตฌ๋ฌธ ๋ถ์์ LR ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก, LR(0) ํญ๋ชฉ ์งํฉ๊ณผ FOLLOW๋ฅผ ์ด์ฉํ์ฌ SLR ํ์ฑํ๋ฅผ ๋ง๋ ๋ค. SLR ํ์ฑํ๋ LR(0) ํญ๋ชฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ผ๋ก๋ถํฐ ์ด๋๊ณผ GOTO ํ๋์ ๊ตฌํ๊ณ , ์์ฑ ๊ท์น์ ์๋ ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ์FOLLOW๋ฅผ ๊ฐ์ง๊ณ ๊ฐ์ถ์ ๊ฒฐ์ ํ๋ค. SLR ๊ตฌ๋ฌธ ๋ถ์๊ธฐ์ ํ์ฑํ ๊ตฌ์ฑ์ [์๊ณ ๋ฆฌ์ฆ 6-5]์๊ฐ๋ค.
[์๊ณ ๋ฆฌ์ฆ 6-5] SLR ํ์ฑํ ๊ตฌ์ฑ
[์ ๋ ฅ] ๋ฌธ๋ฒ G = (VN, VT, P, S)
[์ถ๋ ฅ] ์ฆ๊ฐ ๋ฌธ๋ฒ Gโฒ์ ๋ํ SLR ํ์ฑํ
[๋ฐฉ๋ฒ] โถ Gโฒ๋ฅผ ์ํ LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ C0 = {I0, I1, โฆ, In}์ ๊ตฌ์ฑํ๋ค. โท์ํ i๋ Ii์์ ๊ตฌ์ฑ๋์๋ค. ์ํ i๋ฅผ ์ํ ๊ตฌ๋ฌธ ๋ถ์ ๋์์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒฐ์ ๋๋ค. โข๋ง์ฝ LR(0) ํญ๋ชฉ [A โ ฮฑโขaฮฒ] โ Ii, GOTO(Ii, a) = Ij์ด๋ฉด action ํ์ M[i, a] = ์ด๋ j โข ๋ง์ฝLR(0) ํญ๋ชฉ [A โ ฮฑโข] โ Ii์ด๋ฉด ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ A์ FOLLOW(A)์ ์ํ ๋ชจ๋ ๊ธฐํธ a์ ๋ํด action ํ์ M[i, a] = ๊ฐ์ถ A โ ฮฑ โข๋ง์ฝ LR(0) ํญ๋ชฉ [Sโฒ โ Sโข] โ Ii์ด๋ฉด action ํ์M[i, $] = ์๋ฝ โธ ๋ง์ฝ LR(0) ํญ๋ชฉ [A โ ฮฑโขBฮฒ] โ Ii์ด๊ณ GOTO(Ii, B) = Ij์ด๋ฉด GOTO ํ์M[i, B] = j โน ์ด๋ ๊ฒ ํด์ ์ ์๋์ง ์์ ํ์ฑํ์ ํญ๋ชฉ๋ค์ ๋ชจ๋ ์๋ฌ๊ฐ ๋๋ฉฐ, ์ฒจ๊ฐ๋์์ฑ ๊ท์น์ LR(0) ํญ๋ชฉ [Sโฒ โโขS]๋ฅผ ํฌํจํ๋ ์ํ๊ฐ ์์ ์ํ์ด๋ค
64
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
SLR ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ๋ง๋๋ ๊ณผ์
โข โ ๋ฌธ๋ฒ์ด ์ฃผ์ด์ง๋ค.
โข โก ์ฆ๊ฐ ๋ฌธ๋ฒ์ ๋ง๋ ๋ค.
โข โข LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ๊ตฌํ๋ค.
โข โฃ ๊ฐ์ถ ํ๋์ ๊ฒฐ์ ํ๊ธฐ ์ํด FOLLOW๋ฅผ ๊ณ์ฐํ๋ค.
โข โค SLR ํ์ฑํ๋ฅผ ์์ฑํ๋ค.
[์์ 6-28] SLR ํ์ฑํ ๊ตฌํ๊ธฐ 1
[์์ 6-27]์ ๋ฌธ๋ฒ์ ๋ํ SLR ํ์ฑํ๋ฅผ ๋ง๋ค์ด๋ณด์.
[ํ์ด]
โข (1) ์ฆ๊ฐ ๋ฌธ๋ฒ
โข 0. S' โ E 1. E โ E + T
โข 2. E โ T 3. T โ T * F
โข 4. T โ F 5. F โ (E)
โข 6. F โ id
โข (2) LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ๊ณผ GOTO ๊ทธ๋ํ
65
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
โข
66
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
(3) FOLLOW ์ ๊ณ์ฐ :
FOLLOW(E) = {$, +, )}
FOLLOW(T) = {*, +, ), $}
FOLLOW(F) = {*, +, ), $}
โข
67
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
(4) ํ์ฑํ ์์ฑ :
68
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์๊ณ ๋ฆฌ์ฆ 6-6] LR ๊ตฌ๋ฌธ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ [์ ๋ ฅ] ์ ๋ ฅ ๋ฌธ์์ด w์ LR ํ์ฑํ
[์ถ๋ ฅ] ๋ง์ฝ w๊ฐ L(G) ์์ ์์ผ๋ฉด w์ ๋ํ ํ์ค ํธ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฌ
[๋ฐฉ๋ฒ] ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ ์คํ์ ์ด๊ธฐ ์ํ์ธ S0์ ๊ฐ์ง๊ณ ์๋ค.
begin
ip๋ w$์ ์ฒ์ ๊ธฐํธ๋ฅผ ๊ฐ๋ฅด์น๋ค.
repeat
s ๋ stack์ ํฑ ์ํ
a ๋ ip์ ์ํด ์ง์ ๋ ๊ธฐํธ;
if action [s, a] = ์ด๋ sโฒ
then begin a๋ฅผ ์คํ์ ์ฝ์ ํ๊ณ ๊ทธ ๋ค์์ sโฒ๋ฅผ ์คํ์ ์ฝ์ ํ๋ค.
ip ๊ฐ ๋ค์ ์ ๋ ฅ ๊ธฐํธ๋ก ์ด๋ํ๋ค.
end
else if action [s, a] = ๊ฐ์ถ sโฒ(์์ฑ A โ ฮฒ)
then begin |ฮฒ|๊ฐ์ ๊ธฐํธ๋ฅผ ์คํ์์ ์ญ์ ํ๋ค.
A ๋ฅผ ์คํ์ ์ฝ์ ํ๋ค.
GOTO[sโฒ, A] = n์ด๋ผ๋ฉด n์ ์คํ์ ์ฝ์ ํ๋ค.
end
else if action [s, a] = ์๋ฝ
then return
else ์๋ฌ
until (ip = $์ด๊ณ ์คํ์ ํฑ = $)
end. 69
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-29] SLR ํ์ฑํ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ
[์์ 6-28]์์ ๋ง๋ค์ด์ง ํ์ฑํ๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์ฅ id * (id * id)์ ๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด์.
[ํ์ด] ํ์ฑํ์ธ [ํ 6 -3]์ ์ด์ฉํ๊ณ [์๊ณ ๋ฆฌ์ฆ 6-6]์ ์ ์ฉํ์ฌ ๊ตฌ๋ฌธ ๋ถ์์ ํ๋ค.
70
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
71
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-28]๊ณผ [์์ 6-29]์์ SLR ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ์ ์์ ๊ตฌ๋ฌธ ๋ถ์์์ ๋ฐ์
ํ, ํธ๋ค์ ์ด๋ป๊ฒ ์ฐพ์ ๊ฒ์ธ์ง์ ํธ๋ค์ด 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ ์ ํํ ํธ๋ค์ ์ด๋ป๊ฒ
๊ฒฐ์ ํ ๊ฒ์ธ์ง์ ๋ํ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ๊ทธ๋ฐ๋ฐ ๋ชจ๋ SLR(1) ๋ฌธ๋ฒ์ ๋ชจํธํ
์ง ์์ง๋ง SLR(1)์ด ์๋ ๋ชจํธํ ๋ฌธ๋ฒ์ด ์กด์ฌํ๋ค. ๋ค์ ์์ ๋ฅผ ์ดํด๋ณด์.
[์์ 6-30] SLR ํ์ฑํ ๊ตฌํ๊ธฐ 2
๋ค์ ๋ฌธ๋ฒ์ ๋ํ SLR ํ์ฑํ๋ฅผ ๋ง๋ค์ด๋ณด์.
โ S โ L = R
โก S โ R
โข L โ ๏ผR
โฃ L โ id
โค R โ L
72
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[ํ์ด] 1. ์ฆ๊ฐ ๋ฌธ๋ฒ์ ๋ง๋ ๋ค.
Sโฒ โ S
โ S โ L = R
โก S โ R
โข L โ ๏ผR
โฃ L โ id
โค R โ L
73
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
74
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
FOLLOW๋ฅผ ๊ณ์ฐํ๋ค.
โข FOLLOW(S) = {$}
โข FOLLOW(R) = {$, =}
โข FOLLOW(L) = {$, =}
75
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
76
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[ํ 6-4]์ ํ์ฑํ์์ 2๋ฒ ์ํ :
โข ACTION[2,=] := โshift 6 โ
โข ACTION[2,=] := โreduce 5โ
์ด๋ -๊ฐ์ถ ์ถฉ๋(shift-reduce conflict)
[์์ 6-30]์ ์ฃผ์ด์ง ๋ฌธ๋ฒ์ SLR ๋ฌธ๋ฒ์ด ์๋๋ค.
์์์ ์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง๋ฅผ ์ดํด๋ณด์.
โข ์ง๊ธ 2๋ฒ ์ํ์์ ๋ค์ ์ ๋ ฅ์ผ๋ก =๋ฅผ ๋ง๋๊ฒ ๋๋ฉด ์ถฉ๋ ๋ฐ์ํ๋ค. ๊ฐ์ถ์ด ๋ฐ์ํ ์ด์ ๋ 2๋ฒ ์ํ์์ ๊ฐ์ถ ํญ๋ชฉ์ ์๋ R์ ๋ํด์ FOLLOW๋ฅผ ๊ณ์ฐํ๋ค. FOLLOW(R) = {$, =} ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ค์ ๋ก๋ R ๋ค์์ =์ด ๋ํ๋๋ ์ฐ๋ฌธ์ฅ ํํ๋ ์กด์ฌํ์ง ์๋๋ค.
โข ๋ฐ๋ผ์ 2๋ฒ ์ํ์์ ๊ฐ์ถ ํ๋์ ์ ํจํ์ง ์๋ค.
โข SLR ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ๊ตฌ์ฑํ ๋ ์ถฉ๋์ด ๋ฐ์ํ๋ ๊ฒ์ SLR ๋ฌธ๋ฒ์ด ์ถฉ๋ถํ ๊ฐ๋ ฅํ์ง ์๊ธฐ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ๊ฒฐ์ ์ ์ธ LR ํ์ฑ์ ํ๊ธฐ ์ํด SLR ๋ฌธ๋ฒ๋ณด๋ค ํจ์ฌ ๊ฐ๋ ฅํ CLR ๋ฌธ๋ฒ๊ณผLALR ๋ฌธ๋ฒ์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์๊ธฐ๋ฅผ ์์ฑ
์ถฉ๋์ ์ข ๋ฅ๋ ์ด๋ -๊ฐ์ถ ์ถฉ๋๊ณผ ๊ฐ์ถ-๊ฐ์ถ ์ถฉ๋(reduce-reduce conflict)์ด ์๋๋ฐ ์ด์
๋ํด์๋ 4์ ์์ ์ข ๋ ์์ธํ ์ค๋ช ํ๊ฒ ๋ค.
77
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
CLR ๊ตฌ๋ฌธ ๋ถ์
SLR ๋ฐฉ๋ฒ์์ ํ์ฑํ๋ฅผ ์์ฑํ ๋ FOLLOW์ ์ํ๋ ๊ธฐํธ์ ๋ํด ๊ฐ์ถ ํ๋์ ๋ง๋ค์๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์ํ์์๋ ๊ฐ์ถ ํญ๋ชฉ [A โ ฮฑโข]์ ๋ํ FOLLOW(A)์๋ ์ํ์ง๋ง ๊ทธ ์ํ์์ A ๋ค์์ ๋์ฌ ์ ์๋ ๊ธฐํธ๊ฐ ์กด์ฌํ๋ค. ๋ฐ๋ฉด์ ํ ์ํ์์ ์ด๋ค ๋ ผํฐ๋ฏธ๋ ๊ธฐํธ๋ค์์ ๋์ฌ ์ ์๋ ์ ํํ ํฐ๋ฏธ๋ ๊ธฐํธ๋ฅผ lookahead๋ผ๊ณ ํ๋๋ฐ, ์ด๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด CLR ๊ตฌ๋ฌธ ๋ถ์์ด๋ค.
LR(0) ํญ๋ชฉ์์ lookahead ์ ๋ณด๋ฅผ ์ฒจ๊ฐํ ๊ฒ์ด LR(1) ํญ๋ชฉ์ด๋ฉฐ, ์ด๋ [์ ์ 6-17]๊ณผ ๊ฐ๋ค.
[์ ์ 6-17] LR(1) ํญ๋ชฉ
LR(1) ํญ๋ชฉ์ [A โ ฮฑโขฮฒ, a] ํํ์ด๋ฉฐ, ์ฌ๊ธฐ์ A โ ฮฑฮฒ โ P์ด๊ณ a โ {VT โช $}์ด๋ค.
โข ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ธ A โ ฮฑโขฮฒ๋ฅผ ์ฝ์ด(core)๋ผ ํ๋ฉฐ, ์ด๋ LR(0) ํญ๋ชฉ๊ณผ ๊ฐ์ ์๋ฏธ์ด๋ค.
โข ๋ ๋ฒ์งธ ๋ถ๋ถ์ธ a๋ฅผ lookahead๋ผ ํ๋ฉฐ, ์ด๋ ๊ฐ์ถ ํญ๋ชฉ์ผ ๋ ๊ทธ ๊ธฐํธ์ ๋ํด ๊ฐ์ถ ํ๋์ ํ๋ผ๋ ๊ฒ์ด๋ค.
78
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
CLR ํ์ฑํ ์์ฑ
LR(1) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ผ๋ก ๊ตฌ์ฑ
โข CLOSURE ํจ์์ GOTO ํจ์๊ฐ ํ์
โข GOTO ํจ์๋ LR(0) ํญ๋ชฉ ์งํฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ๊ตฌํ ๋์ ๊ฐ์ง๋ง, CLOSURE ํจ์๋ lookahead ์ ๋ณด ๋๋ฌธ์ ์ฝ๊ฐ ์์ ํด์ผ ํจ
[์ ์ 6-18] LR(1) ํญ๋ชฉ์์์ CLOSURE ํจ์ ๊ตฌํ๊ธฐ
CLOSURE(I) = Iโช{[Bโ., b] | [Aโ.B, a] โ CLOSURE(I),
Bโ. โ P, b โ FIRST(a)}
LR(1) ํญ๋ชฉ ์งํฉ์ CLOSURE๋ LR(0) ํญ๋ชฉ ์งํฉ์ CLOSURE์ ์ ์ฌํ๋ฉฐlookahead๋ฅผ ๊ตฌํด์ ์ฒจ๊ฐ ํ๋ ๊ฒ๋ง์ด ์ฐจ์ด์
โข [Aโ.B, a]์์ ๋งํฌ ๊ธฐํธ B๋ค์์ ์ค๋ ์ FIRST๊ฐ ํญ๋ชฉ [Bโ. ]์ lookahead
โข ๋ง์ผ ๊ฐ ์ ์ ๋ ํ ์ ์์ผ๋ฉด, ํญ๋ชฉ [Aโ.B]์ lookahead์ธ a๋ lookahead๊ฐ ๋๋ค.
โ ํญ๋ชฉ [Bโ. ]์ lookahead๋ a์ FIRST๊ฐ ๋๋ค.
79
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-31] LR(1) ํญ๋ชฉ์ ๋ํ CLOSURE ๊ตฌํ๊ธฐ
๋ค์ ๋ฌธ๋ฒ์์ LR(1) ํญ๋ชฉ [Sโฒ โโขS, $]์ ๋ํ CLOSURE๋ฅผ ๊ตฌํด๋ณด์.
Sโฒ โ S
S โ CC
C โ Cc
C โ d
[ํ์ด]
CLOSURE([Sโฒ โโขS, $]) = {[Sโฒ โโขS, $], [S โโขCC, $], [C โโขcC, c/d], [C โโขd, c/d]}
์ฌ๊ธฐ์ [C โโขcC, c/d]๋ 2๊ฐ์ ํญ๋ชฉ [C โโขcC, c]์ [C โโขcC, d]๊ฐ ์ถ์ฝ๋ ํํ์ด๋ค.
80
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
LR(1) ํญ๋ชฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ SLR์์ LR(0) ํญ๋ชฉ์ ์ ๊ท ํญ๋ชฉ
์งํฉ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๋ฉฐ, ์ด๋ [์๊ณ ๋ฆฌ์ฆ 6-7]๊ณผ ๊ฐ๋ค.
[์์ 6-31] LR(1) ํญ๋ชฉ์ ๋ํ CLOSURE ๊ตฌํ๊ธฐ
๋ค์ ๋ฌธ๋ฒ์์ LR(1) ํญ๋ชฉ [Sโฒ โโขS, $]์ ๋ํ CLOSURE๋ฅผ ๊ตฌํด๋ณด์.
Sโฒ โ S
S โ CC
C โ Cc
C โ d
[ํ์ด]
CLOSURE([Sโฒ โโขS, $]) = {[Sโฒ โโขS, $], [S โโขCC, $], [C โโขcC, c/d], [C โโขd, c/d]}
์ฌ๊ธฐ์ [C โโขcC, c/d]๋ 2๊ฐ์ ํญ๋ชฉ [C โโขcC, c]์ [C โโขcC, d]๊ฐ ์ถ์ฝ๋ ํํ์ด๋ค.
81
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-32, 33] LR(1) ํญ๋ชฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ ๊ตฌํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ
๋ค์ ๋ฌธ๋ฒ์์ LR(1) ํญ๋ชฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ๊ตฌํด๋ณด์.
S โ CC
C โ cC
C โ d
[ํ์ด]
(1) ์ฆ๊ฐ ๋ฌธ๋ฒ :
0. S' โ S
1. S โ CC
2. C โ cC
3. C โ d
82
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
(2) CLR ์ ๊ท ํญ๋ชฉ ์งํฉ๊ณผ GOTO ๊ทธ๋ํ
83
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
(3) CLR ํ์ฑํ
84
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
(4) ๋ฌธ์ฅ ccdd์ ๊ตฌ๋ฌธ ๋ถ์์ ๋ค์๊ณผ ๊ฐ๋ค.
85
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
์ด์ [์์ 6-30]์์ SLR ํ์ฑํ๋ฅผ ๊ตฌํ์ผ๋ ์ถฉ๋์ด ๋ฐ์ํ์ฌ SLR ๋ฌธ๋ฒ์ด ์๋ ๊ฒ์ ํ์ธํ ๋ฌธ๋ฒ์ ๋ํด ์ด๋ฒ์๋C LR ํ์ฑํ๋ฅผ ๊ตฌํด๋ณด์.
[์์ 6-34] CLR ํ์ฑํ ๊ตฌํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ 2
[์์ 6-30]์์ ๋ง๋ LR(1) ํญ๋ชฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ์ด์ฉํ์ฌ CLR ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ด ํ์ฑํ๋ฅผ ์ด์ฉํ์ฌ * id = id์ ๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด์.
[ํ์ด]
(1) ๋ค์๊ณผ ๊ฐ์ด ์ฆ๊ฐ ๋ฌธ๋ฒ์ ๋ง๋ ๋ค.
Sโฒ โ S
โ S โ L = R
โก S โ R
โข L โ * R
โฃ L โ id
โค R โ L
86
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
87
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
SLR ํ์ฑํ์์ ๋ํ๋ฌ๋ ์ถฉ๋ ๋ฌธ์ ๊ฐ CLR ํ์ฑํ์์๋ ๋ํ๋์ง ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์์ ์ ์ฃผ์ด์ง ๋ฌธ๋ฒ์ SLR ๋ฌธ๋ฒ์ ์๋์ง๋ง CLR ๋ฌธ๋ฒ์๋ ๋ง๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค. 88
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
๋ฌธ์ฅ * id = id์ ๊ตฌ๋ฌธ ๋ถ์์ ๋ค์๊ณผ ๊ฐ๋ค.
89
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
CLR ๋ฐฉ๋ฒ์ SLR ๋ฐฉ๋ฒ๋ณด๋ค ๋งค์ฐ ๊ฐ๋ ฅํ์ง๋ง lookahead๋ฅผ ๊ตฌํด์ผ ํ๋ฏ๋ก ๊ณผ์ ์ด ๋ณต์กํ๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉฐ ํ์ฑํ๊ฐ ์ปค์ง๋ค๋ ๋จ์ ์ด ์๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๋จ์ ์ ๋ณด์ํ๊ธฐ์ํด LR(1)์ ๊ฒฝ์ฐ์ฒ๋ผ ๊ฐ์ถ ํ๋์ lookahead๋ฅผ ์ด์ฉํ๊ณ ํ์ฑํ์ ํฌ๊ธฐ๋ ๋๋๋ก ์๊ฒ ๊ตฌ์ฑ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ฉํ๊ฒ ๋์๋๋ฐ ์ด๋ฅผ LALR ๋ฐฉ๋ฒ์ด๋ผ ํ๋ค.
LALR ๋ฐฉ๋ฒ์ ์ดํดํ๊ธฐ ์ํด ๋ค์ ์์ ๋ฅผ ์ดํด๋ณด์
[์์ 6-35] CLR ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๊ณ SLR ํ์ฑํ์ CLR ํ์ฑํ์ ํฌ๊ธฐ ๋น๊ต
[์์ 6-27]์ ๋ฌธ๋ฒ์ ๋ํด [์์ 6-28]์์ SLR ํ์ฑํ๋ฅผ ๋ง๋ค์๋ค. ์ด ๋ฌธ๋ฒ์ ๋ํ CLR ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๊ณ SLR ํ์ฑํ์ CLR ํ์ฑํ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํด๋ณด์.
[ํ์ด]
1. ๋ค์๊ณผ ๊ฐ์ด ์ฆ๊ฐ ๋ฌธ๋ฒ์ ๋ง๋ ๋ค.
Eโฒ โ E
โ E โ E + T
โก E โ T
โข T โ T * F
โฃ T โ F
โค F โ (E)
โฅ F โ id 90
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
2. CLR ํ์ฑํ
91
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[ํ 6-3]์ SLR ํ์ฑํ์ [ํ 6-7]์ CLR ํ์ฑํ๋ฅผ ๋น๊ตํด๋ณด์. ๋๊ฐ์ ์์ ๋ฅผ ๊ฐ์ง๊ณ SLR ํ์ฑ ํ์ CLR ํ์ฑํ๋ฅผ ์์ฑํ๋๋ฐ SLR ํ์ฑํ๋ 12ร9 ํ๋ ฌ์ด๊ณ CLR ํ์ฑํ๋22ร9 ํ๋ ฌ์ด๋ค. ๋จ ์ ๋น๊ต์ด์ง๋ง SLR ๋ฐฉ๋ฒ์ด CLR ๋ฐฉ๋ฒ๋ณด๋ค ํ์ฑํ์ ํฌ๊ธฐ๋ฅผ ์๊ฒ ํ ์ ์์์ ์ ์ ์๋ค.
92
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
LALR ๊ตฌ๋ฌธ ๋ถ์
LALR ๊ตฌ๋ฌธ ๋ถ์ ๋ฐฉ๋ฒ์ lookahead ์ ๋ณด๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ lookahead LR ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ ํ๋ค.
โข SLR ๋ฐฉ๋ฒ๋ณด๋ค ํจ์ฌ ๊ฐ๋ ฅํ๊ณ , ํ์ฑํ์ ํฌ๊ธฐ๊ฐ CLR ๋ฐฉ๋ฒ๋ณด๋ค ์๋นํ ์์ผ๋ฉด์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ๋๋ถ๋ถ ํธ๋ฆฌํ๊ฒ ํํํ ์ ์๋ค๋ ๊ฒ์ด ์ฅ์ ์ด๋ค. ํ์ฑํ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํด๋ณด๋ฉด SLR ํ์ฑํ์ LALR ํ์ฑํ๋ ์ฃผ์ด์ง ๋ฌธ๋ฒ์ ๋ํด ํญ์ ๋์ผํ๊ฐ์์ ์ํ๋ก ๋ง๋ค ์ ์์ผ๋ฉฐ, C ์ธ์ด์ ๊ฒฝ์ฐ ์ ํ์ ์ผ๋ก ์๋ฐฑ ๊ฐ ์ ๋์ด๋ค. ๋ฐ๋ฉด์CLR ํ์ฑํ๋ ๋์ผํ ๊ท๋ชจ์ ์ธ์ด์ ๋ํด ์ ํ์ ์ผ๋ก ์์ฒ ๊ฐ์ ์ํ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋กCLR ํ์ฑํ๋ณด๋ค SLR ํ์ฑํ๋ LALR ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ฝ๊ณ ๊ฒฝ์ ์ ์ด๋ค.
โข ๋ํ ๋ชจํธํ์ง ์์ ๋ฌธ๋งฅ์์ ๋ฌธ๋ฒ์ผ๋ก ํํ๋ ๊ฑฐ์ ๋ชจ๋ ์ธ์ด๋ฅผ ์ธ์ํ ์ ์์ผ๋ฉฐ, ์๋ฌ๋ฅผ ์ด๊ธฐ์ ํ์งํ ์ ์๋ค. ๊ทธ๋ฌ๋ LALR ๋ฐฉ๋ฒ์ LR(0) ํญ๋ชฉ์ ์งํฉ์ ๊ตฌํ ํ ํ์ฑํ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๊ฐ์ถ ํญ๋ชฉ์ด ์๋ ๊ฐ ์ํ์์ lookahead ๊ธฐํธ๋ฅผ ๊ตฌํ๋ ๋ฐ ์๋นํ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ์์๋๋ค.
โข LALR ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค. ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๊ธฐ๊ฐ ์ฝ์ง๋ง ํ์ฑํ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ LR(1)์ ๊ฐ์ง๊ณ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ํจ์จ์ ์ผ๋ก ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ LR(0)๊ณผ lookahead๋ฅผ ๊ฐ์ง๊ณ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ด ๊ทธ๊ฒ์ด๋ค. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋จผ์ LR(1) ํญ๋ชฉ์ ๊ฐ์ง๊ณ ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ ์ฝ์ด๋ฅผ ๊ฐ์ง LR(1) ํญ๋ชฉ์ ๋ฌถ์ด์ ํ๋์ ์ํ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด๋ฉฐ, lookahead๋ LR(1) ํญ๋ชฉ์ lookahead๋ฅผ ํฉํ ๊ฒ์ด๋ค.
93
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์์ 6-36] CLR ํ์ฑํ๋ก ๋ถํฐ LALR ํ์ฑํ ๊ตฌํ๊ธฐ
[์์ 6-32]์ ๋ฌธ๋ฒ๊ณผ [์์ 6-33]์ CLR ํ์ฑํ๋ฅผ ๊ฐ์ง๊ณ LALR ํ์ฑํ๋ฅผ ๊ตฌํด๋ณด์.
[ํ์ด] [์์ 6-32]์ [๊ทธ๋ฆผ 6-7]์์ LR(1) ํญ๋ชฉ์ ์ ๊ท ํญ๋ชฉ ์งํฉ์ ๊ตฌํ๋ค. ์ฌ๊ธฐ์ ์ฝ์ด๊ฐ ๊ฐ์ ์ํ๋ฅผ ์ฐพ์๋ณด์. ์ฐ์ ์ํ I3๊ณผ I6์ด ๊ฐ์ ์ฝ์ด๋ฅผ ๊ฐ์ง๋ฏ๋ก ๋ค์๊ณผ ๊ฐ๋ค.
I3 โช I6 โ I36 = {[C โ cโขC, c/d/$], [C โโขcC, c/d/$], [C โโขd, c/d/$]}
๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.
I4 โช I7 โ I47 = [[C โ dโข, c/d/$]}
I8 โช I9 โ I89 = {[C โ cCโข, c/d/$]}
๋ฐ๋ผ์ LALR ํ์ฑํ๋ [ํ 6-8]๊ณผ ๊ฐ๋ค.
94
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
95
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
LALR parsing table ์์ฑ ๋ฐฉ๋ฒ
โข LR(1) ํญ๋ชฉ์ ์งํฉ์ผ๋ก ๋ถํฐ ์์ฑํ๋ ๋ฐฉ๋ฒ
โ ์ด๋ก ์ ์ผ๋ก ์ฝ๊ฒ ์ค๋ช
โ C1 ์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์ปค์ ธ์ ์ค์ง์ ์ธ ๋ฐฉ๋ฒ์ด ๋์ง ๋ชปํจ
ยป Lookahead์ ๋ฐ๋ผ ์ํ์๊ฐ ๋งค์ฐ ์ปค์ง๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ
โข LR(0) ํญ๋ชฉ์ ์งํฉ์ผ๋ก ๋ถํฐ ์์ฑํ๋ ๋ฐฉ๋ฒ
โ ์ด๋ก ์ ์ผ๋ก ๋ณต์กํ๊ณ ์ด๋ ค์
โ ์๊ฐ๊ณผ ๊ธฐ์ต ๊ณต๊ฐ์ด ์์์ง๋ ์ค์ง ์ ์ธ ๋ฐฉ๋ฒ
96
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[์ ์ 6-19] lookahead์ ์ ์
์ํ p์์ LR(0) ํญ๋ชฉ [Aโ.] ์ lookahead๋ LA(p, [Aโ.])๋ก ํ๊ธฐํ๋ฉฐ p ์ํ์์ A ๋ค์์ ๋์ฌ ์ ์๋ ํฐ๋ฏธ๋ ๊ธฐํธ์ ์งํฉ์ด๋ค.
LA(p, [Aโ.]) = {a | a โ FIRST(), S' โ A โ , accesses p}.
๊ฐ ์ํ p๋ฅผ accessํ๋ค๋ ๊ฒ์ ์์ ์ํ๋ก๋ถํฐ ๋งํผ ๋ณด๊ณ ์ํ p๋ก ์ด๋
์ ํ์๋ค๋ ์๋ฏธ
[์์ 6-38] LALR ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ
[์์ 6-30]๊ณผ [์์ 6-34]์์ ๊ฐ์ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ SLR ํ์ฑํ์ CLR ํ์ฑํ๋ฅผ ๋ง๋ค์๋ค. ์ด๋ฒ์๋ LALR ํ์ฑํ๋ฅผ ๋ง๋ค๊ณ ๋ฌธ์ฅ * id = id์ ๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด์.
97
*
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
98
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
99
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
100
6.3 ์ํฅ์ ๊ตฌ๋ฌธ ๋ถ์
[ํ 6-9]์ ํ์ฑํ์ 2๊ฐ ์ด์์ ํ๋์ด ํจ๊ป ์ ์๋์ด ์์ง ์์ผ๋ฏ๋ก ์ฃผ
์ด์ง ๋ฌธ๋ฒ์ LALR ๋ฌธ๋ฒ์ด๋ค. [์์ 6-30], [์์ 6-34], [์์ 6-38]์์
ํ ๊ฐ์ง ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ SLR, CLR, LALR ํ์ฑํ๋ฅผ ๋ง๋ค์ด๋ณด์๋ค. ํ์ฑํ
์ ์ถฉ๋์ด ์๋์ง ์๋์ง์ ๋ฐ๋ผ ๋ฌธ๋ฒ์ ๋งํ ์ ์๋๋ฐ, ์ด ๋ฌธ๋ฒ์ CLR,
LALR ๋ฌธ๋ฒ์ด์ง๋ง SLR ๋ฌธ๋ฒ์ ์๋๋ค. CLR, LALR ๋ฌธ๋ฒ์ ๋ง์ผ๋ฏ๋ก ํ์ฑ
ํ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ ์ ์์ผ๋ฉฐ, LALR ํ์ฑํ๊ฐ CLR ํ์ฑํ๋ณด๋ค ๋งค์ฐ ์
๋ค.
101
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
๋ชจํธํ ๋ฌธ๋ฒ์ ์ธ์ด์ ๋ช ์ธ์์ ๋งค์ฐ ์ ์ฉํ๋ค. ํํ์๊ณผ ๊ฐ์ ์ธ์ด ๊ตฌ์กฐ์ ๋ํด ๋ชจํธํ๋ฌธ๋ฒ์ ๋๋ฑํ ๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ๋ณด๋ค ๋ ์งง๊ณ ๋ ์์ฐ์ค๋ฌ์ด ๋ช ์ธ๋ฅผ ์ ๊ณตํ๋ค. ์ฆ ๋ชจํธํ ๋ฌธ๋ฒ์ ๋๋ฑํ ๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ๋ณด๋ค ๋ฌธ๋ฒ์ ํํ์ด ๊ฐ๋จํ๋ฉฐ, ์ฌ๋๋ค์ด ์ฌ์ฉํ๊ธฐ์ ํจ์ฌ ์์ฐ์ค๋ฌ์ด ๋ฌธ๋ฒ์ด๋ค.
๋ชจํธํ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ํ์ฑํ๋ฅผ ์์ฑํ๋ฉด ํญ์ ์ด๋ -๊ฐ์ถ ์ถฉ๋์ด๋ ๊ฐ์ถ -๊ฐ์ถ ์ถฉ๋์์ผ๊ธฐํ๋ค.
์ด๋ฌํ ์ถฉ๋์ ์์ ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์์์ ๋ค๋ฃจ์๋ ๋ชจํธํ ๋ฌธ๋ฒ์ ๋๋ฑํ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํ๋ ๊ฒ์ด๋ค. ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ชจํธํ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ํ์ฑํ๋ฅผ ์์ฑํ ๋ค์ ํ์ฑํ์์ ๋ฐ์ํ๋ ์ถฉ๋์ ์ ๊ฑฐํ๋ ๊ฒ.
๋ ๊ฐ์ง์ ๋ชจํธํ ๋ฌธ๋ฒ์ ํตํด ํ์ฑํ์ ๋ํ๋ ์ถฉ๋์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ๋์ . ์ฒซ ๋ฒ์งธ๋ ์ฐ์ ์์์ ์ฐ์ฐ์ ์ฐ์ ์์์ ๊ฒฐํฉ ๋ฒ์น์ ์ด์ฉํ์ฌ ์ถฉ๋์ ์ ๊ฑฐํ๋ ๊ฒ์ด๊ณ , ๋ ๋ฒ์งธ๋ ํ์ else๋ผ๊ณ ํ๋ ๋ชจํธํ ๋ฌธ๋ฒ์ด๋ค.
๋จผ์ ์ฐ์ ์์์ ์ฐ์ฐ์ ์ฐ์ ์์์ ๊ฒฐํฉ ๋ฒ์น์ ์ด์ฉํ์ฌ ์ถฉ๋์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์. ์ถฉ๋์ ์ด๋ -๊ฐ์ถ ์ถฉ๋๊ณผ ๊ฐ์ถ -๊ฐ์ถ ์ถฉ๋์ด ์๋๋ฐ, ์ด๋ -๊ฐ์ถ ์ถฉ๋์ ๊ฒฝ์ฐ ๊ฐ์ถ๋๋ ์์ฑ ๊ท์น๊ณผ ์ ๋ ฅ ๊ธฐํธ์ ์ฐ์ ์์๋ฅผ ๋น๊ตํ์ฌ ์์ฑ ๊ท์น์ ์ฐ์ ์์๊ฐ ๋์ผ๋ฉด๊ฐ์ถ์ ์ ํ ํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋์ ์ ํํ๋ค. ์์ฑ ๊ท์น์ ์ฐ์ ์์๋ ๊ทธ ์์ฑ ๊ท์น ๋ด์ ์๋ ํฐ๋ฏธ๋ ๊ธฐํธ๋ก ๊ฒฐ์ ํ ์ ์๋ค. ๋ฐ๋ฉด์ ๊ฐ์ถ -๊ฐ์ถ ์ถฉ๋์ ๊ฐ์ถ๋๋ ์์ฑ๊ท์น์ ์ฐ์ ์์๋ฅผ ๋น๊ต ํ์ฌ ์ฐ์ ์์๊ฐ ๋์ ์ชฝ์ผ๋ก ๊ฐ์ถํ๋ฉด ๋๋ค
102
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
์ถฉ๋์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ
์ด๋-๊ฐ์ถ ์ถฉ๋์ธ ๊ฒฝ์ฐ ์ถฉ๋์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ
โข ๊ฐ์ถ๋๋ ์์ฑ๊ท์น๊ณผ ์ ๋ ฅ ๊ธฐํธ์ ์ฐ์ ์์๋ฅผ ๋น๊ตํ์ฌ ๊ฒฐ์
โ ์์ฑ๊ท์น์ ์์๊ฐ ๋์ผ๋ฉด ๊ฐ์ถ์ ์ ํ, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋์ ์ ํ
โข ๊ฐ์ ์์์ธ ๊ฒฝ์ฐ์๋ ๊ฒฐํฉ ๋ฒ์น์ ์ด์ฉ
โ ์ข์ธก ๊ฒฐํฉ์ ๋ง์กฑํ๋ฉด ๊ฐ์ถ, ์ฐ์ธก ๊ฒฐํฉ์ ๋ง์กฑํ๋ฉด ์ด๋์ ์ ํ
๊ฐ์ถ-๊ฐ์ถ ์ถฉ๋์ธ ๊ฒฝ์ฐ ์ถฉ๋์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ
โข ๊ฐ์ถ๋๋ ์์ฑ๊ท์น๋ค์ ์์๋ฅผ ๋น๊ตํ์ฌ ์ด๋ ์์ฑ๊ท์น์ผ๋ก ๊ฐ์ถํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํ๋๋ฐ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ์ ์ ํ
โ ์์ฑ๊ท์น์ ์์๋ ๊ทธ ์์ฑ๊ท์น ๋ด์ ์๋ ํฐ๋ฏธ๋ ๊ธฐํธ๋ก ๊ฒฐ์ ๊ฐ๋ฅ
103
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
[์์ 6-40] ๋ชจํธํ ๋ฌธ๋ฒ์ ๋ํ SLR ํ์ฑํ๋ฅผ ๋ง๋ค๊ณ ์ถฉ๋ ์ ๊ฑฐํ๊ธฐ
[์์ 6-39]์ ์ฃผ์ด์ง ๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ์ ๋ํ SLR ํ์ฑํ๋ฅผ ๋ง๋ค๊ณ , ๋ชจํธํ ๋ฌธ๋ฒ์ ๋ํด์๋ SLR ํ์ฑํ๋ฅผ ๋ง๋ค์ด ์ถฉ๋์ด ๋ฐ์ํ๋์ง ํ์ธํ๋ค. ์ถฉ๋์ด๋ฐ์ํ๋ฉด ์ฐ์ฐ์ ์ฐ์ ์์์ ๊ฒฐํฉ ๋ฒ์น์ ์ ์ฉํ์ฌ ์ถฉ๋์ ์ ๊ฑฐํ๊ณ , ์ถฉ๋์์ ๊ฑฐํ ํ ๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ์ ํ์ฑํ์ ๋น๊ตํด๋ณด์.
[ํ์ด]
โข [์์ 6-27]๊ณผ [์์ 6-28]์์ ๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ์ผ๋ก ๋ณํ๋ ๋ฌธ๋ฒ์ ๋ํด [ํ 6-3]๊ณผ๊ฐ์ ํ์ฑํ๋ฅผ ๋ง๋ค์์ผ๋ฉฐ, [ํ 6-3]์์๋ ์ถฉ๋์ด ๋ฐ์ํ์ง ์์๋ค. ์ฌ๊ธฐ์๋ ๋ชจํธํ๋ฌธ๋ฒ์ ๋ํด SLR ํ์ฑํ๋ฅผ ๋ง๋ค์ด๋ณด์.
โข 1. ์ฆ๊ฐ ๋ฌธ๋ฒ์ ๋ง๋ ๋ค.
โข 2. FOLLOW๋ฅผ ๊ณ์ฐํ๋ค.
โ FOLLOW(E) = {+, *, ), $}
104
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
3. SLR ํ์ฑํ
105
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
์ด ๋ฌธ๋ฒ์์๋ ์ํ I7, I8์์ ์ด๋ -๊ฐ์ถ ์ถฉ๋์ด ๋ฐ์ํ๋ค. ํ์ฑํ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํด๋ณด๋ฉด๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ์ ๋ํ ํ์ฑํ๋ 12ร9 ํ๋ ฌ์ธ ๋ฐ ๋นํด ๋ชจํธํ ๋ฌธ๋ฒ์ ๋ํ ํ์ฑํ๋ 10ร9 ํ๋ ฌ์ด๋ค. ์ฆ ์ถฉ๋๋ง ํด๊ฒฐํ๋ค๋ฉด ๋ชจํธํ ๋ฌธ๋ฒ์ ๋ํ ํ์ฑํ๋ฅผ ๋ชจํธํ์ง ์์๋ฌธ๋ฒ์ ๋ํ ํ์ฑํ๋ณด๋ค ์๊ฒ ๋ง๋ค ์ ์๊ณ ๊ตฌ๋ฌธ ๋ถ์ ์๊ฐ๋ ๋น ๋ฅด๊ฒ ํ ์ ์๋ค.
์ํ I7๊ณผ I8์ ๋ํ ํ์ฑํ ๋ค์๊ณผ ๊ฐ๋ค.
LA(I7, [E โ E + E.]) = {+, *, ), $}
LA(I8, [E โ E * E.]) = {+, *, ), $}
์ถฉ๋์ ํด๊ฒฐ
โข ์์ฑ ๊ท์น์ ์๋ ๊ธฐํธ์ ์ด๋ ๊ธฐํธ์ ์์๋ฅผ ๋น๊ตํ์ฌ ์์ฑ๊ท์น์ ์๋ ๊ธฐํธ์ ์์๊ฐ ๋์ผ๋ฉด ๊ฐ์ถํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋ํ๋ค.
โข ๊ฐ์ ์์์ผ ๊ฒฝ์ฐ, ์ข์ธก ๊ฒฐํฉ์ ๋ง์กฑํ๋ฉด ๊ฐ์ถํ๊ณ ์ฐ์ธก ๊ฒฐํฉ์ ๋ง์กฑํ๋ฉด ์ด๋ํ๋ค.
106
์ํ id + * ( ) $ E
I7 r1,s4 r1,s5 r1 r1
I8 r2,s4 r2,s5 r2 r2
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
107
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
์ ๋ ฅ ๋ฌธ์ฅ id + id * id์ ๋ํด ๋ชจํธํ ๋ฌธ๋ฒ์ ํ์ฑํ๋ฅผ ๊ฐ์ง๊ณ ๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด์.
๋ ์ด์ ์งํํ์ง ๋ชปํ๋ค.
108
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
๋ง์ง๋ง์ผ๋ก ์ ๋ ฅ ๋ฌธ์ฅ id + id * id์ ๋ํด ์ถฉ๋์ ํด๊ฒฐํ ํ์ฑํ๋ฅผ ๊ฐ์ง๊ณ ๊ตฌ๋ฌธ ๋ถ์์ํด๋ณด์.
109
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด๋ ๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ์ ๋ํด์๋ 22๋จ๊ณ์ ๊ณผ์ ์ ๊ฑฐ์น์ง๋ง, ๋ชจํธํ๋ฌธ๋ฒ์ ๋ํด ํ์ฑํ๋ฅผ ๋ง๋ ํ ์ถฉ๋์ ์ ๊ฑฐํ ํ์ฑํ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ๋ฌธ ๋ถ์์ ํ๋ฉด 16๋จ๊ณ ๋ง์ ๋๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค. ๋ฐ๋ผ์ ๋ชจํธํ์ง ์์ ๋ฌธ๋ฒ์ ๋ํ ํ์ฑํ๋ณด๋ค ๋ชจํธํ๋ฌธ๋ฒ์ ๋ํ ํ์ฑํ๊ฐ ํฌ๊ธฐ๋ ์๊ณ ๊ตฌ๋ฌธ ๋ถ์ ์๊ฐ๋ ๋จ์ถํ ์ ์๋ค.
110
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
[์์ 6-42] ์๋ฌ ๊ฒ์ถ๊ณผ ์๋ฌ ์ฒ๋ฆฌ
๋ค์์ ๋ชจํธํ ๋ฌธ๋ฒ์ ๋ํ LR ํ์ฑํ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ฌ ์ฒ๋ฆฌ์ ๋ํด ์ค๋ช ํด๋ณด์.
E โ E + E | E * E | (E) | id
[ํ์ด]
โข ์๋ฌ ๊ฒ์ถ๊ณผ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ์ํด ์์ ๋ LR ํ์ฑํ๋ [ํ 6-12]์ ๊ฐ๋ค.
111
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
112
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
์๋ฌ ์ฒ๋ฆฌ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
e1 : ์ด ๋ฃจํด์ ์ํ 0, 2, 4, 5๋ก๋ถํฐ ํธ์ถ๋๋ค. ์ด๋ฌํ ์ํ๋ ๋ชจ๋ id๋ฅผ ๊ธฐ๋ํ๋๋ฐ +, *, $๊ฐ ๋ฐ๊ฒฌ๋์
๋ค.
โmissing operandโ๋ฅผ ์ถ๋ ฅํ๋ค.
๊ณ์ ์ฒ๋ฆฌํ๋ค๋ฉด ์ํ 0, 2, 4, 5์์ id๋ฅผ ์ฝ์ด๊ฐ ์ ์๋ ์ํ 3์ด๋ฏ๋ก id๋ฅผ push ํ๊ณ ์ํ 3์ push
ํ๋ค.
e2 : ์ค๋ฅธ์ชฝ ๊ดํธ๋ฅผ ๋ฐ๊ฒฌํ์ ๋ ์ํ 0, 1, 2, 4, 5๋ก๋ถํฐ ํธ์ถ๋๋ค. ์ผ์ชฝ ๊ดํธ ์์ด ์ค๋ฅธ์ชฝ ๊ดํธ๋ฅผ ๋ฐ๊ฒฌ
ํ ๊ฒฝ์ฐ์ด๋ฏ๋ก ์ ๋ ฅ์์ ์ค๋ฅธ์ชฝ ๊ดํธ๋ฅผ ์ ๊ฑฐํ๋ผ๊ณ ํ๊ฑฐ๋ ์ผ์ชฝ ๊ดํธ๋ฅผ ์ถ๊ฐํ๋ผ๊ณ ํ๋ค.
โunbalanced right parenthesisโ๋ฅผ ์ถ๋ ฅํ๋ค.
๊ณ์ ์ฒ๋ฆฌํ๋ค๋ฉด ์ ๋ ฅ์์ ์ค๋ฅธ์ชฝ ๊ดํธ๋ฅผ ์ ๊ฑฐํ๋ค.
e3 : ์ด ๋ฃจํด์ ์ํ 1, 6์ผ๋ก๋ถํฐ ํธ์ถ๋๋ค. ํผ์ฐ์ฐ์๋ฅผ ์ฝ๊ณ ์ฐ์ฐ์๋ฅผ ๊ธฐ๋ํ๊ณ ์๋๋ฐ id๋ ์ค๋ฅธ์ชฝ ๊ด
ํธ๊ฐ ๋ฐ๊ฒฌ๋ ๊ฒฝ์ฐ์ด๋ค.
โmissing operatorโ๋ฅผ ์ถ๋ ฅํ๋ค.
๊ณ์ํ๋ค๋ฉด +์ ์์ํ๋ ์ํ 4๋ฅผ ์คํ์ ์ ์ฅํ๋ค.
e4 : ์ด ๋ฃจํด์ ์ํ 6์ผ๋ก๋ถํฐ ํธ์ถ๋๊ณ ์ ๋ ฅ์ ๋์ธ $๊ฐ ๋ฐ๊ฒฌ๋์๋ค. ์ผ์ชฝ ๊ดํธ๋ ๋์๋๋ฐ ์ค๋ฅธ์ชฝ ๊ด
ํธ๊ฐ ์๋ ๊ฒฝ์ฐ์ด๋ค.
โmissing right parenthesesโ๋ฅผ ์ถ๋ ฅํ๋ค.
๊ณ์ํ๋ค๋ฉด ์ค๋ฅธ์ชฝ ๊ดํธ์ ์์ํ๋ ์ํ 9๋ฅผ ์คํ์ ์ ์ฅํ๋ค 113
6.4 ๋ชจํธํ ๋ฌธ๋ฒ์ ์ฌ์ฉ๊ณผ ์๋ฌ ์ฒ๋ฆฌ ๋ฃจํด
[์์ 6-43] ์๋ฌ ๋ณต๊ตฌ๋ฅผ ์ํ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ
[์์ 6-42]์ ํ์ฑํ๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฅ ๋ฌธ์ฅ id+)$์ ๊ตฌ๋ฌธ ๋ถ์์ ํด๋ณด์.
[ํ์ด]
114