示例#1
0
    def __init__(self):
        self.__commentsRegex = re.compile('//')
        #events
        self.lineEvent = LineEvent()
        self.eofEvent = LineEvent()

        #states
        self.initState = StateMachine.StateBase()
        self.enumState = EnumState()
        self.structState = StructState()
        self.typedefState = TypedefState()

        #message statemachine
        commonTransitions = [(self.initState, self.lineEvent, self.structState,
                              StructState.isStructStart, None),
                             (self.initState, self.lineEvent, self.enumState,
                              EnumState.isEnumStart, None),
                             (self.initState, self.lineEvent, self.initState,
                              TypedefState.isTypedef, self.typedefState.do),
                             (self.structState, self.lineEvent, self.initState,
                              StructState.isStructEnd, None),
                             (self.enumState, self.lineEvent, self.initState,
                              EnumState.isEnumEnd, None)]
        self.messageState = MessageState(commonTransitions, self.initState)

        #main statemachine
        mainTransitions = [
            (self.initState, self.lineEvent, self.messageState,
             MessageState.isMessageCode, None),
            (self.messageState, self.lineEvent, self.messageState,
             MessageState.isMessageCode, None),
            (self.messageState, self.eofEvent, self.initState, None, None)
        ]
        mainTransitions.extend(commonTransitions)
        self.mainStateMachine = StateMachine.StateMachine(
            mainTransitions, self.initState)