Should translate StringMessageArg from document character set to system character set. In MessageReporter, maybe distinguish messages coming from the parser. Don't ever give a non-existent file as a location in a error message. Text of messages should be able to specify that an open quote or close quote should be inserted at a particular point. Win32 Remove path and extension from program name in error messages.
Compilers can typically eliminate unused templates.
Reengineer Vector to reduce code size with such compilers. Should automatically register all available code pages. Have StorageManager that uses Win32 API directly. Would avoid limits on number of open files. Also use flag that says file is being accessed sequentially.