rewrote most parsing; support for multi-line comments with formatting preservation