是否有可能在Antlr4中区分词法分析器中的转义序列?

时间:2016-12-16 10:52:28

标签: antlr antlr4

我想将\'\"等序列作为词法分析元素

ESCAPESEQUECE :
  '\\\"' |
  '\\\'' 
  ;

同时在不转义时区分个别报价

SINGLEQUOTE:
   '\''
   ;

DOUBLEQUOTE:
   '\"'
   ;

最终目标是通过解析器将字符串识别为MySQL。

这可能/正确吗?

1 个答案:

答案 0 :(得分:1)

答案

是的,通过单独的令牌完全可以。

实施例

grammar escp;

SINGLE: '\'';
DOUBLE: '\"';
ESCAPED : '\\"' | '\\\'';

char: SINGLE | DOUBLE;
escaped : ESCAPED;

program: (char | escaped)+;

输入字符串'\"'"\"""'\'\"\'的AST将为:

enter image description here