Hi Günther,

Sorry if the commit message offended you.  The silent failure due to dictionary 
collisions (which just fails somewhere in the middle of a parse, just like any 
other parse failure, rather than aborting and letting you find the error) had 
just caused me to spend three hours debugging a grammar that was, in fact, 
correct.  As this was the third time I had spent ages looking for a problem in 
the grammar which wasn't really there, I found this very frustrating.  

Overwriting when merging, as you say, would not be a problem, but this is not 
what your code did.  It just emitted an OMParseFail when you tried to merge two 
OMParseSuccesses with overlapping dictionaries. Because fails are not chained 
(which will probably be my next fix), it was impossible to tell that this was 
where the original failure that bubbled back to the top was (the actual failure 
message that you got was something helpful like got . when expected } ).

Please don't take the comment in the commit personally - I thought I'd changed 
the behaviour in my previous commit to merge dictionaries on conflicts.  The 
'as it ought to' in the commit message refers to how I thought that it was 
working as of my last commit.  

David

P.S. I think you're right; it is better to start from scratch with something 
designed for OMeta from the start.  I am working on that now - from trying to 
implement OMeta with your code, I have a much better understanding of how OMeta 
should work with LK.  Some things we did right, some we did wrong.  I was 
hoping to postpone the rewrite until I had code generation working from the 
bootstrap implementation, then we'd just need to change the actions in the 
OMeta code, but I think on reflection it's easier to do it from the start.
_______________________________________________
Etoile-dev mailing list
Etoile-dev@gna.org
https://mail.gna.org/listinfo/etoile-dev

Reply via email to