Как мы можем сделать это выражение грамматикой однозначным для анализа LL (1)?
Грамматика очень похожа на выражения, используемые в большинстве языков, подобных Си.
Примечание: строки в <> не являются терминалами, а строки в верхнем регистре являются терминалами.
<expression> --> <arithmeticExpr> | <booleanExpr>
<arithmeticExpr> --> <arithmeticExpr> <op1> <term> | <term>
<term> --> <term> <op2> <factor>
<term> --> <factor>
<factor> --> BO <arithmeticExpr> BC
<factor> --> <var>
<op1> --> PLUS | MINUS
<op2> --> MUL | DIV
<booleanExpr> --> <booleanExpr> <logicalOp> <booleanExpr>
<booleanExpr> --> <arithmeticExpr> <relationalOp> <arithmeticExpr>
<booleanExpr> --> BO <booleanExpr> BC
<logicalOp> --> AND | OR
<relationalOp> --> LT | LE | GT | GE | EQ | NE
<var> --> ID <whichId> | NUM | RNUM
<whichId> --> SQBO ID SQBC | ε
PS: Я не нашел ни одного вопроса по Stackoverflow, который обрабатывал Boolean Expressions.