Next: Why can’t I use fast or full tables with interactive mode?, Previous: How can I match text only at the end of a file?, Up: FAQ [Contents][Index]
You can do this as follows. Suppose you have a start condition ‘A’, and after exhausting all of the possible matches in ‘<A>’, you want to try matches in ‘<INITIAL>’. Then you could use the following:
%x A %% <A>rule_that_is_long ...; REJECT; <A>rule ...; REJECT; /* shorter rule */ <A>etc. ... <A>.|\n { /* Shortest and last rule in <A>, so * cascaded REJECTs will eventually * wind up matching this rule. We want * to now switch to the initial state * and try matching from there instead. */ yyless(0); /* put back matched text */ BEGIN(INITIAL); }