我正在尝试解析由二元运算符+
、一元运算符not
和标识符组成的表达式,这些标识符可以是任何不是的字母字符串not
from pyparsing import (
CaselessKeyword,
Combine,
Word,
alphas,
opAssoc,
infixNotation,
)
identifier = Combine(~CaselessKeyword('not') + Word(alphas))
expression = infixNotation(identifier, [
('+', 2, opAssoc.LEFT),
(CaselessKeyword('not'), 1, opAssoc.RIGHT),
]
跑步
expression.parseString('a + (not b)')
给出了我的期望
[['a', '+', ['not', 'b']]]
但是,如果没有括号
expression.parseString('a + not b')
我只得到第一个令牌:
['a']
如何在没有括号的情况下定义语言以按照我的意愿工作?
(实际情况下有更多的运算符和保留字:这是向解析 S3 Select 语言迈出的一步)