この式文法を明確にするにはどうすればいいですか式の文法は、LL(1)解析のために曖昧ではありませんか?LL(1)
文法は、ほとんどのC言語のような表現に非常に似ています。
注:<の文字列は非終端記号ですが、大文字の記号は終端記号です。
<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:私はあなたがルール
<booleanExpr> --> <booleanExpr> <logicalOp> <booleanExpr>
それはどのように入力を処理するを明確にする必要があるBoolean Expressions.
のFIRSTセットを見つけようとする場合にのみ、私は右の構文解析に左たい共通因子(
<booleanExpr>
のようBO
)を左ます。同様に、AND b OR cは '(a AND b)OR c)と解釈されます。 –