2017-11-15 4 views

答えて

0

これは、(f)lexが動作する方法ではありません。 (F)lexはトークナイザです。入力を連続するトークンに分割します。入力の各ポイントで、正確にそのポイントから始まる適切なトークンを選択します。次のトークンは前のトークンの最後で開始します。

特定のコンテキストでのみ特定のトークンを認識したい場合は、start conditionsを使用できますが、コンテキストの変更に気付くのはユーザーの責任です。ですから、例えば、で終わる任意のトークンに関連付けられているアクションに異なる開始条件に変更する可能性R

%x AFTER_R 
%% 
[[:alpha:]]+ { if (yytext[yyleng-1] == 'R') BEGIN(AFTER_R); 
       /* handle this token */ 
       } 
    /* Etc. for other patterns which might end with an R */ 
<AFTER_R>"D" { puts("Found a D after an R"); } 
字句の説明をすることができ、開始条件の

過度の使用は読んでデバッグするのは難しいファイル 。あなたの問題は(f)lexトークン化モデルにはあま​​り適していないことを示している可能性があります。

関連する問題