ParentFull threadRushPL·After trying hand-written approach and later perl's Parse::RecDescent I ended up using peg.js (http://pegjs.org) parser generator. It was probably the most flexible and performant out of all the options I tried.View on HN