私はコンパイラをしばらく研究しており、文法の「コンテキスト」の意味と、文法が「コンテキストフリー」であることの意味を検索していますが、結果はありません。
だから誰でもこれを助けることができますか?
私はコンパイラをしばらく研究しており、文法の「コンテキスト」の意味と、文法が「コンテキストフリー」であることの意味を検索していますが、結果はありません。
だから誰でもこれを助けることができますか?
回答:
コンテキストは、チョムスキー階層のさまざまな文法で許可されているプロダクションルールに関して説明できます。
文脈自由文法を検討する場合、その生成規則は次の形式になります。
そのため、この種の規則の左側の部分は、1つの非終端記号のみで構成されていることがわかります。したがって、非終端記号の置換は、その「コンテキスト」、つまりそれが囲まれている他の記号を考慮せずに行われます。
一方、状況依存文法の生成規則を検討する場合、それらの形式は次のとおりです。
ここで、は、、、はと終端シーケンスです。
この場合、置換される非終端記号の「コンテキスト」(つまり、および)は、置換の効果に影響し、ルール自体の一部です。
「コンテキスト」は周囲のテキストです。文脈自由文法は、規則がではなくように見えるという意味で文脈自由です。ルールの左側は常に単一の非終端記号です。つまり、非終端記号を展開する規則は、その記号の周囲に表示されるテキスト(コンテキスト)に依存せず、記号自体にのみ依存します。たとえば、プログラミング言語の文法では、という用語は、割り当て(たとえば、)を記述している場合でも、関数に引数を渡している場合(たとえば、)でも、同じ種類の式に展開されます関数から(例:)。x:=y+z
f(y+z)
return y+z
一般的に言えば、通常の言語であってもコンテキスト依存性がある場合があります。つまり、その言語に属する文字列内の他のシンボルの近くにシンボルがどのように現れるかをある程度判断できます。
文脈自由文法に特有なのは、右側に同じ非終端記号を持つ異なる規則を適用することにより、非終端記号を置換する方法が複数ある場合、適用する規則の選択は何に依存しないことです。導出プロセス中にこのシンボルの周りで起こっています。
それらは、文脈自由派生言語、略して文脈自由言語と考えることができます。