C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のトークン・識別子・キーワードとは?基本をわかりやすく解説

C++プログラムを構成する最小単位である「トークン」、開発者が自由に名前を付けられる「識別子」、そして言語側で使用が予約されている「キーワード」。本記事では、C++を学ぶ上で欠かせないこれら三つの概念について、初心者にもわかりやすく丁寧に解説します。

トークンとは何か

トークン(字句)とは、C++プログラムを構成する要素の中で、コンパイラにとって意味を持つ最小の単位のことです。C++のパーサー(構文解析器)は、ソースコードを読み込みながら、これらのトークンを一つずつ認識していきます。

C++のパーサーが認識する主なトークンの種類は以下の通りです。

  • 識別子(identifier):変数名や関数名など、ユーザーが付けた名前
  • キーワード(keyword):int や return などの予約語
  • リテラル(literal):42 や "hello" のような定数値そのもの
  • 演算子(operator):+、-、= など演算を行う記号
  • 区切り記号(punctuator):セミコロンや波括弧 { } など構文上の記号
  • その他の分離記号(separator)

こうしたトークンの連なりが集まることで、「翻訳単位(translation unit)」が構成されます。また、トークン同士は通常、空白文字によって区切られます。

プリプロセッシングトークンとは

コンパイルの前段階であるプリプロセス処理では、「プリプロセッシングトークン」と呼ばれる特別なトークンが扱われます。これらは処理段階でトークン列を生成し、コンパイラへ渡す役割を担います。代表的なものには、#include、#define、#ifdef といったディレクティブがあります。

プリプロセッシングトークンには、次のようなカテゴリが存在します。

  • ヘッダー名
  • 識別子
  • プリプロセッシング数値
  • 文字リテラル
  • 文字列リテラル
  • その他、いずれの分類にも該当しないもの

なお、文字リテラルや文字列リテラルには、C++11以降で導入された「ユーザー定義リテラル」が含まれる場合もあります。プリプロセッシングトークンは、空白またはコメントによって区切ることが可能です。

識別子とは

識別子とは、プログラム内のさまざまな要素に対して、ユーザーが自由に付けた名前のことです。具体的には、以下のようなものがすべて識別子に該当します。

  • 関数名(メソッド名)
  • 変数名
  • 構造体名
  • クラス名

命名の際には、プログラム内で目的が明確に区別できるよう、一意でわかりやすい名前を付けることが大切です。

キーワード(予約語)とは

キーワードとは、C++の言語仕様によってあらかじめ用途が予約されている特別な識別子です。int、double、class、return などがその代表例といえます。これらは言語システムが独自の意味を持って使用するため、プログラマーが変数名や関数名として利用することはできません。

このように、「トークン」「識別子」「キーワード」は互いに密接な関係にあります。それぞれの役割と違いを正しく理解することで、エラーの少ない、より質の高いC++プログラミングにつながるでしょう。

  1. C#のトークンとは?キーワードと識別子の基本をわかりやすく解説

    トークン(Token)とは、プログラムを構成する最小単位の要素のことです。C#におけるトークンの代表例として、キーワードと識別子があります。それぞれの特徴とルールについて詳しく見ていきましょう。 キーワード(予約語)とは キーワードは、C#コンパイラによってあらかじめ定義された予約語です。そのため、変数名やクラス名などの識別子として使用することはできません。 ただし、どうしてもキーワードを識別子として使いたい場合は、キーワードの先頭に「@」記号を付けることで回避できます。例えば「@class」のように記述すれば、classという名前の変数を定義できます。 C#の主な予約キーワード一覧 ab

  2. C#の識別子とは?命名ルールと具体例をわかりやすく解説

    識別子(identifier)とは、クラス、変数、関数など、プログラマーが定義するあらゆる要素を識別するために付ける名前のことです。C#では識別子を自由に決められるわけではなく、いくつかの命名規則に従う必要があります。ここでは、その基本ルールと具体的な例を紹介します。 C#における識別子の命名ルール 先頭は文字で始める: 名前は必ず英字から始め、その後に英字・数字(0〜9)・アンダースコアを続けることができます。ただし、識別子の最初の文字に数字を使うことはできません。 スペースや記号は使用不可: ? - + ! @ # % ^ & * ( ) [ ] { } . ; : / \