Pagkakaiba sa pagitan ng hindi siguradong at hindi malinaw na Gramatika

Talaan ng mga Nilalaman:

Anonim

Ang pangunahing pagkakaiba sa pagitan ng hindi siguradong at hindi malinaw na balarila ay ang hindi siguradong grammar ay isang konteksto libreng grammar kung saan mayroong umiiral na isang string na maaaring magkaroon ng higit sa isang kaliwang derivation habang ang isang hindi malinaw na balarila ay isang konteksto libreng grammar kung saan ang bawat wastong string ay may isang natatanging kaliwang derivation.

Ang grammar ay tumutukoy sa mga syntactical na patakaran sa mga likas na wika. Noong 1956, ipinakilala ng mga siyentipiko sa kompyuter ang isang modelo ng matematika ng gramatika para sa pagsulat ng wikang computer. Kung posible na makuha ang lahat ng mga string ng isang wika gamit ang isang tiyak na gramatika, sinabi na ang wika ay nabuo mula sa gramatika na iyon. Ang konteksto ng libreng gramatika ay isang uri ng gramatika. Ang grammar na ito ay bumubuo ng libreng wika ng konteksto. Ang konteksto ng libreng gramatika ay maaaring maging hindi sigurado o hindi malinaw. Para sa isang partikular na string, kung mayroong dalawa o higit pang mga derivation, ang grammar na iyon ay sinasabing hindi siguradong. Para sa isang partikular na string, kung may natatanging kaliwang derivation lamang, ang gramatika na iyon ay sinasabing hindi maliwanag na balarila.

Hindi siguradong Gramatika, Hindi Malabo Grammar

Ano ang Ambiguous Grammar

Ang isang balarila ay sinabi na maging hindi siguradong kung mayroong umiiral na dalawa o higit pang mga derivations para sa isang string.

Larawan 1: Hindi siguradong Gramatika

Ipagpalagay na mayroong isang grammar na tinukoy bilang mga sumusunod.

G = ({S}, {a + b, +, *}, P, S}. Ang mga patakaran sa produksyon ay ang mga sumusunod. S -> S + S | S * S | a | b. Ipagpalagay na kinakailangan itong bumuo ng String a + a * b.

Isaalang-alang, S -> S + S

Ang pagpapalit ng 'a' para sa kaliwang bahagi ng S ay magbibigay ng mga sumusunod.

S-> a + S

Ang pagpapalit ng S * S para sa S ay ang mga sumusunod.

S-> a + S * S

Ang pagpapalit ng 'a' para sa kaliwa pinaka S ay magbibigay ng output sa ibaba.

S -> a + a * S

Ang pagpapalit ng 'b' para sa S ay magbibigay ng sumusunod na output.

S -> a + a * b

Ito ang kinakailangang string upang makabuo.

Kapag gumagamit ng ibang panuntunan sa produksyon, magbibigay ito

S -> S * S

Ilapat ang S + S sa kaliwa karamihan sa S ay magbibigay ng mga sumusunod.

S -> S + S * S

Kapalit ‘a’ para sa kaliwang bahagi ng S,

S -> a + S * S

Ang pagpapalit ng 'a' para sa kaliwang pinaka-S,

S -> a + a * S

Ang pagpapalit ng 'b' para sa S ay magbibigay ng sumusunod na output.

S -> a + a * b

Muli, nakabuo ito ng kinakailangang string. Samakatuwid, mayroong higit sa isang derivation upang makabuo ng string. Samakatuwid, ito ay isang hindi siguradong grammar.

Ano ang Hindi Malabo Grammar

Sa isang hindi siguradong grammar, ang isang tiyak na string ay may natatanging kaliwang derivation. Sumangguni sa mga sumusunod na alituntunin sa produksyon.

S -> L | a, L -> LS | S

Isaalang-alang ang panuntunang S -> L. Palitan ang LS sa halip na L.

S -> LS

Kapalit S, para sa unang L.

S -> S S

Ang pagpapalit ng 'a' para sa pinaka-kaliwang bahagi ng S ay magbibigay ng output sa ibaba.

S -> isang S

Ang pagpapalit ng 'a' para sa S ay magbibigay ng mga sumusunod.

S -> a a

Samakatuwid, ang isang string ay may natatanging kaliwang derivation. Kaya, ito ay isang hindi malinaw na balarila.

Pagkakaiba sa pagitan ng hindi siguradong at hindi malinaw na Gramatika

Kahulugan

Ang isang hindi siguradong grammar ay isang konteksto na libreng gramatika kung saan mayroong umiiral na isang string na maaaring magkaroon ng higit sa isang kaliwang derivation o pag-parse ng mga puno. Ang hindi malinaw na balarila ay isang konteksto na libreng gramatika kung saan ang bawat wastong string ay may natatanging kaliwang derivation o parse tree.

Bilang ng Pinakamaliwang na Derivasyon

Sa hindi siguradong grammar, ang isang string ay maaaring magkaroon ng dalawa o higit pang kaliwang derivasyon ngunit, sa hindi malinaw na grammar, ang isang string ay may natatanging kaliwang derivation.

Konklusyon

Ang konteksto ng libreng gramatika ay maaaring maging hindi sigurado o hindi malinaw. Ang pagkakaiba sa pagitan ng hindi siguradong at hindi malinaw na balarila ay ang hindi siguradong balarila ay isang konteksto na libreng gramatika kung saan mayroong isang string na maaaring magkaroon ng higit sa isang kaliwang derivation habang ang isang hindi malinaw na balarila ay isang konteksto na libreng gramatika kung saan ang bawat wastong string ay may natatanging kaliwang derivation.

Sanggunian:

1. "Hindi siguradong Gramatika." Wikipedia, Wikimedia Foundation, 17 Hulyo 2018, Magagamit dito.2. "Disenyo ng Tagatala | Hindi siguradong Gramatika. " GeeksforGeeks, 10 Peb. 2018, Magagamit dito.3. "Ambiguous Grammar", Neso Academy, 29 Marso 2017, Magagamit dito.

Kagandahang-loob ng Larawan:

1. "Leftmostderivations jaredwf" Ni Jaredwf sa English Wikipedia - Inilipat mula sa en.wikipedia patungong Commons ng EdwardHades (Public Domain) sa pamamagitan ng Commons Wikimedia

Pagkakaiba sa pagitan ng hindi siguradong at hindi malinaw na Gramatika