たとえば、私のレクサーは関数呼び出しパターンを認識します。
//i.e. hello(...), foo(...), bar(...)
FUNCALL [a-zA-Z0-9]*[-_]*[a-zA-Z0-9]+[-_*][a-zA-Z0-9]*\(.\)
これで flex はパターンを認識しますが、パターンの最後の文字を通過します (つまり、foo(...)内に格納された後yytext、レクサーは の後の次の文字を指しますfoo(...)) 。
レクサーポインタを関数パターンの先頭にリセットするにはどうすればよいですか? つまり、 を認識した後foo(..)、レクサーが の先頭を指すようにしたいfoo(..)ので、トークン化を開始できます。
正規表現パターンごとに、パターンごとに 1 つのトークンしか返せないため、これを行う必要があります。つまり、一致した後、またはまたはまたはreturn ステートメントのfoo(...)いずれかのみを返すことができますが、すべてを返すことはできません。foo()