์ถ์ ์ค๋น์๋ ๊ฑฐ์ XNUMX๋
์ด ๊ฑธ๋ ธ์ต๋๋ค. ์ธ์ ๋ ๊ทธ๋ ๋ฏ์ด ๋๋ถ๋ถ์ ์๊ฐ์ ์ด๋ก ์ ํ์ ๊ฐ๋ฐํ๊ณ ๊ธ์ ์ฐ๋ ๋ฐ ์๋น๋์์ต๋๋ค.
๊ธฐ์ฌ "
๊ธฐ์ฌ์ ์ค๋ช
๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ libre2c์์ ๊ตฌํ๋ฉ๋๋ค.
(๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ถ ๋ฐ ์ฑ๋ฅ ํ
์คํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ผ๋ฉฐ ๊ตฌ์ฑ ์ต์
โโenable-libsโ์ ์ํด ํ์ฑํ๋ฉ๋๋ค). ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ RE2์ ๊ฐ์ ๊ธฐ์กด ํ๋ก์ ํธ์ ๊ฒฝ์์๊ฐ ์๋๋ผ ์๋ก์ด ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์ํ ์ฐ๊ตฌ ํ๋ซํผ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ(re2c ๋๋ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์์) ๋ํ ํ
์คํธ, ์ฑ๋ฅ ์ธก์ ๋ฐ ๋ค๋ฅธ ์ธ์ด์ ๋ํ ๋ฐ์ธ๋ฉ ์์ฑ์ ๊ด์ ์์๋ ํธ๋ฆฌํฉ๋๋ค.
๋ฒ์ re2c 1.2์ ์ฃผ์ ํ์ ์ฌํญ:
- ์
๋ ฅ ๋ฐ์ดํฐ์ ๋์ ํ์ธํ๊ธฐ ์ํ ์๋ก์ด ๋จ์ํ๋ ๋ฐฉ๋ฒ("EOF ๊ท์น")์ ์ถ๊ฐํ์ต๋๋ค. ์ด๋ฅผ ์ํด "re2c:eof" ๊ตฌ์ฑ์ด ์ถ๊ฐ๋์์ต๋๋ค.
ํฐ๋ฏธ๋ ๋ฌธ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ดํ ๋ถ์๊ธฐ๊ฐ ์คํ๋๋ ๊ฒฝ์ฐ ํธ๋ฆฌ๊ฑฐ๋๋ ํน์ ๊ท์น "$"
์ ๋ ฅ ๋ฐ์ดํฐ์ ๋์ ์ฑ๊ณต์ ์ผ๋ก ๋๋ฌํ์ต๋๋ค.
์ญ์ฌ์ ์ผ๋ก re2c๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฒ์ฆ ๋ฐฉ๋ฒ์ ์ ํํ ์ ์์ต๋๋ค.
์ ํ, ํจ์จ์ฑ ๋ฐ ๋จ์์ฑ์ด ๋ค์ํ ์ ๋ ฅ ๋
์์ฉ ํ๋ก๊ทธ๋จ. ์๋ก์ด ๋ฐฉ๋ฒ์ ์ฝ๋ ์์ฑ์ ๋จ์ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
ํจ๊ณผ์ ์ด๊ณ ๋๋ฆฌ ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์๋ ๋ฐฉ์
์ฌ์ ํ ์๋ํ๋ฉฐ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ ํธ๋ ์ ์์ต๋๋ค. - ์ง์๋ฌธ์ ์ฌ์ฉํ์ฌ ์ธ๋ถ ํ์ผ์ ํฌํจํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
"/*!include:re2c "file.re" */", ์ฌ๊ธฐ์ "file.re"๋ ํฌํจํ ํ์ผ์ ์ด๋ฆ์ ๋๋ค. Re2c๋ ํฌํจ ํ์ผ ๋๋ ํฐ๋ฆฌ์์ ํ์ผ์ ์ฐพ์ต๋๋ค.
"-I" ์ต์ ์ ์ฌ์ฉํ์ฌ ์ง์ ๋ ๊ฒฝ๋ก ๋ชฉ๋ก์๋ ํ์๋ฉ๋๋ค.
ํฌํจ๋ ํ์ผ์๋ ๋ค๋ฅธ ํ์ผ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
Re2c๋ "include/" ๋๋ ํ ๋ฆฌ์ "ํ์ค" ํ์ผ์ ์ ๊ณตํฉ๋๋ค.
ํ๋ก์ ํธ - ์ ์ฉํ ์ ์๊ฐ ๊ฑฐ๊ธฐ์ ์ถ์ ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ์ ๊ท์์ ๋๋ค.
์ง๊ธ๊น์ง ์์ ์์ ์์ฒญ์ ๋ฐ๋ผ ์ ๋์ฝ๋ ๋ฒ์ฃผ ์ ์๊ฐ ํฌํจ๋ ํ์ผ ํ๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. - ์์์ ํค๋ ํ์ผ์ ์์ฑํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
"-t --type-header" ์ต์ ์ ์ฌ์ฉํ๋ ์ฝํ ์ธ (๋๋ ์ ์ ํ
๊ตฌ์ฑ) ๋ฐ ์๋ก์ด ์ง์๋ฌธ "/*!header:re2c:on*/" ๋ฐ
"/*!ํค๋:re2c:off*/". ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํ ์ ์์ต๋๋ค.
re2c๊ฐ ๋ณ์, ๊ตฌ์กฐ ๋ฐ ๋งคํฌ๋ก์ ์ ์๋ฅผ ์์ฑํด์ผ ํ ๋,
๋ค๋ฅธ ๋ฒ์ญ ๋จ์์ ์ฌ์ฉ๋ฉ๋๋ค. - Re2c๋ ์ด์ ์ ๊ท์์ UTF8 ๋ฆฌํฐ๋ด๊ณผ ๋ฌธ์ ํด๋์ค๋ฅผ ์ดํดํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก re2c๋ "โx โy"์ ๊ฐ์ ํํ์์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ฌธ ๋ถ์ํฉ๋๋ค.
1๋นํธ ASCII ๋ฌธ์ "e2 88 80 78 20 e2 88 83 79"์ ์ํ์ค
(XNUMX์ง์ ์ฝ๋)์ด๋ฉฐ ์ฌ์ฉ์๋ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์ด์ค์ผ์ดํํด์ผ ํฉ๋๋ค.
โ\\u2200x \\u2203y.โ ์ด๊ฒ์ ๋ง์ ์ฌ๋๋ค์๊ฒ ๋งค์ฐ ๋ถํธํ๊ณ ์์์น ๋ชปํ ์ผ์ ๋๋ค.
(์ง์์ ์ธ ๋ฒ๊ทธ ๋ณด๊ณ ๋ก ์ ์ฆ๋จ) ๊ทธ๋์ ์ง๊ธ
re2c๋ "--input-encoding {ascii | utf8}",
์ด๋ฅผ ํตํด ๋์์ ๋ณ๊ฒฝํ๊ณ "โx โy"๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ต๋๋ค.
โ2200 78 20 2203 79.โ - ์ด์ Re2c์์๋ "-r --reuse" ๋ชจ๋์์ ์ผ๋ฐ re2c ๋ธ๋ก์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ๋ ฅ ํ์ผ์ ๋ง์ ๋ธ๋ก์ด ํฌํจ๋์ด ์๊ณ ๊ทธ ์ค ์ผ๋ถ๋ง ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ํธ๋ฆฌํฉ๋๋ค.
์ฌ์ฌ์ฉ์ด ํ์ํฉ๋๋ค. - ์ด์ ๊ฒฝ๊ณ ๋ฐ ์ค๋ฅ ๋ฉ์์ง์ ํ์์ ์ค์ ํ ์ ์์ต๋๋ค
์๋ก์ด ์ต์ "--location-format {gnu | msvc}". GNU ํ์์ด ํ์๋ฉ๋๋ค
"ํ์ผ ์ด๋ฆ:์ค:์ด:"์ด๊ณ MSVC ํ์์ "ํ์ผ ์ด๋ฆ(์ค, ์ด)"์ ๋๋ค.
์ด ๊ธฐ๋ฅ์ IDE ์ ํธ๊ฐ์๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
์ฑ๊ณตํ ๊ฒฝ์ฐ ์งง์ ์น๋ฆฌ ๋ฉ์์ง๋ฅผ ํ์ํ๋ "--verbose" ์ต์ ๋ ์ถ๊ฐ๋์์ต๋๋ค. - flex์ "ํธํ์ฑ" ๋ชจ๋๊ฐ ๊ฐ์ ๋์์ต๋๋ค. ์ผ๋ถ ๊ตฌ๋ฌธ ๋ถ์ ์ค๋ฅ๊ฐ ์์ ๋์์ผ๋ฉฐ
๋๋ฌธ ๊ฒฝ์ฐ์ง๋ง ์ฐ์ฐ์ ์ฐ์ ์์๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.
์ญ์ฌ์ ์ผ๋ก "-F --flex-suppor" ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์์ฑํ ์ ์์์ต๋๋ค.
flex ์คํ์ผ๊ณผ re2c ์คํ์ผ์ด ํผํฉ๋์ด ์์ด ๊ตฌ๋ฌธ ๋ถ์์ด ์ฝ๊ฐ ์ด๋ ต์ต๋๋ค.
Flex ํธํ ๋ชจ๋๋ ์ ์ฝ๋์์๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ re2c๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ํด ๊ณ์ ์ง์ํฉ๋๋ค. - ์ด์ ๋ฌธ์ ํด๋์ค ๋นผ๊ธฐ ์ฐ์ฐ์ "/"๊ฐ ์ ์ฉ๋ฉ๋๋ค.
๋ ๋ง์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋๋ก ์ธ์ฝ๋ฉ์ ํ์ฅํ๊ธฐ ์ ์,
๊ฐ๋ณ ๋ฌธ์ ๊ธธ์ด ์ธ์ฝ๋ฉ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ(์: UTF8) - ์ด์ ์ถ๋ ฅ ํ์ผ์ด ์์์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. re2c๋ ๋จผ์ ์์ ํ์ผ์ ์์ฑํฉ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ์ฌ๊ธฐ์ ์ด ๋ค์ ์์ ํ์ผ์ ์ด๋ฆ์ ์ถ๋ ฅ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
ํ๋์ ์์ . - ๋ฌธ์๊ฐ ์์ฑ๋๊ณ ๋ค์ ์์ฑ๋์์ต๋๋ค. ํนํ ์๋ก์ด ๊ฒ์ด ์ถ๊ฐ๋์์ต๋๋ค
์ ๊ดํ ์ฅhttp://re2c.org/manual/manual.html#buffer-refilling ะทะฐะฟะพะปะฝะตะฝะธะต ะฑััะตัะฐ
ะธ์ ๋ ฅ ๋ฐ์ดํฐ์ ๋์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ํด .
์ ๋ฌธ์๋ ๋ค์ ํ์์ผ๋ก ์์ง๋ฉ๋๋ค.
ํฌ๊ด์ ์ธ ํ ํ์ด์ง์ง๋ฆฌ ๊ฐ์ด๋
์์ ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค(๋์ผํ ์์ค๊ฐ ๋งจํ์ด์ง์ ์จ๋ผ์ธ ์ค๋ช ์์ ๋ ๋๋ง๋์ด ์์ต๋๋ค).
ํด๋ํฐ์์ ์ฌ์ดํธ์ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๋ ค๋ ์๋๋ ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์์ต๋๋ค. - ๊ฐ๋ฐ์์ ๊ด์ ์์ re2c๋ ๋ณด๋ค ์์ ํ ํ์ ์์คํ
์ ํ๋ํ์ต๋๋ค.
๋๋ฒ๊น ์ด์ ๋ฆด๋ฆฌ์ค ๋น๋์์๋ ๋๋ฒ๊น ์ฝ๋๊ฐ ๋นํ์ฑํ๋๊ณ
๊ตฌ์ฑ ์ต์ "--enable-debug"๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฑํํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru