Initial commit, functional grammar (execution not tested)