如何列出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
我正在使用 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