parser_1
parser
๋ compiler, interpreter์ ๊ตฌ์ฑ ์์ ์ค ํ๋๋ก ์
๋ ฅ token์ ํฌํจ ๋ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ฌธ๋ฒ์ ๊ฒ์ฌํฉ๋๋ค. darknet
์์๋ cfg
๋ก ๋คํธ์ํฌ์ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ฌธ๋ฒ์ ๊ฒ์ฌํ๋๋ฐ ์ฌ์ฉ ๋ฉ๋๋ค. ๋งค์ฐ ์ค์ํ๊ณ ์ ์ง์ฌ์ง ์๊ณ ๋ฆฌ์ฆ ์
๋๋ค.
์ฌ๊ธฐ์ cfg
ํ์ผ์ ๋ชจ๋ธ์ ๊ตฌ์กฐ๋ฅผ ๋ด๊ณ ์๋ ํ์ผ์
๋๋ค. ํ์ผ์ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋๋ต ์๋์ ๊ฐ์ต๋๋ค.
๊ดํธ์์๋ layer์ ํ์ ์ด ์ค์ ๋์ด ์๊ณ ๊ทธ ๋ฐ์๋ ํด๋น layer์ ํ์ํ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ค์ ํ๋๋ก ๋์ด์์ต๋๋ค.
์ด๋ ๊ฒ ๋ชจ๋ธ์ ๊ตฌ์กฐ๋ฅผ ์ค์ ํ๋ฉด ํ๋์ ๋คํธ์ํฌ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ฒ ๋ฉ๋๋ค.
network list๋ root
section list๋ layer
option list๋ layer์ ๋งค๊ฐ๋ณ์
๋ผ๊ณ ์ดํดํ๊ณ ์ฝ์ด๋ด ์๋ค.
parse_network_cfg
ํจ์ ์ด๋ฆ: parse_network_cfg
์ ๋ ฅ:
filename (str): ๊ตฌ์ฑ ํ์ผ์ ๊ฒฝ๋ก
๋์:
filename์์ ๊ตฌ์ฑ ํ์ผ์ ์ฝ๊ณ , ๊ฐ ์น์ ์ ๋ํ๋ด๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค.
๊ฐ ์น์ ์ ๋ํด ์ด ํจ์๋ parse_xxx ํจ์ ์ค ์ ์ ํ ํจ์๋ฅผ ํธ์ถํ์ฌ ๊ฐ ๋ ์ด์ด๋ฅผ ์์ฑํฉ๋๋ค. (xxx๋ ๋ ์ด์ด ์ ํ์ ๋ํ ์ด๋ฆ์ ๋๋ค.)
๊ฐ ๋ ์ด์ด๋ ์ถ๋ ฅ์ฐจ์, ํํฐ ์, ํฌ๊ธฐ, ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ์ฐจ์ ๋ฑ๊ณผ ๊ฐ์ ๋ ์ด์ด์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ธ์ํฉ๋๋ค.
๋ ์ด์ด ์์ฑ ํ, ๋ ์ด์ด๋ฅผ ๋คํธ์ํฌ ๊ตฌ์กฐ์ ์ ์ฅํฉ๋๋ค.
์ค๋ช :
parse_network_cfg ํจ์๋ Darknet์ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑ ํ์ผ์์ ์์ฑํ๋ ์ญํ ์ ํฉ๋๋ค.
์ด ํจ์๋ filename์์ ๊ตฌ์ฑ ํ์ผ์ ์ฝ์ด๋ค์ธ ํ, ๊ฐ ์น์ ์ ๋ํ๋ด๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ์น์ ์ ๋ํด์ parse_xxx ํจ์ ์ค ์ ์ ํ ํจ์๋ฅผ ํธ์ถํ์ฌ ๊ฐ ๋ ์ด์ด๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ params ๊ตฌ์กฐ์ฒด์๋ ๋คํธ์ํฌ์ ๋ํ ์ ๋ ฅ ํฌ๊ธฐ, ๋ฐฐ์น ํฌ๊ธฐ ๋ฑ์ ์ฌ๋ฌ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ฅ๋์ด ์์ต๋๋ค.
์์ฑ๋ ๋ ์ด์ด๋ ์ถ๋ ฅ์ฐจ์, ํํฐ ์, ํฌ๊ธฐ, ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ์ฐจ์ ๋ฑ์ ๋ ์ด์ด์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ธ์ํ๋ฉฐ, ์์ฑ๋ ๋ ์ด์ด๋ ๋คํธ์ํฌ ๊ตฌ์กฐ์ ์ ์ฅ๋ฉ๋๋ค.
params (Params ๊ตฌ์กฐ์ฒด): ๋คํธ์ํฌ์ ๋ํ ์ ๋ ฅ ํฌ๊ธฐ, ๋ฐฐ์น ํฌ๊ธฐ ๋ฑ๊ณผ ๊ฐ์ ์ฌ๋ฌ ๋งค๊ฐ๋ณ์
read_cfg
ํจ์ ์ด๋ฆ: read_cfg
์ ๋ ฅ:
filename (char*): ์ค์ ํ์ผ์ ๊ฒฝ๋ก์ ์ด๋ฆ์ ๊ฐ๋ฆฌํค๋ ๋ฌธ์์ด ํฌ์ธํฐ
๋์:
filename์ผ๋ก ์ง์ ๋ ์ค์ ํ์ผ์ ์ด๊ณ , ํ์ผ์ ํ ์ค์ฉ ์ฝ์ด๋ค์ ๋๋ค.
์ฝ์ด๋ค์ธ ์ค์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ๋ฐ๋ผ ํด๋น ์ค์ด section, ์ฃผ์, ๋น์ด์๋ ์ค, ๋๋ option์ธ์ง๋ฅผ ํ๋จํฉ๋๋ค.
section์ธ ๊ฒฝ์ฐ ์๋ก์ด section์ ์์ฑํ๊ณ options ๋ฆฌ์คํธ๋ฅผ ํ ๋นํฉ๋๋ค.
option์ธ ๊ฒฝ์ฐ ํ์ฌ section์ options ๋ฆฌ์คํธ์ ํด๋น option์ ์ถ๊ฐํฉ๋๋ค.
์ค์ ํ์ผ์ ๋ชจ๋ ์ฝ์ด๋ค์ธ ํ, ์์ฑ๋ ๋ชจ๋ section๊ณผ option์ ๋ด์ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค.
์ค๋ช :
์ด ํจ์๋ ์ค์ ํ์ผ์ ์ฝ์ด๋ค์ด๋ ๊ธฐ๋ฅ์ ๋ด๋นํฉ๋๋ค. ์ค์ ํ์ผ์ section๊ณผ option์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, section์ ๋๊ดํธ๋ก ๋๋ฌ์ธ์ธ ๋ฌธ์์ด๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ๊ฐ section์ ํด๋น section์ ์ํ option๋ค์ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ฐ option์ option์ ์ด๋ฆ๊ณผ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ์ด๋ฆ๊ณผ ๊ฐ์ ๊ตฌ๋ถํ๋ ๋ฌธ์๋ ๋ฑํธ(=)์ ๋๋ค.
์ด ํจ์๋ filename์ผ๋ก ์ง์ ๋ ์ค์ ํ์ผ์ ์ด๊ณ , ํ์ผ์ ํ ์ค์ฉ ์ฝ์ด๋ค์ ๋๋ค. ์ฝ์ด๋ค์ธ ์ค์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ๋ฐ๋ผ ํด๋น ์ค์ด section, ์ฃผ์, ๋น์ด์๋ ์ค, ๋๋ option์ธ์ง๋ฅผ ํ๋จํฉ๋๋ค. section์ธ ๊ฒฝ์ฐ ์๋ก์ด section์ ์์ฑํ๊ณ options ๋ฆฌ์คํธ๋ฅผ ํ ๋นํฉ๋๋ค. option์ธ ๊ฒฝ์ฐ ํ์ฌ section์ options ๋ฆฌ์คํธ์ ํด๋น option์ ์ถ๊ฐํฉ๋๋ค. ์ค์ ํ์ผ์ ๋ชจ๋ ์ฝ์ด๋ค์ธ ํ, ์์ฑ๋ ๋ชจ๋ section๊ณผ option์ ๋ด์ ๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค.
ํจ์์์๋ ์ค์ ํ์ผ์์ ์ฝ์ด๋ค์ธ ๊ฐ ์ค์ strip ํจ์๋ฅผ ์ด์ฉํ์ฌ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ ํ ์ฒ๋ฆฌํฉ๋๋ค. ๋ง์ฝ option์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ํด๋น ์ค์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฉด, ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ํด๋น ์ค์ ์ ์ธํฉ๋๋ค.
ํจ์์์๋ options ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ๋ด์ section ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ์์ฑ๋ section ๊ตฌ์กฐ์ฒด๋ options ๋ฆฌ์คํธ์ section ์ด๋ฆ์ ๊ฐ์ง๋๋ค. ๋ชจ๋ section ๊ตฌ์กฐ์ฒด์ option ๊ตฌ์กฐ์ฒด๋ make_list ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
parse_net_options
ํจ์ ์ด๋ฆ: parse_net_options
์ ๋ ฅ:
options: ๋ฆฌ์คํธ ํฌ์ธํฐ. ๋คํธ์ํฌ ์ค์ ์ต์ ์ ๋ด๊ณ ์๋ค.
net: ๋คํธ์ํฌ ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ. ์ต์ ์์ ํ์ฑํ ๊ฐ์ ์ ์ฅํ ๊ตฌ์กฐ์ฒด์ด๋ค.
๋์:
๋คํธ์ํฌ ์ค์ ์ต์ ์ ํ์ฑํ์ฌ ๋คํธ์ํฌ ๊ตฌ์กฐ์ฒด์ ์ ์ฅํ๋ค.
์ค๋ช :
์ด ํจ์๋ Darknet ํ๋ ์์ํฌ์์ ๋คํธ์ํฌ ์ค์ ์ต์ ์ ํ์ฑํ์ฌ ๋คํธ์ํฌ ๊ตฌ์กฐ์ฒด์ ์ ์ฅํ๋ ์ญํ ์ ํ๋ค.
ํจ์ ๋ด๋ถ์์๋ option_find ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ต์ ๊ฐ์ ์ฐพ์ ํ, ์ด ๊ฐ์ ์ด์ฉํ์ฌ ๋คํธ์ํฌ ๊ตฌ์กฐ์ฒด์ ๊ฐ์ ์ ์ฅํ๋ค.
์ ์ฅํ๋ ๊ฐ์ ๋ฐฐ์น ํฌ๊ธฐ, ํ์ต๋ฅ , ๋ชจ๋ฉํ , ๊ฐ์ค์น ๊ฐ์๊ฐ ๋ฑ์ด ์๋ค.
๋ํ ์ต์ ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ฆ๊ฐ ๋ฐฉ์, ํ์ต ์ ์ฑ ๋ฑ๋ ์ค์ ํ ์ ์๋ค. ํจ์ ๋ด๋ถ์๋ if๋ฌธ๊ณผ switch๋ฌธ์ ์ด์ฉํ์ฌ ๊ฐ๊ฐ์ ์ต์ ์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
Last updated
Was this helpful?