Vous avez raison, il y a toujours un contexte dans un certain sens. Je ne pense pas que vous puissiez comprendre ce que signifie "contexte" dans "sans contexte" sans comprendre une production.
Une production est une règle de substitution. Il dit que, pour générer des chaînes dans le langage, vous pouvez substituer ce qui est à gauche à ce qui est à droite:
A -> xy
Cela signifie que la séquence abstraite A peut être remplacée par le caractère "x" suivi du caractère "y". Vous pouvez également avoir des productions plus complexes:
zA -> xy
Cela signifie que le caractère "z" suivi de la séquence abstraite A peut être remplacé par les caractères "x" et "y".
Une production hors contexte signifie simplement qu'il n'y a qu'une seule chose sur le côté gauche. Le premier exemple est sans contexte, car A peut être remplacé par "x" et "y", peu importe ce qui vient avant ou après. Cependant, dans le deuxième exemple, le caractère "z" doit apparaître avant le A, puis la combinaison peut être remplacée par "x" et "y", donc il y a un certain contexte impliqué.
Une grammaire sans contexte n'est alors qu'une grammaire avec uniquement des productions sans contexte.
Le deuxième exemple est en fait un exemple de production sans restriction. Il existe une autre catégorie qui se situe entre sans contexte et sans restriction, appelée «sensible au contexte». Un exemple de production contextuelle est:
zA -> zxy
La différence étant que ce qui précède A (et après) sur le côté gauche doit être conservé sur la droite. Cela signifie effectivement que seul A est substitué, mais ne peut être substitué que dans le contexte approprié.