After I told a class that Pascal (actually, any modern programming language) is not context-free, a student challenged me, showing me what was claimed to be a context-free grammar for Pascal (or some other programming language) in the back of a programming book. What is going on? The answer is that a modern programming language has what is called an "underlying context-free grammar," a CFG that generates every string in the language, but lots more strings besides. For example, the following "program" would be generated by that grammar for Pascal: program wrong(input,output); var i:integer; begin j := 5; end. Do you see why it is wrong, and why the grammar would generate it anyway? And, if the grammar is "wrong," why is it mentioned in textbooks?