示例#1
0
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...")
示例#2
0
 def __init__(self, log, syntax):
   self.sMachine = StateMachine(log, stateMachineDescriptor)
   self.syntax = syntax
   self.logger = log