์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- Go ์ธ์ด์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค(re2c์ "--lang go" ์ต์ ๋๋ ๋ณ๋์ re2go ํ๋ก๊ทธ๋จ์ผ๋ก ํ์ฑํ๋จ). C์ Go์ ๋ํ ๋ฌธ์๋ ๋์ผํ ํ ์คํธ์์ ์์ฑ๋์ง๋ง ์ฝ๋ ์์ ๋ ๋ค๋ฆ ๋๋ค. re2c์ ์ฝ๋ ์์ฑ ํ์ ์์คํ ์ด ์์ ํ ์ฌ์ค๊ณ๋์ด ํฅํ ์๋ก์ด ์ธ์ด๋ฅผ ๋ ์ฝ๊ฒ ์ง์ํ ์ ์์ต๋๋ค.
- CMake์ ๋์ฒด ๋น๋ ์์คํ
์ถ๊ฐ(๊ฐ์ฌํฉ๋๋ค.
ligfx !). re2c๋ฅผ CMake๋ก ๋ณํํ๋ ค๋ ์๋๋ ์ค๋ซ๋์ ์ด๋ฃจ์ด์ก์ง๋ง ligfx๊ฐ ๋์ฌ ๋๊น์ง ๋๊ตฌ๋ ์์ ํ ์๋ฃจ์ ์ ์ ์ํ์ง ์์์ต๋๋ค. ์ด์ Autotools ๋น๋ ์์คํ ์ ๊ณ์ ์ง์๋๊ณ ์ฌ์ฉ๋๋ฉฐ ๊ฐ๊น์ด ๋ฏธ๋์ ์ด๋ฅผ ํฌ๊ธฐํ ๊ณํ์ด ์์ต๋๋ค(๋ถ๋ถ์ ์ผ๋ก๋ ๋ฐฐํฌ ๊ฐ๋ฐ์์๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์ด๊ณ , ๋ถ๋ถ์ ์ผ๋ก๋ ์ด์ ๋น๋ ์์คํ ์ด ์ ๋น๋ ์์คํ ๋ณด๋ค ๋ ์์ ์ ์ด๊ณ ๋ ๊ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค). ). ๋ ์์คํ ๋ชจ๋ Travis CI๋ฅผ ์ฌ์ฉํ์ฌ ์ง์์ ์ผ๋ก ํ ์คํธ๋ฉ๋๋ค. - ์ผ๋ฐ API๋ฅผ ์ฌ์ฉํ ๋ ๊ตฌ์ฑ์ ์ธํฐํ์ด์ค ์ฝ๋๋ฅผ ์ง์ ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด์ ์๋ ๋๋ถ๋ถ์ API๋ฅผ ํจ์๋ ํจ์ ๋งคํฌ๋ก ํ์์ผ๋ก ์ง์ ํด์ผ ํ์ต๋๋ค. ์ด์ โ@@{name}โ ํ์์ ๋ช ๋ช ๋ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์ ๋๋ ๊ฐ๋จํ โ@@โ(๋งค๊ฐ๋ณ์๊ฐ ํ๋๋ง ์๊ณ ๋ชจํธ์ฑ์ด ์๋ ๊ฒฝ์ฐ)๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ฌธ์์ด ํ์์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค. API ์คํ์ผ์ re2c:api:style ๊ตฌ์ฑ์ ์ํด ์ค์ ๋ฉ๋๋ค(ํจ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์คํ์ผ์ ์ง์ ํ๊ณ ์์ ํ์์ ์์์ ์คํ์ผ์ ์ง์ ํฉ๋๋ค).
- "-c", "-start-conditions" ์ต์ ์ ์๋์ด ๊ฐ์ ๋์ด ํ๋์ re2c ๋ธ๋ก์ ์ํธ ์ฐ๊ฒฐ๋ ์ฌ๋ฌ ์ดํ ๋ถ์๊ธฐ๋ฅผ ๊ฒฐํฉํ ์ ์์ต๋๋ค. ์ด์ ์กฐ๊ฑด๋ถ ๋ธ๋ก๊ณผ ํจ๊ป ์ผ๋ฐ ๋ธ๋ก์ ์ฌ์ฉํ๊ณ ํ๋์ ํ์ผ์์ ๊ด๋ จ๋์ง ์์ ์ฌ๋ฌ ์กฐ๊ฑด๋ถ ๋ธ๋ก์ ์ ์ํ ์ ์์ต๋๋ค. "-c", "--start-conditions" ๋ฐ "-f", "--์ ํจ๊ป "-r", "--reuse" ์ต์ (๋ค๋ฅธ ๋ธ๋ก์์ ํ ๋ธ๋ก์ ์ฝ๋ ์ฌ์ฌ์ฉ)์ ํฅ์๋ ์๋ ์ ์ฅ ๊ฐ๋ฅ ์ํ" ์ต์ (์ด๋ ์ง์ ์์๋ ์ค๋จ๋๊ณ ๋์ค์ ๊ณ์ ์คํ๋ ์ ์๋ ์ํ ์ ์ฅ ์ดํ ๋ถ์๊ธฐ).
- ์ต๊ทผ ์ถ๊ฐ๋ EOF ๊ท์น(end-of-input) ์๊ณ ๋ฆฌ์ฆ์ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ต๋๋ค. ์ด๋ก ์ธํด ๋๋ฌผ๊ฒ ์ค์ฒฉ ๊ท์น์ด ์๋ชป ์ฒ๋ฆฌ๋๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ์ต๋๋ค.
- ๋ถํธ์คํธ๋ฉ ํ๋ก์ธ์ค๊ฐ ๋จ์ํ๋์์ต๋๋ค. ์ด์ ์๋ ๋น๋ ์์คํ ์ด ์์ฒด ์ฌ๊ตฌ์ถ์ ์ฌ์ฉํ ์ ์๋ ์ด๋ฏธ ๋น๋๋ re2c๋ฅผ ๋์ ์ผ๋ก ์ฐพ์ผ๋ ค๊ณ ํ์ต๋๋ค. ์ด๋ก ์ธํด ์๋ชป๋ ์ข ์์ฑ์ด ๋ฐ์ํ์ต๋๋ค(์ข ์์ฑ ๊ทธ๋ํ๊ฐ ๋์ ์ด์ด์ ๋๋ถ๋ถ์ ๋น๋ ์์คํ ์ด ์ข์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค). ์ด์ ์ดํ ๋ถ์๊ธฐ๋ฅผ ๋ค์ ๋น๋ํ๋ ค๋ฉด ๋น๋ ์์คํ ์ ๋ช ์์ ์ผ๋ก ๊ตฌ์ฑํ๊ณ RE2C_FOR_BUILD ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
์ถ์ฒ : opennet.ru