Phil Sutter <phil@xxxxxx> wrote: > I didn't find a better way to conditionally parse two following args as > strings instead of just a single one. Basically I miss an explicit end > condition from which to call BEGIN(0). Yes, thats part of the problem. > > Seems we need allow "{" for "*" and then count the {} nests so > > we can pop off a scanner state stack once we make it back to the > > same } level that we had at the last state switch. > > What is the problem? Detect when we need to exit the current start condition. We may not even be able to do BEGIN(0) if we have multiple, nested start conditionals. flex supports start condition stacks, but that still leaves the exit/closure issue. Example: table chain { chain bla { /* should start to recognize rules, but we did not see 'rule' keyword */ ip saddr { ... } /* can't exit rule start condition on } ... */ ip daddr { ... } } /* should disable rule keywords again */ chain dynamic { /* so 'dynamic' is a string here ... */ } } I don't see a solution, perhaps add dummy bison rule(s) to explicitly signal closure of e.g. a rule context?