我正在尝试使用语义三方法评估命题逻辑公式是有效还是无效的程序。
我设法评估了一个公式是否格式正确:
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
现在我需要根据Monrgan定律转换否定的forumla〜(form),摩根定律的BNF是这样的:
~((form) V (form)) = (~(form) ^ ~(form))
~((form) ^ (form)) = (~(form) V ~(form))
http://en.wikipedia.org/wiki/De_Morgans_laws
解析必须是递归的;我正在阅读有关 Parseactions 的内容,但我真的不明白我是 python 新手并且非常不熟练。
有人可以帮我解决这个问题吗?