저는 파이썬과 pyparsing
을 처음 접했고 논리 표현식 평가기를 만들고 있습니다.WFF 로직 표현식을 평가할 때 Pyparsing 오류가 발생 했습니까?
수식은 WFF이어야합니다. WFF의 BNF는 다음과 같습니다
<alpha set> ::= p | q | r | s | t | u | ...
(the arbitrary finite set of propositional variables)
<form> ::= <alpha set> | ¬<form> | (<form>V<form>) | (<form>^<form>)
| (<form> -> <form>) | (<form> <-> <form>)
내 코드는 다음과 같습니다 a^b
및 aVb
: 나는 이러한 식을 사용할 때
'''
Created on 17/02/2012
@author: Juanjo
'''
from pyparsing import *
from string import lowercase
def fbf():
atom = Word(lowercase, max=1) #aphabet
op = oneOf('^ V => <=>') #Operators
identOp = oneOf('([ {')
identCl = oneOf(') ] }')
form = Forward() #Iniciar de manera recursiva
#Grammar:
form << ((Group(Literal('~') + form)) | (Group(identOp + form + op + form + identCl)) | (Group(identOp + form + identCl)) | (atom))
return form
entrada = raw_input("Input please: ") #userinput
print fbf().parseString(entrada)
문제입니다.
파서는 오류를 반환해야하지만 오류는 없습니다. 대신 a
을 반환합니다. 사실 a
이후의 기호는 무시됩니다.
그 형태의 WFF 버전은 다음과 같습니다 (a^b)
및
두 작업이 제대로 (aVb)
. 문제는 원자 정의에 있다고 생각합니다.
내가 뭘 잘못하고 있니?