2013-03-21 219 views
2

我在使用flex設置正則表達式來匹配類C文字字符時遇到了一些麻煩。Flex正則表達式字符字符

我需要根據語法和不正確的字符匹配正確的文字字符,例如沒有終止的字符文字。

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') 
+0

@MikeM它是一個字符,所以只有一個字符。我有另一個規則來匹配多個字符常量,所以他們給出了一個錯誤,但那一個我認爲這是不相關的問題;) – andrepcg 2013-03-21 15:38:38

+0

@MikeM我的untermchrlit在'\','a \','''和其他一些失敗案例。它給我奇怪的結果.. – andrepcg 2013-03-21 17:03:54

+0

@MikeM該怎麼做? – andrepcg 2013-03-21 17:26:20

回答