キーワードと予約語の違いは何ですか?
たとえば、 C++の概念の提案 では、次のステートメントを読むことができます。
この提案では、コンセプト、コンセプトマップ、where、axiom、late checkの5つの新しいキーワードが導入されています。これらのキーワードもすべて予約語になります。
キーワードは言語で特別な意味を持ち、構文の一部です。
予約語は、言語によって予約されているため、識別子(変数、関数など)として使用できない単語です。
実際には、ほとんどのキーワードは予約語であり、その逆も同様です。しかし、それらは2つの異なるものであるため、キーワードが予約語ではない場合があります(たとえば、キーワードは特別なコンテキストでのみ意味を持ち、したがって識別子として使用できます)、または予約語はキーワードではありません(たとえば、将来の使用のために予約されているため)。
更新:区別を説明する他の人によって与えられた例:
goto
は予約語ですが、notキーワード(結果として、まったく使用できません)区別が非常に重要であることを示すためだけに:
すべての言語ですべてのキーワードが予約語というわけではありません。 Fortranでは、これを行うことができます。
if if then then else else
この場合、キーワードは予約されていませんが、コンテキストによってはコンパイラーが変数として解釈できます。
この区別の良い例は、Javaの「goto」です。言語キーワードではありません(つまり、有効なJavaではありません)が、is予約語です。
Javaデザイナーは、「goto」を使用するつもりはありませんが、どちらでもありません」と言っているようです。
Wikiでは、「キーワードは特定のコンテキストでのみ特別な単語ですが、予約語はユーザー定義の名前として使用できない特別な単語です」と述べています。
http://en.wikipedia.org/wiki/Reserved_Word#Reserved_Word_vs._keyword
goto
キーワードは「キーワード」(if、for、switchなど)として使用されるWordであると思いますが、予約語は言語の将来のバージョンでキーワードになる可能性があるため、変数名として使用できないものです。
本当にコンテキストに大きく依存します。たとえば、ISO C++標準では、「if」、「while」、「int」などはkeywordsであり、実際にはreserved Wordという用語は使用されていません=、1回を除き、脚注で、何か他のものがおそらく意味されていた場合:-)
標準のdoeは予約名を指定します。たとえば、アンダースコアと大文字で始まる名前はすべて予約名です。
キーワード:キーワードには、コンパイラに対していくつかの特別な機能があります。そのため、キーワードをコーディングの識別子として使用することはできません。予約語:予約語は、将来の使用のために予約されている語です。 Javaでは、constとgotoは現在使用されていない予約語であり、将来Javaに戻される可能性があります。ここで確認する場合Java言語キーワード( https://docs.Oracle.com/javase/tutorial/Java/nutsandbolts/_keywords.html )、Java(最新の推測)にはgotoとconstを含む50個のキーワードがあるため、gotoとconstは予約されているキーワードです。