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