如何列出Python PLY中的所有表达式

How to list all expressions in Python PLY

我正在使用 PLY 并在下面编写了表达式来匹配这种示例字符串“(A OR B OR C)”。

expression : LPAREN KEYWORD AND KEYWORD RPAREN
           | LPAREN KEYWORD OR KEYWORD RPAREN
           | LPAREN KEYWORD AND KEYWORD AND KEYWORD RPAREN
           | LPAREN KEYWORD OR KEYWORD OR KEYWORD RPAREN
           | LPAREN KEYWORD AND KEYWORD AND KEYWORD AND KEYWORD RPAREN
           | LPAREN KEYWORD OR KEYWORD OR KEYWORD OR KEYWORD RPAREN
           | LPAREN KEYWORD AND KEYWORD AND KEYWORD AND KEYWORD AND KEYWORD RPAREN
           | LPAREN KEYWORD OR KEYWORD OR KEYWORD OR KEYWORD OR KEYWORD RPAREN
           | LPAREN KEYWORD AND KEYWORD AND KEYWORD AND KEYWORD AND KEYWORD AND KEYWORD RPAREN
           | LPAREN KEYWORD OR KEYWORD OR KEYWORD OR KEYWORD OR KEYWORD OR KEYWORD RPAREN

我不知道如何涵盖所有案例,所以我必须尽可能多地列出它们,我知道这并不优雅。

有什么优化这个表达式的想法吗?非常感谢。

假设你在 Python 中使用 PLY,你可以用这个解析这个表达式:

def p_condition(p):
    """ condition : LPAREN comparation RPAREN """


def p_comparation(p):
    """ comparation : KEYWORD operator KEYWORD
                    | comparation operator KEYWORD  """

def p_operator(p):
    """operator : AND
                | OR """

要理解它,请阅读 BNF 语法和 PLY docs