2
私はPythonと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)
。私は問題が原子の定義にあると思う。
私は間違っていますか?