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?
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?
Risposte:
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:
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:
dove è un non terminale e , , sono sequenze di non terminali e terminali.
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.
"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., ).x:=y+z
f(y+z)
return y+z
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.