flex: Quoted Constructs
A.4.3 Quoted Constructs
-----------------------
C99 String Literal
‘L?\"([^\"\\\n]|(\\['\"?\\abfnrtv])|(\\([0123456]{1,3}))|(\\x[[:xdigit:]]+)|(\\u([[:xdigit:]]{4}))|(\\U([[:xdigit:]]{8})))*\"’
C99 Comment
‘("/*"([^*]|"*"[^/])*"*/")|("/"(\\\n)*"/"[^\n]*)’
Note that in C99, a ‘//’-style comment may be split across lines,
and, contrary to popular belief, does not include the trailing ‘\n’
character.
A better way to scan ‘/* */’ comments is by line, rather than
matching possibly huge comments all at once. This will allow you
to scan comments of unlimited length, as long as line breaks appear
at sane intervals. This is also more efficient when used with
automatic line number processing. ⇒option-yylineno.
<INITIAL>{
"/*" BEGIN(COMMENT);
}
<COMMENT>{
"*/" BEGIN(0);
[^*\n]+ ;
"*"[^/] ;
\n ;
}