νμ±(Parsing)
μ£Όμ΄μ§ λ¬Έμμ΄ wκ° μ΄λ ν λ¬Έλ² Gλ‘λΆν° μμ±λλ μΈμ΄ L(G)μ μνλμ§μ μ¬λΆλ₯Ό μμμΌ νλ κ²½μ°κ° μμ΅λλ€.
μ΄λ₯Ό νλ³νκΈ° μν μκ³ λ¦¬μ¦μ μμμ±(membership) μκ³ λ¦¬μ¦μ΄λΌ ν©λλ€.
νμ±μ μλ―Έλ L(G)μ μνλ wκ° μ λλλλ° μ¬μ©λ μΌλ ¨μ μμ±κ·μΉμ μ°Ύλ κ² μ λλ€.
λ¨μν νμ± λ°©λ²μΌλ‘λ 체κ³μ (systematically)μΌλ‘ κ°λ₯ν λͺ¨λ μ λλ€μ ꡬμ±ν΄ κ°λ©΄μ, κ·Έ μ€μ wμ μΌμΉνλ κ²μ΄ μλμ§λ₯Ό μμ보λ κ²μ λλ€.
ꡬ체μ μΌλ‘, μ²μμΌλ‘λ λ€μκ³Ό κ°μ ννμ μμ μ¬λ²μ μ’λ³μΌλ‘ κ°λ λͺ¨λ μμ±κ·μΉλ€μ μ΄ν΄λ΄ λλ€.
$$S \to x$$
μμ μ¬λ² Sλ‘λΆν° ν λ¨κ³μ μ λλ μ μλ λͺ¨λ λ¬Έμ₯νν wλ₯Ό μ°Ύμ΅λλ€.
λ§μ½ μ΄λ xλ μΌμΉνμ§ μλλ€λ©΄, μ΄ν κ°xμ κ°μ₯ μΌμͺ½ λ³μμ μ μ©λ μ μλ λͺ¨λ μμ±κ·μΉλ€μ μ μ©ν©λλ€.
μ΄λ κ² μμ±λ μλ‘μ΄ λ¬Έμ₯ννλ€ μ€ μΌλΆλ wμ μ λλ κ°λ₯μ±μ΄ μμΌλ©°, μΌλΆλ μ μΈλ©λλ€.
μ΄λ°μμΌλ‘ κ³μνμ¬ wλ₯Ό μ λν λκΉμ§ λ°λ³΅ν©λλ€.
μ΄λ¬ν λ°©λ²μ wμ μ λλ₯Ό μ°ΎκΈ° μν΄ μμ μ¬λ² Sλ‘λΆν° λͺ¨λ κ°λ₯ν μ λλ€μ μμ±νλ―λ‘,
μ΄λ₯Ό μ² μ ν νμ νμ±(exhaustive search parsing)μ΄λΌ λΆλ¦ λλ€.
ν΄λΉ νμ±λ°©λ²μ μ λνΈλ¦¬λ₯Ό 루νΈμμλΆν° μμνμ¬ μλλ‘ λ΄λ €μ€λ©΄μ ꡬμ±νλ κ²μΌλ‘ λ³Ό μ μκΈ° λλ¬Έμ νν₯μ νμ±(top-down parsing)μ ν ννμ λλ€.
μμ
μ² μ ν νμ νμ±μ λ¬Έμ μ
λͺ¨λ κ°λ₯ν μ λ κ³Όμ λ€μ λͺ¨λ κ³ λ €νκΈ° λλ¬Έμ, μ°μ ν¨μ¨μ μ΄μ§ λͺ»ν©λλ€.
κ²λ€κ° wκ° L(G)μ μνμ§ μλλ€λ©΄, ν΄λΉ κ³Όμ μ΄ μ’ λ£λμ§ μμ μλ μμ΅λλ€.
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄, λ¬Έλ²μ΄ κ°μ§ μ μλ μμ±κ·μΉμ ννμ μ νμ λλ©΄ μ² μ ν νμ νμ±μμ λ°μνλ λΉμ’ λ£(nontermination)λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
μμ±κ·μΉμ μ νμ λ€μ λ μμ±κ·μΉμ νμ©νμ§ μλ κ²μ λλ€.
λλ€ μμ±κ·μΉκ³Ό, λ¨μ μμ±κ·μΉ(μ°λ³μ λ³μ νλλ§μ΄ μ‘΄μ¬)μ μ κ±°ν©λλ€.
$$A \to \lambda$$
$$A \to B$$
μ μμ±κ·μΉμμ μ κ±°ν¨μΌλ‘μ¨ λ¬Έμμ΄ wμ λν νμ±μ κ° μ λ λ¨κ³λ§λ€ λ¬Έμ₯ ννμ μ¬λ³Όμ μκ° μ΅μν νλ μ΄μ μ¦κ°νλ―λ‘ νμ |w| λ¨κ³ μ΄λ΄μ μ’ λ£λ©λλ€.
wμ κΈΈμ΄ νΉμ wλ₯Ό ꡬμ±νλ λ¨λ§ μ¬λ²λ€μ κ°μλ | w |λ₯Ό μ΄κ³Όν μ μμΌλ©°, λ°λΌμ μ λ κ³Όμ μ μ΄ λ¨κ³ μλ 2| w |λ₯Ό μ΄κ³Όν μ μμ΅λλ€.
κ·Έλ¬λ μ΄ λ°©λ²μ λ¬Έμ₯ ννμ μκ° μ§λμΉκ² λ§μμ§ μ μλ€λ λ¨μ μ΄ μμ΅λλ€.
첫 λ¨κ³ νμλ μ΅λ |P|κ°μ λ¬Έμ₯ ννκ° λμ¬ μ μμΌλ©°, λλ²μ§Έ λ¨κ³μλ |P|μ μ κ³±, 3λ²μ§Έ λ¨κ³μλ |P|μ 3μ κ³±, ....
μ¦ μ§μ ννλ‘ μ¦κ°νλ―λ‘, μ΄λ λ§€μ° λ§μ λΉμ©μ΄ μλͺ¨λ μ μμ΅λλ€.
μ΅μ’ μ μΌλ‘ μνλ κ²μ λ¬Έμμ΄μ κΈΈμ΄μ λΉλ‘νλ μκ°μ΄ 걸리λ, μ¦ μ ν μκ°(Linear time)μ κ°λ νμ± μκ³ λ¦¬μ¦μ λλ€.
κ·Έλ¬λ μΌλ°μ μΈ κ²½μ° μ΄λ¬ν μκ³ λ¦¬μ¦μ μμ§ λ°νμ§μ§ μμμ΅λλ€λ§
νΉμ ν κ²½μ°, μ ν μκ° μκ³ λ¦¬μ¦μ μ μ©ν μ μμ΅λλ€.
λ¨μ λ¬Έλ²(Simple Grammer) (s-λ¬Έλ²)
λ¬Έλ§₯-μμ λ¬Έλ² G = (V, T, S, P)μ λͺ¨λ μμ±κ·μΉλ€μ΄ λ€μκ³Ό κ°μ ννμ΄λ©΄ λ¨μ λ¬Έλ²(simple grammer) νΉμ s-λ¬Έλ²(s-grammer)μ΄λΌ λΆλ¦½λλ€.
$$A \to ax$$
μ¬κΈ°μ A ∈ V, a ∈ T, x ∈ V* μ΄λ©°, μμμ μ (A, a)λ Pμμ λ§μμΌ ν λ² λνλ©λλ€.
terminal symbolμ΄ λ¬Έλ²μ μ°λ³μ 맨 μμ λ¨ νλ λ±μ₯νμ¬μΌ νλ©°, μ΄ν λ±μ₯νλ Nonterminal Symbolμ μμλ μ μ½μ΄ μμ΅λλ€.
μμ
μλλ s-λ¬Έλ²μ λλ€.
$$S \to aS \; | \; bSS \; | \; c$$
μλλ s-λ¬Έλ²μ΄ μλλλ€.
$$S \to aS \; | bSS \; |\; aSS \; | \; c$$
$$S \to Sa$$
λ¨μ λ¬Έλ²(S-λ¬Έλ²)μ νμ±
Gκ° s-λ¬Έλ²μ΄λ©΄, L(G)μ μν λͺ¨λ λ¬Έμμ΄ wκ° | w |μ λΉλ‘νλ λ Έλ ₯(μ ν μκ°)μΌλ‘ νμ±λ μ μμ΅λλ€
s-λ¬Έλ²μ μ’λ³μ λ³μμ λνμ¬, μ°λ³μ μ€λ³΅λμ§ μλ terminal symbol 1κ°λ‘ μμνλ―λ‘ νμ±μ κ° λ¨κ³λ§λ€ νλμ terminal symbolμ μμ±ν©λλ€.
μ¦ μ 체 κ³Όμ μ΄ | w | λ¨κ³ λ΄μ μλ£λ©λλ€.
λͺ¨νΈμ±(Ambiguity)
w ∈ L(G)μΈ ν λ¬Έμμ΄μ λνμ¬ μ¬λ¬ κ°μ λ€λ₯Έ μ λ νΈλ¦¬λ€μ΄ μ‘΄μ¬ν κ°λ₯μ±μ΄ μλ κ²μ λͺ¨νΈμ±μ΄λΌ ν©λλ€.
λ¬Έλ§₯-μμ λ¬Έλ² Gμμ λ κ° μ΄μμ μλ‘ λ€λ₯Έ μ λ νΈλ¦¬λ₯Ό κ°λ λ¬Έμμ΄ wκ° μ‘΄μ¬νλ©΄, λ¬Έλ² Gλ λͺ¨νΈνλ€κ³ ν©λλ€.
μ¦ λͺ¨νΈμ±μ μ΄λ€ λ¬Έμμ΄ wμ λνμ¬ λ κ° μ΄μμ μ’μΈ‘ μ°μ νΉμ μ°μΈ‘ μ°μ μ λκ° μ‘΄μ¬νλ κ²μ μλ―Έν©λλ€.
λͺ¨νΈμ±μ μμ°μΈμ΄μ μΌλ°μ μΈ νΉμ§μ λλ€.
μμ°μΈμ΄μμλ λͺ¨νΈμ±μ΄ νμ©λλ©° μ¬λ¬κ°μ§ λ°©μμΌλ‘ μ²λ¦¬λ μ μμ§λ§, νλ‘κ·Έλλ° μΈμ΄μμλ κ° λ¬Έμ₯μ΄ μ νν νλμ μλ―Έλ‘ ν΄μλμ΄μΌ νκΈ°μ κ°λ₯ν λͺ¨νΈμ±μ μ κ±°ν΄μΌ ν©λλ€.
μ΄λ₯Ό μν΄ μ£Όμ΄μ§ λ¬Έλ²μ λμΉμ΄λ©΄μ λͺ¨νΈνμ§ μμ λ€λ₯Έ λ¬Έλ²μΌλ‘ λ€μ ꡬμ±νμ¬ λͺ¨νΈμ±μ μ κ±°ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ λ€μ λ¬Έλ²μ ν΅ν΄ a + a*aλ₯Ό λ§λ€μ΄ λ³΄κ² μ΅λλ€.
$$ E \to E \;+ \;E\; |\; E \;* \;E\; |\; a$$
$$E \Rightarrow E + E \Rightarrow a+ E \Rightarrow a + E * E \Rightarrow a + a * E \Rightarrow a + a * a$$
$$E \Rightarrow E * E \Rightarrow E + E * E \Rightarrow a + E * E \Rightarrow a + a * E \Rightarrow a + a * a$$
λ€μκ³Ό κ°μ΄ λκ°μ μ’μΈ‘ μ°μ μ λκ° μ‘΄μ¬νλ―λ‘ μ΄λ λͺ¨νΈν λ¬Έλ²μ λλ€.
ν΄λΉ λ¬Έλ²μ λ€μκ³Ό κ°μ΄ λ³ννμ¬ λͺ¨νΈνμ§ μλλ‘ λ°κΎΈμ΄ λ³΄κ² μ΅λλ€.
$$E \to \;E \;+\; T \;| \;T$$
$$T \to \;T \;*\; F \;| \;F$$
$$F \to \;(E)\; | \;a$$
κ³ μ μ μΌλ‘ λͺ¨νΈν¨(Inherently Ambiguous)
μμμ 보μλ λͺ¨νΈν λ¬Έλ²λ€μ λμΉμ΄λ©΄μ λͺ¨νΈνμ§ μμ λ¬Έλ²μΌλ‘ μ¬κ΅¬μ±ν μ μμμ΅λλ€.
κ·Έλ¬λ μ΄λ€ μΈμ΄λ μΈμ΄ μμ²΄κ° κ°λ λͺ¨νΈμ± λλ¬Έμ λͺ¨νΈνμ§ μμ λ¬Έλ²μ ꡬμ±μ΄ λΆκ°λ₯ν μ μμ΅λλ€.
λ¬Έλ§₯ μμ μΈμ΄ Lμ΄ λͺ¨νΈνμ§ μμ λ¬Έλ²μ κ°μ§λ©΄ Lμ λͺ¨νΈνμ§ μλ€κ³ ν©λλ€.
Lμ μμ±νλ λͺ¨λ λ¬Έλ²λ€μ λν΄μ κ° λ¬Έλ²μ΄ λͺ¨νΈνλ©΄ Lμ κ³ μ μ μΌλ‘ λͺ¨νΈνλ€κ³ ν©λλ€.
'π₯ Computer Science > κ³μ°μ΄λ‘ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[κ³μ°μ΄λ‘ ] - (13) μ κ·ν(Chomwky μ κ·ν, Greibach μ κ·ν) (0) | 2022.05.26 |
---|---|
[κ³μ°μ΄λ‘ ] - (12) λ¬Έλ§₯ μμ λ¬Έλ²μ λ¨μν (2) | 2022.05.26 |
[κ³μ°μ΄λ‘ ] - (10) λ¬Έλ§₯ - μμ μΈμ΄(Context-free Grammer, CFG) (0) | 2022.05.22 |
[κ³μ°μ΄λ‘ ] - (9) νν 보쑰μ 리 (Pumping lemma) (0) | 2022.05.22 |
[κ³μ°μ΄λ‘ ] - (8) λΉμ κ· μΈμ΄μ μλ³ (0) | 2022.05.22 |