SQL は文脈自由言語ですか、それとも他のタイプの言語ですか?
4 に答える
https://stackoverflow.com/a/31265136によると、SQL は通常の言語ではありません。簡単な説明は、各選択クエリが次のように見えるということです
SELECT x FROM y WHERE z
y
別の選択クエリ自体になる可能性があるため、有限状態マシンでシミュレートすることはできません。前に述べたように、 Backus-Naur Formには SQL 標準の CFG がいくつかあります。したがって、SQL は非正規の文脈自由言語です。
@aquinas は次のように書いています。
SQLもレギュラーということですか?CFG には通常の言語が含まれます。したがって、それらは相互に排他的ではありません。ただし、質問に答えると、SQL は通常の言語ではありません。
@MSX は次のように書いています。
明確にするために、言語は文脈自由文法によって生成された場合、文脈自由です。SQL 文脈自由文法定義がオンラインにあります。グーグルで検索すると、いくつか見つかります。たとえば、次のようなものがあります。
PL/SQL コンテキストで類似しているのは、SQL または PL/SQL が正確にどのコードであるかということです。これは、ファンクション キーワードを具象として定義した場合、どのファンクションを使用できるかを制御したい場合、このコンテキストを知る必要があるためです。