字句(トークン)とは
プログラミング言語において、ソースコードを構成する最小単位の文字列を
字句(じく)と呼びます。これは
トークン(英: token)とも呼ばれ、プログラムの意味を理解するための基本的な要素となります。字句は、人間が書いたソースコードを
コンピュータが解釈できる形に変換する過程で、最初に切り出される単位です。
字句の種類
字句の種類は
プログラミング言語によって異なりますが、一般的には以下のようなものがあります。
キーワード(予約語):`if`、`int`、`for`などのように、言語によって意味が定められている特別な単語です。
識別子:`main`、`argc`、`myVariable`などのように、関数名や変数名など、プログラマが自由に名前を付けることができるものです。
括弧類:`{`、`}`、`(`、`)`、`[`、`]`などの記号で、コードの構造を示すために使用されます。
演算子:`+`、`-`、``、`/`、`=`、`>`、`<`などの記号で、数値計算や比較などの操作を表します。
区切り文字:`,`、`.`、`:`、`;`などの記号で、コード中の要素を区切るために使用されます。
リテラル:`3.14159`、`"hello"`などのように、数値や文字列などの具体的な値を表すものです。
括弧類や区切り文字は、出現する場所によっては演算子として扱われることもあります。
プログラミング言語の構文規則は、字句の並び(トークン列)によって定義されています。そのため、コンパイラやインタプリタは、まずソースコードを字句に分解する必要があります。この処理を
字句解析と呼びます。
字句解析では、ソースコードからトークンを切り出し、必要に応じてその種類を分類します。例えば、`if (x > 10)`というコードは、
字句解析によって`if`、`(`、`x`、`>`、`10`、`)`というトークン列に分解されます。
字句規則
各トークンがどのような文字で構成されるかは、
プログラミング言語の仕様によって定められています。例えば、
識別子は通常、英字で始まり、その後に0個以上の英字、数字、または下線`_`が続くという規則があります。ただし、キーワードと同じ綴りのものは
識別子として使用できません。
字句規則は、一般に
正規表現で記述されます。例えば、上記の
識別子の規則は`[A-Za-z][0-9A-Z_a-z]`という
正規表現で表現できます。しかし、「キーワードと同じ綴りでない」という制限は
正規表現では表現しにくいです。そのため、
字句解析では、まず同じ規則でキーワードと
識別子を切り出し、その後に文脈に応じて種類を分類することがあります。これにより、
字句解析の処理を効率化することができます。
文脈依存キーワード
多くの
プログラミング言語では、特定の場所でのみキーワードとして機能する
文脈依存キーワード(contextual keyword)が用いられています。これは、言語の拡張性や後方互換性を維持するために有効な手段です。文脈依存キーワードは、特定の状況下ではキーワードとして扱われますが、それ以外の場所では
識別子として使用できます。これにより、言語の柔軟性を高めつつ、既存のコードとの互換性を維持することが可能になります。
字句解析は、
プログラミング言語の処理において非常に重要な役割を果たします。
字句解析が正確に行われないと、ソースコードを正しく解釈することができず、プログラムが正常に動作しません。そのため、コンパイラやインタプリタの
字句解析器は、言語仕様に厳密に従って実装されている必要があります。
関連情報
字句解析:ソースコードをトークンに分解する処理
構文解析:トークン列からプログラムの構造を分析する処理