Let L be a context-free language recognized by a pushdown automaton (PDA) P=(QP,Σ,Γ,δP,q0,Z0,FP), and let M be a regular language recognized by a deterministic finite automaton (DFA) D=(QD,Σ,δD,q0′,FD).
We can construct a product PDA P′=(QP×QD,Σ,Γ,δ′,(q0,q0′),Z0,FP×FD) that tracks the states of both automata simultaneously.
The transition function δ′ is defined such that for any state (q,p)∈QP×QD and input a∈Σ∪{ϵ}, P′ performs the transition dictated by P while updating the state in D according to δD(p,a) if a∈Σ, or keeping p unchanged if a=ϵ.
Since this product machine P′ is a PDA, it accepts the intersection of the two languages.
Therefore, L∩M is recognized by a PDA and is thus a context-free language.