def __repr__(self): if self.acceptance_id == E_AcceptanceIDs.FAILURE: assert self.positioning == E_TransitionN.LEXEME_START_PLUS_ONE else: assert self.positioning != E_TransitionN.LEXEME_START_PLUS_ONE if self.positioning != 0: return "case %s: %s goto %s;" % (repr_acceptance_id(self.acceptance_id, PatternStrF=False), repr_positioning(self.positioning, self.position_register), repr_acceptance_id(self.acceptance_id)) else: return "case %s: goto %s;" % (repr_acceptance_id(self.acceptance_id, PatternStrF=False), repr_acceptance_id(self.acceptance_id))
def __repr__(self): if len(self.__acceptance_checker) == 0 and len(self.__terminal_router) == 0: return " <unreachable code>" info = self.trivialize() if info is not None: if len(info) == 2 and info[0] is None: return " goto PreContextCheckTerminated;" else: txt = [] if_str = "if" for easy in info: if easy[0].pre_context_id == E_PreContextIDs.NONE: txt.append(" %s goto %s;\n" % \ (repr_positioning(easy[1].positioning, easy[1].position_register), repr_acceptance_id(easy[1].acceptance_id))) else: txt.append(" %s %s: %s goto %s;\n" % \ (if_str, repr_pre_context_id(easy[0].pre_context_id), repr_positioning(easy[1].positioning, easy[1].position_register), repr_acceptance_id(easy[1].acceptance_id))) if_str = "else if" return "".join(txt) txt = [" Checker:\n"] if_str = "if " for element in self.__acceptance_checker: if element.pre_context_id != E_PreContextIDs.NONE: txt.append(" %s %s\n" % (if_str, repr(element))) else: txt.append(" accept = %s\n" % repr_acceptance_id(element.acceptance_id)) # No check after the unconditional acceptance break if_str = "else if" txt.append(" Router:\n") for element in self.__terminal_router: txt.append(" %s\n" % repr(element)) return "".join(txt)