Eliminacija jednostrukih pravila

Извор: testwiki
Датум измене: 15. октобар 2024. у 20:24; аутор: imported>FelixBot (DEFAULTSORT → СОРТИРАЊЕ)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Neka je data KS-gramatika G=(Σ,N,P,S). Pretpostavimo da je u gramatici -{G}- nema nekorisnih simbola, ni ε-pravila. Postupak eliminacije jednostrukih pravila se svodi na postupak traženja svih izvođenja oblika:[1]

X*Y,X,YN.

Ovaj postupak se vrši rekurzivno polazeći od jednostrukih pravila. Kad god se pronađe izvođenje gornjeg oblika, pravilima koja na levoj strani imaju -{X}- dodaju se desne strane svih pravila koja nisu jednostruka, a koja na levoj strani imaju simbol -{Y}-, dok se jednostruka -{Y}--pravila uklanjaju. Ovako transformisana gramatika može imati nekorisnih simbola, koje treba eliminisati. Dobijena gramatika je ekvivalentna polaznoj gramatici, a nema nekorisnih simbola, kao ni jednostrukih ili ε-pravila.

Primer

U gramatici oslobođenoj od ε-pravila:

(1) TS|ϵ
(2) SS(S)|(S)|S()|()

jedino jednostruko izvođenje je TS. Zamenom simbola -{S}- na desnoj strani pravila (1) dosnom stranom pravila (2), dobija se sledeća gramatika bez jednostrukih pravila:

(1) Tϵ|S(S)|(S)|S()|()
(2) SS(S)|(S)|S()|()

Pogledajte još

Beleške

Шаблон:Reflist

Шаблон:Normativna kontrola

  1. Izvor kompletnog članka: „Prevodioci i interpretatori - uvod u teoriju i metode kompilacije programskih jezika“ - Duško Vitas.