ANTLR4 - "字符串中的非法转义" Lexer的表达式

时间:2017-09-03 13:06:37

标签: string antlr4 lexer

转让的要求是:

  

"在字符串中非法逃脱:" +错误的字符串:当词法分析器检测到非法时   在字符串中逃脱。错误的字符串是从字符串的开头到   非法逃脱。

     

所有支持的转义序列如下:

     
    

\ b退格

         

\ f formfeed

         

\ r \ n回车

         

\ n换行

         

\ t水平标签

         

\'单引号

         

\"双引号

         

\ backslash

  

我使用" String"的代码和这篇文章一样推荐:

ANTLR4 - Need an explanation on this String Literals

STRINGLIT: '"' ( '\\' [btnfr"'\\] | ~[\b\t\f\r\n\\"] )* '"';

并且还为#34;未终止(或未闭合)字符串"如下:

UNCLOSE_STRING: '"' ( '\\' [btnfr"'\\] | ~[\b\t\f\r\n\\"] )* ;

所以我试着写下这个要求的原型:

ILLEGAL_ESCAPE: '"' .*? ESCAPE ;
fragment ESCAPE: [\b\f\r\n\t'"\\]

有人可以帮我弄清楚是否做错了,我认为STRING和ILLEGAL_ESCAPE之间有一些不清楚的结果是不对的。 如果您能够再次修复它以满足我之前提到的要求,我感谢您。在此先感谢!!

1 个答案:

答案 0 :(得分:0)

尝试使用以下词法分析器规则:

M