Hai ragione, c'è sempre un contesto in un certo senso. Non credo che tu possa capire cosa significhi "contesto" in "senza contesto" senza comprendere una produzione.
Una produzione è una regola di sostituzione. Dice che, per generare stringhe all'interno della lingua, puoi sostituire ciò che è a sinistra con ciò che è a destra:
A -> xy
Ciò significa che la sequenza astratta A può essere sostituita dal carattere "x" seguito dal carattere "y". Puoi anche avere produzioni più complesse:
zA -> xy
Ciò significa che il carattere "z" seguito dalla sequenza astratta A può essere sostituito dai caratteri "x" e "y".
Una produzione senza contesto significa semplicemente che c'è solo una cosa sul lato sinistro. Il primo esempio è senza contesto, perché A può essere sostituito da "x" e "y", indipendentemente da ciò che viene prima o dopo. Tuttavia, nel secondo esempio, il carattere "z" deve comparire prima di A, quindi la combinazione può essere sostituita da "x" e "y", quindi è coinvolto un certo contesto.
Una grammatica senza contesto è quindi solo una grammatica con solo produzioni senza contesto.
Il secondo esempio è in realtà un esempio di una produzione senza restrizioni. C'è un'altra categoria che è tra senza contesto e senza restrizioni chiamata "sensibile al contesto". Un esempio di produzione sensibile al contesto è:
zA -> zxy
La differenza è che ciò che precede A (e dopo) sul lato sinistro deve essere conservato sul lato destro. Ciò significa effettivamente che solo A viene sostituito, ma può essere sostituito solo nel contesto appropriato.