Neotoma 1.3

I’m pleased to announce yet another update to Neotoma. The major features and changes in this release:

  • Transformation/semantic analysis code can be written inline with the PEG, enclosed in backticks (`) before the concluding semi-colon for each reduction. The variables available to your code are Node (the parse result, including transformed results of subtrees), and Idx (the current index into the input).
  • To do an identity transformation on a rule (i.e. pass along the result unchanged), use the tilde (~) instead of backtick-quoted code.
  • Extra functions for use inside your parser can be added to the end of the PEG, also enclosed in backticks (`).
  • All internal uses of the process dictionary have been expunged and instead use the memoization table.
  • All of the modules have been renamed and the parser re-bootstrapped. The most significant user-facing change is that peg_gen is now called neotoma. See the commit for more details.

What is Neotoma?

Neotoma is a packrat parser-generator for Erlang for Parsing Expression Grammars (PEGs). It consists of a parser-combinator library with memoization routines, a parser for PEGs, and a utility to generate parsers from PEGs. It is inspired by treetop, a Ruby library with similar aims, and parsec, the parser-combinator library for Haskell.

Upcoming Speaking Gigs - Late 2009 into 2010

I’ll be speaking at a few meetups in the near future. I encourage you to come to as many as you can! My apologies for the short notice on the first one.

Also, if you’d like me to speak at your meetup group or other event about any one of these topics, Radiant, or Erlang, please drop me a line at seancribbs AT gmail DOT com.