Masz rację, zawsze istnieje pewien kontekst. Nie sądzę, że można zrozumieć, co oznacza „kontekst” w „bezkontekstowym” bez zrozumienia produkcji.
Produkcja jest regułą substytucyjną. Mówi, że aby wygenerować ciągi w języku, możesz zastąpić to, co jest po lewej stronie, tym, co jest po prawej stronie:
A -> xy
Oznacza to, że abstrakcyjną sekwencję A można zastąpić znakiem „x”, a następnie znakiem „y”. Możesz także mieć bardziej złożone produkcje:
zA -> xy
Oznacza to, że znak „z”, po którym następuje abstrakcyjna sekwencja A, można zastąpić znakami „x” i „y”.
Produkcja bezkontekstowa oznacza po prostu, że po lewej stronie jest tylko jedna rzecz. Pierwszy przykład jest pozbawiony kontekstu, ponieważ A można zastąpić „x” i „y” bez względu na to, co nastąpi przed nim lub po nim. Jednak w drugim przykładzie znak „z” musi pojawić się przed literą A, a następnie kombinację można zastąpić literą „x” i „y”, więc występuje pewien kontekst.
Gramatyka bezkontekstowa jest więc po prostu gramatyką zawierającą wyłącznie produkcje bezkontekstowe.
Drugi przykład jest w rzeczywistości przykładem nieograniczonej produkcji. Istnieje inna kategoria, która znajduje się między kontekstową a nieograniczoną, zwana „wrażliwą na kontekst”. Przykładem produkcji kontekstowej jest:
zA -> zxy
Różnica polega na tym, że to, co znajduje się przed literą A (i po) po lewej stronie, musi zostać zachowane po prawej stronie. To faktycznie oznacza, że tylko A jest podstawione, ale można je zastąpić tylko w odpowiednim kontekście.