Lex
Lexはレキシカルアナライザジェネレータである。すなわちレキシカルアナライザ(字句解析プログラム、字句解析器)の生成ツールであり、Lexの名称も英語のLexical analysisからきている。
字句解析はテキスト中の文字列の変換、カウント、抽出などさまざまな目的に使われ、その応用領域は、コンパイラやコンバータの作成を筆頭に、自然言語処理や簡単な整形まで幅広い。
このうち、コンパイラにおけるレキシカルアナライザの位置づけを、以下に説明する。 プログラムを中間言語あるいは機械語に変換するコンパイラは、一般的にソースを入力し構文木を出力する構文解析部(1)と、その構文木を入力し中間言語コードまたは機械語を出力するコード生成部(2)からなる。
このうち(1)の前半は、ソースを入力しトークン(語彙素)列を出力する字句解析器(レキシカルアナライザ、トークナイザ、スキャナ)(1.1)である。 後半は、そのトークン列を入力し、構文規則にしたがって構文解析をし、構文木を出力する構文解析器(パーサ、パーザ)(1.2)である。 (1.1)のレキシカルアナライザを生成するのが、レキシカルアナライザジェネレータである。
↑ POSIX 1003.1-2008 - IEEE(有料)
↑ Theory of Compilation -- JLex, CUP tools --(PDF) - by Haifa Univ. Bilal Saleh
↑ Flex The Lexical Scanner Generator - G. T. Nicol(日本語訳)