我在使用 flex 设置正则表达式以匹配类似 C 的文字字符时遇到了一些麻烦。
我需要根据语法匹配正确的文字字符和不正确的字符,例如未终止的字符文字。
2条规则,一条用于正确的,一条用于未终止的。
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')