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.

Reply via email to