Lexはスキャナを作成するための標準的なUnixユーティリティであり、 長い歴史を持っています。 LexはFlexと非常によく似ていますが、 スキャナを生成するのにより多くの時間がかかりますし、 Lexの生成するスキャナはFlexの生成するスキャナよりも通常は遅いものです。 Lexは、 特に多くのPOSIX機能を提供していないという理由から、 置き換える必要が大いにあります。 FlexはこうしたPOSIX機能を提供しています。 より多くのコンピュータ・システムがPOSIX互換になるにつれて、 Flexの提供する多くの機能をサポートしなければならなくなり、 このために、 おそらくはFlexがLexの代わりにインストールされるようになるでしょう (例えば、 4.4 BSDリリースはFlexを使うことになります)。 しかし、 Lexがインストールされている少数のシステムがあるために、 しばらくの間はLexの存在は確実に維持されるでしょう。
FlexとLexの大きな違いは、 Flexが性能を考慮して書かれたという点にあります。 一般的には、 Flexを持っているのであればそれを使うべきです。 両者の性能差は、 無視するにはあまりにも大きすぎます。 しかし、 移植性が最も重要なのであれば、 スキャナ定義は可能な限りLexのものに近づけるべきです。 というのは、 Lexは事実上すべてのUnixマシンに入っていることが保証されていますが、 Flexは入っていない可能性があるからです (しかし、 Flexのインストールは通常は取るに足りない作業です)。 このような場合に残念なのは、 FlexとPOSIXが持っている排他的スタート状態のような、 より便利な拡張機能を使うことができなくなるということです。
この問題を回避するためのもう1つの方法は、 Flexでスキャナを作成して、 作成されたスキャナを配布することです。 スキャナというものは一度書かれるとほとんど変更されることがないので、 多くの場合この方法は実行可能です。 仮に変更が必要になったとしても、 プログラムの他の部分も相当変更しなければならない可能性があり、 よってプログラムを更新するための努力全体から見れば、 Flexをインストールすることなどはほんの些細なものでしょう。