The naming is odd.  It should probably be "isIncompleteProgram" or something.

But the basic reason is so that `function x() {` will continue to `...` on the next line for the user to complete it, but `"use strict"; with (x) {` will throw right away (since it's not recoverable).  The flag is tested later to determine what to do.

A more readable approach would probably be to check for the errors that actually indicate an incomplete program, and dtrt in that case.