This will allow:
- Line numbers in the documentation to refer to the implementation.
- AOP features such as injecting tracing data to be added to the parser
Would be good to separate the parsing of the file and its processing for generating output. Currently this is tightly integrated and this makes it difficult to extend for additional features such as this.