命題論理の次の文法を考慮します。
<A> ::= <B> <-> <A> | <B>
<B> ::= <C> -> <B> | <C>
<C> ::= <D> \/ <C> | <D>
<D> ::= <E> /\ <D> | <E>
<E> ::= <F> | -<F>
<F> ::= <G> | <H>
<G> ::= (<A>)
<H> ::= p | q | r | ... | z
conectives の優先順位は、-、/\、/、->、<-> です。
結合性も考慮されます。たとえばp\/q\/r
、 と同じにする必要がありますp\/(q\/r)
。他のコネクティブも同様です。
Java で予測トップダウン パーサーを作成するふりをします。ここにはあいまいさや直接左再帰は見られませんが、これを LL(1) 文法と見なす必要があるかどうかはわかりません。たぶん、間接的な左再帰ですか?
これが LL(1) 文法ではない場合、私の意図のためにそれを変換するために必要な手順は何ですか?