replacing jison with PEG.js and an all-new parser