予約語
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/04/06 15:47 UTC 版)
概要
予約語と似ていてしばしば混同されてしまう言葉に「キーワード」(keyword) があるが、プログラミング言語の種類、また文脈によってreserved wordとkeywordは全く違う意味を持ちうるので、両者は異なる用語・概念と扱われている場合が多い。そのため、一旦は別物である可能性が高いとみなして扱うほうが安全である。
たとえば「予約語」という用語を「処理系で内部的に使う名前と同じであるといった理由で予約されているためにユーザーは使えない識別子」という意味で使っている規格もある[要出典]。この場合予約語はキーワードとは別のものである。
一方、「キーワード」は言語仕様上特別な意味を持った語のことである。キーワードであっても予約語でないこともあるし、その逆もある。たとえばECMAScript (ECMA-262) 5th Edition (ES5) では、class
やextends
は予約されており予約語だが言語で使われておらずキーワードではない。しかしECMA-262 6th Edition (ES6) では新たにサポートしたクラス構文のために使われるキーワードとなった。ECMA-262 では、キーワードは予約語の部分集合で、言語で制御構造などの意味を持つ予約語がキーワードである。Javaでは言語で使われていないgoto
やconst
もキーワードである[4]。SQLには予約されたキーワードと予約されていないキーワードがある。例にも出てきたように、個々の規格によっても両者それぞれ微妙に意味が違うこともある。
なお、FORTRANやPL/Iのように予約語を持たないプログラミング言語もある。
「予約されたキーワード」(reserved keywords) や「予約されていないキーワード」(unreserved keywords) という用語が使用されている場合もある[5][6]。
共通言語基盤 (CLI) 向けの共通言語仕様 (CLS) にしたがって実装されたC#やVB.NETでは、キーワードを識別子として利用する構文が用意されている。
- C#では
@class
などのように先頭に@
をつけることで識別子として利用することができる[7]。 - VB.NETでは
[Class]
などのように[...]
で囲むことで識別子として利用することができる[8]。 - F#では
``class``
などのように``...``
で囲むことで識別子として利用することができる[9]。
上記の機能は、CLSを満たす他の.NET言語で記述されてアセンブリに公開されたシンボルの名前を使う場合などでも有用である。例えばC#ではDim
はキーワードではないため、プロパティなどの名前として使用できるが、VB.NETではキーワードであるためそのままでは使えず、相互運用に支障が出る。そこで、シンボル名を使用する際に[Dim]
と記述することでVB.NETでも識別子として使えるようになる。
- ^ a b 予約語(reserved word)とは - IT用語辞典 e-Words
- ^ Collins, reserved words
- ^ Reserved word Definition & Meaning | Dictionary.com Dictionary.com, “a word in a programming language or computer system that has a fixed meaning and therefore cannot be redefined by a programmer”
- ^ Java Language Keywords (The Java™ Tutorials > Learning the Java Language > Language Basics)
- ^ Keywords - Visual Basic | Microsoft Docs
- ^ キーワード - Visual Basic | Microsoft Docs
- ^ @ - C# リファレンス | Microsoft Docs
- ^ 宣言された要素の名前 - Visual Basic | Microsoft Docs
- ^ シンボルと演算子のリファレンス - F# | Microsoft Docs
- ^ C のキーワード - cppreference.com
- ^ 識別子 - cppreference.com (C)
- ^ C reserved keywords - IBM Documentation
- ^ C++ のキーワード - cppreference.com
- ^ 識別子 - cppreference.com (C++)
- ^ [1]
- ^ Fortran 90, ISO/IEC 1539:1991 - §2.5.2 Keyword
- ^ キーワード | Compaq Visual Fortran | XLsoft
- ^ 自由形式 | Compaq Visual Fortran | XLsoft
- ^ これらはES5時点では予約語だったが、ES6で追加された新機能に使われることになり、キーワードに昇格した。
- ^ C++03ではテンプレートのエクスポート機能のために使われていたが、C++11ではその機能が廃止された。のちにC++20ではモジュール機能のために再利用されることになった。
- ^ 非推奨だったregisterキーワードを削除 - cpprefjp C++日本語リファレンス
- ^ if 文 - cppreference.com
- ^ Statements - C# language specification | Microsoft Learn
- ^ Fatal Error C1061 | Microsoft Learn
- ^ C# Keywords | Microsoft Docs
- ^ C keywords - cppreference.com
- ^ C++ keywords - cppreference.com
- ^ overrideとfinal - cpprefjp C++日本語リファレンス
- ^ Context-Sensitive Keywords (C++/CLI and C++/CX) | Microsoft Learn
固有名詞の分類
- 予約語のページへのリンク