Come per i linguaggi regolari, anche per quelli context-free esiste un pumping lemma, il quale può essere usato per dimostrare che determinati linguaggi non sono context-free.
Teorema: Sia $L$ un linguaggio context-free. Esiste una costante $n$ tale che, per ogni stringa $z \in L$ con $|z|\geq n$, esiste una scomposizione $z = uVwXy$ che soddisfa le seguenti proprietà:
Siccome la scelta di $n$ per un determinato linguaggio $L$ non è univoca, per semplificare il discorso si chiamerà constante di pumping $N$ o $N_L$ la più piccola $n$ per cui vale il lemma.
Teorema: La classe dei linguaggi liberi dal contesto è chiusa rispetto alle seguenti operazioni:
Invece, a differenza dei linguaggi regolari, i linguaggi context-free non sono chiusi rispetto all’operazione di intersezione: se $L_1$ e $L_2$ sono CFL, non è garantito che anche $L_1 \cap L_2$ sia un CFL. Ad esempio:
Il linguaggio $L_1 = \{0^n 1^n2^i\ | \ n\geq 1, i\geq 1\}$ comprende le stringhe formate da un certo numero di 0, seguiti dallo stesso numero di 1 e poi da un numero qualsiasi di 2. Esso è un CFL in quanto si può dimostrare che è generato da una grammatica con le regole di produzione
$$ S\rarr AB \\ A\rarr 0A1 \ | \ 01\\ B\rarr 2B \ | \ 2 $$
dove $S$ è il simbolo iniziale.
Il linguaggio $L_2 = \{0^i 1^n2^n \ | \ n\geq 1, i\geq 1\}$ comprende le stringhe formate da un numero qualsiasi di 0, seguiti da un determinato numero di 1 e dallo stesso numero di 2. In pratica, questo linguaggio è ottenuto da $L_!$ scambiando i ruoli di 0 e 2. Anch’esso è un CFL, in quanto generato dalla seguente grammatica:
$$ S\rarr AB \\ A\rarr 0A \ | \ 0 \\ B\rarr 1B2 \ | \ 12 $$
L’intersezione di questi due linguaggi contiene le stringhe che hanno lo stesso numero di 0, 1, e 2,
$$ L_1\cap L_2 = \{0^n1^n2^n \ | \ n\geq 1\} $$