Split parser out into separate files.

The code runs faster this way too.

The grammar file is under share/ but is never referenced at runtime.