On 3/9/2006, at 1:19, Joshua Keroes wrote:
The PPI module[1] on CPAN is designed to parse Perl (no small task there). It was designed for projected /exactly/ like TextMate.
TextMate needs a name assigned to each parsed entity so that scope selectors can be used (used to abstract visual styles away from the parser, apply settings to subsets of the document, limit key bindings, etc.).
It needs grammars to be able to include each other, e.g. Perl here- docs include the HTML grammar when the token is HTML, the HTML (Mason) grammar includes Perl inside <% … %> etc.
If each language had its own custom parser, this would not be feasible, and it would significantly lower the barrier to language grammar hacking.
Not to mention that TM needs to constantly re-parse the document when it is being edited, but only the part of the document actually changed. E.g. if you add a keyword at line 10,325 then only that line should be re-parsed, though had you added ‘=begin’ then it needs to re-parse until it sees ‘=end’ -- stand-alone parsers like PPI are not made for these things.