A lexer and parser generator in JavaScript for DSL and custom languages in the browser and Node.js