I’ve been reading quite a bit about parsing and templating in ruby as I attempt to port a templating engine from JavaScript to Ruby. Here are some scattered links:
Jison
Jison is a parser generator for JavaScript that has separate lex and bnf definitions. It’s used by Handlebars.js.
Treetop
Treetop is a parser generator for Ruby. It’s installed with Ruby On Rails, through the mail
gem which is installed by ActionMailer.
Citrus
Citrus is another promising parsing gem for Ruby. It seems to be very easy to get started with, and I like many of the design decisions.
Temple
Temple is a templating-specific library that helps with a lot of the AST transformation. It doesn’t seem to have a CFG syntax so it seems that using treetop or citrus would make sense for complex grammars. Otherwise, strscan could be used.
temple-mustache
This is an implementation of a mustache renderer in . It uses strscan to generate the initial parse tree, and Temple to generate the ruby code. It supports mustache sections.
Slim
Slim is a Haml-like templating library for Ruby that’s used in production by many. It uses Temple, with a line-based parser, which works well because it uses significant indentation for nesting.