12

関連する質問/資料:

よく知られているように、さまざまなプログラミング言語でサポートされている「正規表現」は、形式的な意味で非正規の言語を生成し、上記の資料で示されているように、少なくともいくつかの文脈依存言語を認識できます。

言語 L = {x | x は基数 10 の素数です。} は、素数性が線形有界オートマトンによってテストできるため、文脈依存言語です (ただし、ポンピング レンマ引数による文脈自由言語ではありません)。

では、基数 10 のすべての素数を正確に受け入れる Perl または Java の正規表現を作成することは可能でしょうか? 2 以上の他の基数に置き換えるか、すべての合成数を正確に認識する方が簡単だと思われる場合は、自由に置き換えてください。

たとえば、エスケープを使用して任意の Perl コードを実行することは、不正行為と見なされます。置換を繰り返し行うこと (簡単にチューリング完全になる) も範囲外です。全体の作業は正規表現内で行う必要があります。この質問は、正規表現が実際にどれほど強力であるかの境界に関するものです。

4

1 に答える 1