セマンティックスリーメソッドを使用して、命題論理式が有効か無効かを評価するプログラムを実行しようとしています。
これまでのところ、式が適切に形成されているかどうかを評価することができました。
from pyparsing import *
from string import lowercase
def fbf():
atom = Word(lowercase, max=1) #alfabeto minusculas
op = oneOf('^ V => <=>') #Operadores
identOp = oneOf('( [ {')
identCl = oneOf(') ] }')
form = Forward() #Iniciar de manera recursiva
#Gramatica
form << ( (Group(Literal('~') + form)) | ( Group(identOp + form + op + form + identCl) ) | ( Group(identOp + form + identCl) ) | (atom) )
return form
#Haciendo todo lo que se debe
entrada = raw_input("Entrada: ")
try:
print fbf().parseString(entrada, parseAll=True)
except ParseException as error: #Manejando error
print error.markInputline()
print error
print
ここで、否定されたフォーラム ~(form) をモンガンの法則に従って変換する必要があります。モーガンの法則の BNF は次のようなものです。
~((form) V (form)) = (~(form) ^ ~(form))
~((form) ^ (form)) = (~(form) V ~(form))
http://en.wikipedia.org/wiki/De_Morgans_laws
解析は再帰的でなければなりません。私はParseactionsについて読んでいましたが、私はPythonに不慣れで非常に熟練していないことを本当に理解していません.
これを機能させる方法について誰かが私を助けることができますか?