On 27 July 2011 15:34, Edson Tirelli <ed.tirelli@gmail.com> wrote:

   Just to explain how the parser recovers from errors, it tries to skip a token that fail to match the construct being parsed. If that still fails, it will skip all tokens until it finds the start of a top level construct (i.e. a statement like a rule, query, declare, etc) and resynch from there. If you have too many different top level keywords, it increases the probability that there will be a keyword clash and it will fail to resynch, resulting in cobolish errors for the rest of the file... :)

I think I'll read the parser once more, with an eye out for recovery ;-)
-W