Created first draft with a peg.js grammar