Hey all - I'm happy to announce the release of version 0.1.2 of Glow <https://github.com/venantius/glow>, the syntax highlighting library I open-sourced about a month ago.
This release comes with a number of massive changes as to the underlying nature of the library. In essence, I've moved away from a regular-expression driven approach in favor of using a lexical parser to build up a parse tree from the input string, which is then transformed into a syntax-highlighted string. This has two advantages. First, it avoids a major problem I was having with the regular expression approach in the form of a StackOverflowError when attempting to identify long string literals within the input string. Second, it produces an intermediate parse tree which can be transformed using fairly standard Instaparse transformations to achieve arbitrary formatting output (handy if, for instance, one wanted to produce HTML output or hiccup templates). It has some disadvantage as well. It's somewhat slower, though I believe the code to be more maintainable and comprehensible. It also requires the input source code to be valid and parseable Clojure code, which you can think of as either an advantage or a disadvantage :P Although I had hoped initially to use Instaparse for the project's parser, I ended up getting considerably better performance from ANTLR / clj-antlr, and so that's the path I've gone down. You can take a look at the ANTLR Clojure grammar Glow uses here <https://github.com/venantius/glow/blob/master/resources/parsers/Clojure.g4> - I believe it to be comprehensive, and it handles a number of edge cases that the grammar in the main ANTLR grammar repo does not. As always, I hope you get some usage out of this, and please do files issues, PRs, etc (project page: https://github.com/venantius/glow) - or just tweet at me @venantius <https://twitter.com/venantius>. Cheers, - V -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.