編纂原則注記 (2) 文法と言語

1. 文法の直感的な概念

文法の概要: 文法は言語の文構造の記述であり、無限集合を有限集合で記述するためのツールです。

2. 記号と文字列

アルファベットの概念: アルファベットは空ではない有限の要素の集合であり、アルファベットの要素は記号と呼ばれるため、アルファベットは記号集合とも呼ばれます。

文字列の概念:

  • 記号列の定義: アルファベットの記号で構成される有限列を記号列と呼びます。
  • 記号列の長さ:記号列に含まれる記号の数を記号列長といいます。記号を含まない記号列は空文字列と呼ばれ、ε で表され、その長さは 0 です。
  • 記号文字列の先頭と末尾、適切な先頭と適切な末尾:
    • 先頭と末尾: z=xy がシンボル文字列の場合、x は z の先頭、y は z の末尾です。
    • 組み込みのヘッドと組み込みのテール: x が null でない場合、y は組み込みのテール、y が null でない場合、x は組み込みのヘッドです。
  • 記号列の接続: x と y を記号列とし、その接続 xy は x の記号の後に y の記号を書いた記号列になります。
  • 記号列のべき乗: 記号列を x とし、x 自体を n 回連結して得られる記号列を記号列 x のべき乗といいます。
  • 記号文字列の集合: 集合 A のすべての要素が特定のアルファベットの記号文字列である場合、A はアルファベットの記号文字列の集合であると言われます。
    • シンボル文字列セットの積: 2 つのシンボル文字列セット A と B の積は次のとおりです: AB={xy | x∈A および y∈B}、つまり、AB は、x が A に属し、 y は B コレクションに属します。
  • アルファベットの閉包: アルファベット Σ の閉包は、アルファベット上のすべての有限長文字列の集合である Σ* で示されます。
    • アルファベットの正の閉包: アルファベット Σ の閉包から空の文字列 ε を削除します。その結果のセットは、アルファベットの正の閉包と呼ばれ、 Σ +と表示されます。

3. 文法と言語の正式な定義

プロダクションの概念(ルール)

  • 生成物の表現: α→β または α::=β の形式の順序ペア。ここで使用される表記は「として定義される」と読み取られます。
  • 左側の部分と右側の部分: α はプロダクションの左側の部分、β はプロダクションの右側の部分と呼ばれます。

文法の概念: 文法 G は 4 つ組として定義されます(Vn,Vt,P,S)

  • タプルの内容の説明: Vn は非終端記号の集合、Vt は終端記号の集合、P は生成物の集合 (Vn、Vt、P はすべて空でない必要があります)。S は識別子または開始記号、つまり導出の始まりを示す非終端記号であり、少なくとも 1 つのプロダクションでプロダクションの左側の部分として出現する必要があります。
  • プロダクションの要件: プロダクションの左側と右側の部分は両方とも、非終端セットと終端セットの結合のクロージャの要素であり、左側の部分には少なくとも 1 つの非終端が含まれている必要があります。
  • 文法の簡略表現: 多くの場合、文法を四元数の形式で表現する必要はなく、生成式を記述するだけでよく、非終端記号を表すには大文字を使用し、終端記号を表すには小文字を使用することに同意します。 。

派生概念:

  • 直接導出と直接還元: α→β がG=(Vn,Vt,P,S)文法の生成であり、x と y が V* 内の任意の記号であると仮定します。符号付き文字列 v と w が次を満たす場合、v=xαy,w=xβyv は w を直接生成すると言います。w は v の直接導出である、または w は v に直接還元されると言います。
  • 導出と還元: v が一連の直接導出を通じて w を取得できる場合、v は w を導出すると言い、または w は v を導出すると言います。連続して使用される直接導出の数を導出長と呼びます。
  • 導出と仕様の表現:直接導出は太い矢印で表現、導出は直接導出の矢印に「 」記号を追加、直接導出の太い矢印の上に一律に「 」記号を追加して直接導出を統一する+ことも可能*そして派生。

文型、文、言語、文法的等価性の概念:

  • 文型の概念:これをG[S]文法とすると、記号列 x が識別記号から導出される場合、x は文法 G[S] の文型であると言われます。
  • 文の概念: 文型が終端記号のみで構成されている場合、この文型を文と呼びます。
  • 言語の定義: 文法によって生成される言語 G は、文法によって生成されるすべての文のセットであり、 で示されますL(G)
  • 文法の等価性: 2 つの文法は、まったく同じ言語を生成する場合、同等であると言われます。

4. 文法の種類

チョムスキー文法分類: チョムスキーは 1956 年に形式言語の記述を確立し、文法をタイプ 0、タイプ 1、タイプ 2、およびタイプ 3 の文法に分割しました。これら 4 種類の文法の違いは、生成物に課せられる制約にあります。

4 つの異なる文法:

  • 0型文法

    • 文法の別名: タイプ 0 文法はフレーズ文法とも呼ばれます。
    • プロダクションの制限: プロダクションの左側には、少なくとも 1 つの非終端が含まれている必要があります。
  • 1型文法

    • 文法の別名: タイプ 1 文法は、文脈依存文法とも呼ばれます。
    • プロダクションの制限: すべてのプロダクションは、左部分の長さが右部分の長さ以下であることを満たします (S→ε を除く)。
  • 2型文法

    • 文法の別名: タイプ 2 文法は、文脈自由文法とも呼ばれます。
    • プロダクション制限: プロダクションの左側の部分は非ターミナルです。
  • 3型文法

    • 文法の別名: タイプ 3 文法は、通常文法とも呼ばれます。
    • 生産の制約: すべての生産は A→aB または A→a の形式になります。

4 つの文法の関係: 4 つの文法タイプの定義は、徐々に制限が厳しくなります。すべてのタイプ 3 文法はタイプ 2 文法であり、すべてのタイプ 2 文法はタイプ 1 文法であり、すべてのタイプ 1 文法はタイプ 0 文法です。

タイプ 0、タイプ 1、タイプ 2、およびタイプ 3 の 4 つの文法によって生成された言語は、それぞれタイプ 0 言語、文脈依存言語、文脈自由言語、および通常言語と呼ばれます

5. 文脈自由文法とその構文ツリー

文脈自由文法とプログラミング言語の関係: 文脈自由文法は、今日のプログラミング言語の文法構造を記述するのに十分な能力を持っています。

構文ツリー (導出ツリー) の概念:

  • 構文ツリーの役割: 構文ツリーは、文脈自由文法の文型の導出を記述するための直感的なツールです。
  • 構文ツリーは次の条件を満たします
    • 各ノードには V のシンボルであるラベルがあり、ルートのラベルは S です。
    • A というラベルの付いたノードにそれ自体以外の子孫がある場合、A は非終端でなければなりません。
    • ノード n の直系子孫の左から右への順序が n1 n2 n3... で、それらのラベルが A1 A2 A3... である場合、A→A1 A2 A3...AK という生成が存在する必要があります。
  • 文法ツリーの制限: 文法ツリーは、特定の導出プロセスでどのプロダクションが使用され、どの非終端が使用されるかを示すだけであり、プロダクションが適用される順序は指定しません。

左端と右端の派生:

  • 左端導出: a が導出プロセスの任意のステップで b を直接推定する場合、つまり a の左端の非終端記号を置き換える場合、この導出方法は左端導出と呼ばれます。
  • 右端導出: 左端導出と同様に、 a の右端の非終端記号が導出プロセス中に置き換えられる場合、この導出方法は右端導出と呼ばれます。形式言語では、右端の導出を正準導出とも言い、導出した文型を正準文型(右文型)と呼びます。

: 文パターンは複数の構文ツリーに対応しており、文パターンは必ずしも左端の派生または右端の派生を 1 つだけ持つとは限りません。

文法と言語のあいまいさ:

  • 文法の曖昧さ: 文法に 2 つの異なる左端 (右端) の導出がある文がある場合、その文法は曖昧であると言われます。
  • 言語の本質的な曖昧性: 文脈自由言語を生成するすべての文法があいまいな場合、その言語は本質的に曖昧であると言われます。プログラミング言語の場合、各ステートメント分析が一意であることが望まれるため、その文法が明確であることがよく望まれます。

6. 文型の分析

文章解析の概要

  • 文型解析とは、記号列が、ある導出の構築過程であるある文法の文型であるかどうかを識別することです。
  • さらに、記号列が与えられると、ある文法の規則に従ってその記号列の派生木や構文木を構築し、その文法の文型であるかどうかを識別しようとする。

コンパイル時の文解析:コンパイル時の文解析とは、入力された記号列が文法的に正しいプログラムであるかどうかを識別する処理を指します。言語のコンパイルや実装において、文型解析を完了するプログラムを解析プログラムまたは認識プログラムと呼び、解析アルゴリズムを認識アルゴリズムとも呼びます。これは、トップダウン分析とボトムアップ分析の 2 つの方法に分けることができます。

  • トップダウン分析法: 文法の先頭記号から始めて、各生成物を繰り返し使用して、入力された記号列と一致する派生を見つけます。
  • ボトムアップ分析法: 入力された記号列から開始して、文法の開始記号に到達するまで段階的に縮約を実行します。

フレーズコンセプト

  • フレーズの定義: G を文法、S を文法の開始記号とする。文法の文パターンに非終端記号 A が含まれており、非終端記号 A から文パターン B を推定できる場合、B は非終端記号 A に関連する文パターンであると言われます。
  • 直接句 (単純句) の定義: 句について、非終端記号 A が文タイプ B を直接推定する場合、B は非終端記号 A に関連する文タイプの直接句であると言われます。
  • ハンドルの定義: 右文型の直接句を文型のハンドルと呼びます。ハンドルの概念は、右文型にのみ適用されます。

7. 文法の実際の応用に関する注意事項

有害で冗長なルール: 実際のアプリケーションでは、文法は有害で冗長なルールから制限される必要があります。

  • 有害なルール:左右が同じ作品。このような演出が有害である理由は、それが文法上の曖昧さを引き起こすだけだからです。
  • 冗長ルール: 文法内のすべての文の導出に使用されない生成物。2つの形態で登場します。
    • どのルールの右側にも現れない文法内の非終端記号は、到達不能であると言われます。
    • 終端を導出できない文法内の非終端は、非終端と呼ばれます。

おすすめ

転載: blog.csdn.net/hanmo22357/article/details/130500256
おすすめ