【コンパイル原則】正式な言語分類

総括する

これは、「コンパイル原則チュートリアル(第4版)」に基づいて
います。Hu Yuanyi (他の教師を読んだことがあり、少し異なります。注意点の違いについて説明します)
正式な言語分類

4種類の文法の違い

タイプ0

唯一の制限:プロダクションの左側に非終端記号が必要です

タイプ1

タイプ0との唯一の違い:プロダクションの右側部分は空にできません(右側部分の長さが左側の長さより短くならないようにするため)

タイプ2

唯一の制限:プロダクションの左側には非終端記号が1つだけあります

タイプ3

タイプ2との唯一の違い:プロダクションの右側に最大1つの非終端記号があります

注意点

タイプ2について

αAδ→αβδ\ alpha A \ delta→\ alpha \ beta \ delta α A δα β δ
AAAα\ alphaになければなりませんαδ\デルタδのコンテキストでは、それはβ\ betaになります。βに置き換えられました。

次に、本は、プロダクションの右側の部分に少なくとも1つの非終端記号がなければならない、つまり、タイプ1の文法はS→εS→\ varepsilonは表示できないと述べていますSεの形の生成物

別のことわざがあります:
(1)S→εS→\ varepsilonがある場合Sε、次にSSSはプロダクションの右側に現れてはなりません
(2)一般的にε\ varepsilonで置き換えることはできませんε開始記号を生成しない限り、ε\ varepsilonε
次に、このステートメントでは、生成の正しい部分で非終端記号を使用できません
[2つは基本的に同じです:∣α∣ | \ alpha || α | ≤\当量 | b | | \ beta || β |

このステートメントに従うと、文法間の関係は次のようになります。
文法関係
それ以外の場合、要約表に示されているように、タイプ2の文法は必ずしもタイプ1の文法に属しているとは限りません。タイプ2の文法にはS→εS→\ varepsilonがあるためです。Se

どのような発言が先生の教えに基づいています。

おすすめ

転載: blog.csdn.net/qq_44714521/article/details/106982208