Next: , Previous: , Up: FAQ   [Contents][Index]


Does flex support recursive pattern definitions?

e.g.,

%%
block   "{"({block}|{statement})*"}"

No. You cannot have recursive definitions. The pattern-matching power of regular expressions in general (and therefore flex scanners, too) is limited. In particular, regular expressions cannot “balance” parentheses to an arbitrary degree. For example, it’s impossible to write a regular expression that matches all strings containing the same number of ’{’s as ’}’s. For more powerful pattern matching, you need a parser, such as GNU bison.