๐Ÿ”—Lex & Yac ์‚ฌ์šฉ๋ฒ•

Screen Shot 2022-11-28 at 8.02.21 PM.png

Lex (Lexical analyzer)

์–ดํœ˜ ๋ถ„์„๊ธฐ ์ƒ์„ฑ ํˆด

์–ดํœ˜ ๋ถ„์„๊ธฐ๋Š” ์ฃผ์–ด์ง„ ์ž…๋ ฅ์ŠคํŠธ๋ฆผ์„ ์˜๋ฏธ ๋‹จ์œ„์ธ token์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

Yacc (Yet another compiler compiler)

๊ตฌ๋ฌธ ๋ถ„์„๊ธฐ ์ƒ์„ฑ ํˆด

yacc์€ lex์— ์˜ํ•ด ๊ตฌํ•ด์ง„ token๊ฐ„์˜ relationship์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ตฌ๋ฌธ ๋ถ„์„๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํˆด๋กœ์„œ lex์˜ ์ƒ์œ„ ๋‹จ๊ณ„์— ์œ„์น˜ํ•˜๋ฉฐ lex๊ฐ€ ์ƒ์„ฑํ•œ ์–ดํœ˜ ๋ถ„์„๊ธฐ yylex()๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค. ์ฆ‰, yacc specification ํŒŒ์ผ๋‚ด user routine๋‚ด์—์„œ yacc๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๊ตฌ๋ฌธ ๋ถ„์„๊ธฐ ๋ฃจํ‹ด์ธ yyparse()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด yyparse()๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ yylex()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ•„์š”ํ•œ token๋“ค์„ ๋ฐ›์•„๊ฐ€๋ฉด์„œ ์ฃผ์–ด์ง„ ๋ฌธ๋ฒ•์— ๋ถ€ํ•ฉํ•˜๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. ์ฃผ์–ด์ง„ ๋ฌธ๋ฒ• ๊ทœ์น™์— ์ž…๋ ฅ ํ† ํฐ๋“ค์ด ์ผ์น˜ํ•˜๋Š” ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ parsing์ด๋ผ๊ณ  ํ•œ๋‹ค.