|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 文 : [ぶん] 【名詞】 1. sentence ・ 文脈 : [ぶんみゃく] 【名詞】 1. context ・ 脈 : [みゃく] 【名詞】 1. pulse ・ 自由 : [じゆう] 1. (adj-na,exp,n) freedom 2. liberty 3. as it pleases you ・ 由 : [よし] 【名詞】 1. reason 2. significance 3. cause ・ 文法 : [ぶんぽう] 【名詞】 1. grammar ・ 法 : [ほう] 1. (n,n-suf) Act (law: the X Act)
文脈自由文法(ぶんみゃくじゆうぶんぽう、''Context-free Grammar''、CFG)とは、言語学や情報工学において全生成規則が以下の形式である形式文法のひとつである。 ここで V は非終端記号であり、''w'' は終端記号と非終端記号から構成される文字列である。「文脈自由」という用語は前後関係に依存せずに非終端記号 V を ''w'' に置換できることを意味している。文脈自由文法によって生成される形式言語を文脈自由言語という。 == 背景 == 文脈自由文法はノーム・チョムスキーが言語学で今も使われる「句構造文法(Phrase-Structure Grammar)」として最初に記述した。 文脈自由文法の形式性は、言語学が伝統的に自然言語の文法を厳密な数学として記述してきた既存の方法(例えばパーニニ)に倣っている。自然言語文の「ブロック構造」を自然に捉えている。その単純性から、数学的な研究手法が使えるが、問題もある。自然言語の文法の重要な機能である一致や参照といった属性をそのまま表すことができないのである。 ブロック構造はALGOLプロジェクトによってプログラミング言語に持ち込まれた。すなわち、ALGOL の文法を文脈自由文法として記述することになった。これがその後のコンピュータ言語にも採用され、コンピュータ言語の文法の形式的記述方法がバッカス・ナウア記法として知られるようになった。 文脈自由文法の「ブロック構造」は文法上非常に基本的であり、特に計算機科学では構文や文法は文脈自由文法を利用することが多い。文法によって表せない形式上の制約は、言語の意味論の一部と考えられるようになった。 文脈自由文法はほとんどのプログラミング言語の文法を記述できるほど強力である。実際、多くのプログラミング言語は文脈自由文法で構文仕様を定義している。また、文脈自由文法は効率的な構文解析アルゴリズムを適用できる程度に単純である。つまり、ある文字列が特定の文法による言語に属しているかどうかを判断することができる(例えばアーリー法)。初期の構文解析手法であるLR法やLL法は文脈自由文法のサブセットを扱うものであった。 全ての形式言語が文脈自由であるわけではない。文脈自由でない例として がある。この言語は Parsing Expression Grammar (PEG) では生成できる。PEG は文脈自由文法と扱える範囲の文法が異なり文脈自由文法を全て扱えるわけではないがプログラミング言語に適した新たな定式化のひとつである。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「文脈自由文法」の詳細全文を読む スポンサード リンク
|