在Python中声明简单PyParsing递归语法的奇怪警告

在Python中声明简单PyParsing递归语法的奇怪警告,python,recursion,grammar,pyparsing,Python,Recursion,Grammar,Pyparsing,我正在尝试使用PyParsing解析Python中类似语法的片段 我遇到问题的代码是: import pyparsing as pp ...some pyparsing tokens definitions... INTEGER_EXPRESSION = EXPRESSION RULE_NAME = SYMBOL RULE_PROPERTY = OB + pp.Literal('salience') + INTEGER_EXPRESSION + CB DECLARATION = OB

我正在尝试使用PyParsing解析Python中类似语法的片段

我遇到问题的代码是:

import pyparsing as pp

...some pyparsing tokens definitions...

INTEGER_EXPRESSION = EXPRESSION

RULE_NAME = SYMBOL

RULE_PROPERTY = OB + pp.Literal('salience') + INTEGER_EXPRESSION + CB

DECLARATION = OB + pp.Literal('declare') + pp.OneOrMore(RULE_PROPERTY) + CB

ACTION = EXPRESSION

CONNECTED_CONSTRAINT = pp.Forward()

TERM = CONSTANT | SINGLEFIELD_VARIABLE | MULTIFIELD_VARIABLE | pp.Literal(':') + FUNCTION_CALL | pp.Literal('=') + FUNCTION_CALL

SINGLE_CONSTRAINT = TERM | pp.Literal('~') + TERM

CONNECTED_CONSTRAINT << SINGLE_CONSTRAINT | SINGLE_CONSTRAINT + pp.Literal('&') + CONNECTED_CONSTRAINT

CONSTRAINT = pp.Literal('?') | pp.Literal('$?') | CONNECTED_CONSTRAINT

ORDERED_PATTERN_CE = OB + SYMBOL + pp.ZeroOrMore(CONSTRAINT) + CB

PATTERN_CE = ORDERED_PATTERN_CE

CONDITIONAL_ELEMENT = PATTERN_CE

DEFRULE_CONSTRUCT = OB + pp.Literal('defrule') + RULE_NAME + pp.Optional(COMMENT) + pp.Optional(DECLARATION) + pp.ZeroOrMore(CONDITIONAL_ELEMENT) + pp.Literal('=>') + pp.ZeroOrMore(ACTION) + CB
将pyparsing导入为pp
…某些pyparsing标记定义。。。
整数\表达式=表达式
规则名称=符号
RULE_PROPERTY=OB+pp.Literal('salience')+INTEGER_表达式+CB
声明=OB+pp.Literal('declare')+pp.OneOrMore(RULE_属性)+CB
动作=表情
已连接的约束=pp.Forward()
术语=常量|单字段|变量|多字段|变量| pp.Literal(':')+函数|调用| pp.Literal('=')+函数|
单约束=术语| pp.Literal(“~”)+术语
连接约束问题已解决

这里解释了这类问题:

我必须写出这样的表达:

x << a | b

x问题解决了!这里的解释是:嘿,有人真的读了文档!欢迎来到pyparsing!非常感谢。惊人的图书馆(顺便说一句;)
CONNECTED_CONSTRAINT << SINGLE_CONSTRAINT | SINGLE_CONSTRAINT + pp.Literal('&') + CONNECTED_CONSTRAINT
CONNECTED_CONSTRAINT << SINGLE_CONSTRAINT | pp.Literal('test')
x << a | b
x << (a | b)