def _read(self, filename):
data = {}<EOL>parsers = [<EOL>FirstDataParser(), CoordinateParser(), EnergyGradParser(),<EOL>SkipApproxHessian(), HessianParser(), MassParser(),<EOL>]<EOL>with open(filename) as f:<EOL><INDENT>while True:<EOL><INDENT>line = f.readline()<EOL>if line == "<STR_LIT>":<EOL><INDENT>break<EOL><DEDENT>for parser in parsers:<EOL><INDENT>if parser.test(line, data):<EOL><INDENT>parser.read(line, f, data)<EOL>break<EOL><DEDENT><DEDENT><DEDENT><DEDENT>self.__dict__.update(data)<EOL>
Internal routine that reads all data from the punch file.