첫 λ²μ§Έ κΈ°νΈμλ§ κ΄μ¬μ΄ μλ λμΌν ν¨ν΄μ λ°λ³΅λ μΈμ€ν΄μ€κ° μλ μΈμ΄κ° μμ΅λλ€. μλ₯Ό λ€μ΄:
system OBJECT IDENTIFIER ::= { mib-2 1 }
interfaces OBJECT IDENTIFIER ::= { mib-2 2 }
at OBJECT IDENTIFIER ::= { mib-2 3 }
ip OBJECT IDENTIFIER ::= { mib-2 4 }
icmp OBJECT IDENTIFIER ::= { mib-2 5 }
tcp OBJECT IDENTIFIER ::= { mib-2 6 }
udp OBJECT IDENTIFIER ::= { mib-2 7 }
egp OBJECT IDENTIFIER ::= { mib-2 8 }
μ΄ κ°λ¨ν μλ λ€μ ν¨ν΄κ³Ό μΌμΉν μ μμ΅λλ€(μ¬κΈ°μ _λ 곡백).
identifier _ "OBJECT IDENTIFIER" _ "::=" _ "{" _ identifier _ number _ "}"
μ΄ κ²½μ°μλ κ·Έλ κ² ν° λ¬Έμ κ° λμ§ μμ΅λλ€(μ΄λ―Έ ν¨ν΄μ μ λ ₯νμ΅λλ€ :-) νμ§λ§ μΈμ΄μλ μ 체 ꡬ문 λΆμμ 보μ¦νμ§ μλ λ€λ₯Έ ν° νΈμ΄ λ§μ ꡬ문 μ§ν©μ΄ μμ΅λλ€(κ° μ€μ μ΄κΈ° μλ³μλ§ λ΄κ° μκ°νλ μΌμ νλΌ).
λ€μκ³Ό κ°μ ν¨ν΄μ μ λ ₯νκ³ μΆμ΅λλ€.
identifier _ "OBJECT IDENTIFIER" .*? "}"
".*?" non-greedy - ν°λ―Έλμ΄ μ²μ λνλ λλ§ μλΉν©λλ€. μ΄κ²μ΄ PEG.jsμ λͺ©λ‘μ μμ μ μμ΅λκΉ? κ°μ¬ν©λλ€.
μ λ°μ΄νΈ: Google κ·Έλ£Ήμ€( http://groups.google.com/group/pegjs/browse_thread/thread/2bea15581be45187 )μμ μ μν λ°λ³΅ νμ(λ΄ μ΄κΈ° μκ°μ μΌλ°ν)λ‘ λ§μ‘±ν μ μμ΅λλ€.
PEG νμμμλ .
λ©ν λ¬Έμμ ν¨κ» μ μ΄λ₯Ό μ¬μ©νμ¬ μ’
κ²°μκΉμ§ μ½κ² μΌμΉμν¬ μ μμ΅λλ€. λ€μκ³Ό κ°μ κ²:
"OBJECT IDENTIFIER" (!"}" .)* "}"
κ·Έκ²μΌλ‘ μΆ©λΆν©λκΉ?
μ, μλ²½νκ² μλν©λλ€. κ°μ¬ ν΄μ!
@dmajda !"}"
ννμμμ λ°νλ λΉ λ¬Έμλ₯Ό μ κ±°νλ λ° κΆμ₯λλ λ°©λ²μ 무μμ
λκΉ?
μλ₯Ό λ€μ΄:
= chars:(!"-suffix" .)+ "-suffix"
"foo-suffix" => [[ '', 'f' ], ['', 'o' ], ['', 'o' ]] // result
"foo-suffix" => ['f', 'o', 'o' ] // desired result
!"-suffix" .
λ₯Ό .
κ²°κ³Όλ₯Ό λ°ννλ μ체 κ·μΉμΌλ‘ λΆλ¦¬νμ¬ μ΄λ₯Ό λ¬μ±ν μ μμμ§λ§ λ μ’μ λ°©λ²μ΄ μλμ§ κΆκΈν©λλ€.
μ€κ°μ λ€μμ μ¬μ©ν μ μλ€κ³ μκ°ν©λλ€.
= chars:(!"-suffix" c:. {return c})+ "-suffix"
@islandr λ¬Έμ λ₯Ό PEG.js μ¬μ©μ λν μ§λ¬Έ μ₯μλ‘ μ¬μ©νμ§ λ§μμμ€. νΉν κ·Έλ€μ΄ λ¬Έμ λ«μμ λ, νΉν λΉμ μ΄ λ΄ μμ μλ λ€λ₯Έ μ¬λλ€μ΄ λΉμ μ λμΈ μ μλ κ²μ μμ²ν λ. μ μ ν μ±λμ Google κ·Έλ£Ή μ λλ€.
λ―Έμν΄ λ°μ΄λΉ. μμ λΆν° μ’μ κ³³μ΄μμ κ±°λΌ μκ°νλλ°
κ·νκ° μ 곡 ν μμ μ§μ κ΄λ ¨μ΄ μμ΅λλ€.
2013λ 1μ 9μΌ μμμΌ μ€ν 9μ 51λΆμ David Majda [email protected]μ΄ μμ±νμ΅λλ€ .
@islandr https://github.com/islandr λ¬Έμ λ₯Ό μ₯μλ‘ μ¬μ©νμ§ λ§μμμ€
PEG.js μ¬μ©λ²μ λν΄ μ§λ¬Έν©λλ€. νΉν κ·Έλ€μ΄ λ«νκ³
νΉν λΉμ μ΄ λ΄ μμ μλ λ€λ₯Έ μ¬λλ€μ΄ ν μ μλ κ²μ μμ²ν λ
λμμ£ΌμΈμ. μ μ ν μ±λμ Google κ·Έλ£Ή http://groups.google.com/group/pegjsμ λλ€.
.β
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ Gi tHubhttps://github.com/dmajda/pegjs/issues/57#issuecomment -12083927μμ νμΈνμΈμ.
κ°μ₯ μ μ©ν λκΈ
PEG νμμμλ
.
λ©ν λ¬Έμμ ν¨κ» μ μ΄λ₯Ό μ¬μ©νμ¬ μ’ κ²°μκΉμ§ μ½κ² μΌμΉμν¬ μ μμ΅λλ€. λ€μκ³Ό κ°μ κ²:κ·Έκ²μΌλ‘ μΆ©λΆν©λκΉ?