[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]  


要約

ここでは、 Flexの使用に関連するすべての情報を要約します。 この情報は、 クイック・リファレンスとして使うことができます。

Flex コマンドライン・オプションの要約

Flexには、 以下のコマンドライン・オプションがあります。

Flex変数およびFlex関数の要約

Flexに対する主要なCインターフェイスは、 以下のルーチンおよび変数を通じて実現されます。 個々のルーチン、変数に関する完全な説明については、 Flexとのインターフェイスを参照してください。

Flex文字の要約

Flexにおける基本的な構成要素の1つに、 文字があります。 基本的にFlexは、 演算子、特殊文字、エスケープ・シーケンスを除いて、 文字をそのまま受け付けます。 エスケープ・シーケンスは、 ANSI Cに見られるものと同一です。 Flexの演算子と特殊文字は以下のとおりです。


文字
Flexの解釈
\
バックスラッシュは、 ANSI Cのエスケープ・シーケンスで使われるのと同様の、 エスケープ文字です。
[ ]
角括弧[ ]は、 文字の集合を文字クラスにグループ化するのに使われます。 詳細については、 Flexにおける文字のグループ化を参照してください。
^
文字クラスの中では、 `^'は否定を意味します。 詳細については、 Flexにおける文字のグループ化を参照してください。 一方、 文字クラスの外部では、 行の先頭を意味し、 (エスケープされていない場合は) ルールの先頭にのみ置くことができます。
-
ハイフンは、 文字クラスの中で文字の範囲を設定するのに使われます。 文字クラスの外部では、 ハイフン自身を表します。 詳細については、 Flexにおける文字のグループ化を参照してください。
{ }
大括弧{ }は、 定義の参照、複数行にわたるアクションの先頭と末尾の指定、 またはパターンの繰り返し回数の範囲の定義を行います。
( )
丸括弧( )は、 優先順位の変更に使われます。 また、 定義は展開される時に、 暗黙のうちに丸括弧で囲まれることに注意してください。
""
二重引用符は、 文字列の範囲を示します。 引用符で囲まれた範囲の中にある文字だけがマッチされます。
/
スラッシュは、 後続コンテキスト(trailing context)を設定します。 これは、 あるパターンを認識するのを、 その後ろに別のパターンが続く場合に限定したい、 という場合です。 これは、 スラッシュ`/'が一種の「ルック・アヘッド(その先を見る)」演算子として機能することを意味します。
< >
かぎ括弧< >は、 スタート状態の参照、またはスタート状態のグループの参照を行い、 さらにEOFシンボル(`<<EOF>>')で使われます。 これに関する完全な説明については、 スタート状態ファイルの終端(End-Of-File)ルールを参照してください。
? + *
`?'`+'`*'の各文字は、 ある正規表現が何回出現することができるかを指定するのに使われます。 `?'は、 ゼロ回もしくは1回(つまり、オプションであるということ)を、 `+'は1回以上を、 `*'はゼロ回以上をそれぞれ意味します。
|
OR演算子を表します。 また、 カレントなルールに対するマッチが発生した場合、 次に記述されているルールのアクションを実行するようFlexに通知する、 特別なアクションを表します。
$
ドル記号は行末を意味します。

ここに挙げた文字を、 その文字自身として表したい場合には、 その文字を引用符で囲む(例えば"*")か、 または、 エスケープ・シーケンスとして表す必要があります。 詳細については、 文字を参照してください。

Flexルールの要約

Flexにおけるルールには2つの部分があります。 パターン・マッチング用の表現式とアクション部です。 この2つは、 以下のように配置されます。

pattern actions

Flexがマッチするパターンは、 正規表現を使って作られます。 そしてその正規表現は、 文字、文字列、定義、スタート状態、および演算子から作られます。 下の表は、 種々の正当な正規表現を示します。 表中において、 `c'は(エスケープ・シーケンスを含む)任意の単一文字を、 `r'は任意の正規表現を、 `s'は文字列を、 それぞれ表します。 表はグループ別に編成されていて、 優先度の最も高いものが一番上にあります。


これは、 sedgrep、Emacsや正規表現を使う他の一般的なプログラムにおいて使われる正規表現と完全に同一ではないことに注意してください。

ルールのアクション部は、 任意の正当なCコードです。 単一行に複数の文を書くことも可能ですし、 括弧の対{...}で囲むことで、 複数の文のブロックを複数行にわたって書くことも可能です。


[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]