Я использую PLY и написал ниже выражения, соответствующие этому типу строки '(A ИЛИ B ИЛИ 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
Понятия не имею, какчтобы охватить все случаи, поэтому я должен перечислить их как можно больше, и я знаю, что это не элегантно.
Есть идеи по оптимизации этого выражения?Большое спасибо.