@c Copyright (C) 1999 Kazuhisa Ichikawa
@c This is part of the Flex manual, as published by ASCII
@ignore
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

Permission is granted to process this file through TeX and print the
results, provided the printed document carries copying permission notice
identical to this one except for the removal of this paragraph (this
paragraph not being relevant to the printed manual).

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Free Software Foundation.
@end ignore

@node Character Class Expressions (Flex 2.5),  , Character Classes, Pattern Matching
@subsection Flexにおける文字のグループ化（Flex 2.5の補足情報）
@cindex 文字クラス式

Flex 2.5では、
文字クラスの中に@dfn{文字クラス式}を含めることができます。

文字クラス式は、
形式的には、
ある文字集合を識別する名前を@samp{[:}と@samp{:]}で囲んだものです。
Flex 2.5では、
以下の文字クラス式が有効です。

@example
[:alnum:] [:alpha:] [:blank:]
[:cntrl:] [:digit:] [:graph:]
[:lower:] [:print:] [:punct:]
[:space:] [:upper:] [:xdigit:]
@end example

文字クラス式[:@var{XXX}:]は、
ANSI Cの@samp{is@var{XXX}()}関数がゼロ以外の値を返す文字の集合に対応します。
唯一の例外は[:blank:]で、
@code{isblank}は
（POSIXでは定義されているものの）
ANSI Cでは定義されていないため、
Flexでは、
マクロ@code{IS_BLANK}を

@example
#define IS_BLANK(c) ((c) == ' ' || (c) == '\t')
@end example

@noindent
のように定義して、
これが真となる文字の集合
（すなわち、
スペースとタブ）
を文字クラス式[:blank:]に対応させています。

文字クラス式を使えば、

@example
[a-zA-Z]
[0-9]
@end example

@noindent
を

@example
[[:alpha:]]
[[:digit:]]
@end example

@noindent
と書くことができます。

また、
文字クラスの中に複数の文字クラス式を含めることができますので、

@example
[a-zA-Z0-9]
@end example

@noindent
を、

@example
[[:alpha:][:digit:]]
@end example

@noindent
と書くこともできます
（もっとも、
この例の場合は、
[[:alnum:]]と書くほうが良いでしょう）。
