Moved the ParseError exception to it's own file. I had trouble finding it so this was helpful for me.
Added some documentation to the parser.