def retiraToken(expressao,i): if(expressao[i]==" " or expressao[i]=="\n"): i = i + 1; if(expressao[i]==u'∨' or expressao[i]==u'∧'): Token = Tokenizer(expressao[i],"Conectivos") return Token, i+1 elif(expressao[i]=="t"): if(expressao[i:i+4]=="true"): Token = Tokenizer(expressao[i:i+4],"BooleanSymbols") Token.setValue(True) return Token, i+4 else: Token = Tokenizer(expressao[i],"Proposicionais") return Token, i + 1 elif(expressao[i]=="f"): if(expressao[i:i+5]=="false"): Token = Tokenizer(expressao[i:i+5],"BooleanSymbols") Token.setValue(False) return Token, i+5 else: Token = Tokenizer(expressao[i],"Proposicionais") return Token, i + 1 elif(expressao[i] =="(" or expressao[i]==")"): Token = Tokenizer(expressao[i],"Pontuacao") return Token, i+1 elif(expressao[i]==u"¬"): Token = Tokenizer(expressao[i],"Negacao") return Token, i+1 elif(expressao[i].isalpha()): Token = Tokenizer(expressao[i],"Proposicionais") return Token, i + 1 elif(expressao[i]==u'<'): if(expressao[i:i+3]==u'<->'): Token = Tokenizer(expressao[i:i+3],"Conectivos") return Token, i+3 else: sys.exit("Cadeia Inválida") elif(expressao[i]==u'-'): if(expressao[i:i+2]==u'->'): Token = Tokenizer(expressao[i:i+2],"Conectivos") return Token, i+2 else: sys.exit("Cadeia Inválida") else: sys.exit("Cadeia Inválida")
def ExecuteOperation(vStack,opStack, subformulas): op = opStack.pop() rightOperand = vStack.pop() if(op.valor==u'¬'): subFormula = Tokenizer(''+ op.valor +rightOperand.valor, "Subformula" ) subFormula.setValue(not(rightOperand.booleano)) vStack.append(subFormula) subformulas.append(subFormula) return vStack, opStack, subformulas leftOperand = vStack.pop() subFormula = Tokenizer(''+leftOperand.valor + op.valor + rightOperand.valor, "Subformula" ) if(op.valor==u'->'): if(leftOperand.booleano==False or rightOperand.booleano == True): subFormula.setValue(True) else: subFormula.setValue(False) elif(op.valor==u'<->'): if(leftOperand.booleano==rightOperand.booleano): subFormula.setValue(True) else: subFormula.setValue(False) elif(op.valor==u'∨'): subFormula.setValue(leftOperand.booleano or rightOperand.booleano) elif(op.valor==u'∧'): subFormula.setValue(leftOperand.booleano and rightOperand.booleano) vStack.append(subFormula) subformulas.append(subFormula) return vStack, opStack, subformulas