Make each rule its own submodule (and the parser a function in the module