Вы правы, в каком-то смысле всегда есть контекст. Я не думаю, что вы можете понять, что означает «контекст» в контексте «без контекста», не разбираясь в производстве.
Производство - это правило замещения. В нем говорится, что для генерации строк в языке вы можете заменить то, что слева, на то, что справа:
A -> xy
Это означает, что абстрактная последовательность A может быть заменена символом «x», за которым следует символ «y». Вы также можете иметь более сложные производства:
zA -> xy
Это означает, что символ «z», за которым следует абстрактная последовательность A, может быть заменен символами «x» и «y».
Производство без контекста просто означает, что в левой части есть только одна вещь. Первый пример не зависит от контекста, поскольку A можно заменить на «x» и «y» независимо от того, что находится до или после него. Однако во втором примере символ «z» должен появляться перед буквой A, а затем комбинация может быть заменена на «x» и «y», так что здесь присутствует некоторый контекст.
Тогда контекстно-свободная грамматика - это просто грамматика с продукцией только без контекста.
Второй пример - это пример неограниченного производства. Существует еще одна категория, которая находится между контекстно-свободной и неограниченной и называется контекстно-зависимой. Пример контекстно-зависимого производства:
zA -> zxy
Разница в том, что то, что предшествует A (и после) на левой стороне, должно сохраняться справа. Это фактически означает, что только А замещен, но может быть заменен только в соответствующем контексте.