Exemple #1
0
 def create_DropOut(self, SM_State):
     if SM_State.is_acceptance():
         incidence_id = self.__incidence_id_of_bipd
         return CommandList(
             QuexDebug('pattern %i: backward input position detected\\n' %
                       incidence_id), InputPIncrement(),
             GotoDoorId(DoorID.bipd_return(incidence_id)))
     else:
         return CommandList(QuexAssertNoPassage())
Exemple #2
0
 def create_DropOut(self, SM_State, dial_db):
     if SM_State.is_acceptance():
         incidence_id = self.__incidence_id_of_bipd
         return OpList(
             Op.QuexDebug(
                 'pattern %i: backward input position detected\\n' %
                 incidence_id), Op.Increment(E_R.InputP),
             Op.GotoDoorId(DoorID.bipd_return(incidence_id, dial_db)))
     else:
         return OpList(Op.QuexAssertNoPassage())
 def create_DropOut(self, SM_State):                          
     if SM_State.is_acceptance():
         incidence_id = self.__incidence_id_of_bipd
         return OpList(
             Op.QuexDebug('pattern %i: backward input position detected\\n' % incidence_id),
             Op.Increment(E_R.InputP), 
             Op.GotoDoorId(DoorID.bipd_return(incidence_id))
         )
     else:
         return OpList(
             Op.QuexAssertNoPassage()
         )
Exemple #4
0
    def do_bipd_entry_and_return(txt, ThePattern):
        """(This is a very seldom case) After the pattern has matched, one needs 
        to determine the end of the lexeme by 'backward input position detection' 
        (bipd). Thus,

              TERMINAL 
                   '----------.
                       (goto) '---------> BIPD State Machine
                                               ...
                                          (determine _input_p)
                                               |
                      (label) .----------------'
                   .----------'
                   |
              The actions on 
              pattern match.
        """
        door_id_entry = DoorID.state_machine_entry(ThePattern.bipd_sm.get_id())
        door_id_return = DoorID.bipd_return(ThePattern.incidence_id())
        txt.append("    %s\n%s\n" % (
            Lng.GOTO(door_id_entry),  # Enter BIPD
            Lng.LABEL(door_id_return))  # Return from BIPD
                   )
Exemple #5
0
    def do_bipd_entry_and_return(txt, ThePattern):
        """(This is a very seldom case) After the pattern has matched, one needs 
        to determine the end of the lexeme by 'backward input position detection' 
        (bipd). Thus,

              TERMINAL 
                   '----------.
                       (goto) '---------> BIPD State Machine
                                               ...
                                          (determine _input_p)
                                               |
                      (label) .----------------'
                   .----------'
                   |
              The actions on 
              pattern match.
        """
        door_id_entry  = DoorID.state_machine_entry(ThePattern.bipd_sm.get_id())
        door_id_return = DoorID.bipd_return(ThePattern.incidence_id())
        txt.append("    %s\n%s\n" 
           % (Lng.GOTO(door_id_entry),   # Enter BIPD
              Lng.LABEL(door_id_return)) # Return from BIPD
        )