Rob Pike <robpike(a)gmail.com> wrote:
The Cornell PL/I compiler, PL/C, ran on the IBM
360 so of course used
batch
input. It tried automatically to keep things
running after a parsing
error
by inserting some token - semicolon, parenthesis,
whatever seemed best -
and continuing to parse, in order to maximize the amount of input that
could be parsed before giving up. At least, that's what I took the
motivation to be. It rarely succeeded in fixing the actual problem,
despite
PL/I being plastered with semicolons, but it did
tend to ferret out more
errors per run. I found the tactic helpful.
-rob
Gawk used to do this, until people started fuzzing it, causing cascading
errors and eventually core dumps. Now the first syntax error is fatal.
It got to the point where I added this text to the manual:
In recent years, people have been running "fuzzers" to generate
invalid awk programs in order to find and report (so-called)
bugs in gawk.
In general, such reports are not of much practical use. The
programs they create are not realistic and the bugs found are
generally from some kind of memory corruption that is fatal
anyway.
So, if you want to run a fuzzer against gawk and report the
results, you may do so, but be aware that such reports don’t
carry the same weight as reports of real bugs do.
(Yeah, I've just changed the subject, feel free to stay on topic. :-)