Düzenli ve Bağlamdan Bağımsız Gramerler


101

Bilgisayar dilleri sınavına çalışıyorum ve kafamı toparlamakta zorlandığım bir fikir var.

Normal gramerlerin daha basit olduğunu ve belirsizlik içeremeyeceğini, ancak programlama dilleri için gereken pek çok görevi yerine getiremeyeceğini anladım . Ayrıca bağlamdan bağımsız gramerlerin belirsizliğe izin verdiğini, ancak programlama dilleri için gerekli olan bazı şeylere izin verdiğini de anladım (palindromlar gibi).

Sorun yaşadığım şey, normal gramer olmayan terminallerin bir terminale veya terminal olmayan bir terminale, ardından bir terminale veya herhangi bir terminal ve terminal olmayan kombinasyona bağlamdan bağımsız bir terminal dışı eşleme yapabileceğini bilerek yukarıdakilerin tümünü nasıl türetebileceğimi anlamaktır. .

Birisi tüm bunları bir araya getirmeme yardım edebilir mi?

Yanıtlar:


71

Normal dilbilgisi ya sağ ya da sol doğrusaldır, oysa bağlamdan bağımsız dilbilgisi temelde terminallerin ve terminal olmayanların herhangi bir kombinasyonudur. Dolayısıyla, normal gramerin bağlamdan bağımsız gramerin bir alt kümesi olduğunu görebilirsiniz.

Örneğin, bir palindrom için,

S->ABA
A->something
B->something

Sağ veya sol doğrusal olması gerektiğinden ve bu nedenle her iki tarafta da terminal olmayan bir ifadeye sahip olamayacağından, palindromların normal dilbilgisi ile ifade edilemeyeceğini açıkça görebilirsiniz.

Normal gramerler belirsiz olmadığından, belirli bir terminal olmayan için yalnızca bir üretim kuralı vardır, oysa bağlamdan bağımsız bir dilbilgisi durumunda birden fazla olabilir.


13
Birincisi: Normal gramerler belirsiz olabilir (Kai Kuchenbecker'dan örnek: S -> aA | aB, B -> a, A -> a). Tek şey, sözdizimi ağacındaki düğümlerin konumlandırılmasının tek bir yolu olmasıdır (örneğin, normal bir dilbilgisi kullanıldığında ilişkilendirilebilirlik belirsizliği yoktur). İkincisi: Bir terminal olmayanın birden fazla sağ tarafı olabilir (A -> a, A -> aA; ve wikipedia üçüncü bir alternatif olarak
epsilon'u

1
Belirsizlik, bir cümle dilbilginizden birden fazla türetme yolunda türetilebildiğinde ortaya çıkar. basitçe olmayan bir terminali için birden fazla üretim kuralı olan gramer belirsiz yapmaz
Sujoy

11
Bu örnek aslında yanlıştır. Tüm kuralların olduğunu hayal edersek A-> a | cve B->bo zaman bu gramer palindrom olmayanlara izin verir. Örneğin, ben üretmek olabilir: S->ABA->aBA->abA->abc. Sorun şu ki, ilk kuralda iki değişken üretmek istemiyoruz, bunun yerine iki terminal. Palindromlara izin veren bir dilbilgisi olasılığı şöyledir:S -> aSa | bSb | a | b
gdiazc

Normal bir dilbilgisi ile ifade edilebilen palindromlar vardır : tek bir karakterden oluşan palindromlar. Örneğin S -> aSa | eve a(aa)*aher ikisi de normal bir dili tanımlar. Bu, bir CFG'nin sol veya sağ doğrusallığı ihlal etse bile normal bir dili tanımlayabileceğini gösterir. Kuşkusuz, bu pek de açık olmayan bir palindrom ..
Martijn

Bir düşünün, bu cevap aslında yanlış. "Bağlamdan bağımsız" dilbilgisinin temelde terminallerin ve terminal olmayanların herhangi bir kombinasyonu olduğunu söylüyor. "Ancak, tu ^ nvw ^ mxy ^ kz, terminallerin ve terminal olmayanların bir kombinasyonudur, ancak bağlamdan bağımsız değildir.
Charlie Martin

58

Sanırım düşünmek istediğiniz, çeşitli pompalanan lemmata. Düzenli bir dil, sonlu bir otomat tarafından tanınabilir. Bağlamdan bağımsız bir dil bir yığın gerektirir ve içeriğe duyarlı bir dil iki yığın gerektirir (tam bir Turing makinesi gerektirdiğini söylemeye eşdeğerdir).

Yani, normal diller için pompalanan lemma hakkında düşünürsek , esas olarak söylediği şey, herhangi bir normal dilin, dilin tüm örneklerinin xy * z olduğu x , y ve z olmak üzere üç parçaya bölünebileceğidir. (burada * Kleene tekrarıdır, yani y'nin 0 veya daha fazla kopyasıdır .) Temel olarak genişletilebilen bir “terminal olmayan” a sahipsiniz.

Şimdi, bağlamdan bağımsız diller ne olacak? Dildeki dizeleri beş kısma, uvxyz'e bölen ve dilin tüm örneklerinin i i 0 için uv i xy i z'de olduğu bağlamdan bağımsız diller için benzer bir pompalama lemması vardır. Şimdi, iki "terminal dışı" var " aynı numaraya sahip olduğunuz sürece çoğaltılabilir veya pompalanabilir .


10
Bağlama duyarlı bir dil, tam bir Turing makinesi gerektirmez. Doğrusal sınırlı bir otomat yeterlidir. Bu, bandı sonlu olan bir Turing makinesidir, boyutu giriş dizesindeki bazı doğrusal fonksiyonlarla sınırlıdır.
Dave Clarke

16

Normal ve bağlamdan bağımsız gramer arasındaki fark: (N, Σ, P, S): terminaller, terminal olmayanlar, prodüksiyonlar, başlangıç ​​durumu Terminal sembolleri

● resmi bir dilbilgisi ile tanımlanan dilin temel sembolleri

● abc

Terminal olmayan semboller (veya sözdizimsel değişkenler)

● üretim kurallarına göre terminal sembol grupları ile değiştirilir

● ABC

normal dilbilgisi: sağ veya sol normal dilbilgisi, doğru düzenli dilbilgisi, tüm kurallar formlara uyar

  1. B → a, burada B, N'de bir nonterminaldir ve a, Σ'de bir terminaldir
  2. B → aC, burada B ve C N'de ve a, Σ'de
  3. B → ε burada B N'dir ve ε boş dizgeyi, yani 0 uzunluğundaki dizeyi gösterir

normal dilbilgisi bıraktı, tüm kurallar formlara uyuyor

  1. A → a, burada A, N'de bir nonterminaldir ve a, Σ'de bir terminaldir
  2. A → Ba, burada A ve B N'de ve a, Σ'de
  3. A → ε burada A N'dir ve ε boş dizedir

bağlamdan bağımsız gramer (CFG)

○ her üretim kuralının V biçiminde olduğu resmi dilbilgisi → w

○ V, terminal olmayan tek bir semboldür

○ w, bir dizi terminal ve / veya terminal olmayan dizidir (w boş olabilir)


5

Düzenli dilbilgisi: - aşağıdaki gibi üretim içeren gramer RG'dir:

V->TV or VT
V->T

burada V = değişken ve T = terminal

RG, Left Linear Grammar veya Right Liner Dilbilgisi olabilir, ancak Orta doğrusal Dilbilgisi olmayabilir.

Bildiğimiz gibi tüm RG'ler Doğrusal Dilbilgisidir, ancak yalnızca Sol Doğrusal veya Sağ Doğrusal Dilbilgisi RG'dir.

Normal bir dilbilgisi belirsiz olabilir.

S->aA|aB
A->a
B->a

Belirsiz Dilbilgisi: - bir x dizisi için birden fazla LMD veya RMD'den fazla veya Birden fazla Ayrıştırma ağacı veya Bir LMD ve Bir RMD var ama her ikisi de farklı Ayrıştırma ağacı üretir.

                S                   S

              /   \               /   \
             a     A             a     B
                    \                   \
                     a                   a

bu Dilbilgisi belirsiz Gramerdir, çünkü iki ayrıştırma ağacı.

CFG: - Üretimi biçimindeyse CFG olduğu söylenen bir gramer:

   V->@   where @ belongs to (V+T)*

DCFL: - bildiğimiz gibi, tüm DCFL LL (1) Dilbilgisidir ve tüm LL (1) LR (1) 'dir, bu nedenle Asla belirsiz değildir. bu yüzden DCFG asla belirsiz değildir.

Ayrıca tüm RL'lerin DCFL olduğunu biliyoruz, bu nedenle RL asla belirsiz olmayacaktır. RG'nin belirsiz olabileceğini, ancak RL'nin olmadığını unutmayın.

CFL: CFl Belirsiz olabilir veya olmayabilir.

Not: RL asla doğası gereği belirsiz olamaz.


4

Düzenli ifadeler

  • Sözcüksel analizin temeli
  • Normal dilleri temsil edin

Bağlamdan Bağımsız Gramerler

  • Ayrıştırmanın temeli
  • Dil yapılarını temsil edin

görüntü açıklamasını buraya girin


Hayır, bu kısa açıklama, lütfen tekrar okuyun ve resmi kontrol edin.
Ahmed Salem

3

Bir dilbilgisi, tüm üretim kuralları şu biçime sahipse bağlamdan bağımsızdır: A (yani, bir kuralın sol tarafı yalnızca tek bir değişken olabilir; sağ taraf sınırsızdır ve herhangi bir terminal ve değişken dizisi olabilir). Bir dilbilgisini 4-tuple olarak tanımlayabiliriz, burada V sonlu bir küme (değişkenler), _ sonlu bir küme (terminaller), S başlangıç ​​değişkeni ve R, her biri bir eşleme olan sonlu bir kurallar kümesidir. V
normal dilbilgisi ya sağ ya da sol doğrusaldır, oysa bağlamdan bağımsız dilbilgisi temelde terminallerin ve terminal olmayanların herhangi bir kombinasyonudur. dolayısıyla normal gramerin bağlamdan bağımsız gramerin bir alt kümesi olduğunu söyleyebiliriz. Bu özelliklerden sonra Bağlam İçermeyen Diller setinin Normal Diller setini de içerdiğini söyleyebiliriz.


-1

Temelde normal dilbilgisi, bağlamdan bağımsız gramerin bir alt kümesidir, ancak Her Bağlamdan bağımsız dilbilgisinin normal bir dilbilgisi olduğunu söyleyemeyiz. Esas olarak bağlamdan bağımsız dilbilgisi belirsizdir ve düzenli dilbilgisi belirsiz olabilir.


-4

normal bir dilbilgisi hiçbir zaman belirsiz değildir çünkü ya sol doğrusal ya da sağ doğrusaldır, bu nedenle normal dilbilgisi için iki karar ağacı oluşturamayız, bu yüzden her zaman nettir. ama normal dilbilgisi dışında hepsi düzenli olabilir veya olmayabilir


4
@dinesh Normal bir dilbilgisi belirsiz olabilir. İki farklı sözdizimi ağacı varsa ve bir sözdizimi ağacının etiketlendiğinde dilbilgisinin belirsiz olduğunu hatırlayın. Dolayısıyla izomorfik ağaçlar farklı ağaçlardır. Yani S -> aA gibi basit bir gramer | aB, B -> a, A -> a belirsizdir çünkü 'aa' kelimesi için izomorfik fakat farklı olan iki sözdizimi ağacı vardır.
Kai Kuchenbecker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.