I'm curious why you chose to write your own parser rather than use clojure.tools.analyzer <https://github.com/clojure/tools.analyzer>?
On Tue, Aug 18, 2015 at 10:53 AM, W. David Jarvis <venant...@gmail.com> wrote: > 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. > -- 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.