我正在尝试创建pyparsing语法。我想将空格分隔的实体捕获为运算符“和” /“或”之前的单个单词。
预期结果是:
(United kingdom or Sweden)
['United kingdom','or','Sweden']
我得到的是
['United', 'kingdom','or','Sweden']
到目前为止的代码
from pyparsing import *
import json
QUOTED = quotedString.setParseAction(removeQuotes)
OAND = CaselessLiteral("and")
OOR = CaselessLiteral("or")
ONOT = CaselessLiteral("not")
WORDWITHSPACE = Combine(OneOrMore(Word(printables.replace("(", "").replace(")", "")) | White(
' ') + ~(White() | OAND | ONOT | OOR)))
TERM = (QUOTED | WORDWITHSPACE)
EXPRESSION = operatorPrecedence(TERM,
[
(ONOT, 1, opAssoc.RIGHT),
(OAND, 2, opAssoc.LEFT),
(OOR, 2, opAssoc.LEFT)
])
STRING = OneOrMore(EXPRESSION) + StringEnd()
Helenr
相关分类