๋ฌธ๋ฒ:
Statement
= "{" __ !Statement Statement __ "}"
__
= [ \t\r\n]*
์ ๋ ฅ:
{x}
๊ฒฐ๊ณผ ์บ์๋ฅผ ๋นํ์ฑํํ๋ฉด ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
"{"๋๋ [\ t \ r \ n]์ด ํ์ํ์ง๋ง "x"๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค.
๊ฒฐ๊ณผ ์บ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
[\ t \ r \ n]์ด (๊ฐ) ํ์ํ์ง๋ง "x"๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค.
๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ค๋ฅ๊ฐ ๋์ผํด์ผํฉ๋๋ค.
์ ๋ ์ฌ์ฉ์๋ฅผ์ํ ๊ตฌ๋ฌธ ์์ฑ์ ๊ตฌ์ถํ๊ธฐ ์ํด ๋งค์ฐ ํํ์ ์ธ SyntaxError
s pegjs ๋์ง๊ธฐ์ ์์กดํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋์ด ๋ฌธ์ ๋ก ์ธํด ๋ ๋ณต์กํ ๋ฌธ๋ฒ์ ๋ํด ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค.
์ค๋ฅ๊ฐ ์ ์ฉ๋๋ ๋ ๋ค๋ฅธ ๋ฌธ๋ฒ :
Start
= Char+ End
End
= "e"
Char
= (!End [a-z])+
์ ๋ ฅ:
a
๊ฒฐ๊ณผ ์บ์๋ฅผ ๋นํ์ฑํํ๋ฉด ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
"e", [az]๊ฐ ํ์ํ๊ฑฐ๋ "e"๊ฐ ์๋์ง๋ง ์ ๋ ฅ์ ๋์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค.
๊ฒฐ๊ณผ ์บ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
[az]๊ฐ ํ์ํ์ง๋ง ์ ๋ ฅ์ ๋์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค.
ae
๊ฐ ๋ฌธ๋ฒ๊ณผ ์ผ์นํ๋ฏ๋ก ์บ์ ๋นํ์ฑํ ์ค๋ฅ๊ฐ ์ ํํฉ๋๋ค.
# 555๋ก ์ถ๊ฐ ๋ ์คํจํ ํ ์คํธ ์ผ์ด์ค
์ด ๋ฌธ์ ์ ์์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ท์น์ ์ด๊ธฐ ํ๊ฐ ์ค์ peg$expect
๊ฐ ํธ์ถ ๋์ด ์์ ํ ํฐ์ ๊ธฐ๋กํฉ๋๋ค. ํน์ ๊ฒฝ์ฐ ( peg$silentFails > 0
) ํ ํฐ์ ๋ฌด์๋ฉ๋๋ค.
์บ์ ๋ ํ๊ฐ ์ค์ peg$expect
๊ด๋ จ ํธ์ถ๋ ์ฌ์ํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ ํ ํฐ์ ๋์นฉ๋๋ค. ์ด๊ฒ์ ์์ ํ์๋ ๋ถ์์ ํ ์ค๋ฅ ๋ฉ์์ง์ ๋ํ๋ฉ๋๋ค.
๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ง์ญ์ ํ๋กํ ํ์
์์ [email protected]
๋๋ ๊ธฐ๋ก ๋ฐ ํธ์ถ ์ฌ์ํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์์๋ค peg$expect
. ๊ทธ๋ฌ๋ https://github.com/pegjs/pegjs/commit/669f782a5f3928a2958147992eb07df5b0ecf54a์ ๋์
๋ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ์ธํด์ด ํญ๋ชฉ์ ํจ์ฌ ๋ ๋ณต์กํด์ก์ต๋๋ค.
pegjs@dev
๋ํ ์์ ์ ์๋ ํ ์ ์์ต๋๋ค. ๋ด๊ฐ ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
@Mingun , @futagoza์ ๋ํ ์๊ฒฌ์ด
[email protected]
๊ธฐ๋ฐ์ ๋ก์ปฌ ํ๋กํ ํ์
์ ๋ณด์ฌ์ค ์ ์์ต๋๊น?
์ฌ๊ธฐ ์์ ์์ ์ฌํญ์ ๋ณผ ์ ์์ต๋๋ค.
์ค์ฒฉ ๋ ๋ฌด์ ์์์ ๋ํด์๋ ์์ง ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค.
๋ฌธ๋ฒ:
Start
= Char+ End
End "end"
= "e"
Char
= !End [a-z]'
์ ๋ ฅ:
a
์์ ๋ฉ์์ง :
์์๋๋ ๋ ๋๋ [az]์ด์ง๋ง ์ ๋ ฅ์ ๋์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค.
์ค์ ๋ฉ์์ง :
๋, "e"๋๋ [az]๊ฐ ์์๋์ง๋ง ์ ๋ ฅ ๋์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค.
@nikku ์ด๊ฒ์ ์ง๊ธ ํด๊ฒฐ๋์ด์ผํฉ๋๋ค (๊ฐ์ฌํฉ๋๋ค ๐), 3 ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๊ฐ ๋ชจ๋ ํต๊ณผ (์ค์ฒฉ ๋ ์นจ๋ฌต ์์์ ๋ํ ์ธ ๋ฒ์งธ ์ผ์ด์ค ํฌํจ).
์ต์ pegjs@dev
๋ฆด๋ฆฌ์ค์์๋ ์์ ์ฌํญ์ NPM, [email protected]
(https://github.com/pegjs/pegjs#latest)์ ํธ์๋์์ต๋๋ค.
๊ฐ์ฌ.
์ค๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ ์คํธํ์ต๋๋ค.
์์ ๋ด๊ฐ ๋ฌด์์๋ณด๊ณ https://github.com/pegjs/pegjs/commit/f5b323b40124e9ebe1336b509af0716d5a31ce55#diff -cd2c6b13fdcedf68a390c8bb6ea65cafR148 ์๊ฐํ๊ณ ์ฃผ์ ๋ณ๊ฒฝ, ๊ทธ๊ฒ์ ํจ๊ณผ์ ์ผ๋ก ์ ๊ฑฐ๋ก peg$silentFails === 0
๊ฐ๋ ์์ --no-cache
์์ฑ ๋ ํ์ .
๐จ ์ฃ์กํฉ๋๋ค. ๊ทธ๊ฑด ์ด๋ฆฌ์์ ์ค์์์ต๋๋ค. ๊ณง ๊ณ ์น ๊ฑฐ์ผ, ๊ณ ๋ง์
ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋ค๋ ค๊ณ ํ์ง๋ง ์คํจํ์ต๋๋ค : cry :. ๊ทธ๋๋ ๋ ๋ณต์กํ ๋ฌธ๋ฒ ์ค ํ๋์ ์ํฅ์ ๋ฏธ์น๋ ์ค์ ๋ด ๋๋ค.
https://github.com/pegjs/pegjs/commit/d06a5b52efcf0fa4b9e5bf21f97607786c1c7db5 ์์ ๊ฐ๋๋ฅผ ๋ณต์ํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ pegjs@dev
ํธ์ํ์ต๋๋ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋์ง ์๋ ค์ฃผ์ธ์.
@nikku ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋์์ต๋๊น? ์๋๋ฉด ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๊น? ์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ด์ด์ผํ๋์ง ์๊ณ ์ถ์ต๋๋ค.
๊ณ ์ ๋์ด ์์ต๋๋ค.
@nikku- ์์ ๋์ง ์์์ต๋๋ค. ์๋ฌด๊ฒ๋ ๊ณต๊ฐ๋์ง ์์์ต๋๋ค. npm
์๋ ์ฌ์ ํ 0.10.0
์ด ์์ผ๋ฉฐ ๋ฅ์ฐ๊ฐ ์ค์ ๋ก๋ ์ถ์๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋งํ ๊ธฐ๋ฅ 0.11.0
๋ธ๋์น์ ๋ณํฉ๋์์ต๋๋ค.
๋๋ pegjs์ ๋ํ ๊ธฐ๋๋ฅผ ๊ทธ๋ง๋๊ณ ์ ํํ ์ด๋ฐ ์ด์ ๋ก ์ค๋ ์ ์ ๋ค๋ฅธ ๊ณณ์ ๋ณด์์ต๋๋ค.
๋ฆด๋ฆฌ์ค ์์ = ์๋ฌด๋ ์ค์ ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Pegjs๋ ์ญ์ฌ์ ์ผ๋ก ๋ฆด๋ฆฌ์ค๊ฐ ์ข์ง ์์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ํ๊ทธ ๋ฆด๋ฆฌ์ค์ฃผ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค.
0.12.0
์์ 0.10.0
0.12.0
์ (๋ฅผ) ๋ค์์๋ฅผ ์ ์๋๋ก ์์ฒญ0.11.0
๋ธ๋์น์์ ์ฒด๋ฆฌ๋ฅผ ์ ํํ๊ณ ์ง์์ ์ผ๋ก ๋น ๋ฅธ ๋ฆด๋ฆฌ์ค ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.๊ทธ๋ฐ ์ผ์ด ์ผ์ด๋๊ณ ์ด๋ค ์ ์ผ๋ก๋ ์ค์ ๋ก ์ถ์๊ฐ ์์๋๋ฉด ๋ ๋ค๋ฅธ ๊ธฐํ๋ฅผ ์ฃผ๊ฒ ์ต๋๊น?
๊ทธ๊ฒ์ ๋ฌ์ฑํ๊ธฐ ์ํด ๋น์ ์๊ฒ ํ์ด์ ๋น๋๋ค.
๊ณ ๋ง์ ๐
์ฐ๋ฆฌ๋ ๋ณผ ๊ฒ์ด๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๊ธฐ ์์ ์์ ์ฌํญ์ ๋ณผ ์ ์์ต๋๋ค.