Le 9 mai 06 à 17:36, Derek M Jones a écrit :
> Akim,
>
>>> The main requirement is to resync so that cascading syntax errors
>>> are avoided. One compiler I worked on did multiple parses, using
>>> different combinations of error recovery, looking for the one that
>>> parsed the largest amount of input (up to some limit) without
>>> generating any other syntax errors.
>> What was the underlying technology of the parsers? I guess it was
>> LL, right? Were they written by hand?
>
> It was yacc running under Unix version 7 on a PDP-11 cross
> compiled to a mainframe. Our users only got a few goes at
> compiling their code everyday (it was a mainframe batch
> environment) and it was very important that the compiler
> did its best to generate them some kind of executable so
> at least they might be able to try out some parts of the code.
>
> All the best error recovery I have every seen occurs in compilers
> running on mainframes. Not because the cost of renting the software
> was an arm and a leg, but because the users got to have so
> few goes at compiling in a day.
Yep, I knew most of the value is there. In fact, that's also
very clear when one reads Corbett's PhD, on "semantical"
error recovery, which prompted him to write what today is
named Bison :) (He was no aiming at main frames though. I
don't think Pascal ever run on main frames. But that's just
my guess.)
I'm just stunned that you had such an elaborate error recovery
system on top of stock yacc!