3
我希望解析表示布爾表達式的字符串。以下代碼基於許多示例,並使用pyparsing的operatorPrecedence助手。pyparsing.operatorPrecedence不會在無效字符串上產生錯誤
問題是,我希望代碼在無法合理解析字符串時引發異常。就目前而言,許多無效表達式只是靜靜地傳遞,並返回錯誤的表達式。
import pyparsing
_A = pyparsing.Literal('A')
_B = pyparsing.Literal('B')
bool_operand = pyparsing.Or((_A, _B))
precedence_list = [("NOT", 1, pyparsing.opAssoc.RIGHT),
("AND", 2, pyparsing.opAssoc.LEFT),
("OR", 2, pyparsing.opAssoc.LEFT),]
bool_parser = pyparsing.operatorPrecedence(bool_operand, precedence_list)
print bool_parser.parseString('A OR B OR NOT A') # A valid string
print bool_parser.parseString('A NOT AND B') # an invalid string
此輸出:
[['A', 'OR', 'B', 'OR', ['NOT', 'A']]]
['A']
所以第一個字符串的工作原理,但可根據需要在第二個字符串不引發異常。
任何想法,我可以做到這一點?我對pyparsing不是特別熟悉,所以我可能錯過了那裏的一些東西。