The correct option is D Whether a variable has been declared before its use
(a) The language corresponding to syntax of if then-else statements is context-free language So syntax of if-then-else statements can be captured by context-free grammar.
(b) The language corresponding to syntax of recursive procedures is context-free language.So syntax of recursive procedures can be captured by context-free-grammar.
(c) The language corresponding to variable has been declared before its use is
L={ww | w is variable}
L is context sensitive language.So the feature,that a variable has been declared before its use can't be captured by context free grammar.
(d) The feature that variable names of arbitrary length can be captured by context free grammar.