web-dev-qa-db-ja.com

「キーワード」と「予約語」の違いは何ですか?

キーワード予約語の違いは何ですか?

たとえば、 C++の概念の提案 では、次のステートメントを読むことができます。

この提案では、コンセプト、コンセプトマップ、where、axiom、late checkの5つの新しいキーワードが導入されています。これらのキーワードもすべて予約語になります。

51
Piotr Dobrogost

キーワードは言語で特別な意味を持ち、構文の一部です。

予約語は、言語によって予約されているため、識別子(変数、関数など)として使用できない単語です。

実際には、ほとんどのキーワードは予約語であり、その逆も同様です。しかし、それらは2つの異なるものであるため、キーワードが予約語ではない場合があります(たとえば、キーワードは特別なコンテキストでのみ意味を持ち、したがって識別子として使用できます)、または予約語はキーワードではありません(たとえば、将来の使用のために予約されているため)。

更新:区別を説明する他の人によって与えられた例:

  • Javaでは、gotoは予約語ですが、notキーワード(結果として、まったく使用できません)
  • Fortranにはno予約語があり、すべてのキーワード(if、thenなど)を識別子として使用できます
57
molf

区別が非常に重要であることを示すためだけに:

すべての言語ですべてのキーワードが予約語というわけではありません。 Fortranでは、これを行うことができます。

if if then then else else

この場合、キーワードは予約されていませんが、コンテキストによってはコンパイラーが変数として解釈できます。

17

この区別の良い例は、Javaの「goto」です。言語キーワードではありません(つまり、有効なJavaではありません)が、is予約語です。

Javaデザイナーは、「goto」を使用するつもりはありませんが、どちらでもありません」と言っているようです。

8
skaffman

Wikiでは、「キーワードは特定のコンテキストでのみ特別な単語ですが、予約語はユーザー定義の名前として使用できない特別な単語です」と述べています。

http://en.wikipedia.org/wiki/Reserved_Word#Reserved_Word_vs._keyword

5
  • キーワード:何らかの意味があり、プログラムで使用できます。
  • 予約語:プログラムでは使用できません。これらは将来使用される可能性があります。例:goto
1
Sravanthi

キーワードは「キーワード」(if、for、switchなど)として使用されるWordであると思いますが、予約語は言語の将来のバージョンでキーワードになる可能性があるため、変数名として使用できないものです。

1
CodeClimber

本当にコンテキストに大きく依存します。たとえば、ISO C++標準では、「if」、「while」、「int」などはkeywordsであり、実際にはreserved Wordという用語は使用されていません=、1回を除き、脚注で、何か他のものがおそらく意味されていた場合:-)

標準のdoeは予約名を指定します。たとえば、アンダースコアと大文字で始まる名前はすべて予約名です。

0
anon

キーワード:キーワードには、コンパイラに対していくつかの特別な機能があります。そのため、キーワードをコーディングの識別子として使用することはできません。予約語:予約語は、将来の使用のために予約されている語です。 Javaでは、constとgotoは現在使用されていない予約語であり、将来Javaに戻される可能性があります。ここで確認する場合Java言語キーワード( https://docs.Oracle.com/javase/tutorial/Java/nutsandbolts/_keywords.html )、Java(最新の推測)にはgotoとconstを含む50個のキーワードがあるため、gotoとconstは予約されているキーワードです。

0
KSRKSR