pyparsing.OperatorReceidence不会在无效字符串上引发错误

2024-04-25 01:14:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望解析一个表示布尔表达式的字符串。下面的代码基于许多示例并使用pyparsing的operatorreceidence助手。在

问题是,我希望代码在无法合理解析字符串时引发异常。现在看来,许多无效的表达式只是悄悄地过去,而错误的表达式却被返回。在

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

该输出:

^{pr2}$

因此,第一个字符串可以工作,但第二个字符串不会按需要引发异常。在

有什么办法吗?我对pyparsing不太熟悉,所以我可能漏掉了一些东西。在


Tags: orand字符串代码parser表达式notpyparsing
1条回答
网友
1楼 · 发布于 2024-04-25 01:14:02

更改A和B的定义以使用Keyword类而不是Literal类。在

另外,在调用parseString时,添加parseAll=True,这样就可以强制解析整个输入。在

相关问题 更多 >