通常の文法:単純な正式な言語定義
通常の文法 通常の言語を説明するために使用される正式な文法の一種 、有限状態オートマトン(FSA)によって認識できる文字列のセットです。
これが故障です:
1。 正式な文法とは何ですか?
*正式な文法は、言語を正確に定義するために使用されます。
*それらは、文字列(単語)を形成するためにシンボル(文字など)を組み合わせるためのルールで構成されています。
*それらは、言語で有効な文を構築する方法に関する一連の指示のようなものです。
2。 通常の文法とは何ですか?
*それらは、非常に限られたルールを備えた特定のタイプの正式な文法です。
*「通常」の言語のみを記述できるため、「通常」と呼ばれます。
3。 通常の言語とは?
*これらは、有限状態オートマトン(FSA)と呼ばれる単純なマシンによって認識できる言語です。
* FSAには記憶が限られており、現在の状態しか覚えていません。
*彼らは弦のパターンを認識することができますが、複雑な構造ではありません。
4。 通常の文法の重要な特性:
* プロダクション: 通常の文法には、フォームの生産ルールがあります。
* a-> ab(aとbは非末端記号であり、aは末端シンボルです)
* a-> a(aは非末端シンボル、aは末端シンボルです)
* 開始シンボル: 指定されたスタート記号が1つあります。
* 非末端記号: これらは、文字列の「カテゴリ」を表します。
* 端子記号: これらは、言語に表示される実際のシンボルです。
5。 通常の文法の例:
* 例1:偶数の認識:
*開始シンボル:s
*非ターミナル:s
*ターミナル:0、1
*生産ルール:
* S-> 0S
* S-> 1秒
* S-> 0
*この文法は、「00」、「1010」、「00000」などの文字列を生成できますが、「11」または「111」ではなく生成できます。
* 例2:「A」に続いて「B」が続く文字列を認識:
*開始シンボル:s
*非末端:S、a
*ターミナル:A、b
*生産ルール:
* S-> aa
* a-> b
*この文法は、「ab」、「aab」、「aaab」などの文字列を生成しますが、「ba」または「abba」ではありません。
6。 通常の文法の制限:
*通常の文法は、ネスティングまたは複雑な構造を持つ言語を説明することはできません。
*たとえば、バランスの取れた括弧は通常の文法では表現できません。
*これらのケースには、コンテキストフリーの文法のようなより強力な文法が必要です。
7。 通常の文法のアプリケーション:
* 語彙分析: プログラミング言語でキーワード、識別子、およびその他のトークンを認識します。
* テキスト処理: メールアドレスや電話番号など、テキスト内のパターンを検索します。
* ネットワークプロトコル: コンピューター間で交換されるメッセージとデータの形式を定義します。
8。 オートマトン理論への接続:
*通常の文法は、有限の状態オートマトン(FSAS)と密接に関連しています。
*通常の文法で説明されている言語は、FSAによって認識され、その逆も同様です。
要約すると、通常の文法は、構造が限られている言語を記述するためのシンプルだが強力なツールです。彼らは、特にテキスト処理と言語認識に関連する分野で、コンピューターサイエンスに多数のアプリケーションを持っています。
