On Tue, 2006-10-24 at 16:26 -0500, Nick Sieger wrote: > I for one am still interested. I was looking at the rubyfront grammar > this weekend and I don't think it should be too hard to port to ANTLR > 3. > > Also, what about the idea of a multi-pass parser? With Ruby's syntax > so complex, it might help to break down into several stages for > understandability.
That was Terence's opinion as well, if I remember correctly (Hi Ter!). I've not had time to look at the RubyFront grammar deeply, but I was a little surprised that Yong Zhi was apparently able to do heredocs without multiple passes, actually. > Also, on the JRuby project, we have a need for a more fault-tolerant > parser because eventually IDEs will be using it to parse partial > source files for refactoring and analysis. Any ideas here? Well ... not much. One bit of advice from my minor experience in hand-rolling "fuzzy" parsers for reverse-engineered languages: it's really easy for "fuzzy" parsers to turn into effectively meaningless piles of heuristics. You need a strict grammar as a starting point anyway. At that point, you can make a "fuzzy" version largely by establishing specific "fallback points" where things can end up in an "unparsable blob" terminal, and otherwise keep it as strict as possible. Some heuristics (perhaps as a second pass) are okay, but you have to be able to account for their interactions so that you don't mis-match a valid input. In the case of an IDE, those same fallback points might be good units of granularity at which to only re-parse subranges of a changed file -- that way, you can localize the effects of things like edits which result in mismatched braces. Terence might have some more useful ideas and/or practical experience about that sort of thing as well. HE'S the grammar expert after all. :) > MenTaL: I don't think you made it to RubyConf did you? Sorry you > missed it. No ... I probably won't go until/unless I would be giving a presentation, honestly. Unless I was sure to contribute significantly, I wouldn't feel right taking up a scarce slot. -mental
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Rubygrammar-grammarians mailing list [email protected] http://rubyforge.org/mailman/listinfo/rubygrammar-grammarians
