class RawCodeParser: def __init__(self, log, syntax): self.sMachine = StateMachine(log, stateMachineDescriptor) self.syntax = syntax self.logger = log def clearStateMachine(self): self.sMachine.clear() def parseText(self, text): if not text: return [] if self.logger: self.logger.write('*** Text handling Begin ***') self.logger.write(text) self.logger.write('') event = 'eNewChar' serviceData = { 'raw' : text, 'idx' : 0, 'objects' : [], 'object' : {}, 'syntax' : self.syntax } self.sMachine.run(serviceData, event) if self.logger: self.logger.write('*** Text handling End ***') return serviceData['objects'] def parseFile(self, fileName): self.parsedObjects = [] self.sMachine.clear() f = open(fileName, 'r') self.rawLines = f.readlines() f.close() if self.logger: self.logger.section('Parse file %s' % fileName) for lineIndex in range(len(self.rawLines)): line = self.rawLines[lineIndex] lineObjects = self.parseText(line) for object in lineObjects: object['line'] = lineIndex self.parsedObjects += lineObjects[:] if self.logger: self.logger.write('Parse line:') self.logger.write(line) self.logger.write('into the objects:') self.logger.write(str(lineObjects)) raw_input("Press any key...")