[解決済み] ペアワイズディスジョイントテストを用いた文法がLLであるかどうかの判定
2022-01-28 19:11:12
質問
3つの文法があります。
A -> aB|b|CBB
B -> aB | ba | aBb
C -> aaA|b|caB
私は、各非終端記号の各RHSの最初の集合を示すペアワイズディスジョイントテストを実行することによって、[それら]がLL文法であるかどうかを決定する必要があります。
今のところ、こんな感じです...。
A -> aB|b|CBB
first(aB) = a
first(b) = b
ファースト(CBB) = aaA = a
これが悩みの種なんです。CBBは正しくできたのでしょうか?もしそうなら、それらは交差する&ルールはテストに失敗すると言うでしょう。(ですよね?)
B -> aB | ba | aBb
first(aB) = a
first(ba) = b
first(aBb) = a
このルールはテストに失敗します。
C -> aaA|b|caB
first(aaA) = a
first(b) = b
first(caB) = c
両者は交差していないため、ルールは成立する
解決方法は?
このテストのポイントは、最初の端末を見たときに、どのルールを使うかわかるかどうかです(LLの要件です)。 Bの場合、端末aに適用できるルールが2つあることは明らかです。また、Cのルールはそれぞれ異なる端末で始まることも明らかです。 そして、C(したがってCBB)の可能な最初の端末は、Aに対する他のルールと重なっていることがわかります。
結論:よさそう(ただし、CBBで1つの端末で止まっていて、たまたまcを選んでしまったら、間違った結論になっていたかもしれません)。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン