Esempio n. 1
0
    def _nao_terminal(self, estado, terminal, nao_term):
        flag = False
        tem_nao_term = False
        indice = 0
        rotulo = 0

        for est in self.estados:
            if est.rotuloGr != estado:
                indice += 1
            if est.rotuloGr == nao_term:
                tem_nao_term = True
                rotulo = est.rotulo

        for prox_estado in self.estados[indice].transicoes:
            if prox_estado.rotulo == terminal:
                flag = True
                if tem_nao_term:
                    if rotulo not in prox_estado.transicoes:
                        prox_estado.transicoes.append(rotulo)
                else:
                    prox_estado.transicoes.append(self._count_estado)
                    self._add_estado(nao_term)
                break

        if not flag:
            transicao = Transicao()
            transicao.rotulo = terminal
            if tem_nao_term:
                transicao.transicoes.append(rotulo)
            else:
                transicao.transicoes.append(self._count_estado)
                self._add_estado(nao_term)
            self.estados[indice].transicoes.append(transicao)
Esempio n. 2
0
    def _terminal(self, estado, terminal):
        indice = 0
        flag = False
        for est in self.estados:
            if est.rotuloGr == estado:
                break
            indice += 1

        for prox_estado in self.estados[indice].transicoes:
            if prox_estado.rotulo == terminal:
                flag = True
                prox_estado.transicoes.append(self._count_estado)

        if not flag:
            transicao = Transicao()
            transicao.rotulo = terminal
            transicao.transicoes.append(self._count_estado)

        est = self._add_estado("")
        est.final = True