Flexでは前の方でパターンに名前をつけて定義できるけどできないことがあるよという話。
問題
Flexでは後でパターンを使い回すために
DIGIT [0-9]
IDENTIFIER [a-zA-Z][a-zA-Z0-9_-]*
%%
{DIGIT} ECHO;
{IDENTIFIER} ECHO;
%%
とか書ける。で、ここでbarがあとに来るようなfooを探すことにしよう。
FOO_WITH_BAR foo/bar
%%
{FOO_WITH_BAR} ECHO;
残念、これは動かない。
理由
http://flex.sourceforge.net/manual/Definitions-Section.html を読むと{HOGE}
は(HOGEの中身)
と展開される事がわかる。ところが、http://flex.sourceforge.net/manual/Patterns.html によると/$^
に関してはカッコの中に入れてはいけないと書いてある。