Cosa significa veramente senza contesto nel termine grammatica senza contesto?


29

Ho studiato compilatori per un po 'e ho cercato cosa significa "contesto" in grammatica e cosa significa che la grammatica è "senza contesto", ma senza risultati.

Quindi qualcuno può aiutare con questo?


7
Cosa intendi con "veramente"? Quali spiegazioni hai letto e cosa non capisci? IIRC, ogni libro di testo a metà decente sulla questione spiegherà cosa significano.
Raffaello

2
Ecco un esempio comprensibile. Considera la parola "leggi". È una sola parola che ha due significati completamente diversi. Uno è il tempo presente "leggere", l'altro è il tempo passato "Ho letto". Se hai visto la parola "leggere" in un pezzo di testo, non puoi chiarire quale dei due significati rappresenti, senza guardare al contesto. Pertanto, l'inglese è sensibile al contesto, poiché non è possibile analizzare ciascun token (parola) senza considerarlo nel contesto. Una grammatica sensibile al contesto è quella in cui il significato di ogni token è inequivocabilmente deducibile dal singolo token che lo rappresenta.
Alexander - Ripristina Monica il

Risposte:


30

Il contesto può essere spiegato per quanto riguarda le regole di produzione consentite per diverse grammatiche nella gerarchia di Chomsky.

Se si considerano grammatiche senza contesto, le loro regole di produzione hanno la forma seguente:

Aα

Quindi, puoi osservare che la parte sinistra di questo tipo di regole è composta da un solo simbolo non terminale; quindi, la sostituzione del simbolo non terminale avviene senza considerare il suo "contesto", cioè gli altri simboli da cui è circondato.

D'altra parte, se si considerano le regole di produzione di grammatiche sensibili al contesto, hanno la seguente forma:

βAγβαγ

dove è un non terminale e , , sono sequenze di non terminali e terminali.Aαβγ

In questo caso il "contesto" (ovvero, e ) del simbolo non terminale da sostituire influenza l'effetto della sostituzione ed è parte della regola stessa.βγ

Puoi trovare maggiori dettagli in questa risposta sulla matematica e in questa risposta sull'ingegneria del software.


Grazie per la risposta. Ma la cosa strana per me è che una domanda simile è stata posta sulla matematica SE.
Shady Atef,

1
Nota che e non devono necessariamente far parte del risultato della produzione. Potrebbero anche essere stati sostituiti da un'altra sequenza come si può vedere nella risposta di @David Richerby. βγ
Frozn,

1
@Frozn AFAIK quella qui fornita è la definizione standard secondo la gerarchia di Chmosky. Certo, ci sono grammatiche più potenti di quelle sensibili al contesto che consentono qualsiasi tipo di produzione, ma le grammatiche sensibili al contesto standard no.
Bakuriu,

2
@Frozn: Bakariu ha ragione, qui stiamo parlando di grammatiche definite secondo la gerarchia di Chomsky, che si basa su condizioni sempre più restrittive delle regole di produzione. In particolare, le grammatiche senza contesto sono di tipo 2, mentre quelle sensibili al contesto sono di tipo 1. Tuttavia, le grammatiche di tipo 0 hanno regole di produzione che non sono limitate da alcuna restrizione e quindi sono chiamate sistemi di riscrittura senza restrizioni. Qui puoi trovare una breve descrizione della gerarchia di Chomsky con alcuni esempi.
PieCot

@Bakuriu e PieCot Bene, grazie per quello, conoscevo la gerarchia di Chomsky. Qualcuno quando qualcuno ha introdotto le grammatiche monotoniche come sensibili al contesto e insieme al tipo 0 e al tipo 1 della gerarchia di Chomsky ciò ha portato alla regola generale fintanto che. βAγδ|βAγ||δ|
Frozn,

17

"Contesto" è il testo circostante. Le grammatiche senza contesto sono libere dal contesto, nel senso che le regole sembrano , piuttosto che . Il lato sinistro di una regola è sempre un singolo simbolo non terminale. Cioè, le regole per espandere un simbolo non terminale non dipendono da quale testo appare attorno a quel simbolo (il suo contesto), ma dipendono solo dal simbolo stesso. Ad esempio, nella grammatica di un linguaggio di programmazione, il termine espande allo stesso tipo di espressione sia che si stia scrivendo un compito (ad esempio, ), passando argomenti a una funzione (ad esempio, ) o restituendo un valore da una funzione (ad es., ).AthingsstuffAmore-stuffthingsExprx:=y+zf(y+z)return y+z


4

In generale, anche le lingue normali possono avere dipendenze dal contesto, il che significa che è possibile determinare - in una certa misura - in che modo i simboli possono apparire in prossimità di altri simboli in una stringa che appartiene a quella lingua.

Ciò che è specifico delle grammatiche libere dal contesto è che quando esistono diversi modi per sostituire un simbolo non terminale, applicando regole diverse con lo stesso non terminale sul lato destro, la scelta di quale regola applicare non dipende mai da quale sta accadendo attorno a questo simbolo durante il processo di derivazione.

Puoi pensarli come lingue di derivazione senza contesto, in breve lingue senza contesto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.