Język kontekstowy (ang. context-sensitive language) – rodzaj języka formalnego, generowany przez gramatykę kontekstową. W Hierarchii Chomskiego jest zdefiniowany jako język typu 1.
Klasa języków kontekstowych jest właściwym podzbiorem klasy języków rekurencyjnych.
Definicje Istnieje kilka równoważnych definicji języka kontekstowego. Język L nazywamy kontekstowym wtedy i tylko wtedy, gdy:
Istnieje gramatyka kontekstowa G generująca język L. Istnieje automat liniowo ograniczony potrafiący rozstrzygnąć czy słowo x należy do języka L.
Językami kontekstowymi są wszystkie języki bezkontekstowe oraz języki regularne.
Właściwości Klasa języków kontekstowych jest zamknięta ze względu na operacje:
sumy teoriomnogościowej: iloczynu teoriomnogościowego: konkatenację: dopełnienie:
Rozstrzygnięcie, czy słowo x należy do języka kontekstowego L, jest problemem PSPACE-zupełnym.
Przykład Język słów nad alfabetem binarnym, których pierwsza połowa równa jest drugiej, jest kontekstowy (ale nie bezkontekstowy!).
– symbol startowy przechodzi w słowo puste lub
– w miejsce generowane jest słowo gdzie jest pewnym słowem binarnym, jest zaś tym samym słowem, tyle że odwróconym i przedstawionym w postaci symboli nieterminalnych i zamiast zwykłych 0 i 1
– znajdujący się najbardziej na lewo symbol słowa zostaje zaznaczony