flexを使用して、Cのようなリテラル文字に一致する正規表現を設定するのに問題があります。
構文に従って正しいリテラル文字と正しくない文字を一致させる必要があります。これには、終了していないcharリテラルがあります。
2つのルール。1つは正しいルール用、もう1つは未終了のルール用です。
chrlit (\')([^\\\'\n]|(\\.))(\')
untermchrlit (\')([\\|\']|(.))*
正規表現が必要なときに機能しないため、正規表現のサポートが必要です。これらがどのように機能するかについて、いくつかの例を示します。
' -> unterminated char constant
'/' -> CHRLIT('/')
'(' -> CHRLIT('(')
'a"b"c"de -> unterminated char constant
'abc -> unterminated char constant
'abc\ -> unterminated char constant
'\\' -> CHRLIT('\\')
';' -> CHRLIT(';')
'' -> unterminated char constant
'a' -> CHRLIT('a')
'\' -> unterminated char constant
'\;' -> CHRLIT('\;')
'\\\' -> unterminated char constant
'\\\ -> unterminated char constant
'\/' -> CHRLIT('\/')
'a\' -> unterminated char constant
'\\ -> unterminated char constant
'\t' -> CHRLIT('\t')