「文脈自由文法」の「文脈」とは何を指しますか?


30

文脈自由文法とは何かについてはオンラインで多くの定義がありますが、私の主な問題を満足させるものはありません。

どんな文脈から解放されていますか?

調査するために、「コンテキスト依存文法」をグーグル検索しましたが、「コンテキスト」が何であるかを見つけることができませんでした。

誰かcontextがこれらの名前でこの用語が何を指しているのか説明してください


5
ウィキペディアの説明はかなり良いと思います-「正式な文法は、非終端記号のコンテキストに関係なくプロダクションルールを適用できる場合、「コンテキストフリー」と見なされます。それを囲む記号に関係なく、右側に置き換えてください。」-それは言い直されて簡略化されて「平易な英語」になることができますが、それの要点は私にはかなり明らかです。
jkff

1
@jkffあなたが説明を良いと思うのは素晴らしいことですが、ここで「コンテキスト」が実際に何を意味するのか、まだ理解できていません。コンテキストがあり、コンテキストがない場合の例を見る必要があります。私には、私が見たすべての文法に文脈があるようです
-CodyBugstein

定義から明らかではないですか?
ラファエル

2
皮肉なことに、重要な文脈の一部がその定義から欠落していたので、それを説明する文を追加しました。
reinierpost

2
例:C ++ 11では、override使用場所(コンテキストなど)に応じて、変数名またはキーワードのいずれかになります。メソッド宣言の後に使用する場合、それはキーワードです。そうでなければそうではありません。これは、文脈依存文法の例です。
トーマスエディング

回答:


37

あなたは正しいです、何らかの意味で常にコンテキストがあります。プロダクションを理解しないと、「コンテキストなし」で「コンテキスト」が何を意味するのか理解できないと思います。

プロダクションは代替ルールです。これは、言語内で文字列を生成するために、左側のものを右側のものに置き換えることができると言っています。

A -> xy

これは、抽象シーケンスAを文字「x」と文字「y」で置き換えることができることを意味します。より複雑な作品を作成することもできます。

zA -> xy

これは、抽象シーケンスAが続く文字「z」を文字「x」および「y」に置き換えることができることを意味します。

コンテキストのない制作とは、単に左側に1つしかないことを意味します。Aは前後に何があっても「x」と「y」で置き換えることができるため、最初の例はコンテキストフリーです。ただし、2番目の例では、文字「z」がAの前に現れなければならず、その組み合わせを「x」と「y」で置き換えることができるため、何らかのコンテキストが含まれます。

コンテキストフリーの文法は、コンテキストフリーのプロダクションのみを含む単なる文法です。

2番目の例は、実際には無制限のプロダクションの例です。コンテキストフリーと無制限の間にある「コンテキストセンシティブ」と呼ばれる別のカテゴリがあります。状況依存制作の例は次のとおりです。

zA -> zxy

違いは、左側でAの前(および後)に来るものを右側で保持する必要があることです。これは事実上、Aのみが置換されますが、適切なコンテキストでのみ置換できることを意味します。


2
それは大きな助けです!あなたが示したように、左側に複数の変数がある文法の例を実際に見たことがありません。それが「コンテキスト」が何であるかを見ることができなかった理由だと思う。ありがとう
-CodyBugstein

4
おそらく、より単純なコンテキストの例は次のようになりzA -> zxyます。Aは依然としてxyに置き換えられますが、zの後にのみです。
MSalters

より詳細には、この回答は無制限の文法について述べていますが、@ MSaltersは文脈依存文法が文脈の意味のより良い例になると指摘しています。

@MSalters:良い点があります。答えを修正しました。より複雑に聞こえることなく、これらの詳細を説明に追加する方法を考え出すのに苦労しました。そのため、最後に詳細を追加するだけでした。
ヴォーン

9

規則を考えて、 、βへの還元がαとδに依存していないとしましょう。そのため、周囲のコンテキストに依存しないため、コンテキストがありません。

Aβ
αAδ

ベータ版とは何ですか?それは端末ですか、変数ですか?そして、「文型」を説明できますか?それはそれ以上導出できないということですか?
CodyBugstein

ベータ版は、A->ベータ版がルールであるというだけのものです。センテンス形式とは、文法の規則を使用して開始記号が与えられると、それを結果に変換することを意味します。この結果は文型と呼ばれます。すべてのルールを使用するたびに、新しい文型が取得されます。
-iLoveCamelCase

3
@Imray 文法と文脈自由文法の正式な定義を見に行く必要があります。正式なオブジェクトを理解するための近道はありません。
ラファエル

1
@Imray 文形式での文字列であり、端末非末端に由来することシンボル公理(とも呼ばれる最初のシンボルの文法を適用することにより)ルール(別名プロダクション)。文末形は、その非終端記号の1つに規則を適用することにより、別の形に派生させることができます。非終端記号が残っていない場合、文型、つまり文法によって定義または生成された言語の文字列または単語です。用語は、かつて形式言語理論のこの部分に主要な貢献をしていた言語学者から来ています。
babou

文型には変数を含めることができないと思った-それは単なる端末である必要がある。
-CodyBugstein
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.