Bağlamsız dilbilgisi bağlamında bağlamsız olarak ne kastedilmektedir?


29

Bir süredir derleyiciler üzerinde çalışıyorum ve dilbilgisinde "bağlam" ile neyin kastedildiğini ve dilbilgisinin "bağlamsız" olmasının ne anlama geldiğini araştırıyorum, ancak sonuçsuz.

Peki, kimse bu konuda yardımcı olabilir?


7
"Gerçekten" ile ne demek istiyorsun? Hangi açıklamaları okudunuz ve neleri anlamıyorsunuz? IIRC, konuyla ilgili her yarıyıl iyi ders kitabı ne anlama geldiklerini açıklayacaktır.
Raphael

2
İşte hoş bir örnek. "Oku" kelimesini düşünün. Tamamen farklı iki anlamı olan tek bir kelime. Biri şimdiki zaman “okumak”, diğeri ise “okudum”. Bir metinde “oku” kelimesini gördüyseniz, bağlama bakmadan, iki anlamdan hangisini temsil ettiğini açıklayamazsınız. Bu nedenle, İngilizce içeriğe duyarlıdır, çünkü bağlamda düşünmeden her simgeyi (sözcüğü) ayrıştıramazsınız. Bağlama duyarlı bir dilbilgisi, her belirtecin anlamının onu temsil eden tek belirteçten net bir şekilde çıkarılabilir olduğu bir dilbilgisidir.
Alexander - Monica

Yanıtlar:


30

Chomsky hiyerarşisindeki farklı gramerler için izin verilen üretim kuralları ile ilgili olarak bağlam açıklanabilir.

Bağlamsız gramerleri göz önünde bulundurursanız, üretim kuralları aşağıdaki şekildedir:

Aα

Böylece, bu tür kuralların sol tarafının sadece bir tane terminal olmayan sembolden oluştuğunu gözlemleyebilirsiniz; bu nedenle, terminal olmayan sembolün yerine konması, etrafındaki diğer semboller olan "bağlamını" dikkate almadan gerçekleşir.

Öte yandan, içeriğe duyarlı gramerlerin üretim kurallarını göz önünde bulundurursanız, aşağıdaki biçime sahiptir:

βAγβαγ

where A is a non-terminal and α, β, γ are sequences of non-terminals and terminals.

In this case the "context" (i.e., β and γ) of the non-terminal symbol to be substituted influences the effect of the substitution and it is part of the rule itself.

You can find more details in this answer on mathematics and in this answer on software engineering.


Thank you for the answer. But the strange thing for me is that a similar question was asked on mathematics SE.
Shady Atef

1
Note that β and γ don't need to be part of the production's outcome. They also could've been substituted by some other sequence as one can see in @David Richerby's answer.
Frozn

1
@Frozn AFAIK the one given here is the standard definition according to the Chmosky hierarchy. Sure, there are grammars more powerful than context-sensistive that allow any type of production, but the standard context-sensitive grammars do not.
Bakuriu

2
@Frozn: Bakariu is right, here we are talking about grammars defined according to the Chomsky hierarchy, that is based on increasingly restrictive conditions on the production rules. In particular, context-free grammars are type-2 grammars, while context-sensitive ones are type-1. However, type-0 grammars have production rules that are not limited by any restriction and thus are called unrestricted rewriting systems. Here you can find a short description of Chomsky hierarchy with some examples.
PieCot

@Bakuriu and PieCot Well thanks for that, I knew the Chomsky hierarchy. Somewhen someone introduced monotonic grammars as context-sensitiv and together with type-0 and type-1 from the Chomsky hierarchy this resulted in the general rule βAγδ as long as |βAγ||δ|.
Frozn

17

"Context" is surrounding text. Context-free grammars are context-free in the sense that the rules look like Athings, rather than stuffAmore-stuffthings. The left-hand side of a rule is always a single non-terminal symbol. That is, the rules for expanding a non-terminal symbol don't depend on what text appears around that symbol (its context), but only depend on the symbol itself. For example, in the grammar for a programming language, the term Expr expands to the same kind of expression whether you're writing an assignment (e.g., x:=y+z), passing arguments to a function (e.g., f(y+z)) or returning a value from a function (e.g., return y+z).


4

Generically speaking, even regular languages may have context dependencies, meaning that you can determine - to some extent - in what ways symbols can appear in the vicinity of other symbols in a string that belongs to that language.

What is specific to context-free grammars is that when there are multiple ways of substituting a non-terminal symbol, by applying different rules with the same non-terminal on the right side, the choice of which rule to apply is never dependent on what is happening around this symbol during the derivation process.

You can think of them as context-free derivation languages, context-free languages for short.

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.