(flex.info)How do I expand backslash-escape sequences in C-style quoted strings?


Next: Why do flex scanners call fileno if it is not ANSI compatible? Prev: When was flex born? Up: FAQ
Enter node , (file) or (file)node

How do I expand backslash-escape sequences in C-style quoted strings?
=====================================================================

A key point when scanning quoted strings is that you cannot (easily)
write a single rule that will precisely match the string if you allow
things like embedded escape sequences and newlines.  If you try to match
strings with a single rule then you'll wind up having to rescan the
string anyway to find any escape sequences.

   Instead you can use exclusive start conditions and a set of rules,
one for matching non-escaped text, one for matching a single escape, one
for matching an embedded newline, and one for recognizing the end of the
string.  Each of these rules is then faced with the question of where to
put its intermediary results.  The best solution is for the rules to
append their local value of 'yytext' to the end of a "string literal"
buffer.  A rule like the escape-matcher will append to the buffer the
meaning of the escape sequence rather than the literal text in 'yytext'.
In this way, 'yytext' does not need to be modified at all.


automatically generated by info2www version 1.2.2.9