0
工作分配的要求「非法逃逸的字符串」表達的是:ANTLR4 - 對於詞法分析器
「非法逃逸字符串:」 +錯誤字符串:當詞法分析器檢測串非法 逃逸。錯誤的字符串是從字符串的開頭到非法轉義的 。
所有支持的轉義序列如下:
\ b退格
\˚F換頁
\ r回車
\ n換行
\噸水平標籤
\」單引號
\」雙引號
\反斜槓
我使用的代碼爲 「字符串」 作爲同這個帖子推薦:
ANTLR4 - Need an explanation on this String Literals
STRINGLIT: '"' ('\\' [btnfr"'\\] | ~[\b\t\f\r\n\\"])* '"';
而且還解決了「未終結(或未關閉的)字符串」有點如下:
UNCLOSE_STRING: '"' ('\\' [btnfr"'\\] | ~[\b\t\f\r\n\\"])* ;
於是,我就寫下原型像這樣的要求:
ILLEGAL_ESCAPE: '"' .*? ESCAPE ;
fragment ESCAPE: [\b\f\r\n\t'"\\]
誰能幫我想弄清楚是否做了錯誤的事情,我認爲STRING和ILLEGAL_ESCAPE之間有些不清楚,所以結果不對。 我很感激您是否能夠像我之前提到的那樣再次修復它以滿足要求。提前致謝!!
我認爲您的解決方案是相當不錯的,但你能解釋一下你的詞法規則VS我的詞法規則。非常感謝^^ –
你的片段規則'ESCAPE'不正確。它不匹配兩個符號序列(反斜槓+字符),而只是一個特殊符號('\ r','\ b'等)。儘管我的詞法分析器規則匹配所有雙符號序列,但以反斜槓和不包含反斜槓的所有序列開頭。 –